8a9d3445907ba1abe8f85c580144e1435bf46c40
[mono.git] / mono / metadata / ChangeLog
1 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2
3         * class.c (mono_image_add_to_name_cache): Assert on duplicate
4         insertion.
5
6         * reflection.c (mono_reflection_setup_internal_class): Avoid
7         registering a gc root the same MonoClass multiple times.
8         Don't register nested types on the global scope as they should
9         not be available there.
10
11 2009-11-05  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12
13         * culture-info-tables.h: regenerated.
14
15 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
16
17         * debug-helpers.c: avoid g_strdup() in mono_type_full_name().
18
19 2009-11-04  Sebastien Pouliot  <sebastien@ximian.com>
20
21         * string-icalls.c|h: Remove string internal calls that are not 
22         used anymore by the class libraries.
23         * icall.c: Remove System_Reflection_FieldInfo_internal_from_handle
24         which is not used in the class librairies.
25         * icall-def.h: Update tables.
26
27 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
28
29         * class.h: Move mono_class_inflate_generic_type_checked...
30
31         * class-internals.h: to here and make it internal. We don't want to
32         further expose MonoGenericContext. 
33
34 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
35
36         * verify.c (mono_method_verify): Improve error message.
37
38 2009-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
39
40         * reflection.c (fieldref_encode_signature): If field_image is NULL then
41         the token is already properly encoded. Fixs 4.0 build.
42
43 2009-11-04  Rolf Bjarne Kvinge  <RKvinge@novell.com>
44
45         * locales.c (construct_number_format): Check if the number index is
46         valid before trying to use it, if not, just return.
47         
48 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
49
50         * marshal.c (mono_marshal_get_runtime_invoke): Don't reset abort exceptions,
51         since that loses the abort state. Fixes #539394.
52
53 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
54
55         * marshal.c (mono_marshal_get_native_wrapper): For icall wrappers, add an
56         explicit this argument to the call signature.
57         (mono_marshal_get_icall_wrapper): Ditto.
58
59 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
60
61         * reflection.c (fieldref_encode_signature): Add new field_image parameter
62         to indicate which assembly to use when resolving a custom-mod.
63
64         Fixes handling of volatile fields used across assemblies as reported in #551513.
65
66 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
67
68         * loader.c: Improve error messages.
69
70 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
71
72         * class.c (mono_class_setup_methods): Only give a slot for virtual methods
73         of interfaces. Fixes IKVM.
74
75         * class.c (mono_class_setup_vtable_general): Improve debug spew.
76
77 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
78
79         * verify.c (verifier_inflate_type): Return the inflated type on success.
80
81 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
82
83         * debug-mono-symfile.c (check_line): Fix the handling of IL offset 0.
84
85         * threads.c (mono_thread_attach): Call the profiler thread start callback.
86
87         * object-internals.h (_MonoThreadInternal): Add a 'flags' field.
88
89         * threads.c (build_wait_tids): Ignore threads which have the DONT_MANAGE
90         flag set.
91
92         * profiler.c: Add new profiler callbacks for runtime invoke.
93
94         * object.c (mono_runtime_invoke): Call the runtime invoke callbacks.
95
96 2009-11-01  Mark Probst  <mark.probst@gmail.com>
97
98         * sgen-gc.c: Keep track of the reason for a major collection and
99         write it to the heap-dump file.
100
101 2009-10-31  Miguel de Icaza  <miguel@novell.com>
102
103         * threads.c: refactor the code that initializes the
104         thread_start_args into a reusable function and use this in the two
105         methods that start up threads.
106
107 2009-10-31  Zoltan Varga  <vargaz@gmail.com>
108
109         * appdomain.c (mono_domain_try_unload): Applied patch from Romain Tartière.
110         Fix returning when WaitForSingleObjectEx returns WAIT_IO_COMPLETION.
111
112 2009-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
113
114         * mono-perfcounters.c: add the "_Total" instance for CPU counters.
115         Until now, we only had the per-cpu(core) counters.
116
117 2009-10-28  Mark Probst  <mark.probst@gmail.com>
118
119         * gc-internal.h, boehm-gc, sgen-gc.c, null-gc: Add
120         mono_gc_get_suspend_signal(), which returns the suspend signal
121         number used by the GC.
122
123 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
124
125         * threads.c (start_wrapper): Avoid an assert if thread_start_args () is NULL.
126
127         * threads.c (start_wrapper): Call mono_profiler_thread_start () later after
128         signalling start_notify.
129
130 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
131
132         * appdomain.c: do not test the st_mode field for shadow-copies.
133         Fixes bug #545276.
134
135 2009-10-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
136
137         * threadpool.[ch]: added hooks for thread start/finish and item
138         processing begin/end. For monotouch use only.
139
140 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
141
142         * threads.c (mono_thread_get_name): New helper function.
143
144         * reflection.c (resolve_object): Set handle_class for strings too.
145         (mono_reflection_create_custom_attr_data_args): New helper function to decode
146         a cattr blob into a set of arrays and structures without creating the custom
147         attributes themselves.
148         (create_custom_attr_data): Simplify using create_custom_attr_data_args.
149
150         * mono-debug.c (mono_debug_il_offset_from_address): New helper function.
151
152         * debug-mono-symfile.c (mono_debug_symfile_get_line_numbers): New helper
153         function.
154
155 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
156
157         * verify.c: Replace calls to mono_class_inflate_generic_type with
158         mono_class_inflate_generic_type_checked. Fixes #480005.
159
160 2009-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
161
162         * class.c (mono_class_inflate_generic_type_with_mempool): Clear the error
163         object since not all paths lead to callees initing it.
164
165 2009-10-23  Alp Toker  <alp@nuanti.com>
166
167         Fix embedding API breakage from r144688. mono-compiler.h is an internal
168         header and should not be shipped:
169
170         * class.h: Back out MONO_DEPRECATED change. Currently depends on config.h
171         which is specific to the mono build. Not going to work.
172
173 2009-10-23  Sebastien Pouliot  <sebastien@ximian.com>
174
175         * security-manager.c: Report if core-clr is active from
176         ves_icall_System_Security_SecurityManager_get_SecurityEnabled
177         to allow Moonlight BCL to behave appropriately (both in browser
178         and outside, e.g. smcs)
179
180 2009-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
181
182         * mono-config.c: ignore UTF-8 BOM and report parser errors.
183         Fixes bug #549108.
184
185 2009-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
186
187         * class.c: fix typo.
188
189 2009-10-22  Rodrigo Kumpera  <rkumpera@novell.com>
190
191         * class-internals.h: Change signature of mono_class_inflate_generic_type_with_mempool to take
192         a MonoError parameter.
193
194         * class.h: Mark mono_class_inflate_generic_type deprecated, add new mono_class_inflate_generic_type_checked
195         version that can does proper error handling.
196
197         * class.c (inflate_generic_type): Add a MonoError parameter. Don't assert on error, use new mono error machinery.
198
199         * class.c (mono_class_inflate_generic_type_with_mempool): Add new MonoError parameter.
200
201         * class.c, generics-sharing.c: Changes to handle mono_class_inflate_generic_type_with_mempool new signature.
202
203 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
204
205         * debug-helpers.c (dis_one): Fix the disassembly of empty strings when
206         NO_UNALIGNED_ACCESS is defined.
207
208 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
209
210         * marshal.c (mono_string_builder_to_utf16): Applied patch from
211         Hib Eris  <hib@hiberis.nl>. Return empty string for empty string builders.
212         Fixes #549173.
213
214 2009-10-22  Mark Probst  <mark.probst@gmail.com>
215
216         * sgen-gc.c: Shorten sections whenever possible.
217
218 2009-10-22  Mark Probst  <mark.probst@gmail.com>
219
220         * sgen-gc.c: Use our portable semaphore #defines.
221
222 2009-10-22  Mark Probst  <mark.probst@gmail.com>
223
224         * sgen-gc.c: A debug option for dumping the heap layout to a file
225         after each collection.
226
227 2009-10-21  Mark Probst  <mark.probst@gmail.com>
228
229         * sgen-gc.c: Make managed write barriers atomic via
230         thread-restarts.
231
232 2009-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
233
234         * verify.c (verify_delegate_compatibility): Properly verify delegate creation of static
235         methods. Fixes #543021.
236
237 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
238
239         * socket-io.[ch]: fix VS build.
240
241 2009-10-21 Gonzalo Paniagua Javier <gonzalo@novell.com>
242
243         * icall-def.h:
244         * socket-io.[ch]: implemented SendFile.
245
246 2009-10-20  Zoltan Varga  <vargaz@gmail.com>
247
248         * class.c (mono_class_create_from_typedef): Initialize class->element_class
249         before the interfaces to avoid crashes later if class initialization fails.
250         Fixes #548417.
251
252         * marshal.c (emit_marshal_vtype): Implement byref marshalling of DateTime.
253         Fixes #548276.
254
255 2009-10-20  Marek Safar  <marek.safar@gmail.com>
256
257         * domain.c: Bump 4.0 version.
258
259 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
260
261         * assembly.c (mono_assembly_load_reference): Fix leak when 'status'
262         code is known. (parse_public_key) Remove duplicate (unneeded) NULL
263         check since 'pubkey' can't be NULL at this stage
264         * icall.c (ves_icall_System_Array_FastCopy): Add comment about
265         the check. (ves_icall_Type_GetInterfaceMapData) Remove duplicate
266         initialization of 'iter'
267
268 2009-10-16  Bill Holmes  <billholmes54@gmail.com>
269
270         * cominterop.c : Search the interface parts of vtable to find 
271           method matches.  Fixes 547030.
272
273         Code is contributed under MIT/X11 license.
274
275 2009-10-15 Gonzalo Paniagua Javier <gonzalo@novell.com>
276
277         * marshal.c: BeginInvoke cannot be called on multicast delegates with
278         multiple targets. Fixes bug #574426.
279
280 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
281
282         * profiler.h: Put here the definition of
283         MONO_PROFILER_MAX_STAT_CALL_CHAIN_DEPTH
284         (and fix the build...).
285
286 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
287
288         * profiler.c, profiler.h, profiler-private.h:
289         Added support for different ways of getting call chains in stat mode.
290
291 2009-10-12  Mark Probst  <mark.probst@gmail.com>
292
293         * object.c, object-internals.h: New function for computing the
294         size of an array, factored out of mono_array_new_full().  Use
295         SGen's functions for allocating arrays and vectors.
296
297         * sgen-gc.c, gc-internal.h: Special functions for allocating
298         arrays and vectors without race conditions.  A managed array
299         allocator method.
300
301         * boehm-gc.c, null-gc.c: Don't provide a managed array allocator.
302
303 2009-10-12  Mark Probst  <mark.probst@gmail.com>
304
305         * object.c, object.h, icall.c: Write barriers do the copying now,
306         as well, so no need for an additional memcpy.
307
308         * sgen-gc.c: Lock when storing remsets.  Do the memory
309         copying/moving in the write barriers.
310
311         * null-gc.c, boehm-gc.c: Write barriers must copy here, too.
312
313         * reflection.c: Added an assert.
314
315 2009-10-12  Mark Probst  <mark.probst@gmail.com>
316
317         * threads.c, process.c: A few missing write barriers.
318
319 2009-10-12  Joel W. Reed <joelwreed@gmail.com>
320
321         * mono-perfcounters.c, mono-perfcounters-def.h: Add
322         network performance counters for bytes sent per second, bytes
323         received per second, and bytes total per second.
324
325         Code is contributed under MIT/X11 license.
326
327 2009-10-09  Mark Probst  <mark.probst@gmail.com>
328
329         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
330         Fix warning.
331
332 2009-10-09  Mark Probst  <mark.probst@gmail.com>
333
334         * threads.c, object-internals.h, object.c: Move code for
335         transferring an object to a different domain (via
336         serialization/remoting) to object.c.
337
338         * object.c (call_unhandled_exception_delegate): If the exception
339         is in a different domain than the delegate, transfer the exception
340         to that domain.
341
342 2009-10-07  Zoltan Varga  <vargaz@gmail.com>
343
344         * marshal.c (emit_marshal_vtype): Emit marshalling of DateTime to OLE DATE.
345         Fixes #322934.
346
347 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
348
349         * domain.c (DEFAULT_RUNTIME_VERSION): Change this to v2.0.
350
351 2009-10-06  Mark Probst  <mark.probst@gmail.com>
352
353         * object.c (mono_method_return_message_restore): Handle the case
354         where the argument is an instance of a generic type.  Fixes
355         #544446.
356
357 2009-10-06  Mark Probst  <mark.probst@gmail.com>
358
359         * object.c (set_value): Write barrier fix - we must pass the
360         count, not the size.
361
362 2009-10-05  Zoltan Varga  <vargaz@gmail.com>
363
364         * domain.c (mono_init_internal): Print a useful error message when encountering
365         an old mscorlib, instead of crashing. Fixes #544307.
366
367 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
368
369         * appdomain.c (copy_app_domain_setup): Fix a warning.
370
371         * debug-helpers.c (dis_one): Ditto.
372
373 2009-10-04  Mark Probst  <mark.probst@gmail.com>
374
375         * domain-internals.h, appdomain.c: The AppDomainSetup is copied
376         into the new domain, instead of referencing the original one.
377
378         * marshal.c, marshal.h: Make mono_marshal_xdomain_copy_value()
379         non-static.
380
381         * appdomain.c: Corlib version bump.
382
383 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
384
385         * threadpool.c: one more...
386
387 2009-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
388
389         * threadpool.c: forgot a LeaveCriticalSection when telling the idle
390         threads to die because we're shutting down. delgate5.exe works again.
391
392 2009-10-01  Bill Holmes  <billholmes54@gmail.com>
393
394         * cominterop.c (mono_marshal_free_ccw_entry): Updating the
395           ccw_interface_hash table when a ccw is finalized.
396
397         Code is contributed under MIT/X11 license.
398
399 2009-09-30  Mark Probst  <mark.probst@gmail.com>
400
401         * assembly.c, domain.c, image.c, metadata-internals.h: Split
402         domain and image unloading into two steps.  We must do this
403         because clearing the domain in SGen requires the class metadata to
404         be intact, but we need to free the mono_g_hash_tables in case a
405         collection occurs during domain unloading and the roots would trip
406         up the GC.
407
408 2009-09-30  Mark Probst  <mark.probst@gmail.com>
409
410         * object-internals.h: Remove serialized culture fields from
411         MonoInternalThread.
412
413         * icall-def.h, thread-types.h, threads.c: Remove serialized
414         culture icalls.
415
416         * appdomain.c: Corlib version bump.
417
418 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
419
420         * marshal.c (emit_marshal_object): Emit out marshalling of stringbuilders.
421         Fixes #543133.
422
423 2009-09-30  Mark Probst  <mark.probst@gmail.com>
424
425         * sgen-gc.c: Try to shorten the new section after a major
426         allocation to avoid ever-growing sections.
427
428 2009-10-13  Martin Baulig  <martin@ximian.com>
429
430         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
431         `MONO_DEBUGGER_EVENT_TRAMPOLINE' into
432         `MONO_DEBUGGER_EVENT_OLD_TRAMPOLINE' and added a new
433         `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
434
435         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 4.
436
437 2009-09-29 Gonzalo Paniagua Javier <gonzalo@novell.com>
438
439         * threadpool.c: fixed the order in which 'completed' and the wait
440         handle, if any, are set.  Fixes bug #542933 and delegate2.exe
441         No need to use the wait_handle field of ASyncCall. Make sure the
442         threadpool is active when adding a job or queueing an idle thread.
443
444 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
445
446         * object.c (mono_unhandled_exception): Fix a crash if there is no main thread.
447
448         * threads.c (build_wait_tids): Fix a crash if there is no main thread, like
449         when using --compile-all.
450
451 2009-09-27  Mark Probst  <mark.probst@gmail.com>
452
453         * metadata.c (free_generic_class): Unregister the field_objects
454         roots if we're using SGen.
455
456 2009-09-27  Mark Probst  <mark.probst@gmail.com>
457
458         * reflection.c (mono_dynamic_image_free): Deregister the GC root
459         for GenericParamTableEntry.gparam.
460
461 2009-09-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
462
463         * marshal.c: don't create the handle when calling. It is created later
464         if needed.
465
466 2009-09-26  Mark Probst  <mark.probst@gmail.com>
467
468         * sgen-gc.c: Warning fixes.
469
470 2009-09-26  Mark Probst  <mark.probst@gmail.com>
471
472         * sgen-gc.c: New debug option "xdomain-checks", which scans the
473         whole heap for cross-domain references before each collection.
474
475         * sgen-scan-object.h: The scan action can now use SCAN to scan the
476         object.
477
478         * threadpool-internals.h, threadpool.c: New function
479         mono_thread_pool_is_queue_array() for checking whether a given
480         array is used as a (cross-domain) queue by the thread pool code.
481
482 2009-09-26  Mark Probst  <mark.probst@gmail.com>
483
484         * sgen-gc.c: New function mono_gc_scan_for_specific_ref() which
485         searches the whole heap for objects containing a specific
486         reference.  Only for debugging.
487
488 2009-09-26  Mark Probst  <mark.probst@gmail.com>
489
490         * appdomain.c (MONO_CORLIB_VERSION): Bumped.
491
492         * icall-def.h, threads.c, threads-types.h: New icalls for copying
493         byte arrays between domains.
494
495 2009-09-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
496
497         * threadpool.c:
498         * class-internals.h:
499         * mono-perfcounters-def.h:
500         * mono-perfcounters.c:
501         -There is a list of idle threads
502         -Each of those idle threads wait on their own WaitHandle instead
503         of all of them using the same semaphore. When a new work item is
504         added, the job is assigned directly to an idle thread or a newly
505         created one if possible and then the handle for that thread is
506         signaled. Compare that to the current approach where all the
507         threads in the pool compete to dequeue a job from the same
508         queue.
509         -New struct ThreadPool that brings together the bunch of static
510         variable for each threadpool (IO and regular).
511         -New performance counters: # of items added and its rate per
512         threadpool. The rate will be used later, perhaps together with
513         other perf. counters, to decide when idle threads should exit.
514
515 2009-09-25  Jonathan Chambers  <joncham@gmail.com>
516
517         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal): 
518         Fix typo on Windows build.      
519         (ves_icall_System_Net_Sockets_Socket_Accept_internal): Fix typo on Windows build.
520         
521         Code is contributed under MIT/X11 license.
522
523 2009-09-25  Mark Probst  <mark.probst@gmail.com>
524
525         * object-internals.h: The Thread class is split up into Thread and
526         InternalThread now.  We have exactly one InternalThread per
527         thread, and at most one Thread per appdomain per thread.  Most
528         data is stored in InternalThread.  All InternalThread objects live
529         in the root domain.
530
531         * class-internals.h: Add internal_thread_class to MonoDefaults.
532
533         * appdomain.c (mono_domain_unload), attach.c (receiver_thread),
534         domain.c, gc.c, icall-def.h, monitor.c, object.c, sgen-gc.c,
535         socket-io.c, threadpool.c, thread-types.h, threads.c: Changes
536         resulting from the split of the Thread class.
537
538         * gc-internal.h: Prototype for new function for checking whether a
539         thread is the finalizer thread.
540
541         * appdomain.c: Corlib version bump.
542
543 2009-09-25  Rolf Bjarne Kvinge  <RKvinge@novell.com>
544
545         * appdomain.c|h: Add a mono_domain_try_unload method which is
546         equivalent to mono_domain_unload, except that it returns an exception
547         instead of throwing it. Make mono_domain_unload use the
548         mono_domain_try_unload method to avoid code-duplication.
549
550 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
551
552         * debug-helpers.c (dis_one): Avoid unaligned accesses on platforms where that is
553         a problem.
554
555 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
556
557         * marshal.c (emit_ptr_to_object_conv): Generate an exception instead of
558         aborting when a conversion is not implemented.
559
560 2009-09-23  Miguel de Icaza  <miguel@novell.com>
561
562         * verify.c: when comparing culture strings, use g_ascii_strcmp
563
564         * assembly.c (mono_public_tokens_are_equal): Change g_strcasecmp
565         when comparing public key tokens to use memcmp on 16 bytes.   I do
566         not believe this ever worked as advertised in the past.
567
568         The standard Public Key is 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00
569         which would have always failed earlier.
570
571 2009-06-25  Miguel de Icaza  <miguel@novell.com>
572
573         * gc.c: Raise a NullArgumentException if the object passed is
574         null.
575
576 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
577
578         * image.c (mono_image_close): Atomically decrement the reference count and
579         remove the image from the hash tables, to prevent another thread from seeing a
580         dying MonoImage. Fixes #541194.
581
582 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
583
584         * threadpool.c: actually use the minimum number of 'completion ports'
585         (for us is just a potential worker thread).
586
587 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
588
589         * threadpool.c: remove ares_htable. It does not make sense any more
590         since the same objects are now stored in GC-tracked arrays while they are
591         in the queue.
592
593 2009-09-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
594
595         * threadpool.c: increase the minimum length of the queues to 128.
596         Remove warning.
597
598 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
599
600         * marshal.c (mono_marshal_get_string_ctor_signature): New internal function to
601         return the modified signature used by string ctors.
602
603 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
604
605         * marshal.c (mono_marshal_get_runtime_invoke_dynamic): New internal function
606         to return a runtime-invoke wrapper which uses DYN_CALL to call the wrapped
607         method, to be used by full-aot.
608
609 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
610
611         Since the runtime supports lazy initialization of a type's vtable and this can cause a type
612         to fail, we need to ensure that the vtable is properly initialized at spots were the type must
613         be known to be good.
614
615         * class.c (mono_class_init): Fail array types if their element type fails initialization
616         as well.
617
618         * object.c (mono_class_create_runtime_vtable): Fail array types if their element type fails
619         initialization, additionally we request the element_type vtable to be initialized as well.
620
621         This is fine and should not increase the working set in any meaningful way since it's reasonable
622         to assume       that most code will create an array and eventually populate it, which will require the
623         type's vtable to be initialized.
624
625         * loader.c (field_from_memberref): Add a comment for a possibly useless mono_class_init call.
626
627 2009-09-17  Atsushi Enomoto  <atsushi@ximian.com>
628
629         * normalization-tables.h : regenerated.
630
631 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
632
633         * mono-debug.c (mono_debug_add_method): Increase the size of the buffer,
634         a leb128 encoding can take up to 5 bytes.
635
636 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
637
638         * class.c (verify_class_overrides): Remove useless argument.
639
640         * class.c (mono_class_setup_vtable_general): Move the overrides check to happen
641         before interface enumeration as this is no longer required.
642
643 2009-09-15  Rodrigo Kumpera  <rkumpera@novell.com>
644
645         * class.c: New function mono_class_is_assignable_from_slow that is safe to be
646         used under mono_class_init context. This functions avoid any code path that
647         calls mono_class_init, which leads it to be slow as some things like the interface
648         bitmap are not available.
649
650         * class.c (verify_class_overrides): Use mono_class_is_assignable_from_slow instead
651         of it's own broken version. Fixes the verifier part of #538588.
652
653         * class-internals.h: Export mono_class_is_assignable_from_slow as part of the internal
654         API.
655
656 2009-09-15  Mark Probst  <mark.probst@gmail.com>
657
658         * class.c (mono_class_init): Always set an exception in a class if
659         vtable setup fails.  Fixes #538577.
660
661         * generic-sharing.c: Raise an exception if mono_class_vtable()
662         returns NULL.
663
664 2009-09-13  Zoltan Varga  <vargaz@gmail.com>
665
666         * marshal.c (mono_marshal_get_runtime_invoke): Don't share instance 
667         methods of vtypes, as they could be incorrectly shared with static methods
668         taking an IntPtr argument.
669
670 2009-09-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
671
672         * domain.c:
673         * object.c:
674         * class-internals.h: renamed waithandle_class to
675         manualresetevent_class.
676         * marshal.c: propagate the exception if a remoting BeginInvoke call
677         fails.
678
679 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
680
681         * object.c: Properly handle vtable failures.
682
683 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
684
685         * socket-io.c: Assert on vtable failure.
686
687         * mono-mlist.c: Assert on vtable failure.
688
689 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
690
691         * marshal.c: Assert on vtable failure.
692
693 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
694
695         * icall.c: Properly handle vtable failures.
696
697 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
698
699         * debug-helpers.c (mono_class_describe_statics): Properly handle vtable failures.
700
701 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
702
703         * cominterop.c (ves_icall_System_ComObject_CreateRCW): Property handle vtable failures.
704
705         * console-unix.c (do_console_cancel_event): Same.
706
707 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
708
709         * class-internals.h: Add mono_class_vtable_full function that allows control
710         if an exception should be raised or not.
711
712         * object.c (mono_class_vtable): Call into mono_class_vtable_full. Fix this function
713         to do what its documentation say, that is to return NULL and set exception_type on
714         failure.
715
716         * object.c (mono_class_create_runtime_vtable): Add new raise_on_error parameter
717         and change the code to honor it.
718
719 2009-09-11  Rodrigo Kumpera  <rkumpera@novell.com>
720
721         * verify.c: Fix typo in error message.
722
723 2009-09-10  Sebastien Pouliot  <sebastien@ximian.com>
724
725         * security-core-clr.c: Fix default_platform_check so it can run
726         the runtime coreclr tests (without an infinite recursion when
727         throwing an exception).
728
729 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
730
731         object.c (mono_delegate_ctor_with_method): Guard against null method.
732
733 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
734
735         * marshal.c (mono_marshal_get_xappdomain_dispatch): Add an assert
736         that should be replaced with error handling later.
737
738 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
739
740         * marshal.c (mono_delegate_end_invoke): Fix warning.
741
742 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
743
744         * loader.c (mono_field_from_token): Properly handle invalid
745         dynamic tokens.
746
747 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
748
749         * pedump.c (verify_image_file): Skip types that can't be
750         decoded.
751
752 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
753
754         * verify.c: Look for recursive valuetypes only against the
755         type been initialized as this is a lot simpler and works.
756
757 2009-09-10  Rodrigo Kumpera  <rkumpera@novell.com>
758
759         * verify.c: Ensure that fields are properly loaded before
760         checking them.
761
762 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
763
764         * object.c (mono_object_get_virtual_method) : Call 
765           mono_cominterop_get_invoke if the object is a COM object.
766
767         Code is contributed under MIT/X11 license.
768
769 2009-09-09  Rodrigo Kumpera  <rkumpera@novell.com>
770
771         * verify.c: Check for recursive valuetype definitions.
772
773 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
774
775         Use inheritance-aware interface offsets. Inherited types use the same offsets
776         of their parents. This reduce offset duplication in case more than one type in
777         the inheritance tree explicitly implements the same interface.
778
779         This also removes a source of vtable bubbles found in #532409. An abstract type
780         isn't required to provide abstract methods to all interfaces it implements, which
781         resulted in a bubble with the previous scheme as the child would get a non-full
782         vtable from its parent. We fail all concrete types with vtable bubbles, so this
783         should be fixed.
784
785         This change causes an increase of 1.7% in vtable memory usage for IronPython pystone but
786         it's expected to not cause any significant increase beyond that.
787
788         * class.c (setup_interface_offsets): Compute super class iface offsets
789         first to force sharing.
790
791         * class.c: Add VTABLE_SELECTOR macro to the vtable debug macros to help
792         dumping only the relevant ones.
793
794         * class.c (mono_class_setup_vtable_general): Give newslot, non final, virtual
795         methods a new slot regardless if they belong to an interface or not. This allows
796         an inherited type to override the iface method separately from the class one.
797
798 2009-09-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
799
800         * threadpool.c: make the Sleep() alertable to prevent delays exiting
801         applications that take less than 2s to execute.
802         Bug #524984 fixed.
803
804 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
805
806         * object-internals.h (MonoRuntimeCallbacks): Add a 'get_runtime_build_info' callback.
807
808         * object.c (mono_get_runtime_callbacks): New helper function to return
809         the runtime callbacks.
810
811         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Use the result of
812         mono_get_runtime_build_info () as the display name.
813         
814 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
815
816         * marshal.c (emit_marshal_array): Call conv.ovf.i on the array parameter
817         argument, since NEWARR expects a native int. Fixes #481559.
818
819 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
820
821         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Guard
822         against broken SRE methods.
823
824 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
825
826         * class.c (mono_type_get_full): Don't call mono_metadata_free_type on
827         a NULL variable. Abort early on failure.
828
829 2009-09-03  Rodrigo Kumpera  <rkumpera@novell.com>
830
831         * class.c (can_access_type): Fail visibility test for non nested
832         types with nested visibility.
833
834 2009-09-02  Sebastien Pouliot  <sebastien@ximian.com>
835
836         * assembly.c (parse_public_key): Avoid allocating (and not 
837         freeing) the public key array when it's not requested by the 
838         caller.
839         * threads.c (mono_thread_manage, mono_thread_create_internal, 
840         ves_icall_System_Threading_Thread_Thread_internal): Free 
841         allocated memory on error.
842
843 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
844
845         * icall.c, icall-def.h: Remove some dead code from early SRE changes.
846
847 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
848
849         * class.c (mono_class_setup_fields): Remove duplicated local variable
850         named gklass.
851         Rename gklass to gtd to reflect the fact that it points to the generic
852         type definition.
853         Remove the duplicated call to mono_class_setup_fields on gtd and move
854         the error check to the beginning.
855
856 2009-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
857
858         * marshal.c (mono_array_to_lparray): Do DISABLE_COM properly.
859         Remove cruft of the previous patch.
860
861 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
862
863         * metadata-verify.c (verify_method_table): Check for abstract + final.
864         Fixes #534175.
865
866 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
867
868         * verify.c (verify_class_fields): Check for duplicate fields.
869
870 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
871
872         * metadata-verify.c: Verify the typeref table for duplicates.
873
874 2009-09-01  Rodrigo Kumpera  <rkumpera@novell.com>
875
876         This reverts r140936 and properly handles interfaces with static methods. The
877         right fix is to ensure vtables without bubles which is an easier to verify
878         constraint. We should avoid such special cases as of the reverted patch as those
879         only make the runtime more brittle.
880
881         * class.c (mono_class_setup_vtable_general): Revert previous change that handle
882         static methods on interfaces.
883
884         * class.c (setup_interface_offsets): Use the number of virtual methods when
885         calculating interface offsets instead of the number of methods. This way we
886         avoid bubles on the layout.
887
888 2009-08-31  Rodrigo Kumpera  <rkumpera@novell.com>
889
890         * metadata-verify.c (verify_metadata_header): Some very smart
891         obfuscators like to add extra stream headers. Ignore them.
892
893 2009-08-30  Zoltan Varga  <vargaz@gmail.com>
894
895         * class.c (mono_class_setup_vtable_general): Verify interfaces with static
896         methods correctly.
897
898 2009-08-29  Rodrigo Kumpera  <rkumpera@novell.com>
899
900         * metadata-verify.c: Verify for duplicated types.
901
902 2009-08-28  Rodrigo Kumpera  <rkumpera@novell.com>
903
904         * metadata-verify.c (verify_typedef_table): Verify for nested types
905         without an entry on the nested class table.
906
907 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
908
909         * cominterop.c (cominterop_get_ccw): Applied patch from tom hindle
910         <tom_hindle@sil.org>. Add locking around hash table accesses.
911
912 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
913
914         * verify.c (mono_verifier_verify_class): Verify all interface if
915         really are interfaces. Fixes #534184.
916
917 2009-08-27  Rodrigo Kumpera  <rkumpera@novell.com>
918
919         * pedump.c: Initialize all types during metadata validation so we report
920         errors only detected as part of class initialization.
921
922 2009-08-26  Rodrigo Kumpera  <rkumpera@novell.com>
923
924         * metadata-verify.c (verify_method_table): PInvoke requires method to
925         be static. Fixes #534189
926
927 2009-08-26  Zoltan Varga  <vargaz@gmail.com>
928
929         * threads.c (mono_thread_suspend_all_other_threads): Handle 'threads_starting_ip'
930         being NULL.
931
932 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
933
934         * class.c (mono_class_setup_vtable_general): Verify the resulting vtable
935         for holes or bad methods. Fixes #525314.
936
937 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
938
939         * class.c (setup_interface_offsets): Don't allocate slot
940         for the same interface multiple times. This creates bubbles
941         that waster space and make vtable verification harder.
942
943         The same interface get a slot multiple times since we need
944         to get the closure of all implemented interfaces, which means
945         the same interface is reported multiple times.
946
947 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
948
949         * verify.c (mono_verifier_verify_class): Don't check the fields
950         of generic instances since the context on which they got expanded
951         might lead to false positives.
952
953         Such thing happens when a generic type is inflated in the context
954         of a generic method and the inflated type of a field turns into a
955         generic method argument, which causes the checking code to think
956         it's an invalid class when it's not.
957
958 2009-08-25  Rodrigo Kumpera  <rkumpera@novell.com>
959
960         * verify.c (mono_type_is_valid_in_context): Verify if type
961         is NULL and remove duplicate test.
962
963 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
964
965         * verify.c (mono_verifier_verify_class): Check fields for
966         invalid generic arguments.
967
968 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
969
970         * class.c (verify_class_overrides): Verify if for static
971         and non virtual methods.
972
973 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
974
975         * icaa.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor):
976         Check for errors after retrieving the vtable.
977
978 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
979
980         * class.c (mono_class_setup_vtable_general): Verify
981         if method overrides are valid before processing them.
982
983 2009-08-24  Rodrigo Kumpera  <rkumpera@novell.com>
984
985         * marshal.c (mono_array_to_lparray): Fix minimal build with
986         cominterop disabled.
987
988         * marshal.c (mono_free_lparray): Same.
989
990 2009-08-21  Mark Probst  <mark.probst@gmail.com>
991
992         * threadpool.c (mono_thread_pool_init): Use mono_object_hash() as
993         the hash function for the ares_htable.
994
995 2009-08-20  Rodrigo Kumpera  <rkumpera@novell.com>
996
997         * metadata-verify.c (verify_assembly_table): Accept 0x10 as a valid
998         bit for assembly flags. MS is ok with it but there is no spec anywhere
999         on its mean
1000
1001 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
1002
1003         * class.c (mono_class_create_from_typedef): Emit profiler events
1004         in all cases.
1005
1006 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
1007
1008         * icall.c (ves_icall_Type_GetMethodsByName): Don't leak loader errors.
1009         Release memory on failure.
1010
1011 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
1012
1013         * class-internals.h: Add mono_metadata_load_generic_param_constraints_full
1014         to the internal API.
1015
1016         * metadata.c (get_constraints): Use a single-linked table as we don't
1017         traverse it backward. Fail and return FALSE if only of the contraint types
1018         is not found.
1019
1020         * metadata.c (mono_metadata_load_generic_param_constraints_full): Identical
1021         to mono_metadata_load_generic_param_constraints except for having a return value.
1022         This has to be done since the later is part of the public API.
1023
1024         * class.c (mono_class_create_from_typedef): Properly check the loading of constrains
1025         and fail the type.
1026
1027         * loader.c (mono_get_method_from_token): Properly check the loading of constraints
1028         and fail the method.
1029
1030 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
1031
1032         * metadata-verify.c (is_valid_method_header): Add work-around to deal
1033         with MS broken behavior of emmitting EH section sizes without the
1034         header size added.
1035
1036 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
1037
1038         * metadata.c (mono_type_create_from_typespec): Don't allocate image
1039         memory until we're sure that we'll need it. This avoids leaking for
1040         broken types or duplicated instantiation.
1041
1042 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
1043
1044         * metadata-verify.c (is_valid_method_header): Fix stupid formating
1045         mistake.
1046
1047 2009-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
1048
1049         * metadata-verify.c (is_valid_method_header): Fix number of clauses
1050         and expected size calculation.
1051
1052 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
1053
1054         * class.c (mono_class_get_field_idx): Add fixme for broken
1055         behavior for types with multiple fields with the same name.
1056         I would rather fix it, but have no idea on how to generate
1057         such artifact for testing.
1058
1059 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
1060
1061         * verify.c (verifier_load_field): We should allow references to
1062         fields to be made using the generic type definition. It's up to
1063         the loader system to fail invalid ops.
1064
1065         * verify.c (get_boxable_mono_type): Only uninstantiated GTDs
1066         are invalid.
1067
1068 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
1069
1070         * class.c: Fix usage of mono_metadata_interfaces_from_typedef_full.
1071
1072         * metadata-internals.h: Fix declaration of 
1073         mono_metadata_interfaces_from_typedef_full.
1074
1075         * metadata.c (mono_metadata_interfaces_from_typedef_full): Add extra
1076         heap_alloc_result parameter that controls if the result should be
1077         g_malloc'd.
1078
1079         * metadata.c (mono_metadata_interfaces_from_typedef): Let the resulting
1080         array be g_malloc'd and properly document this public API function.
1081
1082 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
1083
1084         * cil-coff.h: Fix METHOD_HEADER_FORMAT_MASK to be 2 bits and
1085         remove METHOD_HEADER_TINY_FORMAT1.
1086
1087         * reflection.c: Remove reference to METHOD_HEADER_TINY_FORMAT1.
1088
1089         * metadata.c (mono_metadata_parse_mh_full): Kill tiny format1.
1090
1091         Both spec and MS uses only 2 bits to enumerate the kind of header.
1092         So given that 0x6 and 0x2 are equal under a 2 bits mask, tiny format1
1093         is superfluous, only used for tiny headers with odd code lengths.
1094
1095         This change also make sure that mono doesn't wronly interpret bit 2
1096         of fat header flags, which is currently reserved.
1097
1098 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
1099
1100         * metadata.c (do_mono_metadata_parse_type): Do error
1101         checking for element types. Don't abort if presented
1102         with a broken type kind.
1103
1104 2009-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
1105
1106         * metadata.c (mono_metadata_parse_method_signature_full):
1107         Gracefully fail bad vararg signatures.
1108
1109 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1110
1111         * profiler.c:
1112         * class.c: Fix warnings for uninitialized variables.
1113
1114 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1115
1116         * icall.c: Fix _NSGetEnviron method declaration warning.
1117
1118 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1119
1120         * icall.c:
1121         * reflection.c: Make bitwise checks explicit.
1122
1123 2009-08-18  Christian Hergert  <chris@dronelabs.com>
1124
1125         * debug-helpers.c:
1126         * marshal.c: Fix printf warnings.
1127
1128 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
1129
1130         * reflection.c (encode_cattr_value): Fix a warning.
1131
1132 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1133
1134         * metadata.c (mono_metadata_parse_array_full): Fix memory leak
1135         of array bounds.
1136
1137 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1138
1139         * loader.c (mono_method_signature): Don't assert on broken
1140         signature. Print a more useful error message.
1141
1142 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1143
1144         * loader.c (mono_method_get_marshal_info): Assert if
1145         signature is invalid. Bounds check stores to the
1146         mspecs array;
1147
1148 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1149
1150         * loader.c (field_from_memberref): Fix warning.
1151
1152 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1153
1154         * loader.c (mono_method_get_param_names): Check if signature
1155         is null. Don't store beyond the size of the name array.
1156
1157 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1158
1159         * loader.c (mono_get_method_constrained): Check if signature
1160         is null.
1161
1162 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1163
1164         * loader.c (mono_loader_set_error_bad_image): Improve
1165         error messages.
1166
1167 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1168
1169         * loader.c (mono_get_method_full): Convert an assertion
1170         into a loader error.
1171
1172 2009-08-17  Rodrigo Kumpera  <rkumpera@novell.com>
1173
1174         * class-internals.h, class.c: Better naming and documentation.
1175
1176 2009-08-17  Zoltan Varga  <vargaz@gmail.com>
1177
1178         * boehm-gc.c (mono_gc_add_weak_track_handle): Don't do any work if
1179         obj is NULL.
1180
1181 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
1182
1183         * loader.c (mono_method_get_signature_full): Fail gracefully if signature
1184         parsing fails.
1185
1186 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
1187
1188         * loader.c (mono_loader_error_prepare_exception): Handle missing field
1189         errors with no class set.
1190
1191         * loader.c (field_from_memberref): If the field signature is of the wrong
1192         type fail with a MissingFieldException instead of a BadImageException as
1193         this is the behavior observed on MS. 
1194
1195 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
1196
1197         * loader.c (field_from_memberref): Don't crash if either the field
1198         signature or the typespec class are invalid.
1199
1200 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
1201
1202         * verify.c (verifier_load_field): Don't allow field related
1203         ops to reference fields on generic type definition.
1204
1205 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
1206
1207         * metadata-verify.c: Add new warning level for errors specified
1208         by ECMA 335 but that MS ignores.
1209
1210         * metadata-verify.c (verify_method_table): Make compiler controled
1211         visibility + (rt)specialname error a warning as MS ignores this. Ignoring
1212         this check is safe because the end result will only be some visibility
1213         exceptions been thrown.
1214
1215 2009-08-14  Rodrigo Kumpera  <rkumpera@novell.com>
1216
1217         * verify.c (get_boxable_mono_type): Don't allow the
1218         use of the generic type definition on boxed type positions.
1219
1220         Fixes #531237.
1221
1222 2009-08-14  Mark Probst  <mark.probst@gmail.com>
1223
1224         * threadpool.c: Make sure no cross-domain references remain in
1225         ares_htable or the arrays that are thrown away when resizing.
1226
1227 2009-08-14  Mark Probst  <mark.probst@gmail.com>
1228
1229         * appdomain.c, metadata-internals.h, image.c: In MonoImage add a
1230         list of classes for which we have to unregister reflection_info
1231         with the GC and which are not in the namespace cache.
1232
1233         * reflection.c (mono_reflection_initialize_generic_parameter): Add
1234         the class to the list.
1235
1236 2009-08-14  Mark Probst  <mark.probst@gmail.com>
1237
1238         * domain.c (mono_domain_free): Unregister the GC roots in
1239         MonoDomain.
1240
1241 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
1242
1243         * reflection.c (mono_reflection_type_get_handle): Fix typo.
1244
1245 2009-08-12  Rodrigo Kumpera  <rkumpera@novell.com>
1246
1247         * class.c: Add mono_class_get_field_from_name_full which does
1248         the same as mono_class_get_field_from_name but does check field
1249         signature as well.
1250
1251         * class-internals.h: Export mono_class_get_field_from_name_full as
1252         part of the internal API.
1253
1254         * loader.c (field_from_memberref): Search fields by name and signature
1255         as it's valid to have two fields with same name but different types.
1256
1257         Fixes #528055.
1258
1259 2009-08-10  Rodrigo Kumpera  <rkumpera@novell.com>
1260
1261         * icall-def.h: Add a bunch of temporary icalls to MonoGenericClass.
1262
1263         * reflection.c (mono_reflection_type_get_handle): Handle MonoGenericClass.
1264
1265         * reflection.c (encode_cattr_value): Use mono_reflection_type_get_handle to encode
1266         System.Type.
1267
1268 2009-08-13  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * gc.c (GCHandle_CheckCurrentDomain): Moved this here from icall.c.
1271
1272         * boehm-gc.c (mono_gc_add_weak_track_handle): Handle nulls.
1273
1274 2009-08-12  Mark Probst  <mark.probst@gmail.com>
1275
1276         * sgen-gc.c, sgen-scan-object.h: Object scanning code factored out
1277         to sgen-scan-object.h, which can be included and parameterized via
1278         macros.
1279
1280         * Makefile.am: sgen-scan-object.h added.
1281
1282 2009-08-12  Mark Probst  <mark.probst@gmail.com>
1283
1284         * gc.c: #define GC_dont_gc if we're compiling with SGen.
1285
1286 2009-08-12  Mark Probst  <mark.probst@gmail.com>
1287
1288         * domain.c (mono_domain_free): Free a domain's mono_g_hash_tables
1289         before clearing a domain in the GC.
1290
1291 2009-08-12  Mark Probst  <mark.probst@gmail.com>
1292
1293         * exception.c (mono_exception_from_name_domain): Actually create
1294         the exception in the specified domain.
1295
1296         * appdomain.c (mono_domain_create_appdomain_internal): Create the
1297         OutOfMemoryException a bit later so that the domain is inialized
1298         "enough" that it works.
1299
1300 2009-08-12  Mark Probst  <mark.probst@gmail.com>
1301
1302         * threads.c (thread_cleanup): Clean up the cached_culture_info
1303         array to prevent cross-domain references.
1304
1305 Tue Aug 11 14:38:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
1306
1307         * metadata.c: more documentation for MonoType accessors.
1308
1309 2009-08-11  Raja R Harinath  <harinath@hurrynot.org>
1310
1311         Fix incorrect size definitions where the tail array isn't a list
1312         of pointers
1313         * class-internals.h (MONO_SIZEOF_MARSHAL_TYPE): Use offsetof to
1314         define size.
1315         * domain-internals.h (MONO_SIZEOF_JIT_INFO): Likewise.
1316         * metadata.h (MONO_SIZEOF_TYPE): Likewise.
1317         * reflection.h (MONO_SIZEOF_CUSTOM_ATTR_INFO): Likewise.
1318
1319 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1320
1321         * reflection.h:
1322         * reflection.c: MONO_SIZEOF_CUSTOM_ATTR_INFO.
1323
1324 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1325
1326         * metadata.c:
1327         * loader.c:
1328         * metadata-internals.h:
1329         * method-builder.c:
1330         * reflection.c: use MONO_SIZEOF_METHOD_HEADER.
1331
1332 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1333
1334         * cominterop.c:
1335         * metadata.c:
1336         * metadata.h:
1337         * loader.c:
1338         * marshal.c:
1339         * reflection.c: #define for sizeof in MonoType and
1340         MonoMethodSignature.
1341
1342 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1343
1344         * domain.c:
1345         * domain-internals.h: add and use #define's instead of sizeof()
1346         for MonoJitInfo and MonoJitInfoTable.
1347
1348 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
1349
1350         * object.c:
1351         * class.h: use #define instead of sizeof() for MonoRemoteClass.
1352
1353 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
1354
1355         * metadata.c:
1356         * metadata.h:
1357         * object.c:
1358         * class-internals.h:
1359         * generic-sharing.c:
1360         * marshal.c: use a #define instead of sizeof() for a few
1361         structures that use a zero-length array.
1362
1363 2009-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
1364
1365         * object-internals.h (MonoReflectionMethodOnTypeBuilderInst): Add new fields
1366         to handle inflated generic methods.
1367
1368         * appdomain.c: Bump corlib version.
1369
1370         * reflection.c (mono_image_get_method_on_inst_token): Handle generic method
1371         instances.
1372
1373         * reflection.c (fixup_method): Same
1374
1375         * reflection.c (resolve_object): Same.
1376
1377         * reflection.c (inflate_method): Replace a g_assert_not_reached with a
1378         g_error and a decent message.
1379
1380 2009-08-06  Massimiliano Mantione  <massi@ximian.com>
1381
1382         * bohem-gc.c (mono_gc_add_weak_track_handle): Get the domain
1383         from the object because it could not yet be available globally
1384         (it happens if the profiler tries to create a gchandle on the
1385         MonoThread object of a thread that is still registering itself
1386         with the runtime).
1387
1388 2009-08-04  Rodrigo Kumpera  <rkumpera@novell.com>
1389
1390         * reflection.c (mono_generic_class_get_object): Initialized the
1391         managed type arguments array.
1392
1393         * object-internals.h (MonoReflectionGenericClass): Add type_arguments field.
1394
1395         * appdomain.c: Bump corlib version.
1396
1397 2009-08-04  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * threads.c (thread_cleanup): Free serialized_ui_culture_info. Fixes
1400         #527902.
1401
1402 2009-08-03  Zoltan Varga  <vargaz@gmail.com>
1403
1404         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
1405         Avoid a crash if synch_cs is not set.
1406         
1407         * threads.c (ves_icall_System_Threading_Thread_Thread_free_internal): 
1408         Handle the case when the handle is 0.
1409
1410         * appdomain.c: Bump corlib version.
1411
1412 2009-08-02  Zoltan Varga  <vargaz@gmail.com>
1413
1414         * reflection.c (mono_type_get_object): Fix a warning.
1415
1416 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1417
1418         * sgen-gc.c (mono_gc_wbarrier_value_copy): Don't compute the GC
1419         descriptor here.  We assume it's already been computed.
1420
1421         * generic-sharing.c (instantiate_other_info): Compute the GC
1422         descriptor for info type MONO_RGCTX_INFO_KLASS.
1423
1424 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1425
1426         * reflection.c (mono_type_get_object): MonoDomain is an unmanaged
1427         type, so don't use MONO_OBJECT_SETREF to set a field.
1428
1429 2009-08-01  Mark Probst  <mark.probst@gmail.com>
1430
1431         * gc.c: We were missing one case where invoking a finalizer would
1432         not reset the domain.  Also, in the finalizer thread loop, assert
1433         that we're in the root domain.
1434
1435 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1436
1437         * icall.c (ves_icall_MonoType_GetArrayRank): Throw ArgumentException
1438         if the type is not an array.
1439
1440 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1441
1442         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Return the
1443         method bound to the declaring type of the method. Raise an exception
1444         if the type is not a generic param.
1445
1446 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
1447
1448         * class.c (print_unimplemented_interface_method_info): Print the
1449         full type name.
1450
1451         * class.c (mono_class_setup_vtable_general): When dealing with a
1452         generic instance first check if the generic type definition is
1453         not broken.
1454
1455 2009-02-11 Tom Hindke <tom_hindle@sil.org>
1456
1457         * marshal.c (mono_array_to_lparray): Implemented so managed object types are converted to native types.
1458
1459         * marshal.c: Added new method mono_free_lparray to free memory allocated by mono_array_to_lparray
1460
1461         * marshal.c (emit_marshal_array): call emit mono_free_lparray where approprate.
1462
1463         * marshal.c (conv_to_icall): added MONO_MARSHAL_FREE_LPARRAY case
1464
1465         * metadata.h (MonoMarshalConv enum): added MONO_MARSHAL_FREE_LPARRAY
1466
1467         Code is contributed under MIT/X11 license
1468
1469 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
1470
1471         * verify.c: Fix naming of stelem and ldelem.
1472
1473 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1474
1475         * generic-sharing.c: Replace the templates lock with the loader
1476         lock because of very hard to resolve deadlock issues.
1477
1478 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
1479
1480         * icall.c (ves_icall_Type_GetMethodsByName): Use 
1481         mono_class_get_vtable_size () instead of accessing klass->vtable_size
1482         directly. Fixes #525338.
1483
1484         * class.c (mono_class_get_vtable_size): New helper function.
1485
1486         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle_type): Fix the second argument, its a MonoType* not a MonoClass*. Check whenever
1487         the field belongs to the type. Fixes #525733.
1488
1489 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1490
1491         * sgen-gc.c: When we stop a thread and its stack top is not within
1492         its allocated stack (because it's in an altstack signal handler),
1493         restart it and stop it again, until it is.
1494
1495 2009-07-30  Mark Probst  <mark.probst@gmail.com>
1496
1497         * sgen-gc.c: Take a thread's stack top and registers from the
1498         sigcontext in the suspend signal handler.
1499
1500         * sgen-gc.h, sgen-archdep.h, Makefile.am: Move arch-dependent
1501         stuff to sgen-archdep.h.
1502
1503         * gc.c, gc-internal.h: Remove the get_ip_from_sigctx installer and
1504         caller, because have code in sgen-archdep.h to acquire that data.
1505
1506 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
1507
1508         * profiler.c, profiler.h, profiler-private.h:
1509         Added support for keeping track of code chunks and buffers.
1510
1511 2009-07-29 Rodrigo Kumpera  <rkumpera@novell.com>
1512
1513         * metadata-verify.c: Fix endianness problems on decoding functions.
1514         Based on a patch by Ulrich Weigand <uweigand@de.ibm.com>
1515
1516 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
1517
1518         * icall.c (ves_icall_Type_make_array_type): Handle the new encoding
1519         schema for vectors and one dimension SZARRAY.
1520
1521 2009-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
1522
1523         * reflection.c (mono_reflection_type_get_handle): Handle the new encoding
1524         schema for vectors and one dimension SZARRAY.
1525
1526 2009-07-27  Mark Probst  <mark.probst@gmail.com>
1527
1528         * icall-def.h, thread-types.h, threads.c: New separate icalls for
1529         Interlocked.(Compare)Exchange with object arguments, which invoke
1530         write barriers.
1531
1532 2009-07-26  Miguel de Icaza  <miguel@novell.com>
1533
1534         * icall.c (ves_icall_Type_GetNestedType): Throw an exception when
1535         passed invalid arguments.   Fixes another crasher in the
1536         Silverlight test suite.
1537
1538         * class.c (mono_class_array_element_size): Return 0 for the size
1539         of the class;  This fixes the crasher exposed by :
1540
1541         typeof (void).MakeArrayType ();
1542
1543         * icall.c (ves_icall_MonoType_GetEvent): Do not dereference method
1544         if there is no method to dereference.    Put all the code that
1545         depends on this inside the if (method) block.
1546
1547         This fixes the crasher exposed by Microsoft's Silvelright CLR test
1548         suite  ./Reflection/Emit/TypeBuilder/TypeBuilderGetEvent.exe
1549
1550         With this change, we pass the test.
1551         
1552         * reflection.c (mono_reflection_sighelper_get_signature_local):
1553         Only dereference the assembly if it has been set.    Fixes a
1554         crasher exposed by #525328
1555
1556 2009-07-25  Mark Probst  <mark.probst@gmail.com>
1557
1558         * sgen-gc.c, object.h, null-gc.c, boehm-gc.c, marshal.c: Really
1559         don't perform the store in mono_gc_wbarrier_generic_nostore().
1560         Remove the second argument (value), which is not needed.
1561
1562 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
1563
1564         * null-gc.c (mono_gc_wbarrier_generic_nostore): Define this to fix
1565         the build.
1566
1567         * boehm-gc.c: Ditto.
1568         
1569 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1570
1571         * sgen-gc.c, marshal.c, object.h: Make the managed write barrier
1572         not perform the store itself.  Introduce
1573         mono_gc_wbarrier_generic_nostore(), which is the same as
1574         mono_gc_wbarrier_generic_store(), except it doesn't perform the
1575         store.
1576
1577 2009-07-24  Mark Probst  <mark.probst@gmail.com>
1578
1579         * icall.c (ves_icall_System_Array_SetGenericValueImpl):
1580         mono_gc_wbarrier_value_copy() doesn't perform the copy itself, so
1581         we still need the memcpy().
1582
1583 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1584
1585         * sgen-gc.c: Align array bounds calculation to mono_array_size_t
1586         so that big arrays are handled correctly.  Always use
1587         safe_object_get_size() to calculate array object sizes, which
1588         takes bounds into account.
1589
1590 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1591
1592         * sgen-gc.c (mono_gc_wbarrier_value_copy): Make sure the class's
1593         GC descriptor is computed before we use it.
1594
1595 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1596
1597         * icall.c (ves_icall_System_Array_SetGenericValueImpl): Use a
1598         write barrier if necessary.
1599
1600 2009-07-22  Mark Probst  <mark.probst@gmail.com>
1601
1602         * icall-def.h, icall.c, thread-types.h: New separate icall for
1603         VolatileWrite(object&,object) that uses a write barrier.
1604
1605         * console-unix.c, file-io.c, icall.c, threads.c: Use write
1606         barriers in icalls which write to "ref" or "out" arguments.
1607
1608 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * marshal.c (mono_marshal_get_runtime_invoke): Do the work done in the exception
1611         handler in a separate icall, to reduce the size of the wrappers.
1612
1613 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
1614
1615         * metadata-verify.c (is_valid_typespec_blob): Fix error message.
1616
1617 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
1618
1619         * metadata-verify.c (parse_field): Allow byref field.
1620
1621         * metadata-verify.c (parse_locals_signature): Allow byref locals.
1622
1623         * metadata-verify.c (is_valid_typespec_blob): Allow byref typespec.
1624
1625 2009-07-20 Rodrigo Kumpera  <rkumpera@novell.com>
1626
1627         * verify.c (do_cast): Fail for any non reference type that isn't boxed.
1628         Fixes #522784.
1629
1630 2009-07-20  Robert Jordan  <robertj@gmx.net>
1631
1632         * cominterop.c (cominterop_get_managed_wrapper_adjusted):
1633         Fix invalid IL in valuetype handling (STOBJ must push the
1634         corresponding class). Fixes bug #523149.
1635
1636         Code is contributed under MIT/X11 license.
1637
1638 2009-07-20  Geoff Norton  <gnorton@novell.com>
1639
1640         * gc.c: Use proper semaphores where available on posix and darwin.
1641
1642 2009-07-19  Geoff Norton  <gnorton@novell.com>
1643
1644         * gc.c: Unnamed posix semaphores are broken on darwin-arm too.
1645
1646 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
1647
1648         * refletion.c (is_sre_usertype): Change name to is_usertype and
1649         invert it's result so it returns true if the type is an user type
1650         and not the opposite.
1651
1652         * reflection.c (is_*_type): Change all of those to use new macro
1653         check_corlib_type_cached that cached the type lookup so we don't
1654         need to do string comparisons all the type. Changed the signature
1655         to take a MonoClass instead.
1656
1657         * reflection.c: Change mono_image_create_token and resolve_object
1658         to use is_sre_* functions.
1659
1660 2009-07-18  Mark Probst  <mark.probst@gmail.com>
1661
1662         * sgen-gc.c: Check for writes to the stack in the managed
1663         wbarrier as well.
1664
1665 2009-07-18  Mark Probst  <mark.probst@gmail.com>
1666
1667         * sgen-gc.c: When a thread is unregistered, don't free its remsets
1668         but put them on a list which is processed with the other thread's
1669         remsets.
1670
1671 2009-07-18  Mark Probst  <mark.probst@gmail.com>
1672
1673         * sgen-gc.c: Fix and enable the internal allocator instead of
1674         using malloc/free (which causes deadlocks).
1675
1676 2009-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
1677
1678         * refletion.c: Fix builds with SRE disabled by adding a minimal
1679         implementation of mono_reflection_type_get_handle.
1680
1681 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1682
1683         * refletion.c: Make mono_reflection_type_get_handle non static.
1684
1685         * object-internals.h: Export mono_reflection_type_get_handle.
1686
1687         * icall.c (ves_icall_MonoGenericClass_InflateType): Resolve the
1688         unmanaged handle using mono_reflection_type_get_handle.
1689
1690 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
1691
1692         * refletion.c: Replace all reads of MonoReflectionType::type with
1693         calls to mono_reflection_type_get_handle. Only the functions that
1694         deal with constructing TypeBuilder::type have not been changed
1695         because they have to deal with NULL values.
1696
1697         This is a first step into supporting reflection types that don't
1698         map directly into their unmanaged counterpart.
1699
1700 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1701
1702         * metadata-verify.c (parse_locals_signature): Don't complain
1703         on signature with zero locals since MS generates it and doesn't
1704         bother with.
1705
1706 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
1707
1708         * reflection.c (mono_image_get_array_token): Resolve return
1709         type using mono_reflection_type_get_handle.
1710
1711         * reflection.c (mono_image_get_array_token): Resolve array method
1712         parent type using mono_reflection_type_get_handle.
1713
1714 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
1715
1716         * reflection.c (mono_image_basic_init): Applied patch from
1717         <Dax@daxxfiles.net>. Set the public key token from the assembly
1718         builder. Fixes #518909.
1719
1720         * appdomain.c: Bump corlib version.
1721
1722 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
1723
1724         * class.c (mono_class_needs_cctor_run): Make this return false if
1725         the class has no cctor.
1726
1727 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1728
1729         * sgen-gc.c: When the minor GC needs to allocate a new section,
1730         invoke the major GC afterwards.
1731
1732 2009-07-14  Bill Holmes  <billholmes54@gmail.com>
1733
1734         * process.c  (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal) :
1735           Applying the window_style field to the SHELLEXECUTEINFO struct.
1736
1737         Code is contributed under MIT/X11 license.
1738
1739 2009-07-13  Mark Probst  <mark.probst@gmail.com>
1740
1741         * sgen-gc.c: Fix the race condition in the unmanaged allocator by
1742         locking earlier.  Fix it in the managed allocator by making sure
1743         that no thread is stopped there before the GC runs.  If we do stop
1744         a thread there, we restart it and let it run a but, until it stops
1745         somewhere else.
1746
1747         * gc-internal.h, gc.c: Function for getting the IP from a signal
1748         context via a function registered by mini.
1749
1750 2009-07-11  Zoltan Varga  <vargaz@gmail.com>
1751
1752         * object-internals.h (MonoIntPtr): New structure describing a boxed
1753         IntPtr.
1754
1755         * object.c (mono_runtime_invoke_array): Handle ptr arguments and
1756         returns. Fixes #519953.
1757
1758         * marshal.c (mono_marshal_get_runtime_invoke): Handle pointer returns.
1759
1760 2009-07-09  Mark Probst  <mark.probst@gmail.com>
1761
1762         * class-internals.h, generic-sharing.c: New RGCTX info type for
1763         getting a remoting invoke with check wrapper.
1764
1765 2009-07-07  Geoff Norton  <gnorton@novell.com>
1766
1767         * icall-def.h: Fix the enable-minimal build.
1768
1769 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
1770
1771         * object-internals.h: Add MonoReflectionDerivedType.
1772
1773         * reflection.c: Implement support for PointerType.
1774         Fixed tons of warnings.
1775
1776 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
1777
1778         * object-internals.h: Add MonoReflectionByRefType.
1779
1780         * reflection.c: Implement support for ByRefType.
1781
1782 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
1783
1784         * icall-def.h: Add System.Reflection.Emit.DerivedType::create_unmanaged_type.
1785
1786         * object-internals.h: Add MonoReflectionArrayType and
1787         mono_reflection_create_unmanaged_type.
1788
1789         * reflection.c: Implement support for ArrayType.
1790
1791 2009-07-07 Rodrigo Kumpera  <rkumpera@novell.com>
1792
1793         * metadata-verify.c (is_valid_method_header): Parse EH block
1794         flags correctly.
1795
1796 2009-07-03  Mark Probst  <mark.probst@gmail.com>
1797
1798         * sgen-gc.c (finish_gray_stack): Set the to_space pointer after
1799         processing the disappearing links, and process disappearing links
1800         in a loop until no new objects are copied.
1801
1802 2009-07-03  Mark Probst  <mark.probst@gmail.com>
1803
1804         * object.c (handle_enum): Invoke the write barrier when copying
1805         value type instances.
1806
1807         * sgen-gc.c: Register remsets for unmanaged write barriers only
1808         when the address written to is actually on the heap.  This makes
1809         set_value() in object.c work without requiring that the result be
1810         on the heap.
1811
1812 2009-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
1813
1814         The runtime wrappers are all bound to a given type that must
1815         exist in the same image. For regular images we use the <Module>
1816         type, which is required to exist for all images.
1817
1818         The <Module> type can't be used for dynamic images because it
1819         might not exist at the time the wrapper is required, so we create
1820         a synthetic type to use instead.
1821
1822         The current code works because of the 2 stage setup of MonoClass,
1823         but once this is gone it will no longer work.
1824
1825         * icall-def.h: Add ModuleBuilder::set_wrappers_type.
1826
1827         * metadata-internals.h (MonoDynamicImage): Add wrappers_type.
1828
1829         * object-internals.h: Export mono_image_set_wrappers_type icall
1830         as part of the internal API.
1831
1832         * marshal.c (get_wrapper_target_class): If the image is dynamic,
1833         use MonoDynamicImage::wrappers_type instead of the <Module> type.
1834
1835         reflection.c: Add mono_image_set_wrappers_type qhixh sets the dynamic
1836         image wrappers_type to the provided value.
1837
1838 2009-07-01 Rodrigo Kumpera  <rkumpera@novell.com>
1839
1840         * appdomain.c (deregister_reflection_info_roots): No need
1841         to use the image lock here.
1842
1843 2009-07-02  Mark Probst  <mark.probst@gmail.com>
1844
1845         * sgen-gc.c (collect_nursery): Also scan from write-barrier roots.
1846
1847 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
1848
1849         * threads.c: Store the thread start argument in a hash table instead of
1850         registering it as a root, as libgc doesn't support unregistering roots
1851         under windows, leading to 'too many root sets' errors when many threads
1852         are created.
1853
1854         * gc.c (mono_gc_run_finalize): Avoid finalizing dynamic methods during
1855         shutdown, they can still be referenced by the other dying objects.
1856         Fixes #514506.
1857
1858 2009-06-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
1859
1860         * socket-io.c: DontLinger does not allow LingerOptions.
1861
1862 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * metadata-verify.c: The spec doesn't mention that it's possible to add
1865         custom attribute to a generic parameter. Fixed.
1866
1867 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
1868
1869         * class.c (inflate_generic_type): Don't crash while trying to output a message
1870         on why we're aborting.
1871
1872 2009-06-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
1873
1874         * socket-io.c: DontLinger can take an int or a boolean too.
1875
1876 Fri Jun 26 17:00:04 CEST 2009 Paolo Molaro <lupus@ximian.com>
1877
1878         * gc.c: check for a null argument to SuppressFinalize () and
1879         ReRegisterForFinalize ().
1880
1881 2009-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
1882
1883         * loader.c (method_from_methodspec): Call into the verifier to check
1884         the signature.
1885
1886         * metadata-verify.c: Addmono_verifier_verify_methodspec_signature.
1887
1888         * verify-internals.h: Export mono_verifier_verify_methodspec_signature as
1889         part of the internal API.
1890
1891 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1892
1893         * metadata.c (mono_type_create_from_typespec): Call into the verifier to check
1894         the signature.
1895
1896         * metadata-verify.c: Add mono_verifier_verify_typespec_signature.
1897
1898         * verify-internals.h: Export mono_verifier_verify_typespec_signature as
1899         part of the internal API.
1900
1901 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1902
1903         * metadata.c (mono_metadata_parse_mh_full): Call into the verifier to check
1904         the signature.
1905
1906         * metadata-verify.c: Add mono_verifier_verify_standalone_signature. Fix
1907         blob verification.
1908
1909         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
1910         part of the internal API.
1911
1912 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1913
1914         * metadata-verify.c: Use is_valid_blob_object to verify blob validity
1915         when doing basic verification. 
1916
1917         This check must be done since the runtime peeks into signatures in much
1918         more places than it does decoding so it makes sense to ensure that all
1919         pointers to blob objects are well formed.
1920
1921 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1922
1923         * metadata-verify.c (is_valid_blob_object): Add extra minsize argument.
1924         Use proper overflow dectection. Fix usage of it.
1925
1926 2009-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
1927
1928         * loader.c (field_from_memberref): Call into the verifier to check
1929         the signature.
1930
1931         * loader.c (mono_method_get_signature_full): Same.
1932
1933         * loader.c (method_from_memberref): Same.
1934
1935         * metadata-verify.c: Add mono_verifier_verify_memberref_signature.
1936
1937         * verify-internals.h: Export mono_verifier_verify_memberref_signature as
1938         part of the internal API.
1939
1940 2009-06-25  Mark Probst  <mark.probst@gmail.com>
1941
1942         * threadpool.c (mono_thread_pool_add): If the domain is unloading
1943         or unloaded, still return an AsyncResult, but don't add it to the
1944         threadpool.
1945
1946 2009-06-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
1947
1948         * threads.c: fix missing colon when DEBUG is defined.
1949
1950 2009-06-25  Mark Probst  <mark.probst@gmail.com>
1951
1952         * threadpool.c: Don't add new calls to a threadpool if the domain
1953         of the call is unloading or unloaded.  When dequeuing a job, null
1954         the reference in the queue.
1955
1956 2009-06-25  Mark Probst  <mark.probst@gmail.com>
1957
1958         * sgen-gc.c (null_link_in_range): Add the dislink for the old
1959         generation if an object was moved.
1960
1961 2009-06-25  Sylvain Dupont <duposyl@gmail.com>
1962
1963         * cominterop.h cominterop.c marshal.c: Added support for marshalling out 
1964           parameters of type SAFEARRAY[VARIANT].
1965
1966         * reflection.c (encode_marshal_blob): Properly generate element type
1967           (SafeArraySubType marshal attribute option).
1968
1969         Code is contributed under MIT/X11 license.
1970
1971 Thu Jun 25 15:48:09 CEST 2009 Paolo Molaro <lupus@ximian.com>
1972
1973         * reflection.c: in mono_method_clear_object () really ensure all the
1974         objects are removed.
1975
1976 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
1977
1978         * loader.c (mono_method_signature): Call into the verifier to check
1979         the method signature.
1980
1981         * metadata-verify.c (verify_method_table): Move signature verification
1982         to verify_method_table_full.
1983
1984         * metadata-verify.c: Add mono_verifier_verify_method_signature.
1985
1986         * verify-internals.h: Export mono_verifier_verify_method_signature as
1987         part of the internal API.
1988
1989 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
1990
1991         * loader.c (mono_method_get_header): Call into the verifier to
1992         check the method header.
1993
1994         * metadata-verify.c: Add mono_verifier_verify_method_header.
1995
1996         * verify-internals.h: Export mono_verifier_verify_method_header as
1997         part of the internal API.
1998
1999 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
2000
2001         * class.c (mono_class_find_enum_basetype): Call into the verifier to
2002         check the field signature. Replace an assert with an explicit check.
2003
2004         * class.c (mono_class_setup_fields): Call into the verifier to check
2005         the field signature.
2006
2007         * metadata-verify.c: Add mono_verifier_verify_field_signature.
2008
2009         * verify-internals.h: Export mono_verifier_verify_field_signature as
2010         part of the internal API.
2011
2012 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
2013
2014         * class.c (mono_class_find_enum_basetype): Simplify this function
2015         by moving code outside of the loop and not decoding static fields.
2016
2017 2009-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
2018
2019         * metadata-verify.c (verify_typedef_table): Check the extends
2020         token here. Move to here a flags check from verify_typedef_table_full.
2021
2022 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * metadata-verify.c (is_valid_method_header): Fix a warning.
2025
2026         * metadata-internals.h (MonoImage): Remove the unused 
2027         static_rgctx_invoke_wrapper_cache.
2028
2029         * image.c marshal.c: Ditto.
2030
2031 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
2032
2033         * image.c (do_mono_image_load): Enable table data verification.
2034
2035 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
2036
2037         * metadata-verify.c (is_valid_constant): Fix nullref check.
2038
2039 2009-06-23 Rodrigo Kumpera  <rkumpera@novell.com>
2040
2041         * metadata-verify.c (is_valid_constant): Fix string bounds check.
2042
2043 2009-06-22  Mark Probst  <mark.probst@gmail.com>
2044
2045         * sgen-gc.c: Managed allocation with pthreads TLS.
2046
2047         * threads.c, threads-types.h: Functions for the JIT to tell the
2048         runtime whether it supports the MONO_TLS opcode.
2049
2050 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
2051
2052         * metadata-verify.c (verify_param_table): Fix a crash for assemblies
2053         without methods.
2054
2055 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
2056
2057         * metadata-verify.c (is_valid_constant): Fix the string length check.
2058         Use safe overflow checking. Add decent error messages.
2059
2060 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
2061
2062         * metadata-verify.c: Move remaininh blob checks to the offline
2063         verification path.
2064
2065 2009-06-22 Rodrigo Kumpera  <rkumpera@novell.com>
2066
2067         * metadata-verify.c: Move more blob checks to the offline verification
2068         path.
2069
2070 2009-06-22  Bill Holmes  <billholmes54@gmail.com>
2071
2072         * object-internals.h : Adding interrupt_on_stop field.
2073
2074         * threads.c (mono_thread_request_interruption) : On Windows exit the
2075           thread if interrupt_on_stop is set.
2076
2077         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
2078          Removing old interrupt logic and setting the interrupt_on_stop for the
2079          thread when calling accept.
2080
2081         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Receive_internal) :
2082          setting the interrupt_on_stop for the thread when calling accept.
2083
2084         Contributed under MIT/X11 license.
2085
2086 2009-06-20  Martin Baulig  <martin@ximian.com>
2087
2088         * mono-debug.h (MONO_DEBUGGER_MINOR_VERSION): Bump to 3.
2089
2090 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
2091
2092         * appdomain.c (mono_try_assembly_resolve): Don't call managed code when
2093         running in no-exec mode.
2094
2095 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
2096
2097         * metadata-verify.c (verify_method_table): Move header
2098         checking to verify_method_table_full.
2099
2100         * metata-verify.c (mono_verifier_verify_full_table_data):
2101         Call verify_method_table_full.
2102
2103 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
2104
2105         * metadata-verify.c (verify_field_table): Move signature
2106         checking to verify_field_table_full.
2107
2108         * metata-verify.c (mono_verifier_verify_full_table_data):
2109         Call verify_field_table_full.
2110
2111 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
2112
2113         * metadata-verify.c (verify_typedef_table): Move remaining
2114         stuff to verify_typedef_table_full.
2115
2116 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
2117
2118         * metadata-verify.c: Kill is_corlib from VerifyContext.
2119         It is only used by the offline mode.
2120         So we better remove it from the runtime path.
2121
2122 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
2123
2124         * metadata-verify.c: Add new mono_verifier_verify_full_table_data
2125         function that perform the offline metadata verification steps.
2126
2127         * metadata-verify.c (verify_typedef_table): Move some checks to
2128         verify_typedef_table_full and make it been called by new function
2129         mono_verifier_verify_full_table_data.
2130
2131         * pedump.c: Call mono_verifier_verify_full_table_data.
2132
2133         * verify-internals.h: Export mono_verifier_verify_full_table_data as
2134         part of the internal API.
2135
2136 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
2137
2138         * metadata-verify.c (typedef_is_system_object): Fix System.Object
2139         check.
2140
2141         * metadata-verify.c (verify_implmap_table): Fix implmap invalid
2142         flags bits. SupportLastError was confused as bit 7 instead of 6.
2143
2144         * metadata-verify.c (verify_implmap_table): Fix import scope verification
2145         to check against the module ref table instead of module.
2146
2147         * metadata-verify.c (verify_implmap_table): Fix corlib check.
2148
2149         * pedump.c: Call mono_image_load_names.
2150
2151 2009-06-19 Rodrigo Kumpera  <rkumpera@novell.com>
2152
2153         * image.c: Extract mono_image_load_names from do_mono_image_load.
2154
2155         * metadata-internals.h: Export mono_image_load_names as part of
2156         the internal API.
2157         
2158 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
2159
2160         * metadata.c (mono_metadata_cleanup): Free the generic method cache
2161         first, as it could reference data in the other caches.
2162
2163 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
2164
2165         * metadata-verify.c: Finished with method header verification.
2166
2167 2009-06-18 Rodrigo Kumpera  <rkumpera@novell.com>
2168
2169         * metadata-verify.c: Added more header verification code.
2170         Now only EH clauses are missing.
2171
2172 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * marshal.c (get_runtime_invoke_type): Don't share primitive types
2175         for return values.
2176
2177 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
2178
2179         * metadata-verify.c: Initial method header verification.
2180
2181 2009-06-16 Rodrigo Kumpera  <rkumpera@novell.com>
2182
2183         * metadata-verify.c (verify_import_table): The IAT contents
2184         might end been patched by the windows DL when running with
2185         coree enabled.
2186
2187 2009-06-15 Rodrigo Kumpera  <rkumpera@novell.com>
2188
2189         * class.c (mono_class_from_typeref): If the enclosing type is not
2190         found return null instead of crashing. Fixes #508487.
2191
2192 2009-06-15  Atsushi Enomoto  <atsushi@ximian.com>
2193
2194         * normalization-tables.h : updated to the latest unicode charcter
2195           data.
2196         * appdomain.c : bump corlib version.
2197
2198 2009-06-14  Zoltan Varga  <vargaz@gmail.com>
2199
2200         * class.c (mono_class_from_name): Fix support for assembly references
2201         in the EXPORTEDTYPE table. Fixes #511704.
2202
2203 2009-06-13  Geoff Norton  <gnorton@novell.com>
2204
2205         * domain.c: Ensure that mono_domain_assembly_open actually opens the
2206         assembly in the target domain.
2207
2208 2009-06-12  Robert Jordan  <robertj@gmx.net>
2209
2210         * cominterop.c (cominterop_get_ccw): Increment mspec's SizeParamIndex
2211         because "this" of the managed signature has become an
2212         ordinary parameter in the unmanaged signature.
2213
2214 2009-06-12  Zoltan Varga  <vargaz@gmail.com>
2215
2216         * class-internals.h (struct _MonoGenericContainer): Add an 'image'
2217         field for owner-less generic containers.
2218
2219         * reflection.c (mono_reflection_initialize_generic_parameter): Set the
2220         image field of the owner-less generic containers created here.
2221
2222         * metadata.c (mono_metadata_load_generic_params): Ditto, the
2223         contain is ownerless until the caller sets its owner.
2224
2225         * metadata.c (type_in_image): Handle owner-less generic containers
2226         correctly.
2227         
2228 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * image.c (mono_image_close): Support debug_assembly_unload for
2231         dynamic images too.
2232
2233 2009-06-11 Andrés G. Aragoneses  <aaragoneses@novell.com>
2234
2235         * class.c: Fix some typos in comments.
2236
2237 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * reflection.c (add_custom_modifiers): Avoid reading invalid memory.
2240
2241         * threads.c (mono_thread_execute_interruption): Avoid creating the
2242         abort exception object while holding the synch_cs lock.
2243
2244 2009-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
2245
2246         * metadata-verify.c: Verify basic cattr content.
2247
2248 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * reflection.c (add_exported_type): Don't set the FORWARDER flag on
2251         nested types.
2252         
2253         * reflection.c (mono_image_fill_export_table_from_type_forwarders): Add
2254         support for nested types. Fixes #511704.
2255
2256 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2257
2258         * metadata-verify.c: Verify methodspec signatures.
2259
2260 2009-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
2261
2262         * metadata-verify.c: Verify typespec signatures.
2263
2264 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * metadata.c (free_inflated_method): Call 
2267         mono_marshal_free_inflated_wrappers (), which was missed earlier.
2268
2269 2009-06-08  Miguel de Icaza  <miguel@novell.com>
2270
2271         * mono-config.c: Small change to report the PPC64/ILP32 model.
2272
2273 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2274
2275         * metadata-verify.c (parse_type): Check szarray.
2276
2277 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2278
2279         * metadata-verify.c (parse_type): Check fnptr.
2280
2281 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2282
2283         * metadata-verify.c (parse_type): Check generic instances.
2284
2285 2009-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
2286
2287         * metadata-verify.c (parse_type): Check array shape.
2288
2289 2009-06-05  Robert Jordan  <robertj@gmx.net>
2290
2291         * class.c (mono_class_create_from_typedef): Check only for
2292         mscorlib's System.Array.
2293
2294 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2295
2296         * metadata-verify.c (parse_type): Check pointer, class/valuetype
2297         and generic params. 
2298
2299         * metadata-verify.c (parse_field): Check the signature.
2300
2301 2009-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
2302
2303         * metadata-verify.c: Implement locals signature check.
2304
2305 2009-06-04  Marek Safar  <marek.safar@gmail.com>
2306
2307         * domain.c: Add .NET 4.0 Beta 1 version.
2308
2309 2009-06-04  Bill Holmes  <billholmes54@gmail.com>
2310
2311         * cominterop.c (cominterop_ccw_queryinterface): Fix for bug 499566.
2312           For QueryInterface on CCWs consider the base class
2313           interfaces as well.
2314
2315         Code is contributed under MIT/X11 license.
2316
2317 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2318
2319         * wrapper-types.h: Delete STATIC_RGCTX_INVOKE.
2320
2321         * marshal.c (mono_marshal_ret_static_rgctx_invoke): Remove, no longer
2322         used.
2323
2324         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
2325         adding a static-rgctx invoke wrapper, it is done by the runtime trampolines.
2326
2327         * generic-sharing.c (inflate_other_data): Ditto.
2328         
2329 2009-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
2330
2331         * metadata-verify.c: Implement property signature check.
2332
2333 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2334
2335         * sgen-gc.h: Register saving support for PPC.
2336
2337 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2338
2339         * sgen-gc.c: Fixed a pthread TLS screwup.
2340
2341 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2342
2343         * sgen-gc.c: Do TLS using pthread API if __thread keyword is not
2344         supported.
2345
2346 2009-06-04  Mark Probst  <mark.probst@gmail.com>
2347
2348         * sgen-gc.c: Disable TLA and managed allocation if the __thread
2349         keyword is not supported.
2350
2351 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
2352
2353         * marshal.c metadata.c: Applied patch from Ulrich Weigand 
2354         <uweigand@de.ibm.com>: Free the wrappers of inflated generic methods when
2355         the inflated method is freed. Fixes #508389.
2356
2357         The code is contributed under the MIT/X11 license.
2358         
2359 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * marshal.c (get_wrapper_target_class): New helper function.
2362         (mono_marshal_get_runtime_invoke): Place runtime-invoke wrappers into
2363         the <Module> class of the image. Fixes #509049.
2364
2365 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
2366
2367         * threads.c (ves_icall_System_Threading_Thread_Sleep_internal):
2368         Check if the thread was interrupted and proccess it straight away.
2369         Makes abortion much more responsive.
2370
2371 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
2372
2373         * threads.c (mono_thread_execute_interruption): Use atomic cas with
2374         MonoThread::interruption_requested to match it's counterpart.
2375
2376         Fixes a hang in abort-stress-1 on a 2 core x86.
2377
2378         * threads.c (ves_icall_System_Threading_Thread_GetAbortExceptionState):
2379         Fix warning.
2380
2381 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
2382
2383         Change MonoImage::name_cache to be protected by the image lock
2384         instead of the loader lock.
2385
2386         * appdomain.c (deregister_reflection_info_roots): Protect access
2387         to name_cache.
2388
2389         * class.c (mono_image_init_name_cache): Change from the loader lock
2390         to the image lock. Check if the cache wasn't already created.
2391
2392         * class.c: Change from the loader to the image lock.
2393
2394         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Fix
2395         the code to hold the image lock while iterating over name_cache and
2396         not go into mono_array_new holding it.
2397
2398         * metadata-internals.h: Add a comment about this change.
2399
2400 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
2401
2402         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
2403         Under the 2.0 profile raise the loader error.
2404
2405         Fixes #508532.
2406
2407 2009-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
2408
2409         * marshal.c (mono_marshal_get_runtime_invoke): Emit the right kind
2410         of ldind opcode for generic instances so we don't fail for direct wrappers.
2411         This only affect direct calls.
2412
2413 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
2414
2415         * reflection.c (create_dynamic_mono_image): Fix warnings.
2416
2417         * generic-sharing.c (other_info_equal): Ditto.
2418         
2419 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
2420
2421         * metadata-verify.c: Implement field signature check.
2422
2423 2009-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
2424
2425         * metadata-verify.c: Implement standalone signature check.
2426
2427 2009-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
2428
2429         * metadata-verify.c: Implement methodref signature check.
2430
2431 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
2432
2433         * object-internals.h (MonoRuntimeCallbacks): New structure containing
2434         callbacks supplied by the runtime.
2435
2436         * object.c (mono_install_callbacks): New internal function to install
2437         the callbacks.
2438
2439         * object.c (mono_create_ftnptr): Move the implementation of this to
2440         mini/.
2441
2442         * object.c (mono_get_addr_from_ftnptr): Ditto.  
2443
2444 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
2445
2446         * metadata-verify.c (parse_return_type): Proper byref check.
2447         * metadata-verify.c (is_valid_method_signature): Check for zero arity
2448         generic signatures and method params.
2449
2450 2009-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
2451
2452         * metadata-verify.c (decode_signature_header): Fix bounds check.
2453
2454         * metadata-verify.c (parse_custom_mods): Check custom mods.
2455
2456         * metadata-verify.c (parse_type): Do initial basic verification
2457         of valid values.
2458         
2459         * metadata-verify.c (is_valid_method_signature): Parse the generic
2460         param count.
2461
2462 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
2463
2464         * icall.c (ves_icall_Type_GetMethodsByName): Virtual methods should be
2465         discarded based on their most specific definition so we set the method_slots
2466         array before checking if the method is acceptable or not.
2467
2468         Fixes #506757.
2469
2470 2009-05-26  Mark Probst  <mark.probst@gmail.com>
2471
2472         * icall.c: Free the old array when resizing a mono_ptr_array.
2473
2474 2009-05-26  Mark Probst  <mark.probst@gmail.com>
2475
2476         * reflection.c (create_dynamic_mono_image): Use mono_object_hash()
2477         for the hashes whose keys are managed objects.
2478
2479 2009-05-26  Mark Probst  <mark.probst@gmail.com>
2480
2481         * object-internals.h, threads.c: Set the execution context on
2482         thread start here, not in corlib.
2483
2484         * appdomain.c: Bump corlib version.
2485
2486 2009-05-27  Martin Baulig  <martin@ximian.com>
2487
2488         * mono-debug.c (mono_debug_init): Use `MONO_DEBUG_FORMAT_DEBUGGER'
2489         if `_mono_debug_using_mono_debugger' is set to make things work
2490         properly when embedding Mono.
2491
2492 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2493
2494         * class.c (mono_class_setup_fields): Don't mark simd types as having
2495         16 bytes alignment as the whole runtime doesn't support.
2496
2497 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
2498
2499         * metadata-verify.c (safe_read): Use endian safe read macros.
2500
2501 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
2502
2503         * object.c (mono_create_ftnptr): Don't allocate from the code mempool since
2504         it is read-only when using full aot.
2505
2506 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
2507
2508         * metadata-verify.c (is_valid_method_signature): Verify parts
2509         of the return type. Provide an error message in case of failure.
2510
2511 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
2512
2513         * metadata-verify.c (is_valid_method_signature): Verify the call conv.
2514
2515 2009-05-22 Rodrigo Kumpera  <rkumpera@novell.com>
2516
2517         * metadata-verify.c: Include the size prefix in the bounds check.
2518
2519 2009-05-22  Miguel de Icaza  <miguel@novell.com>
2520
2521         * icall.c: Remove warnings.
2522
2523         * mono-config.c: Allow for CONFIG_CPU to be set in config.h and
2524         prevent auto-detection based on GCC defines.
2525
2526         Add PS3
2527
2528         * metadata-verify.c: Do not include signal.h
2529
2530         * generic-sharing.c, marshal.c: Add returns to avoid some warning
2531         messages.  Not sure why the g_assert_not_reached is not enough to
2532         quiet the compiler.
2533         
2534
2535         * appdomain.c: Remove code that is not used when
2536         DISABLE_SHADOW_COPY is set.
2537
2538         * image.c: use g_getenv
2539
2540 2009-05-21  Miguel de Icaza  <miguel@novell.com>
2541
2542         * reflection.c: Remove code that it not used with
2543         DISABLE_REFLECTION_EMIT is defined.
2544
2545 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
2546
2547         * marshal.c (mono_marshal_get_runtime_invoke): Share more runtime
2548         invoke wrappers.
2549
2550 2009-05-20  Miguel de Icaza  <miguel@novell.com>
2551
2552         * socket-io.c
2553         (ves_icall_System_Net_Sockets_Socket_Available_internal): Remove
2554         the ifdef here and instead put that on io-layer
2555
2556 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
2557
2558         * metadata-verify.c: Verify the generic param constraint table.
2559
2560 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
2561
2562         * metadata-verify.c (verify_generic_param_table): Fix
2563         thinko on the valid flags bits for generic params.
2564
2565 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
2566
2567         * metadata-verify.c: Verify the methodspec table.
2568
2569 2009-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
2570
2571         * metadata-verify.c: Verify the generic param table.
2572
2573 2009-05-19  Mark Probst  <mark.probst@gmail.com>
2574
2575         * sgen-gc.c: Store and use the count with REMSET_VTYPE.
2576
2577 2009-05-19  Mark Probst  <mark.probst@gmail.com>
2578
2579         * sgen-gc.c: Use generation enum more consistently and use the
2580         correct generation in mono_gc_register_for_finalization().
2581
2582 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
2583
2584         * metadata-verify.c: Verify the nested class table.
2585
2586 2009-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
2587
2588         * metadata-verify.c: Verify the manifest resource table.
2589
2590 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * debug-helpers.c (dis_one): Add little-endian support for ldstr.
2593
2594 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * class.c (mono_class_get_vtable_entry): Avoid adding static-rgctx
2597         wrappers, this is now done in the JIT.
2598         
2599         * class.c (mono_set_generic_sharing_supported): New internal function.
2600         (mono_class_generic_sharing_enabled): Move the #ifdef stuff to the JIT.
2601
2602 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
2603
2604         * metadata-verify.c: Verify the exported type table.
2605
2606 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
2607
2608         * pedump.c (main): Fake an assembly for netmodules to make the verifier happy.
2609
2610 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * metadata-verify.c: Verify the file table.
2613
2614 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
2615
2616         * metadata-verify.c (verify_assembly_table): Fix an error message.
2617
2618         * metadata-verify.c: Verify the assemblyref table.
2619
2620 2009-05-15 Rodrigo Kumpera  <rkumpera@novell.com>
2621
2622         * metadata-verify.c (verify_assembly_table): Fix the valid
2623         bits mask for flags.
2624
2625 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
2626
2627         * debug-helpers.c (mono_method_full_name): Print generic parameters of
2628         generic methods as well.
2629
2630 2009-05-15  Geoff Norton  <gnorton@novell.com>
2631
2632         * gc.c: MachO/Darwin supports and uses semaphores fine for this 
2633         use-case and is significantly more performant than the wapi layer.
2634
2635 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
2636
2637         * metadata-verify.c: Verify the assembly table.
2638
2639 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
2640
2641         * metadata-verify.c: Fix rows limit check.
2642
2643 2009-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
2644
2645         * metadata-verify.c: Verify the fieldrva table.
2646
2647 2009-05-13  Mark Probst  <mark.probst@gmail.com>
2648
2649         * sgen.c: Speed up weak links and finalizers by grouping them by
2650         generation.
2651
2652 2009-05-13  Mark Probst  <mark.probst@gmail.com>
2653
2654         * marshal.c (delegate_hash_table_add): When overwriting an entry,
2655         free the old GCHandle (only applies to SGen).
2656
2657 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
2658
2659         * loader.c (mono_get_method_from_token): Avoid the expensive call to
2660         mono_metadata_load_generic_params () for non-generic methods.
2661
2662 2009-05-12  Mark Probst  <mark.probst@gmail.com>
2663
2664         * monitor.c, monitor.h (mono_monitor_get_object_monitor_weak_link):
2665         New function for returning a monitor's weak link if it has one.
2666
2667         * sgen-gc.c: Remove an object's monitor's weak link (if it has
2668         one) when clearing a domain.  These can still be around because
2669         the object might not have been collected.
2670
2671 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
2672
2673         * gc.c: Fix a warning.
2674
2675 2009-05-12  Kornél Pál  <kornelpal@gmail.com>
2676
2677         * gc.c (mono_gc_init): Set gc_thread on creation. This avoids the
2678         prevous wait that resulted in a deadlock on Windows when initializing
2679         the runtime form DllMain. Also results in improved startup time.
2680         (finalizer_thread): Get rid of thread_started_event.
2681         * threads.c, threads-types.h (mono_thread_create_internal): Return the
2682         resulting MonoThread.
2683
2684         Contributed under MIT/X11 license.
2685
2686 2009-05-11 Rodrigo Kumpera  <rkumpera@novell.com>
2687
2688         * metadata-verify.c: Verify the implmap table.
2689         Don't require that #US and #Strings be present.
2690
2691 2009-05-11  Sebastien Pouliot  <sebastien@ximian.com>
2692
2693         * security-core-clr.c: Delegate checks are done at creation time,
2694         not a invocation time. Fix exception for Telerik Silverlight demo
2695
2696 2009-05-11  Mark Probst  <mark.probst@gmail.com>
2697
2698         * sgen-gc.c (need_remove_object_for_domain): Remove the special
2699         case for the Thread class.
2700
2701         * threads.c: Do clean-up of abort exception/state in
2702         thread_cleanup() instead of Thread.free_internal().  Also clean up
2703         current_appcontext.  The reason we have to do that is because
2704         those references might point into another domain and if that
2705         domain is unloaded before the thread is finalized, they point to
2706         invalid data.
2707
2708 2009-05-10  Andreas Faerber  <andreas.faerber@web.de>
2709
2710         * null-gc.c (mono_gc_weak_link_add, mono_gc_clear_domain): Fix
2711         stub signatures.
2712         
2713         Contributed unter MIT/X11 license.
2714
2715 2009-05-09  Miguel de Icaza  <miguel@novell.com>
2716
2717         * verify.c, metadata-verifier.c: Add support for disabling the
2718         verifier in some builds.
2719
2720         [ Sorry, my previous commit accidentally commited some work in
2721         progress ]
2722
2723 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
2724
2725         * class.c (mono_class_setup_fields): Set class->field.first for
2726         generic instances.
2727
2728 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
2729
2730         * metadata-verify.c: Verify the typespec table.
2731
2732 2009-05-07 Rodrigo Kumpera  <rkumpera@novell.com>
2733
2734         * metadata-verify.c: Verify the module table.
2735
2736 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2737
2738         * metadata-verify.c: Verify the methodimpl table.
2739
2740 2009-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2741
2742         * metadata-verify.c: Verify the property table.
2743
2744 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
2745
2746         * debug-helpers.c (mono_method_desc_match): Add support for generic
2747         glob patterns.
2748
2749 2009-05-05 Rodrigo Kumpera  <rkumpera@novell.com>
2750
2751         * metadata-verify.c: Verify the propertymap table.
2752
2753 2009-05-04 Rodrigo Kumpera  <rkumpera@novell.com>
2754
2755         * metadata-verify.c: Verify the event table.
2756
2757         * metadata-verify.c (search_sorted_table): Fix offset
2758         calculation.
2759
2760 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
2761
2762         * domain-internals.h (struct _MonoJitInfo): Add a 'from_llvm' flag.
2763
2764 2009-05-01  Mark Probst  <mark.probst@gmail.com>
2765
2766         * gc.c (mono_gc_run_finalize): Don't set the domain too late,
2767         because mono_delegate_free_ftnptr() needs it.
2768
2769 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2770
2771         * metadata-verify.c: Verify the eventmap table.
2772
2773 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2774
2775         * metadata-verify.c: Verify the standalonesig table.
2776
2777 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2778
2779         * metadata-verify.c: Verify the field layout table.
2780
2781 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2782
2783         * class.c (mono_type_get_name_recurse): Don't crash
2784         for ownerless generic params.
2785
2786         * debug-helpers.c (mono_type_get_desc): Correct the format
2787         for ownerless generic params.
2788
2789 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2790
2791         * metadata-verify.c: Verify the class layout table.
2792
2793 2009-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2794
2795         * metadata-verify.c: Verify the decl security table.
2796
2797 2009-04-30  Mark Probst  <mark.probst@gmail.com>
2798
2799         * domain.c (mono_domain_set_internal_with_options): Don't do
2800         anything if the old domain is the same as the old one.  Fixes
2801         #499326.
2802
2803 2009-04-30  Mark Probst  <mark.probst@gmail.com>
2804
2805         * appdomain.c: Deregister the reflection_info roots when unloading
2806         a domain.
2807
2808         * sgen-gc.c, domain.c, gc-internal.h: mono_gc_clear_domain() nulls
2809         memory allocated by a domain and frees its disappearing links.
2810
2811         * boehm-gc.c, null-gc.c: Empty implementation of
2812         mono_gc_clear_domain().
2813
2814 2009-04-30  Mark Probst  <mark.probst@gmail.com>
2815
2816         * appdomain.c (clear_cached_vtable): Free the static fields memory
2817         block.
2818
2819 2009-04-30  Mark Probst  <mark.probst@gmail.com>
2820
2821         * gc.c: Set the correct domain when invoking finalizers.
2822
2823         * appdomain.c: Set the correct domain when creating threads.
2824
2825 2009-04-30  Mark Probst  <mark.probst@gmail.com>
2826
2827         * sgen-gc.c: Fix skip size for vectors.
2828
2829 2009-05-03  Martin Baulig  <martin@ximian.com>
2830
2831         * mono-debug-debugger.c
2832         (mono_debugger_check_breakpoints): Check class init handlers even
2833         if we don't have any method load handers.
2834
2835 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
2836
2837         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid 
2838         returning refonly assemblies if refonly is FALSE. Fixes #499013.
2839
2840 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
2841
2842         * metadata-verify.c: Verify the field marshal table.
2843
2844 2009-04-29 Rodrigo Kumpera  <rkumpera@novell.com>
2845
2846         * metadata-verify.c: Verify the custom attribute table.
2847
2848 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
2849
2850         * metadata-verify.c: Verify the constant table.
2851
2852 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
2853
2854         * metadata-verify.c: Verify the memberef table.
2855
2856 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
2857
2858         * metadata-verify.c (get_coded_index_token): Remove
2859         dead argument.
2860
2861 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
2862
2863         * metadata-verify.c: Verify the interfaceimpl table.
2864
2865 2009-04-28 Rodrigo Kumpera  <rkumpera@novell.com>
2866
2867         * verify.c: Improve error message.
2868
2869         * debug-helpers.c (mono_type_get_desc): Harden the code that
2870         deals with VAR and MVAR.
2871
2872 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
2873
2874         * image.c (mono_image_fixup_vtable): Avoid casting an lvalue. Fixes 
2875         part of #498692.
2876
2877 2009-04-23 Tom Hindle <tom_hindle@sil.org>
2878
2879         * cominterop.c (ves_icall_System_Runtime_InteropServices_Marshal_ReleaseComObjectInternal):
2880         changed to match .Net behaviour of not aborting on additional calls to ReleaseComObject.
2881
2882 2009-04-28  Sebastien Pouliot  <sebastien@ximian.com>
2883
2884         * security-core-clr.c: Avoid redundant checks for platform code, 
2885         e.g. check for method and for class (very common) and check
2886         for class and outer class (less common)...
2887
2888 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * reflection.c: Avoid returning random cattrs for synthetic methods.
2891         Fixes #498545.
2892
2893 2009-04-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
2894
2895         * assembly.c: assemblies in the GAC should never be shadow-copied.
2896
2897 2009-04-26  Mark Probst  <mark.probst@gmail.com>
2898
2899         * domain.c, domain-internals.h: Disable
2900         track_resurrection_{objects,handles}_hash in MonoDomain if using
2901         SGen.
2902
2903 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
2904
2905         * metadata-verify.c: Verify the param table.
2906
2907 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
2908
2909         * metadata-verify.c (verify_typedef_table): Range check FieldList and
2910         MethodList.
2911
2912         * metadata-verify.c (verify_method_table): Proper check the ParamList
2913         field.
2914
2915 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
2916
2917         * metadata-verify.c (verify_method_table): Check for runtime
2918         implemented functions such as delegate .ctors. Remove spurious
2919         printf.
2920         
2921 2009-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
2922
2923         * pedump.c: Proper initialize the runtime forcing the 2.0 profile.
2924
2925 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
2926
2927         Don't allocate MonoGenericInfo for ownerless generic params.
2928         * class-internals.h (MonoGenericParam::info): Move field to ...
2929         (MonoGenericParamFull): ... this.  New struct.
2930         (MonoGenericContainer::type_params): Change type to
2931         MonoGenericParamFull.
2932         (MonoGenericParam, MonoGenericContainer): Update accessors.
2933         * metadata.c (mono_metadata_parse_generic_param): Don't initialize
2934         'info' field for ownerless generic param.
2935         (mono_metadata_load_generic_params): Update to changes.
2936         * reflection.c (mono_reflection_create_generic_class): Likewise.
2937         (reflection_methodbuilder_to_mono_method): Likewise.
2938         (mono_reflection_initialize_generic_parameter): Likewise.
2939
2940 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
2941
2942         Don't use MonoGenericParamInfo for ownerless generic params.
2943         * class.c (get_anon_gparam_class, set_anon_gparam_class): New.  Don't
2944         use ParamInfo class at all.
2945         (mono_class_from_generic_parameter): Use them.
2946         (make_generic_param_class): Fix a couple of instances where 'pinfo
2947         == NULL' wasn't handle.
2948
2949 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
2950
2951         * class.c (make_generic_param_class): Carve out of ...
2952         (mono_class_from_generic_parameter): ... here.
2953
2954 2009-04-24  Raja R Harinath  <harinath@hurrynot.org>
2955
2956         Simplify mono_class_from_generic_parameter
2957         * class-internals.h (MonoGenericParamInfo::token): New field.
2958         * metadata.c (mono_metadata_load_generic_params): Initialize it
2959         from metadata.
2960         * class.c (mono_class_from_generic_parameter): Use it instead of
2961         searching through metadata.
2962
2963 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
2964
2965         * metadata-verify.c: Add verification of the method table.
2966
2967 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
2968
2969         * icall.c (ves_icall_Type_GetMethodsByName): Fix memleak for the
2970         Delegate::Invoke optimization.
2971
2972 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
2973
2974         * appdomain.c (mono_domain_create_appdomain_internal): Free the
2975         string returned by get_shadow_assembly_location_base.
2976
2977         * appdomain.c (get_shadow_assembly_location_base): Add a comment
2978         about caller's ownership.
2979
2980 2009-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
2981
2982         * reflection.c: Add mono_reflection_cleanup_domain to cleanup
2983         reflection memory on domain unload.
2984
2985         * domain.c (mono_domain_free): Don't free refobject_hash, let the
2986         reflection cleanup code do it.
2987
2988         * domain-internals.h: Add mono_reflection_cleanup_domain.
2989
2990         This fixes a memory leak for managed mirrors of reflection objects
2991         on domain unload. 
2992
2993 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
2994
2995         * metadata-verify.c: Implement more verification of the field table.
2996
2997 2009-04-22 Rodrigo Kumpera  <rkumpera@novell.com>
2998
2999         * pedump.c (main): Init mono with mscorlib so it defaults to 2.0 and
3000         doesn't try to parse the input assembly, which can be broken.
3001
3002 2009-04-23  Mark Probst  <mark.probst@gmail.com>
3003
3004         * boehm-gc.c, gc-internal.h, gc.c, monitor.c, null-gc.c,
3005         sgen-gc.c: Implement track resurrection in weak GC handles in SGen
3006         by using the lowest bit in the link to store whether the link is
3007         tracked.  Move the track_resurrection hashes into boehm-gc.c.
3008
3009 2009-04-22  Miguel de Icaza  <miguel@novell.com>
3010
3011         * Makefile.am: Split the console support in platform specific code
3012         and put together a framework for making this easy in the future so
3013         that we can start splitting code instead of having a mess of PLATFORM_WIN32
3014
3015 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
3016
3017         * pedump.c: Fix a warning.
3018
3019 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
3020
3021         * verify.c (mono_delegate_type_equal): Compare valuetypes using
3022         mono_class_from_mono_type to avoid bad interactions with the dual representation
3023         of the generic type definition.
3024
3025 2009-04-21 Rodrigo Kumpera  <rkumpera@novell.com>
3026
3027         * verify.c (do_invoke_method): Use mono_class_from_mono_type to
3028         get the MonoClass for the call context type as it might be a generic
3029         instance.
3030
3031         Fixes #491483.
3032
3033 2009-04-21  Mark Probst  <mark.probst@gmail.com>
3034
3035         * object-internals.h: The Thread object has no execution_context
3036         member anymore.
3037
3038         * threads.c, threadpool.c, threads-types.h: Accessor functions for
3039         the execution context.
3040
3041         * appdomain.c: Bump corlib version.
3042
3043 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3044
3045         * verify.c (do_newobj): Improve error message.
3046
3047 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3048
3049         * verify.c (verify_clause_relationship): Only mask as an error if the exception clause
3050         is nested in the filter block.
3051
3052         * verify.c (verify_clause_relationship): The disjoint check must verify if the exception
3053         block is not fully nested.
3054
3055         Fixes #495656.
3056
3057 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3058
3059         * verify.c (verify_type_compatibility_full): Compare MonoClass and
3060         not MonoType to check for equality of valuetypes as the generic type
3061         definition allows for two different encodings: the generic type definition
3062         class or a generic instance over the GTD arguments.
3063
3064         Fixes #496175.
3065
3066 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3067
3068         * verify.c (dump_stack_value): Fix compilation with extra debug turned on.
3069
3070         * verify.c (do_initobj): Improve error message.
3071
3072 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
3073
3074         * metadata-verify.c: Enable pe verification as the issue with #496453
3075         is that the authenticode data directory have a different unspecified
3076         format. Ignore it for now.
3077
3078         * pedump.c: Run the metadata verifier together with the IL verifier.
3079
3080         Fixes ##496453.
3081
3082 2009-04-20  Rolf Bjarne Kvinge  <RKvinge@novell.com>
3083
3084         * metadata-verify.c: Temporarily disable pe verification due to #496453.
3085
3086 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
3087
3088         * class.c (can_access_type): Check visibility against
3089         the element type for pointers and arrays.
3090
3091         Fixes #496150.
3092
3093 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
3094
3095         * metadata-verify.c: Fix cli and table verification to use information
3096         from the MonoImage. A lot of duplicated code got killed.
3097
3098 2009-04-17 Rodrigo Kumpera  <rkumpera@novell.com>
3099
3100
3101         This patch starts to integrate the metadata verifier with the runtime code.
3102
3103         This patch causes major regression in functionality for the metadata verifier
3104         as cli and table verification are disabled since they require to be ported to
3105         use MonoImage information.
3106
3107         * image.c (do_mono_image_load): Split the code in this function
3108         into mono_image_load_pe_data and mono_image_load_cli_data.
3109         Add     care_about_pecoff parameter to not load pecoff data.
3110         Call into the metadata verifier for pecoff and cli verification.
3111
3112         * image.c (mono_image_open_raw): New function that doesn't perform
3113         any parsing of the image contents.
3114         
3115         The reason for the 3 new functions is to give pedump better control
3116         into the interaction with the verifier.
3117
3118         * metadata-internals.h: Add new functions from image.c as part of the
3119         internal mono API.
3120
3121         * metadata-verify.c: Split mono_image_verify into mono_verifier_verify_pe_data,
3122         mono_verifier_verify_cli_data and mono_verifier_verify_table_data. Prepare
3123         to make those functions work together with the runtime.
3124
3125         * verify.c: Add mono_verifier_is_enabled_for_image function that returns
3126         true if the image needs to be verified.
3127
3128         * verify-internals.h: Export new functions from metadata-verify.c and verify.c.
3129
3130         * pedump.c: Use new metadata verifier API.
3131
3132 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
3133
3134         * object.c (mono_install_vtable_trampoline): Make this receive a
3135         trampoline creation function instead of trampoline, allowing the JIT
3136         to use a different trampoline for each vtable.
3137
3138 2009-04-18  Mark Probst  <mark.probst@gmail.com>
3139
3140         * object.c (mono_raise_exception): Don't reset the thread abort
3141         exception state here.
3142
3143 2009-04-18  Mark Probst  <mark.probst@gmail.com>
3144
3145         * icall-def.h: New icall for getting the thread abort exception
3146         state for a thread.
3147
3148         * object.c, thread.c, object-internals.h: A thread's abort
3149         exception state is now a GC handle.  To get the object it stands
3150         for, we must move it into the current app domain, if it's
3151         different than the one where it originated from.
3152
3153         * appdomain.c: Bump corlib version.
3154
3155         * domain.c, domain-internals.h: New function for setting the
3156         domain and migrate the thread abort exception or not.
3157
3158 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
3159
3160         * metadata-verify.c: Add initial verification of the
3161         field table.
3162
3163 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
3164
3165         * metadata-verify.c: Add a macro to conditionally enable
3166         dumping of verification information. Add  make_coded_token
3167         and search_sorted_table to enable search sorted tables
3168         by a given coded token.
3169
3170 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
3171
3172         * metadata-verify.c: Add array mapping from table index
3173         to description offset. Add get_col_offset and get_col_size
3174         functions.
3175
3176 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
3177
3178         * metadata-verify.c: Add remaining table descriptions offsets.
3179         Add remaining coded index descriptions.
3180
3181 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
3182
3183         * metadata-verify.c: Fixed constant table description.
3184         Fixed calculation of HasCustomAttribute coded index size.
3185         Fixed calculation of size for many table indexes. 
3186
3187 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
3188
3189         * pedump.c (dump_metadata): Dump table offset instead
3190         of useless pointer in memory.
3191
3192 2009-04-16 Rodrigo Kumpera  <rkumpera@novell.com>
3193
3194         * metadata-verify.c (verify_typedef_table): Add tests for MethodList.
3195
3196 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
3197
3198         * metadata-verify.c (verify_typedef_table): Add tests for FieldList and
3199         a missing of for interface types.
3200
3201 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
3202
3203         * metadata-verify.c (verify_pe_optional_header): Add comment of why
3204         the code is commented.
3205
3206         * metadata-verify.c (verify_resources_table): Remove spurious printf
3207         and don't fail if there are unmanaged resources. Gmcs generates a useless
3208         one     for all assemblies - I bet it's some MS compatibility junk.
3209
3210 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
3211
3212         * metadata-verify.c (verify_typedef_table): Verify the extends field.
3213
3214         * metadata-verify.c (mono_image_verify): Add a is_corlib.
3215
3216         * verify-internals.h: Same.
3217
3218         * pedump.c: Fix for mono_image_verify new signature.
3219
3220 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
3221
3222         * metadata-verify.c (verify_typedef_table): Verify for some invalid
3223         flags combinations.
3224
3225 2009-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
3226
3227         * metadata-verify.c (verify_module_table): Ignore the generation field.
3228
3229 2009-04-15  Martin Baulig  <martin@ximian.com>
3230
3231         * debug-mono-symfile.c
3232         (mono_debug_symfile_lookup_location): Don't print a warning for
3233         unknown extended opcodes if they're within 0x40 and 0x7f.
3234
3235 2009-04-15  Zoltan Varga  <vargaz@gmail.com>
3236
3237         * marshal.c (mono_marshal_get_runtime_invoke_sig): Don't share runtime
3238         invoke signatures returning an enum. Fixes #494847.
3239
3240 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
3241
3242         * metadata-verify.c: Initial code to verify the typedef table.
3243
3244 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
3245
3246         * verify.c (mono_method_verify): Don't fail if an unconditional branch
3247         with non empty stack happens before the beginning of a try block.
3248
3249         Fixes #494812.
3250
3251 2009-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
3252
3253         * metadata-verify.c: Verify typename and typenamespace fields of
3254         the typeref table.
3255
3256 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
3257
3258         * metadata-verify.c: Initial code to verify the typeref table.
3259
3260 2009-04-13 Rodrigo Kumpera  <rkumpera@novell.com>
3261
3262         * verify.c (verify_delegate_compatibility): Fix error message.
3263
3264 2009-04-14  Sebastien Pouliot  <sebastien@ximian.com>
3265
3266         * security-core-clr.c: Fix typo
3267
3268 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3269
3270         * marshal.c (delegate_hash_table_add): Make delegate_target_locations 
3271         a MonoGHashTable to keep its values alive.
3272         (emit_marshal_boolean): Fix a warning.
3273
3274 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
3275
3276         * socket-io.c: don't return IPv4/IPv6 addresses if the machine does
3277         not have any interface configured for IPv4/IPv6.
3278
3279 2009-04-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
3280
3281         * assembly.c: fix typo in error message.
3282
3283 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * marshal.c (mono_delegate_to_ftnptr): Use mono_gc_alloc_fixed () for
3286         allocating the location holding the this argument to prevent
3287         'too many root sets' errors.
3288
3289         * object.c (mono_class_create_runtime_vtable): Set field->offset to -1
3290         to mark fields as special static.
3291         (mono_field_static_get_value): Handle special static fields.
3292         (mono_field_static_set_value): Ditto.
3293
3294         * class-internals.h (struct _MonoClassField): Document this.
3295
3296 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
3297
3298         * cominterop.c (mono_cominterop_emit_marshal_com_interface): Assigning
3299           the argument a value of null for the MARSHAL_ACTION_MANAGED_CONV_OUT
3300           case.  This will handle when managed code returns null to native code.
3301
3302         Code is contributed under MIT/X11 license.
3303
3304 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
3305
3306         * object.c (build_imt_slots): Changing a free to a g_free to match
3307           the g_malloc0 in add_imt_builder_entry that allocated this memory.
3308
3309         Code is contributed under MIT/X11 license.
3310
3311 2009-04-13  Bill Holmes  <billholmes54@gmail.com>
3312
3313         * marshal.c (emit_marshal_boolean): Adding code to ensure that
3314           the correct TRUE value is passed through the marshaling layer.
3315
3316         Code is contributed under MIT/X11 license.
3317
3318 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
3319
3320         * marshal.c (mono_marshal_emit_managed_wrapper): Handle closed delegates
3321         correctly. Fixes #492330.
3322         
3323         * marshal.c: Fix the embedding of object pointers into JITted code in
3324         the native-to-managed wrappers by allocating some GC tracked memory, and
3325         embedding the address of that.
3326
3327 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * object.c (mono_class_create_runtime_vtable): Avoid putting MonoMethod
3330         pointers into the vtable.
3331
3332 2009-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
3333
3334         * verify.c (mono_delegate_type_equal): Proper check MONO_TYPE_CLASS.
3335
3336         * verify.c (verify_ldftn_delegate): Improve error message.
3337
3338 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
3339
3340         * reflection.c (my_mono_class_from_mono_type): Remove.
3341
3342 2009-04-09  Raja R Harinath  <harinath@hurrynot.org>
3343
3344         Prepare to reduce memory usage of owner-less generic parameters (1/n)
3345         * class-internals.h (MonoGenericParam): Carve out pklass, name, flags
3346         and constraints fields into ...
3347         (MonoGenericParamInfo): ... this.
3348         (mono_generic_param_info, mono_generic_container_get_param_info):
3349         New accessors.
3350         * class.c, debug-helpers.c, icall.c: Update to changes.
3351         * metadata.c, reflection.c, verify.c: Likewise.
3352
3353 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * debug-helpers.c (dis_one): Fix decoding of strings in dynamic images.
3356
3357         * marshal.c (get_runtime_invoke_type): Share enums with their base types.
3358         
3359         * marshal.c (get_runtime_invoke_type): Share pointers with ints and
3360         booleans with sbytes.
3361
3362 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
3363
3364         * class.c (can_access_instantiation): Verify accesibility of element types
3365         for arrays and pointers.
3366
3367         * class.c (can_access_type): Return true if the target class is VAR or MVAR.
3368
3369         * class.c (mono_method_can_access_method_full): Fix typos in the documentation.
3370
3371         Fixes #493068.
3372
3373 2009-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
3374
3375         * verify.c (do_invoke_method): Improve error messages.
3376
3377 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
3378
3379         * verify.c:  Fixing the MSVC build.
3380
3381         Code is contributed under MIT/X11 license.
3382
3383 2009-04-08  Sebastien Pouliot  <sebastien@ximian.com>
3384
3385         * security-core-clr.c: Simplify get_reflection_caller not to call
3386         mono_method_get_last_managed (another stack walk) and adjust the
3387         callers to handle a (should not happen) NULL return value.
3388
3389 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3390
3391         Add accessors to some MonoGenericParam fields
3392         * class-internals.h (mono_generic_param_owner): New accessor.
3393         (mono_generic_param_num): Likewise.
3394         (mono_type_get_generic_param_owner): New helper.
3395         (mono_type_get_generic_param_num): New helper.
3396         * class.c, icall.c, metadata.c, reflection.c, verify.c: Use them.
3397
3398 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3399
3400         * class-internals.h (mono_generic_container_get_param): New wrapper.
3401         * class.c, icall.c, metadata.c, verify.c: Use it.
3402
3403 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
3404
3405         Fix gtest-252.cs
3406         * verify.c (mono_type_is_valid_type_in_context): Rewrite to use
3407         the standard case/loop.  In particular, don't complain about
3408         references to generic type definitions.
3409
3410 2009-04-07  Zoltan Varga  <vargaz@gmail.com>
3411
3412         * debug-helpers.c (dis_one): Decode string arguments.
3413
3414 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
3415
3416         * pedump.c (dump_verify_info): Dump type name correctly.
3417
3418 2009-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
3419
3420         * verify.c (mono_method_verify): Don't init code slots for exception boundaries if they
3421         are larger than code size.
3422
3423         This can happen in valid code if the try/catch block is not followed by any instruction
3424         and do a backward branch on the leave instruction.
3425
3426         Fixes #492494.
3427
3428 2009-04-06  Sebastien Pouliot  <sebastien@ximian.com>
3429
3430         * security-core-clr.c: Fix typo while comparing second method names
3431         in can_avoid_corlib_reflection_delegate_optimization
3432
3433 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
3434
3435         * verify.c (do_throw): Don't allow an unboxed generic param ar argument.
3436
3437         Fixes #487738.
3438
3439 2009-04-06 Rodrigo Kumpera  <rkumpera@novell.com>
3440
3441         * metadata.c (do_mono_metadata_parse_type): Fail if we are decoding
3442         a MVAR using a class context.
3443
3444         Fixes #490335.
3445
3446 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
3447
3448         * object.c (mono_class_compute_gc_descriptor): Make this non-static.
3449
3450         * domain-internals.h (struct _MonoJitInfo): Add a 'gc_info' field.
3451
3452         * gc-internal.h (MonoGCCallbacks): New stucture containing the callback
3453         functions supplied by the JIT for the SGEN GC.
3454
3455         * sgen-gc.c: Call the callbacks supplied by the JIT to do stack marking.
3456         
3457 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
3458
3459         monitor.c (mono_monitor_try_enter_internal):
3460         Added calls to profile monitor contentions.
3461         Also duplicated a small piece of code (the "get the monitor" logic)
3462         from the fast path to the slow path, and changed the relevant goto
3463         statements, so that monitor acquisition events can be emitted from the
3464         slow path (this is by Paolo Molaro).
3465
3466 2009-04-06  Massimiliano Mantione  <massi@ximian.com>
3467
3468         * profiler.c, profiler.h, profiler-private.h:
3469         Added support for profiling monitor contentions.
3470
3471 2009-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
3472
3473         * metadata-verify.c: Verify the modules table.
3474
3475 2009-04-02 Rodrigo Kumpera  <rkumpera@novell.com>
3476
3477         * verify.c (mono_generic_param_is_constraint_compatible): Inflate the candidate
3478         using the context of the method been verifier and not of the method been called.
3479
3480         * verify.c: Add verifier_inflate_type and mono_type_is_valid_type_in_context to
3481         safely inflate generic types. 
3482
3483 2009-04-02  Sebastien Pouliot  <sebastien@ximian.com>
3484
3485         * security-core-clr.c: Change the strategy for checking the 
3486         "reflection using delegates optimization" to avoid unneeded 
3487         attributes in multiple class libraries.
3488
3489 2009-04-02  Mark Probst  <mark.probst@gmail.com>
3490
3491         * sgen-gc.c: Remove object element in the disappearing link struct
3492         by storing the object pointer in the link.
3493
3494 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
3495
3496         * pedump.c (dump_verify_info): Don't crash if signature decoding fails.
3497
3498 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
3499
3500         * verify.c (verifier_load_field): Fail if the field parent could not be loaded.
3501
3502         * verify.c (mono_method_verify): Do proper bounds checking of exception
3503         clause ranges.
3504
3505 2009-03-31 Rodrigo Kumpera  <rkumpera@novell.com>
3506
3507         * loader.c (mono_field_from_token): Don't crash if the field parent could
3508         not be decoded.
3509
3510 2009-03-31  Mark Probst  <mark.probst@gmail.com>
3511
3512         * sgen-gc.c: Execute critical finalizers after ordinary
3513         finalizers.
3514
3515         * class-internals.h, domain.c: Add CriticalFinalizerObject to
3516         mono_defaults.
3517
3518 2009-03-31 Jb Evain <jbevain@novell.com>
3519
3520         * verify.c (do_ldstr): don't check if a string is in the user strings
3521         heap if the current image is dynamic.
3522
3523 2009-03-31  Mark Probst  <mark.probst@gmail.com>
3524
3525         * sgen-gc.c: Wait until the last finalizer has executed when
3526         returning from WaitForPendingFinalizers.
3527
3528 2009-03-31  Martin Baulig  <martin@ximian.com>
3529
3530         * mono-debug-debugger.h (MonoDebuggerEvent): Add
3531         `MONO_DEBUGGER_EVENT_CREATE_APPDOMAIN' and
3532         `MONO_DEBUGGER_EVENT_UNLOAD_APPDOMAIN'.
3533         (mono_debugger_event_create_appdomain): New function.
3534         (mono_debugger_event_unload_appdomain): New function.
3535
3536         * appdomain.c (mono_domain_create_appdomain_internal): Call
3537         mono_debugger_event_create_appdomain().
3538
3539 2009-03-31  Martin Baulig  <martin@ximian.com>
3540
3541         * mono-debug-debugger.c
3542         (mono_debugger_register_class_init_callback): Also register the
3543         class init callback if the class is already initialized to make
3544         things work with shadow copied assemblies.
3545
3546 2009-03-31  Sebastien Pouliot  <sebastien@ximian.com>
3547
3548         * security-core-clr.c
3549         (mono_security_core_clr_ensure_reflection_access_field): Let 
3550         critical code access the field (just like we do for methods). Use
3551         check_field_access helper.
3552         (mono_security_core_clr_ensure_reflection_access_method): Use 
3553         check_field_access helper.
3554
3555 2009-03-31  Mark Probst  <mark.probst@gmail.com>
3556
3557         * sgen-gc.c: Remove data (callback) element from FinalizeEntry and
3558         call the run-finalize function directly.
3559
3560         * gc.c, gc-internal.h: Make run_finalize() non-static.
3561
3562 2009-03-31  Mark Probst  <mark.probst@gmail.com>
3563
3564         * sgen-gc.c: Use a separate struct for disappearing links.
3565
3566 2009-03-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
3567
3568         * socket-io.c: don't fail if the SocketOptionsFlag has Partial or
3569         * MaxIOVectorLength enabled, just ignore them.
3570         Fixes bug #349688.
3571
3572 2009-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
3573
3574         * metadata-verify.c: Fix eglib build.
3575
3576 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
3577
3578         * threads-types.h: Fix the win32 build.
3579
3580 2009-03-28  Sebastien Pouliot  <sebastien@ximian.com>
3581
3582         * class.c: move coreclr inheritance/override checks to 
3583         security-core.clr.c
3584         * security-core.clr.c|h: add code from class.c with additional
3585         documentation. Fix override check when the method is not critical.
3586
3587 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
3588
3589         * debug-helpers.c (mono_method_desc_match): Make '*' match anything.
3590         (match_class): Ditto.
3591
3592 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
3593
3594         * metadata-verify.c: Rename bounds_check_offset to bounds_check_datadir.
3595
3596         * metadata-verify.c: Implement table layout row size calculation. Verify
3597         the total size of the tables.
3598
3599 2009-03-27 Rodrigo Kumpera  <rkumpera@novell.com>
3600
3601         * metadata-verify.c: Verify heap sizes and size to decode row counts. 
3602
3603 2009-03-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
3604
3605         * appdomain.c:
3606         * console-io.[ch]: added new mono_console_init() to make sure that
3607         file descriptors 0, 1 and 2 are opened.
3608         Bug #489019 fixed.
3609
3610 2009-03-27  Sebastien Pouliot  <sebastien@ximian.com> 
3611
3612         * appdomain.h: Export a new callback type and a new function to
3613         set this callback. This allow a mono host to provide it's own
3614         definition for "platform code".
3615         * metadata-internals.h: Add a core_clr_platform_code flag on 
3616         _MonoImage to (cache and) know if it is representing platform 
3617         code.
3618         * image.c (do_mono_image_open): Set core_clr_platform_code flag 
3619         on platform code images.
3620         * security-core-clr.c|h 
3621         (mono_security_set_core_clr_platform_callback): Allow the host
3622         to provide it's own platform check definition.
3623         (mono_security_core_clr_determine_platform_image): Detect if an 
3624         image is platform code (using the specified callback).
3625         (mono_security_core_clr_is_platform_image): Return cached value 
3626         for platform code.
3627
3628 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
3629
3630         * threads.c (mono_create_thread): New helper function to wrap CreateThread
3631         which has different parameter types for the 'tid' argument in windows and
3632         the io-layer.
3633
3634         * appdomain.c attach.c threads.c: Use the new helper.
3635
3636 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
3637
3638         * metadata-verify.c: Verify valid table bits.
3639
3640 2009-03-26 Rodrigo Kumpera  <rkumpera@novell.com>
3641
3642         * metadata-verify.c (verify_metadata_header): Store size in the size field.
3643
3644         * metadata-verify.c: Add initial table schema verification.
3645
3646 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * icall.c (ves_icall_get_parameter_info): Add a 'member' argument, used to
3649         obtain the refclass argument needed by mono_param_get_objects (). Fixes
3650         #488383.
3651
3652         * reflection.c (mono_param_get_objects_internal): Add a 'refclass' argument.
3653
3654         * appdomain.c (MONO_CORLIB_VERSION): Bump this.
3655
3656 2009-03-26  Sebastien Pouliot  <sebastien@ximian.com>
3657
3658         * security-core-clr.c: Add/update documentation
3659
3660 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
3661
3662         * marshal.c (emit_marshal_object): Generate code to throw an exception
3663         instead of throwing it. Fixes #488670.
3664
3665 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com>
3666
3667         * appdomain.c: Bump MONO_CORLIB_VERSION to 73.
3668         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Add
3669         an extra 'throwOnBindFailure' parameter to the icall. Remove FIXME
3670         and add a call to mono_security_core_clr_ensure_delegate_creation
3671         to do the extra checks required by CoreCLR.
3672         * security-core-clr.c|h: Add function to check delegate creation,
3673         both in the binding and accessibility, under CoreCLR.
3674
3675 2009-03-25  Sebastien Pouliot  <sebastien@ximian.com> 
3676
3677         * reflection.c (mono_reflection_create_dynamic_method): when 
3678         coreclr is enabled make sure that every resolved object are
3679         checked (e.g. field and method access).
3680         * security-core-clr.c|h: Add function to check objects resolved
3681         when a dynamic method is created.
3682
3683 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
3684
3685         * metadata-verify.c: Cache directory rva translations.
3686
3687         * metadata-verify.c: Add cli-header and streams verification.
3688
3689 2009-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
3690
3691         * image.c (load_metadata_ptrs): We decode MonoImage::md_version_minor at
3692         the wrong offset (8 instead of 6).
3693
3694 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
3695
3696         * marshal.c (mono_delegate_to_ftnptr): For delegates wrapping pinvoke
3697         methods, return the native function address itself. Fixes
3698         #487758.
3699
3700 2009-03-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
3701
3702         * console-io.c: some of the values for control characters might not be
3703         present.
3704
3705 2009-03-21  Sebastien Pouliot  <sebastien@ximian.com>
3706
3707         * exception.c|h: Add helpers to create [Field|Method]AccessException
3708         * icall.c: Add required coreclr check calls for field reflection.
3709         Move the existing (method) check logic into security-core-clr.c
3710         * security-core-clr.c: Add functions to check if the access of a
3711         field or method is allowed when reflecting under coreclr. This is
3712         mostly done using a stack walk to find the "real" caller: i.e. the
3713         code that is calling the reflection
3714
3715 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
3716
3717         * gc-internal.h: Change location of gc_wrapper.h
3718
3719 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com> 
3720
3721         * class.c: Simplification to coreclr checks for overrides that
3722         makes it easier to set breakpoints.
3723
3724 2009-03-20  Sebastien Pouliot  <sebastien@ximian.com>
3725
3726         * security-core-clr.c|h: (mono_security_core_clr_class_level, 
3727         mono_security_core_clr_method_level): Avoid potential 
3728         MonoCustomAttrInfo allocation for transparent assemblies (e.g. 
3729         user/application code) and make it easier to set breakpoints
3730
3731 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
3732
3733         * metadata-verify.c: Reject cli header tables that mono don't handle.
3734
3735 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
3736
3737         * pedump.c: Fix CLI header dumping.
3738
3739 2009-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
3740
3741         * metadata-verify.c: More CLI header verification.
3742
3743 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * locales.c (get_current_locale_name): Use g_malloc instead of malloc.
3746
3747 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
3748
3749         * metadata-verify.c: Initial verification of the CLI header.
3750
3751 2009-03-18 Rodrigo Kumpera  <rkumpera@novell.com>
3752
3753         * metadata-verify.c (verify_resources_table): Fix verification of zero
3754         sized resource section and id entries count.
3755
3756 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
3757
3758         * icall.c: Handle user types in many Type icalls. Fixes #486303.
3759
3760 2009-03-17  Jb Evain  <jbevain@novell.com>
3761
3762         * profiler.c: call mono_gc_base_init from mono_profiler_load.
3763
3764 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
3765
3766         * sgen-gc.c (mono_gc_make_descr_for_object): Fix 64 bit support.
3767         (mono_gc_make_descr_for_array): Ditto.
3768
3769 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
3770
3771         * verify.c (mono_verifier_is_class_full_trust): Add support for
3772         CoreCLR security mode where trusted assemblies are defined as
3773         "platform code".
3774
3775 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3776
3777         * metadata-verify.c: Add minimal PECOFF resource verification.
3778
3779 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3780
3781         * metadata-verify.c: Be less restrictive with some coff fields.
3782
3783 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
3784
3785         * verify.c (init_stack_with_value_at_exception_boundary): Init generic
3786         params as boxed values on stack. Fixes #485706.
3787
3788 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
3789
3790         * console-io.c: the termios values may vary in different flavors of unix.
3791
3792 2009-03-16 Gonzalo Paniagua Javier <gonzalo@novell.com>
3793
3794         * console-io.[ch]: return the entire set of control characters when
3795         initializing the terminal.
3796         * appdomain.c: bump corlib version.
3797
3798 Mon Mar 16 11:11:26 CET 2009 Paolo Molaro <lupus@ximian.com>
3799
3800         * mono-perfcounters.c: added support for in-process custom
3801         performance counters.
3802
3803 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
3804
3805         * metadata-verify.c: Small cleanup and add comment for IAT directory entry. 
3806
3807 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
3808
3809         * metadata-verify.c: Verify the data pointed by the import table. 
3810
3811 2009-03-13 Rodrigo Kumpera  <rkumpera@novell.com>
3812
3813         * metadata-verify.c (load_data_directories): Store data
3814         directory contents.
3815
3816         * metadata-verify.c: Verify the import table. 
3817
3818 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
3819
3820         * metadata-verify.c: Verify data directories.
3821
3822 2009-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
3823
3824         * metadata-verify.c: Check section header flags.
3825
3826 2009-03-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
3827
3828         * appdomain.c: if the assembly name is a shadow-copied file, return
3829         TRUE from mono_is_shadow_copy_enabled but don't actually do anything
3830         in mono_make_shadow_copy.
3831         * icall.c: if the assembly name is a shadow-copied file, replace it
3832         with the original assembly path.
3833
3834         Bug #484244 fixed. NUnit tests for corlib can be run without
3835         --noshadow now.
3836
3837 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
3838
3839         * sgen-gc.c (add_to_global_remset): Fix the handling of root global remset
3840         entries when the table is reallocated.
3841
3842         * icall.c: Allocate the memory used by the mono_ptr_array macros using
3843         mono_gc_alloc_fixed () since it contains GC refs.
3844
3845 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
3846
3847         * reflection.c (ensure_complete_type): New helper function to call
3848         type resolve handlers for unfinished dynamic types.
3849         (resolve_object): Call it for MonoClassFields. Fixes #483852.
3850
3851 2009-03-09  Zoltan Varga  <vargaz@gmail.com>
3852
3853         * reflection.c (mono_custom_attrs_has_attr): Handle interfaces. Fixes
3854         #483247.
3855
3856 2009-03-08 Rodrigo Kumpera  <rkumpera@novell.com>
3857
3858         * appdomain.c (get_shadow_assembly_location): Fix memleak.
3859
3860 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
3861
3862         * domain-internals.h (struct _MonoDomain): Add new hash tables mapping
3863         between GCHandles of type WeakTrackResurrection and the objects they
3864         point to.
3865
3866         * gc.c: Partly implement the sematics of GCHandles of type 
3867         WeakTrackResurrection: these handles should only be cleared after the
3868         finalizer of the object they are pointing to has ran.
3869
3870 2009-03-06  Mark Probst  <mark.probst@gmail.com>
3871
3872         * icall.c: Partially revert r126631 because using the jump
3873         trampolines for generic shared methods makes it superfluous.
3874
3875 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
3876
3877         * threads.c (handle_store): Create the 'threads' hash table with the proper
3878         MONO_HASH_VALUE_GC type.
3879
3880 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
3881
3882         * domain-internals.h (struct _MonoDomain): Move 'typeof_void' before
3883         FIRST_GC_TRACKED.
3884
3885         * domain.c (mono_domain_create): Register the fields between FIRST_GC_TRACKED
3886         and LAST_GC_TRACKED as a GC root.
3887
3888         * gc-internal.h: Fix the comment of mono_gc_alloc_fixed.
3889
3890         * object.c (mono_class_create_runtime_vtable): Create a GC descriptor for
3891         the static data even if it consists of 1 reference.
3892
3893         * boehm-gc.c (mono_gc_alloc_fixed): Allocate using GC_MALLOC_EXPLICITLY_TYPED
3894         if there is a GC descriptor.
3895
3896         * reflection.c (ALLOC_REFENTRY): Allocate ReflectedEntry-es using malloc
3897         instead of through the GC since they contain no object references.
3898
3899 2009-03-05  Mark Probst  <mark.probst@gmail.com>
3900
3901         * generic-sharing.c (instantiate_other_info): Always return a jump
3902         trampoline for method code.
3903
3904 2009-03-05  Marek Habersack  <mhabersack@novell.com>
3905
3906         * culture-info-tables.h: generated to include the en-tt culture.
3907
3908 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
3909
3910         * domain-internals.h (MonoDomain): Add two fields to cache invoke wrappers to
3911         capture the thread context.
3912
3913         * object.c (mono_async_result_new): Cache the invoke wrappers to
3914         ExecutionContext::Capture.
3915
3916 2009-03-04 Rodrigo Kumpera  <rkumpera@novell.com>
3917
3918         * marshal.h: Add a prototype for what mono_compile_method returns
3919         for invoke wrappers.
3920
3921         * gc.c: Use the new prototype declaration.
3922
3923 2009-03-04  Geoff Norton  <gnorton@novell.com>
3924
3925         * boehm-gc.c: Add some MONO_LOG tracing for the GC
3926         * gc-internal.h:
3927         * mono-gc.h: Expose mono_gc_invoke_finalizers in the embedding api.
3928
3929 2009-03-04  Martin Baulig  <martin@ximian.com>
3930
3931         * mono-debug.h
3932         (mono_debugger_runtime_invoke): Removed.
3933
3934         * mono-debug-debugger.c
3935         (mono_runtime_invoke): Moved into ../mini/debug-mini.c.
3936
3937 2009-03-02  Martin Baulig  <martin@ximian.com>
3938
3939         * mono-debug.h
3940         (mono_debugger_unhandled_exception): Removed.
3941         (mono_debugger_handle_exception): Removed.
3942         (mono_debugger_throw_exception): Removed.
3943
3944         * mono-debug.c
3945         (mono_debug_debugger_version): Bump to 5.
3946
3947         * mono-debug-debugger.c: Moved the exception handling code to
3948         ../mini/debug-mini.c
3949
3950 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3951
3952         * domain-internals.h (struct _MonoDomain): Add a separate lock for the
3953         finalize_objects_hash.
3954
3955         * gc.c: Use the separate lock to access the finalize_objects_hash field.
3956         
3957         * domain-internals.h (struct _MonoDomain): Add finalize_runtime_invoke
3958         field.
3959
3960         * metadata-internals.h (struct _MonoImage): Add runtime_invoke_vcall_cache
3961         cache.
3962
3963         * image.c (mono_image_close): Free it.
3964         
3965         * marshal.c (mono_marshal_get_runtime_invoke): Add a 'virtual' argument
3966         allowing a creation of a wrapper which invokes its method using a CALLVIRT
3967         on the this argument.
3968
3969         * gc.c (run_finalize): Optimize the calling of the finalizers.
3970
3971 2009-03-03  Martin Baulig  <martin@ximian.com>
3972
3973         * mono-debug.h (MONO_DEBUGGER_MAJOR_VERSION): Bump to 81 because
3974         of the `MonoGenericInst' changes.
3975
3976 2009-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
3977
3978         * icall.c (ves_icall_MonoType_GetGenericArguments): Use
3979         mono_array_class_get_cached to reduce locking contention. Extract
3980         a domain var.
3981
3982         * icall.c (ves_icall_Type_GetFields_internal): Avoid allocating
3983         intermediary managed arrays. Use caching version of mono_array_new
3984         to allocate the result array.
3985
3986         * icall.c (ves_icall_Type_GetEvents_internal): Same.    
3987
3988         * icall.c (ves_icall_Type_GetNestedTypes): Same.        
3989
3990         * locales.c (create_names_array_idx):  Use mono_array_new_cached
3991         to reduce locking contention.
3992
3993 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
3994                 
3995         * object.c (mono_method_add_generic_virtual_invocation): Put back the
3996         thunk builder code for the non-interface case.
3997
3998 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * object.c (get_generic_virtual_entries): New helper function to collect
4001         the virtual generic method instances which need to be added to an IMT
4002         thunk.
4003         (mono_method_add_generic_virtual_invocation): Add a 'vtable' argument.
4004         Instead of creating a new IMT thunk, reset the vtable slot to the
4005         trampoline, the thunk will be created the next time the trampoline is called.
4006         (build_imt_slots): Add support for virtual generic methods in interfaces by
4007         adding to the IMT thunk all the methods registered using 
4008         mono_method_add_generic_virtual_invocation ().
4009
4010         * object-internals.h (_MonoImtBuilderEntry): Add a 'has_target_code' field.
4011         (struct _MonoIMTCheckItem): Ditto.
4012
4013         * object.c (mono_method_add_generic_virtual_invocation): Take a
4014         MonoMethod argument instead of a MonoGenericInst. Fix the construction of
4015         the IMT thunk to include all items.
4016         
4017         * object.c (mono_class_create_runtime_vtable): Add a missing
4018         mono_loader_unlock ().
4019
4020 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
4021
4022         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4023
4024         * object-internals.h (MonoReflectionEvent): Add cached_add_event.
4025
4026 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
4027
4028         * object-internals.h: Rename _MonoReflectionEvent to
4029         MonoReflectionMonoEvent so it reflects the right managed type.
4030         Add a MonoReflectionEvent that correctly represents System.EventInfo.
4031
4032         * icall.c:
4033         * reflection.c: Adjust code to use the new MonoReflectionMonoEvent
4034         type.
4035
4036 2009-03-02 Rodrigo Kumpera  <rkumpera@novell.com>
4037
4038         * icall.c (ves_icall_Type_GetMethodsByName): Avoid allocating
4039         intermediary managed arrays. Use caching version of mono_array_new
4040         to allocate the result array.
4041
4042 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
4043
4044         * reflection.c: Use cached version of mono_array_new alongside
4045         the mono_reflection_get_custom_attrs_by_type call path.
4046
4047 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
4048
4049         * icall.c (ves_icall_Type_GetInterfaces): Avoid allocating
4050         intermediary managed arrays. Use caching version of mono_array_new
4051         to allocate the result array.
4052
4053         * icall.c (ves_icall_Type_GetConstructors_internal): Same.
4054
4055 2009-03-01 Rodrigo Kumpera  <rkumpera@novell.com>
4056
4057         * icall.c: Add small implementation of a growable stack bound array.
4058
4059         * icall.c (ves_icall_System_Enum_get_hashcode): Fix warning.
4060
4061         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid allocating
4062         intermediary managed arrays. Use caching version of mono_array_new
4063         to allocate the result array.
4064
4065 2009-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
4066
4067         * icall.c: New icall ves_icall_System_Enum_compare_value_to that
4068         helps Enum::CompareTo to be implemented without reboxing all enums
4069         to their underlying type.
4070 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
4071
4072         * domain.c (SET_APPDOMAIN): Avoid calling TlsSetValue () on some platforms,
4073         since it acquires a global lock leading to scalability problems.
4074
4075         * profiler.c: Make the stat profiler work with multiple appdomains, this
4076         currently only works when no appdomains are unloaded.
4077
4078 2009-02-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
4079
4080         * appdomain.c: make the check to avoid copying when the assembly is
4081         already shadow copied actually work.
4082
4083 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
4084
4085         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4086
4087         * object-internals.h (struct _MonoReflectionGenericClass): Sync with
4088         changes to the managed side.
4089
4090 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * metadata-internals.h (struct _MonoImage): Add a new cache for szarray
4093         classes + a separate lock for it, as it is used frequently at runtime, not
4094         just during metadata loading/JIT compilation.
4095
4096         * class.c (mono_bounded_array_class_get): Use the separate cache + lock
4097         for szarrays.
4098         
4099         * object-internals.h (mono_class_from_name_cached): New macro to cache
4100         the results of the lookup locally without having to declare a static
4101         variable to hold it.
4102         (mono_class_get_field_from_name_cached): Ditto.
4103         (mono_array_class_get_cached): Ditto.
4104
4105         * threadpool.c threads.c locales.c icall.c reflection.c socket-io.c: Use
4106         the new macros.
4107         
4108         * object.c (mono_get_delegate_invoke): Call setup_methods () to avoid the
4109         slower search in metadata.
4110
4111         * pedump.c: Fix a warning.
4112
4113 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * reflection.c (encode_locals): Add checks for user types.
4116         (method_encode_clauses): Ditto.
4117         (method_encode_code): Ditto.
4118         (mono_image_create_token): Ditto.
4119
4120         * object-internals.h: Change the type of more fields from MonoReflectionType*
4121         to MonoObject*.
4122
4123 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
4124
4125         * threads.c (mono_thread_suspend_all_other_threads): Handle the case when
4126         the a thread does not suspend within 100ms.
4127
4128         * monitor.c (mono_monitor_try_enter_internal): Handle SuspendRequested
4129         in addition to StopRequested as well.
4130
4131         * mono-debug.c: Call _mono_debug_get_image () while holding the debug lock.
4132
4133         * debug-mono-symfile.c (mono_debug_symfile_lookup_method): Actually
4134         search the method_hash before inserting a new entry, to avoid crashes when
4135         the same method is inserted multiple times, causing the old 
4136         MonoDebugMethodInfo structure to be freed by the value dtor function.
4137
4138 2009-02-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
4139
4140         * socket-io.c: support SO_MAXCONN, SO_USELOOPBACK and
4141         SO_EXLUSIVEADDRUSE where available.
4142
4143 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
4144
4145         * marshal.c (mono_marshal_get_runtime_invoke): Fix _another_ bug sharing
4146         runtime invoke wrappers, this time it is string ctor wrappers, which
4147         pass a dummy string as 'this' instead of their obj argument. Fixes
4148         #478473.
4149
4150 2009-02-21  Jb Evain  <jbevain@novell.com>
4151
4152         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
4153         only get create_culture once.
4154
4155 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
4156
4157         * reflection.c (mono_reflection_setup_internal_class): Move the user type
4158         check before the locking.
4159         
4160         * reflection.c (mono_reflection_setup_internal_class): Check for user types.
4161         (mono_reflection_create_runtime_class): Ditto.
4162         (mono_reflection_sighelper_get_signature_local): Ditto.
4163         (mono_reflection_sighelper_get_signature_field): Ditto.
4164
4165         * object-internals.h (CHECK_MONOTYPE): New macro to check that a Type object
4166         is a System.MonoType object or similar.
4167         (monotype_cast): New helper function to cast a MonoObject to a 
4168         MonoReflectionType object.
4169
4170         * object-internals.h: Change MonoReflectionType* members in structures to
4171         MonoObject* members to force the usage of the monotype_cast () function.
4172
4173         * reflection.c icall.c: Use monotype_cast () for accessing Type members of
4174         structures/arrays. This causes us to assert instead of crashing when 
4175         instances of user defined subclasses of System.Type are encountered.
4176
4177 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
4178
4179         * cil-coff.h:
4180         * icall-def.h:
4181         * icall.c: add new GetUnmanagedResourcePtr that returns a pointer to a
4182         win32 resource loaded from a PE file.
4183
4184         * image.c: fix mono_image_lookup_resource.
4185
4186 2009-02-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
4187
4188         * icall-def.h:
4189         * threads-types.h:
4190         * threads.c: added internal call for WaitHandle.SignalAndWait.
4191
4192 2009-02-19  Bill Holmes  <billholmes54@gmail.com>
4193
4194         * cominterop.c : Adding cominterop_type_from_handle and 
4195           registering it as an icall.  Replacing all references
4196           to type_from_handle.
4197
4198         Code is contributed under MIT/X11 license.
4199
4200 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4201
4202         * Makefile.am: Add lock-tracer.h and lock-trace.c.
4203
4204         * appdomain.c: Call the tracer init function.
4205
4206         * domain-internals.h: Enable the tracer for the domain locks.
4207
4208         * image.c: Enable the tracer for image locks.
4209
4210         * loader.c: Enable the trace for the loader lock.
4211
4212         * lock-tracer.h:
4213         * lock-tracer.c: Initial implementation of the lock trace utility.
4214         The tracer requires a compile time define to be enabled and a env var
4215         to be enabled at runtime.
4216
4217 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4218
4219         * domain.c (mono_domain_code_foreach): Improve documentation.
4220
4221 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
4222
4223         * appdomain.c:
4224         * generic-sharing.c:
4225         * object.c:
4226         * reflection.c:  Adjust locking order to the new semantics where the loader lock
4227         comes first.
4228
4229 2009-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
4230
4231         * domain.c: Add mono_domain_code_* functions that perform locking
4232         around the domain codeman.
4233
4234         * domain-internals.h: Export those functions.
4235
4236         * object.c: Use new functions instead of acquiring the domain lock.
4237
4238 2009-02-19  Zoltan Varga  <vargaz@gmail.com>
4239
4240         * marshal.c (mono_ftnptr_to_delegate): Convert a NULL ftnptr to a null
4241         delegate. Fixes #477396.
4242
4243 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4244
4245         * reflection.c (create_custom_attr): Get rid of alloca.
4246
4247 2009-02-18  Bill Holmes  <billholmes54@gmail.com>
4248
4249         * cominterop.c (cominterop_get_managed_wrapper_adjusted) :
4250           Adding exception handling for all CCW calls.
4251
4252         Code is contributed under MIT/X11 license.
4253
4254 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
4255
4256         * reflection.c (mono_reflection_init): Remove the unused reflection mutex.
4257
4258         * marshal.c (emit_marshal_boolean): Add null checks to the new 
4259         native->managed marshalling code. Fixes #476247.
4260
4261 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4262
4263         * class.c (mono_class_get_vtable_entry): Move the addition of
4264         static rgctx invoke wrappers for vtable methods here, this simplifies
4265         a lot of code and causes fewer rgctx wrappers to be created.
4266
4267         * marshal.c (mono_marshal_get_static_rgctx_invoke): Change the
4268         name of the statistics to begin with an uppercase.
4269
4270 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
4271
4272         * reflection.c: Revert previous change as it breaks the build.
4273         
4274 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
4275
4276         * verify.c: Properly handle SZARRAY element type.
4277
4278         Fixes #474271.
4279
4280 2009-02-17 Rodrigo Kumpera  <rkumpera@novell.com>
4281
4282         * reflection.c (mono_image_create_method_token): Correctly encode
4283         MethodDef MemberRefParent token.
4284
4285         Fixes #472845.
4286
4287 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
4288
4289         * image.c (mono_image_close): Delete the critical section before
4290         freeing the memory holding it.
4291
4292 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
4293
4294         * verify.c (mono_method_verify): rethrow opcode doesn not fall through.
4295         Fixes #476257.
4296
4297 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
4298
4299         * pedump.c (main): Call mono_marshal_init so pedump
4300         doesn't crash.
4301
4302 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
4303
4304         * loader.c (method_from_memberref): Properly fix #474271 and
4305         don't break the runtime bad.
4306
4307 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4308
4309         * domain.c (mono_domain_alloc): Add locking so the caller doesn't have to.
4310         (mono_domain_alloc0): Ditto.
4311
4312 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
4313
4314         * loader.c (method_from_memberref): Don't abort if the array
4315         method is not found. A regular loader failure is more informative
4316         and correct.
4317
4318         Fixes #474271.
4319
4320 2009-02-16 Rodrigo Kumpera  <rkumpera@novell.com>
4321
4322         *loader.c: Guard MonoImage::method_cache/methodref_cache
4323         using the image lock instead of the loader lock.
4324
4325         * metadata.h: Add comments about which fields are protected by
4326         the image lock.
4327
4328 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
4329
4330         * appdomain.c (mono_set_private_bin_path_from_config): Fix a warning.
4331
4332         * generic-sharing.c (mono_method_construct_object_context): Remove the
4333         wrapper_type == NONE assert, it is not needed.
4334
4335 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
4336
4337         * reflection.c (clear_cached_object): New helper function.
4338         (mono_method_clear_object): New function to clear the cached reflection
4339         objects for a dynamic method.
4340
4341         * object.c (mono_runtime_free_method): Call mono_method_clear_object ().
4342         Partly fixes # 463323.
4343         
4344 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
4345
4346         * class.c:
4347         * loader.c:
4348         * reflection.c: Remove all explicit uses of MonoImage::property_hash.
4349
4350 2009-02-14 Rodrigo Kumpera  <rkumpera@novell.com>
4351
4352         * image.c: Add mono_image_property_(lookup,insert,remove) functions that
4353         take the image lock instead of the loader lock.
4354
4355         * metadata-internals.h: Export new functions.
4356
4357 2009-02-12  Miguel de Icaza  <miguel@novell.com>
4358
4359         * domain.c (app_config_parse): Remove another use of stat that is
4360         not necessary as g_file_get_contents already does the presence
4361         check. 
4362
4363 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
4364
4365         * cominterop.c icall-def.h: Fix the DISABLE_COM build.
4366
4367         * marshal.c: Move the bstr handling code to cominterop.c.
4368
4369         * marshal.c: Remove some COM interop code missed previously.
4370
4371 2009-02-12  Miguel de Icaza  <miguel@novell.com>
4372
4373         More Paolo patches from the Wii port:
4374         
4375         * security.c: Remove ves_icall_System_Environment_get_UserName
4376         from here.
4377
4378         * icall.c: And put ves_icall_System_Environment_get_UserName
4379         here. 
4380
4381         * appdomain.c (mono_set_private_bin_path_from_config): Remove
4382         redundant call to stat that was only used to test for the file
4383         existence.   Patch from Paolo.
4384
4385         * gc.c (run_finalize): If COM is disabled, do not link in
4386         mono_marshal_free_ccw.
4387
4388         * generic-sharing.c: Use alloca.h here as well.
4389
4390 2009-02-13 Rodrigo Kumpera  <rkumpera@novell.com>
4391
4392         * reflection.c (mono_reflection_lookup_dynamic_token): Do the locking properly.
4393
4394 2009-02-13  Zoltan Varga  <vargaz@gmail.com>
4395
4396         * cominterop.c cominterop.h: New files.
4397
4398         * marshal.c: Move the COM interop related code to cominterop.c. Make a few
4399         function/typedefs which are needed by cominterop.c global.
4400
4401 2009-02-12  Mark Probst  <mark.probst@gmail.com>
4402
4403         * generic-sharing.c: Don't take the loader lock to guard image
4404         mempool allocs.
4405
4406 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
4407
4408         * reflection.c (mono_reflection_lookup_dynamic_token): This function might be
4409         called without the loader lock which is required to guard MonoImage:tokens.
4410
4411 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
4412
4413         * class.c:
4414         * metadata.c:
4415         * method-builder.c:
4416         * marshal.c:
4417         * reflection.c: Don't take the loader lock to alloc memory from the image mempool.
4418
4419 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
4420
4421         * metadata.c: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
4422         Rework the code to use regular mono_image_alloc/0.
4423
4424         * loader.c: Rework the code to use regular mono_image_alloc/0.
4425
4426         * metadata-internals.h: Remove mono_image_alloc_lock and mono_image_alloc0_lock.
4427
4428 2009-02-12  Bill Holmes  <billholmes54@gmail.com>
4429
4430         * object-internals.h : Fixing a typo in the 
4431           MonoReflectionComVisibleAttribute struct.
4432
4433         * marshal.c (cominterop_com_visible): Check the implemented 
4434           interfaces for ComImport.
4435
4436         * marshal.c (cominterop_get_native_wrapper_adjusted): For COM calls 
4437           assume that bools should be treated as VARIANTBOOLs.
4438
4439         * marshal.c (emit_marshal_boolean): Adding cases for 
4440           MARSHAL_ACTION_MANAGED_CONV_IN and MARSHAL_ACTION_MANAGED_CONV_OUT.
4441
4442         * marshal.c (mono_marshal_emit_managed_wrapper): Adding calls to 
4443           emit_marshal MARSHAL_ACTION_MANAGED_CONV_IN and OUT for bools.
4444
4445         * marshal.c (cominterop_get_ccw): For COM calls assume that bools
4446           should be treated as VARIANTBOOLs.    
4447
4448         Code is contributed under MIT/X11 license.
4449
4450 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
4451
4452         * image.c (mono_image_alloc, mono_image_alloc0, mono_image_strdup): Guard mempool
4453         allocation with the image lock.
4454
4455 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
4456
4457         This patch is the last of a series to remove explicit reference of MonoImage::mempool
4458         and use mono_image_alloc set of functions instead. This time we finish with reflection.c
4459
4460         * object.c: Add mono_string_to_utf8_image.
4461
4462         * object-internals.h: Export mono_string_to_utf8_image.
4463
4464         * reflection.c: Rework all explicit references to the the image mempool to go thought
4465         the mono_image_alloc set of functions.
4466
4467 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
4468
4469         This patch is the third of a series to remove explicit reference of MonoImage::mempool
4470         and use mono_image_alloc set of functions instead. This time we finish with marshal.c
4471         and generics-sharing.c.
4472
4473         * generics-sharing.c (set_other_info_templates): Take a MonoImage instead of a MonoMemPool
4474         as first argument. Note that this function remains broken as it doesn't perform locking around the
4475         mempool allocation.
4476
4477         * generics-sharing.c (rgctx_template_set_other_slot): Pass the image and not the mempool.
4478
4479         * image.c: Add g_slist_append_image.
4480
4481         * metadata.c (mono_metadata_field_info_with_mempool): Remove the mempool argument and use
4482         the supplied image for allocation. Move code into mono_metadata_field_info_full.
4483
4484         * metadata.c (mono_metadata_parse_marshal_spec_full): Take a MonoImage instead of a MonoMemPool.
4485         Fix all related code to do the same.
4486
4487         * marshal.c (mono_marshal_load_type_info): Pass the image instead of the mempool.
4488
4489         * metadata-internals.h: Fix the signatures.
4490
4491 2009-02-12 Rodrigo Kumpera  <rkumpera@novell.com>
4492
4493         This patch is the second of a series to remove explicit reference of MonoImage::mempool
4494         and use mono_image_alloc set of functions instead. This time we rework mono_metadata_type_dup
4495         and similar to work using MonoImage.
4496
4497         * class.c (mono_mempool_dup): Rename to mono_image_memdup and take a MonoImage instead of a
4498         MonoMemPool.
4499
4500         * class.c (mono_dup_array_type): Take a MonoImage instead of a MonoMemPool as first argument.
4501
4502         * class.c (mono_metadata_signature_deep_dup): Same.
4503
4504         * class.c (inflate_generic_type): Same.
4505
4506         * class.c (mono_class_inflate_generic_type_with_mempool): Same.
4507
4508         * metadata.c (mono_metadata_signature_dup_full): Same.
4509
4510         * metadata.c: Add mono_metadata_signature_dup_mempool and extract common functionality from 
4511         mono_metadata_signature_dup_full.
4512
4513         * metadata.c (mono_metadata_type_dup): Same.
4514
4515         * marshal.c: Pass the image to calls to mono_metadata_type_dup.
4516
4517         * reflection.c: Same.
4518
4519         * generic-sharing.c: Pass the image to calls to mono_class_inflate_generic_type_with_mempool.
4520
4521         * metadata-internals.h: Fix the signatures.
4522
4523         * class-internals.h: Same.
4524
4525 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
4526
4527         This patch is the first of a series to remove explicit reference of MonoImage::mempool
4528         and use mono_image_alloc set of functions instead. 
4529
4530         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy):
4531         Rename to mono_class_inflate_generic_type_no_copy and take a MonoImage instead
4532         of a MonoMemPool.
4533
4534         * class.c (mono_class_setup_fields): Adapt to mono_class_inflate_generic_type_no_copy.
4535
4536         * class.c (g_list_prepend_mempool): Removed.
4537
4538         * class.c (mono_class_get_nested_types): Use g_list_prepend_image instead of g_list_prepend_mempool.
4539
4540         * image.c: Add g_list_prepend_image.
4541
4542         * metadata-internals.h (struct MonoImage): Fix comment. Export g_list_prepend_image as internal.
4543
4544         * reflection.c (mono_reflection_create_runtime_class): Use g_list_prepend_image instead of g_list_prepend_mempool.
4545
4546
4547 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
4548
4549         * metadata-internals.h (struct MonoImage): Add lock field. Export mono_image_lock and
4550         mono_image_unlock.
4551
4552         * image.c (mono_image_init): Init the lock field.
4553  
4554         * image.c (mono_image_init): Cleanup the lock field.
4555
4556         * image.c: Add mono_image_(un)lock functions.
4557
4558 2009-02-11  Mark Probst  <mark.probst@gmail.com>
4559
4560         * class.c, class-internals.h: mono_method_get_context_general()
4561         combines the functionality of mono_method_get_context() and
4562         mini_method_get_context().
4563
4564         * generic-sharing.c, domain-internals.h:
4565         mono_method_construct_object_context() and
4566         mono_domain_lookup_shared_generic() moved from mini.
4567
4568         * icall.c (ves_icall_InternalInvoke): Handle the case where the
4569         method doesn't have the correct instantiation because it's shared
4570         generic code.  Fixes #473999.
4571
4572 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
4573
4574         * loader.c (mono_method_get_wrapper_data): Handle inflated methods as well.
4575
4576         * loader.c (mono_loader_lock): Add a comment pointing to the locking document.
4577         
4578 2009-02-11 Rodrigo Kumpera  <rkumpera@novell.com>
4579
4580         * metadata.c: Make mono_image_alloc_lock and mono_image_alloc0_lock non static.
4581
4582         * metadata-internals.h: Export mono_image_alloc_lock and mono_image_alloc0_lock.
4583
4584         * loader.c (mono_get_method_full): Drop the loader lock while constructing the method
4585         and recheck the cache for dups after it.
4586
4587         * loader.c (mono_get_method_from_token): Use _lock version of mono_image_alloc0.
4588
4589         Fixes one of the deadlocks found in #473150.
4590
4591 2009-02-11  Bill Holmes  <billholmes54@gmail.com>
4592
4593         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal):
4594           For Win32, add additional break conditions for accept.
4595
4596         Code is contributed under MIT/X11 license.
4597
4598 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
4599
4600         * marshal.c (mono_marshal_get_native_func_wrapper): Use get_cache to
4601         lazily initialize the native wrapper cache.
4602         (mono_marshal_get_native_wrapper): Put aot-ed native wrappers into a separate
4603         cache, since they are different from the normal wrappers.
4604
4605         * image.c (mono_image_init): Initialize native_wrapper_cache lazily as well.
4606
4607         * metadata-internals.h (struct _MonoImage): Add a new wrapper for
4608         AOT compiled native wrappers.
4609
4610 2009-02-09  Geoff Norton  <gnorton@novell.com>
4611
4612         * appdomain.h:
4613         * security-core-clr.c: Allow enabling core-clr from the embedding
4614         API.
4615
4616 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
4617
4618         * socket-io.c: when requesting all the local ips, if there are no
4619         interfaces up and running, MS returns 127.0.0.1.
4620
4621 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
4622
4623         * mono-perfcounters-def.h: processor time is an inverse time.
4624         Fixes bug #468625.
4625
4626 2009-02-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
4627
4628         * socket-io.c: an empty host name returns the list of local IPs.
4629         Fixes bug #386637 part 1/2.
4630
4631 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
4632
4633         * verify.c (mono_class_interface_implements_interface): Call
4634         mono_class_setup_interfaces ().
4635         (merge_stacks): Ditto.
4636
4637 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4638
4639         * class.c (mono_class_setup_interfaces): New function to lazily initalize
4640         klass->interfaces.
4641         (mono_generic_class_get_class): Don't initalize klass->interfaces.
4642         (mono_generic_class_get_class): Ditto.
4643
4644 2009-02-06  U-QUACK\miguel  <miguel@quack>
4645
4646         * icall-defs.h: Include also the Encrypt/Decrypt string methods as
4647         they live in security.c
4648
4649         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Integrated
4650         another bit from Paolo's code.
4651
4652 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
4653
4654         * object.c (build_imt_slots): Add a small optimization to avoid inflating
4655         methods which will be discarded by add_imt_builder_entry ().
4656
4657         * marshal.c (get_runtime_invoke_type): Avoid sharing enum types since they
4658         need to be boxed.
4659
4660         * loader.c: Add a statistics for the size of the memberref signature cache.
4661         
4662         * loader.c (find_cached_memberref_sig): New helper function.
4663         (cache_memberref_sig): Ditto.
4664
4665         * loader.c: Cache the result of parsing memberref signatures, since otherwise
4666         they will be parsed again for every generic instantiation, leading to unbounded
4667         memory growth.
4668
4669 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * loader.c (mono_get_method_from_token): Avoid creating class for the generic
4672         parameters of generic methods.
4673
4674         * class.c (mono_class_inflate_generic_method_full): Set is_mb_open again
4675         after the original method is copied to the inflated method.
4676         (mono_class_get_vtable_entry): Handle rgctx invoke wrappers more efficiently.
4677
4678         * class-internals.h (struct _MonoMethodInflated): Move the is_mb_open
4679         field to MonoMethod since it only consumes 1 bit there, and 4/8 bytes here.
4680
4681         * class.c metadata.c: Update after the changes above.
4682
4683 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
4684
4685         * metadata-verify.c: Simplified error handling and added
4686         section table validation.
4687
4688 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4689
4690         * class-internals.h (MonoClassExt): New structure containing rarely used
4691         fields of MonoClass.
4692         (struct _MonoClass): Move rarely used fields to MonoClassExt, accessed
4693         through a new 'ext' field.
4694
4695         * class.c (mono_class_alloc_ext): New helper function to allocate 
4696         class->ext.
4697
4698         * class.c metadata.c reflection.c: Update after MonoClass structure changes.
4699
4700 2009-02-05  Mark Probst  <mark.probst@gmail.com>
4701
4702         * object.c (mono_object_get_virtual_method): Properly inflate
4703         generic methods.  Fixes #472692.
4704
4705 2009-02-05 Rodrigo Kumpera  <rkumpera@novell.com>
4706
4707         * class.c (mono_class_create_from_typedef): The CLR supports SystemF
4708         recursive types such as List<T>:Cons<T,List<T>> so when doing the lookup
4709         for the parent type, the created type must be ready to be used on a generic
4710         instantiation.
4711         We fill this_arg/byval_arg if the parent is a generic instance to make sure
4712         we won't have duplicated entries in generic_inst_cache.
4713
4714         Fixes #469553.
4715
4716 2009-02-05  Miguel De Icaza  <miguel@novell.com>
4717
4718         * threadpool.c (socket_io_add_poll): Remove the BSD6 define and
4719         replace with plain BSD per the comments on the bug MONO77637.
4720
4721 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
4722
4723         * class.c (mono_class_get_generic_class): New accessor function.
4724         (mono_class_get_generic_container): Ditto.
4725
4726         * class-internals.h (struct _MonoClass): Add 'is_generic' and 'is_inflated'
4727         fields, similar to the ones in MonoMethod.
4728
4729         * class.c (mono_generic_class_get_class): Set klass->is_inflated.
4730         (mono_class_create_from_typedef): Set klass->is_generic if needed.
4731
4732         * reflection.c (mono_reflection_create_generic_class): Set klass->is_generic.
4733         
4734         * class-internals.h (struct _MonoClass): Remove enum_basetype, it contains
4735         the same information as element_class->byval_arg.
4736
4737         * class.c reflection.c: Remove references to class->byval_arg.
4738
4739         * class.c marshal.c: Use mono_class_enum_basetype () instead of accessing 
4740         klass->enum_basetype directly.
4741
4742         * verify.c metadata.c object.c icall.c reflection.c: Use 
4743         mono_class_enum_basetype () instead of accessing klass->enum_basetype 
4744         directly.
4745
4746 2009-02-04  Miguel de Icaza  <miguel@novell.com>
4747
4748         * icall-def.h: Remove internal calls for sockets when
4749         DISABLE_SOCKET is defined, file system writing features when the
4750         OS only support reading and not writing data and Policy support if
4751         the Policy is disabled.
4752         
4753         * image.c (do_mono_image_open): Apply Paolo's patches for using
4754         mono_file_map_ APIs here.
4755
4756         * assembly.c: Add support for platforms to avoid prefix
4757         auto-detection. 
4758
4759 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
4760
4761         * generic-sharing.c (mono_method_fill_runtime_generic_context): Fix a
4762         warning.
4763
4764         * class.c (mono_class_inflate_generic_class): New helper function.
4765
4766         * class.c: Use mono_class_inflate_generic_class in a few places. Add
4767         statistics for inflated methods/classes.
4768
4769         * loader.c (inflate_generic_header): Use mono_class_inflate_generic_class.
4770
4771         * icall.c (ves_icall_Type_GetMethodsByName): Optimize the case when
4772         the call is made from Delegate.CreateDelegate () for the invoke method of
4773         a delegate.
4774
4775         * loader.c: Add a statistics for the memory occupied by inflated signatures.
4776
4777         * metadata.c (mono_metadata_signature_size): New helper function.
4778
4779         * class.c (mono_class_get_method_from_name_flags): Add an optimization for
4780         generic instances.
4781
4782         * metadata.c (inflated_method_in_image): Avoid calling 
4783         mono_method_signature () if the method does not already have a signature.
4784
4785 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
4786
4787         * verify.c (is_compatible_boxed_valuetype): When checking if the boxed 
4788         valuetype is compatible with target type, check by inheritance as a
4789         VT is not really compatible with System.ValueType, for example.
4790
4791         * verify.c (do_invoke_method): Improve error message.
4792
4793         * verify.c (do_box_value): If boxing a nullable, use the type argument
4794         on stack instead.
4795
4796         * verify.c (do_newobj): Improve error message.  
4797
4798         Fixes #469549.
4799
4800 2009-02-03  Miguel de Icaza  <miguel@novell.com>
4801
4802         * appdomain.c: Add support for DISABLE_SOCKETS and DISABLE_SHADOW_COPY
4803
4804 2009-02-03  Mark Probst  <mark.probst@gmail.com>
4805
4806         * generic-sharing.c: Don't hold domain lock when calling
4807         instantiate_other_info().  Fixes #471958.
4808
4809         * domain-internals.h, loader.c: Describe locking policy of domain
4810         lock vs loader lock.
4811
4812 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
4813
4814         * verify.c (mono_delegate_signature_equal): Make it possible to check
4815         first-arg-bound delegates to static method.
4816
4817         * verify.c (verify_delegate_compatibility): Correctly verify delegates to
4818         static methods with the first arg bound.
4819
4820         Fixes #469529.
4821
4822 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
4823
4824         * verify.c: Added stack_slot_full_name to provide decent and more meanfull
4825         errors.
4826
4827         * verify.c (is_compatible_boxed_valuetype): Be less restrictive when not
4828         under strict mode. Any type, when boxed can be seen as a reference type.
4829
4830         Fixes #469528.
4831
4832 2009-02-03 Rodrigo Kumpera  <rkumpera@novell.com>
4833
4834         * object.h: The lower bound of an array is a signed integer value.
4835         Introduce mono_array_lower_bound_t typedef. It should be used instead of
4836         gint32 as under MONO_BIG_ARRAYS it will be a gint64.
4837
4838         * icall.c: Cast MonoArrayBounds::length to a signed value so correctly
4839         calculate the upper bound.
4840         
4841         Fixes #471252.
4842
4843 2009-02-02  Miguel de Icaza  <miguel@novell.com>
4844
4845         From Paolo's work, refactored, cleared up:
4846         
4847         * threadpool.c, icall.c: ifdef code that requires a working socket
4848         stack.
4849
4850         * metadata.c (mono_metadata_field_info): Do not attempt to return
4851         a value from a function declared as void.
4852
4853         * console-io.c: Use MONO_NULL_TTYDRIVER to remove the tty driver
4854         from the console stack.
4855
4856         * assembly.c: use strrchr instead of rindex.
4857
4858         * class.c, object.c, marshal.c, icall.c, reflection.c: include
4859         alloca.h on systems that have it.
4860
4861         * environment.c: Avoid code that uses stuff from
4862         HAVE_SYS_UTSNAME_H
4863         
4864         * appdomain.c: Include sys/time.h.
4865
4866         * console-io.c: include sys/ioctl.h if it is available.
4867
4868 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
4869
4870         * method-builder.h (_MonoMethodBuilder): Add a 'skip_visibility' flag.
4871
4872         * method-builder.c (mono_mb_create_method): Set method->skip_visibility from
4873         the method builder.
4874
4875         * marshal.c: Set mb->skip_visibility instead of setting it on the method
4876         after it was created and cached, as the later is not thread safe.
4877         
4878 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4879
4880         * mono-debug.c (mono_debug_print_stack_frame): Avoid crashes when this is
4881         called while the debugging module is not initialized. Fixes #471669.
4882
4883 2009-02-02 Rodrigo Kumpera  <rkumpera@novell.com>
4884
4885         * icall.c (type_from_name): Ignore reflection frames to find out the real caller.
4886
4887         Fixes #471255.
4888
4889 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4890
4891         * generic-sharing.c (lookup_or_register_other_info): Make sure the
4892         loader lock is not taken while the templates lock is held.  Fixes
4893         #471089.
4894
4895 2009-02-02  Mark Probst  <mark.probst@gmail.com>
4896
4897         * metadata.c (type_in_image): Added a check to fix a monodis
4898         crash.
4899
4900 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
4901
4902         * marshal.c (mono_marshal_get_runtime_invoke): Add support for byref
4903         nullable arguments.
4904
4905         * object.c (mono_runtime_invoke_array): Ditto.
4906         
4907         * marshal.c (mono_marshal_free_dynamic_wrappers): New function for
4908         freeing wrappers of dynamic methods.
4909
4910         * loader.c (mono_free_method): Call it. Fixes #463323.
4911         
4912         * marshal.c (mono_marshal_get_runtime_invoke): Disable sharing for
4913         methods taking vtype/byref arguments, to fix yet another bug caused by
4914         the sharing of runtime invoke wrappers. Partly fixes #471259.
4915
4916 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
4917
4918         * debug-mono-symfile.c (check_line): Return NULL instead of returning
4919         <first file in file table>:1 when the IL offset does not have an associated
4920         line number.
4921
4922 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
4923
4924         * mono-debug.c (mono_debug_lookup_locals): New function to return local
4925         variable info for a method.
4926
4927         * debug-mono-symfile.c (mono_debug_symfile_lookup_locals): Ditto.
4928         
4929 2009-01-30  Jb Evain  <jbevain@novell.com>
4930
4931         * pedump.c: reuse code from monodis to make sure pedump honors
4932         MONO_PATH, which is needed to verify net_2_1 assemblies.
4933
4934 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
4935
4936         * mono-debug.c (mono_debug_print_stack_frame): Print the IL offset even when
4937         there is no line number info.
4938
4939 2009-01-29  Raja R Harinath  <harinath@hurrynot.org>
4940
4941         Avoid some MonoType allocations
4942         * reflection.c (mono_reflection_initialize_generic_parameter):
4943         Reuse MonoType from param->pklass rather than allocating one.
4944         (mono_dynamic_image_free): Update to changes.
4945
4946 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
4947
4948         Rearrange some code to improve consistency
4949         * reflection.c (mono_reflection_setup_generic_class): Move body ...
4950         (mono_reflection_initialize_generic_parameter): ... here.
4951
4952 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * generic-sharing.c (has_constraints): Enable gshared for methods/classes
4955         with type constraints as an experiment.
4956
4957         * boehm-gc.c (on_gc_notification): Update mono_stats.
4958
4959 2009-01-28  Raja R Harinath  <harinath@hurrynot.org>
4960
4961         Avoid some allocations
4962         * class-internals.h (_MonoGenericInst::type_argv): Convert from
4963         pointer to tail array to avoid extra allocation.
4964         * metadata.c (free_generic_inst): Update to changes.
4965         (mono_metadata_get_generic_inst): Likewise.  Use alloca instead of
4966         on-stack struct.
4967
4968 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
4969
4970         * icall.c (ves_icall_System_Type_EqualsInternal): For user-defined types,
4971         return TRUE if the two type objects are the same.
4972
4973 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4974
4975         * marshal.c (mono_marshal_load_type_info): Fill out info->min_align.
4976         (mono_class_native_size): Use klass->marshal_info->min_align instead of
4977         klass->min_align, since klass->min_align contains the managed alignment,
4978         while the native alignment can be different, like for longs on x86.
4979         Fixes #469135.
4980
4981         * class-internals.h (MonoMarshalType): Add a min_align field.
4982
4983 2009-01-26 Rodrigo Kumpera  <rkumpera@novell.com>
4984
4985         * assembly.c (mono_assembly_try_decode_skip_verification): Add a hack to check
4986         the 1.0 format.
4987
4988 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
4989
4990         * domain-internals.h (struct _MonoJitInfo): Add a 'from_aot' field plus
4991         some comments about the usage of the used_regs field.
4992
4993         * marshal.c (emit_marshal_ptr): Allow pointers to blittable structures.
4994         Fixes #469217.
4995
4996 2009-01-24 Gonzalo Paniagua Javier <gonzalo@novell.com>
4997
4998         * appdomain.c: return NULL instead of throwing FileNotFoundException
4999         when LoadAssembly() fails.
5000
5001 2009-01-23  Mark Probst  <mark.probst@gmail.com>
5002
5003         * metadata.c (mono_metadata_generic_param_equal): Only compare the
5004         image if the owner is NULL.  Fixes the AOT failures.
5005
5006 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
5007
5008         * metadata.c (mono_metadata_load_generic_params): Initialize the 
5009         MonoGenericParam structure using memset so the image field is initialized
5010         as well.
5011
5012 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
5013
5014         * appdomain.c (mono_domain_unload): Change the InterlockedIncrement to
5015         a plain store.
5016
5017 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
5018
5019         * class.c (mono_class_setup_vtable_general): In the generic instance
5020         optimization, set method->slot for abstract virtual methods. Fixes part of
5021         #467834.
5022
5023 2009-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
5024
5025         * domain-internals.h: Add new appdomain state MONO_APPDOMAIN_UNLOADING_START
5026         which signals that the unloading has started but all appdomain services must
5027         remain operational.
5028
5029         * appdomain.c (mono_domain_unload): The initial state for unloading now
5030         is unloading_start and we switch to unloading after the managed call to
5031         AppDomain::DomainUnload has finished.
5032
5033         The new unloading state has to be created because managed code in the
5034         DomainUnload event can depend on things like the threadpool still working.
5035         The domain must remain fully functional while the event executes.
5036
5037         This shown as an issue due to Process::WaitForExit, which waits for
5038         async reads of stdout and stderr to complete. Since those are processed
5039         in the threadpool the code deadlocks because the DomainUnload callback 
5040         waits for the async read finished event, which should have been set by a
5041         threadpool job but has been discarded due to the domain been in unload
5042         state.
5043
5044 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5045
5046         * metadata.c (mono_metadata_generic_param_equal): Owner as well as
5047         image must match.
5048
5049 2009-01-21  Mark Probst  <mark.probst@gmail.com>
5050
5051         * reflection.c (resolve_object): For fields, inflate the class and
5052         then get the field in the inflated class.
5053
5054 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5055
5056         * object-internals.h (struct _MonoException): Added a comment
5057         explaining the new use of trace_ips.
5058
5059 2009-01-20  Mark Probst  <mark.probst@gmail.com>
5060
5061         * generic-sharing.c (inflate_other_data): Inflate array methods
5062         correctly.
5063
5064         * loader.c, class-internals.h: Rename search_in_array_class() to
5065         mono_method_search_in_array_class() and make it non-static.
5066
5067 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5068
5069         * metadata.c (inflated_signature_in_image): Call signature_in_image as well.
5070         Hopefully fixes #458168.
5071
5072 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
5073
5074         * object.c (mono_raise_exception): Remove call to InterlockedIncrement
5075         as it is performed elsewhere.
5076
5077         Code is contributed under MIT/X11 license
5078
5079 2009-01-19  Christian Hergert  <christian.hergert@gmail.com>
5080
5081         * mono-perfcounters-def.h: Add counters for asp.net requests total and
5082         requests queued.
5083         * object.c (mono_raise_exception): Increment the exceptions total
5084         counter when an exception is thrown.
5085         * class-internals.h: Add a location for storing the total number of
5086         asp.net requests served.
5087         * mono-perfcounters.c: Implement update support for asp.net counters
5088         from the class libraries. Implement read support for asp.net counters
5089         and exceptions total counter.
5090
5091 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
5092
5093         * loader.c (search_in_array_class): Call mono_class_setup_methods () before
5094         accessing klass->methods. Fixes #467385.
5095
5096 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * marshal.c (emit_marshal_custom): Avoid calling MarshalNativeToManaged
5099         for byval arguments without an [Out] attribute. Fixes #467212.
5100
5101         * attach.c: Applied patch from Koushik Dutta (koush@koushikdutta.com). 
5102         Fix compilation under android.
5103         
5104         * sgen-gc.c: Instead of scanning gray objects after all roots have been 
5105         processed, scan them directly after they are copied, to achieve better locality
5106         and cache usage.
5107
5108         * socket-io.c: Applied patch from Koushik Dutta
5109         (koush@koushikdutta.com). Disable IPV6 when running under android.
5110
5111 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
5112
5113         * icall.c (ves_icall_InternalExecute): Add write barriers.
5114
5115         * marshal.c (mono_marshal_get_write_barrier): Remove, this is now done in
5116         the GC code.
5117
5118         * sgen-gc.c: Implement write barriers in IL code.
5119
5120 2009-01-17  Geoff Norton  <gnorton@novell.com>
5121
5122         * image.c: Avoid trying to walk the reference table of dynamic assemblies.
5123
5124 2009-01-17  Geoff Norton  <gnorton@novell.com>
5125
5126         * image.c: When unloading the image->references table, there can be gaps
5127         in it.  Ensure that we iterate every entry to avoid leaking assembly references
5128         when unloading an appdomain.
5129
5130 2009-01-16  Zoltan Varga  <vargaz@gmail.com>
5131
5132         * sgen-gc.c: Add support for allocating a nursery at an aligned address, to
5133         speed up ptr-in-nursery checks.
5134
5135         * threads.c (mono_threads_abort_appdomain_threads): Abort threads outside the
5136         threads_lock () to prevent deadlocks.
5137
5138         * sgen-gc.c gc-internal.h: Add a new root type root-with-wbarrier, which
5139         does not need to be scanned during minor collections, since writes to it
5140         must use write barriers.
5141
5142 2009-01-15 Rodrigo Kumpera  <rkumpera@novell.com>
5143
5144         * metadata-verify.c: Add pe nt header verification.
5145         
5146 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
5147
5148         * gc.c: Fix a few warnings when using SGEN.
5149
5150 2009-01-14 Rodrigo Kumpera  <rkumpera@novell.com>
5151
5152         * metadata-verify.c: Add pe optional header verification.
5153
5154 2009-01-15  Zoltan Varga  <vargaz@gmail.com>
5155
5156         * sgen-gc.c: Add support for user defined marker functions, used by
5157         MonoGHashTable to avoid registering a GC root for every hash node.
5158
5159 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
5160
5161         * sgen-gc.c: Fix warnings. Optimize copy_object () a bit. Split pinned/
5162         non-pinned roots into separate hashes to avoid having to traverse them
5163         in functions which are only interested in one kind.
5164
5165 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
5166
5167         * metadata-verify.c: Add pe header machine field verification.
5168         
5169 2009-01-13 Rodrigo Kumpera  <rkumpera@novell.com>
5170
5171         * metadata-verify.c: Add pe header size verification.
5172
5173 2009-01-14  Zoltan Varga  <vargaz@gmail.com>
5174
5175         * reflection.c (ALLOC_REFENTRY): Don't allocate the ReflectionEntry structures
5176         using the GC, they don't contain references.
5177
5178         * domain.c (mono_domain_create): Create ldstr_table using MONO_HASH_KEY_VALUE_GC.
5179
5180 2009-01-13  Geoff Norton  <gnorton@novell.com>
5181
5182         * appdomain.c|h: Expose mono_domain_unload to the embedding api so that 
5183         AppDomains created on the native side can be cleaned up on the native side.
5184
5185 2009-01-13  Geoff Norton  <gnorton@novell.com>
5186
5187         * appdomain.c: Ensure that we call mono_context_init for the embedding api
5188         as well as the managed api.
5189
5190 2009-01-13  Geoff Norton  <gnorton@novell.com>
5191
5192         * appdomain.h|c: New API for creating a MonoDomain in the embedding api
5193         with a MonoAppDomain initialized against it.
5194
5195 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5196
5197         * reflection.c (MOVING_GC_REGISTER): Fix a warning.
5198         
5199         * reflection.c (mono_image_get_generic_param_info): Use MOVING_GC_REGISTER.
5200
5201         * marshal.c: Avoid setting the exception clauses after a method has been entered 
5202         into the wrapper caches. Fixes #465700.
5203
5204         * method-builder.c (mono_mb_set_clauses): New function to set the clauses of the
5205         method builder.
5206         (mono_mb_create_method): Set the clauses from the method builder.
5207
5208 2009-01-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
5209
5210         * threadpool.c: include sys/socket.h. Fixes compilation on FreeBSD.
5211         Patch from Makoto Kishimoto.
5212
5213 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
5214
5215         * sgen-gc.c (mono_gc_make_descr_from_bitmap): Handle large bitmaps by 
5216         encoding them as ROOT_DESC_COMPLEX.
5217         (precisely_scan_objects_from): Implement support for ROOT_DESC_COMPLEX.
5218
5219 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
5220
5221         * sgen-gc.c (scan_from_remsets): Clear the global remset of pointers which
5222         no longer point to the nursery.
5223
5224         * sgen-gc.c: Add a few comments/FIXMEs.
5225         
5226         * sgen-gc.c: Implement scanning of the alloc_pinned objects.
5227
5228         * marshal.c (mono_marshal_get_synchronized_wrapper): Make the 
5229         initialization of the various _method variables thread safe. Fixes
5230         #465377.
5231
5232 2009-01-12  Mark Probst  <mark.probst@gmail.com>
5233
5234         * domain.c, domain-internals.h: Remove the shared_generics_hash
5235         and its lookup functions.
5236
5237 2009-01-12  Bill Holmes  <billholmes54@gmail.com>
5238
5239         * socket-io.c:  Fixing the MSVC build. 
5240
5241         Code is contributed under MIT/X11 license.
5242
5243 2009-01-12 Rodrigo Kumpera  <rkumpera@novell.com>
5244
5245         * metadata-verify.c: Add pe header watermark verification.
5246
5247 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
5248
5249         * metadata-verify.c: Add lfanew verification.
5250
5251 2009-01-12  Jb Evain  <jbevain@novell.com>
5252
5253         * tabldefs.h: rename METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE to
5254         METHOD_ATTRIBUTE_STRICT to match the ECMA terminology.
5255
5256 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
5257
5258         * socket-io.c: Fix the build.
5259
5260         * environment.c: Fix an #ifdef.
5261
5262 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5263
5264         * threadpool.c (async_invoke_thread): Handle the wait function returning
5265         WAIT_IO_COMPLETION as well.
5266         (async_invoke_io_thread): Ditto.
5267
5268 2009-01-09  Bill Holmes  <billholmes54@gmail.com>
5269
5270         * threads.c: Fixing the Windows build.
5271
5272         Code is contributed under MIT/X11 license.
5273
5274 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5275  
5276         * threads.c (signal_thread_state_change): Call wapi_interrupt_thread () to
5277         interrupt a wait.
5278         (mono_thread_execute_interruption): Call wapi_clear_interruption () to enable
5279         the thread to wait again.
5280
5281 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
5282
5283         * metadata-verify.c: Initial skeleton of the metadata verifier.
5284
5285         * pedump.c: Add support for the metadata verifier.
5286
5287         * verify-internal.h: Export the whole assembly metadata verifier function.
5288
5289 2009-01-09 Rodrigo Kumpera  <rkumpera@novell.com>
5290
5291         * gc.c (mono_gc_init): Fix the comments about deadlock on windows.
5292
5293 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
5294
5295         * Makefile.am: Upgrade dtrace-prelink.sh location.
5296
5297 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
5298
5299         * gc.c (mono_gc_init): Wait for finalizer thread to init on windows as
5300         well. Otherwise the shutdown deadlock that happens on unix will can happen
5301         as well.
5302         If the main thread code finishes too fast it's possible that the finalizer
5303         thread won't have executed yet, won't record itself as the finalizer thread
5304         and the shutdown sequence will wait on it forever.
5305
5306 2009-01-08 Rodrigo Kumpera  <rkumpera@novell.com>
5307
5308         * threads.c (mono_thread_current): Make THREAD_DEBUG work on windows
5309         with MSVC.
5310
5311 2009-01-08  Miguel de Icaza  <miguel@novell.com>
5312
5313         * appdomain.c: Initialize the mono_strtod_mutex here, thanks to
5314         Robert Jordan for pointing this out.
5315
5316 2009-01-08  Christian Prochnow  <cproch@seculogix.de>
5317
5318         * icall.c
5319         * icall-def.h: added internal calls ves_icall_System_IO_DriveInfo_GetDiskFreeSpace,
5320         ves_icall_System_IO_DriveInfo_GetDriveType.
5321
5322 2009-01-07  Miguel de Icaza  <miguel@novell.com>
5323
5324         * icall.c: Wrap calls to mono_strtod in CriticalSection
5325         invocations when using eglib, to work around #464316.
5326
5327 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
5328
5329         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Double check the
5330         return value of GetCurrentDirectory to never access unitialized memory.
5331
5332 2009-01-07 Rodrigo Kumpera  <rkumpera@novell.com>
5333
5334         * file-io.c (ves_icall_System_IO_MonoIO_GetCurrentDirectory): Properly check the
5335         return value of GetCurrentDirectory and expand the buffer if needed.
5336
5337         Fixes #459094.
5338
5339 2009-10-07 Tom Hindle  <tom_hindle@sil.org>
5340
5341         * marshal.c (GetIUnknownForObjectInternal, GetIUnknownForObjectInternal) : 
5342           Adding a call to mono_init_com_types.
5343
5344         Code is contributed under MIT/X11 license.
5345
5346 2009-01-07  Geoff Norton  <gnorton@novell.com>
5347
5348         * socket-io.c: ioctlsocket(FIONREAD) returns the size of the UDP header as well on 
5349         darwin.  Use getsockopt SO_NREAD instead to get the right values for TCP and UDP.
5350         ai_canonname can be null in some cases on darwin, where the runtime assumes it will 
5351         be the value of the ip buffer.
5352
5353 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
5354
5355         * verify.c (mono_class_interface_implements_interface): Verify parents as we can't rely on
5356         interfaces_packed here.
5357
5358         Fixes part of #463294.
5359
5360 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
5361
5362         * verify.c (is_array_type_compatible): Ignore bounds and sizes when checking array compatibility.
5363
5364         Fixes part of #463294.
5365
5366 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
5367
5368         * verify.c (stack_slot_is_complex_type_not_reference_type): Check if the type
5369         is a boxed complex as well.
5370
5371         Fixes part of #463294.
5372
5373 2009-01-06 Rodrigo Kumpera  <rkumpera@novell.com>
5374
5375         * reflection.c (mono_image_get_methodref_token): Add an extra create_typespec parameter to
5376         control if a methodspec should be created for the generic method definition from external assemblies.
5377         Caching of methodspec is done using the handleref hash table.
5378
5379         Fixes #462592.
5380
5381 2009-01-05 Rodrigo Kumpera  <rkumpera@novell.com>
5382
5383         * loader.c (find_method): When searching the interfaces of a class
5384         check the transitive closure of implemented interfaces.
5385
5386         Fixes #463303.
5387
5388 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
5389
5390         * class.c (get_implicit_generic_array_interfaces): Improve debugging code.
5391         
5392 2009-01-03 Rodrigo Kumpera  <rkumpera@novell.com>
5393
5394         * class.c (get_implicit_generic_array_interfaces): Extract valuetype
5395         interfaces calculation to fill_valuetype_array_derived_types.
5396
5397         * class.c (get_implicit_generic_array_interfaces): Valuetypes need IList /
5398         ICollection / IEnumerator interfaces for their extra twin type - sbyte for byte
5399         for example.
5400
5401         * class.c (get_implicit_generic_array_interfaces): InternalEnumerator gets
5402         interfaces for valuetypes if needed.    
5403
5404         * class.c (fill_valuetype_array_derived_types): Enums should have interfaces
5405         for their basetype as well. Types are array expanded if rank is > 0.
5406
5407         Fixes #400716.
5408
5409 2008-12-30  Bill Holmes  <billholmes54@gmail.com>
5410
5411         * socket-io.h : Changing the signature of
5412           ves_icall_System_Net_Sockets_Socket_Accept_internal to pass
5413           the blocking state.
5414
5415         * icall-def.h :  Changing the signature of
5416           System.Net.Sockets.Socket.Accept_internal to pass the blocking state.
5417
5418         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Accept_internal) :
5419           For Windows only.  Avoid blocking when calling accept by
5420           querying for a connection via select.  The loop also queries
5421           the thread state every 1000 micro seconds for the thread
5422           stop state.  This will avoid the process hanging on shutdown
5423           when using a TcpChannel that is never connected to.
5424
5425         Code is contributed under MIT/X11 license.
5426
5427 2008-12-30  Marek Safar  <marek.safar@gmail.com>
5428
5429         * tabledefs.h: Add METHOD_ATTRIBUTE_CHECK_ACCESS_ON_OVERRIDE.
5430
5431 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
5432
5433         * class.c (get_implicit_generic_array_interfaces): Extract common
5434         code to a helper function making it a lot easier on the eyes.
5435
5436 2008-12-26 Rodrigo Kumpera  <rkumpera@novell.com>
5437
5438         * class.c (get_implicit_generic_array_interfaces): If the internal
5439         enumerator is an interface inflate System.Object instead of itself.
5440
5441         Fixes #461261.
5442
5443 2008-12-24 Rodrigo Kumpera  <rkumpera@novell.com>
5444
5445         * object.c (mono_runtime_invoke_array): Don't assert with
5446         byref nullable types.
5447
5448         * marshal.c (mono_marshal_get_runtime_invoke): To handle
5449         byref nullables we unbox the object and store it on the
5450         stack. 
5451         We can't use the boxed object since it is the T of Nullable<T>
5452         and the boxed representation of a nullable it's underlying type
5453         or null.
5454         We could cheat and create a boxed nullable and use the same
5455         machinery of other byref VTs but this feels like a hack and
5456         using the stack has the bonus of reducing heap pressure.
5457
5458         Fixes #461941.
5459
5460 2008-12-23 Rodrigo Kumpera  <rkumpera@novell.com>
5461
5462         * marshal.c (mono_marshal_emit_managed_wrapper): Handle char
5463         return value.
5464
5465         Fixes #461867.
5466
5467 2008-12-19  Bill Holmes  <billholmes54@gmail.com>
5468
5469         * icall-def.h : Adding an internal call definition for 
5470           System.Environment.internalBroadcastSettingChange.
5471
5472         * icall.c : Adding a Windows only implementation to broadcast a 
5473           WM_SETTINGCHANGE when an environment variable has changed.
5474
5475         Code is contributed under MIT/X11 license.
5476
5477 2008-12-19  Mark Probst  <mark.probst@gmail.com>
5478
5479         * class.c, class-internals.h: Made
5480         mono_class_has_parent_and_ignore_generics() non-static.
5481
5482 Thu Dec 18 16:35:22 CET 2008 Paolo Molaro <lupus@ximian.com>
5483
5484         * image.c: deal with the mmap failing when loading an image.
5485
5486 2008-12-17  Geoff Norton  <gnorton@novell.com>
5487
5488         * threadpool.c: Ensure that the io_queue_lock is initialized
5489         in all circumstances, as we always attempt to cleanup against it.
5490
5491 2008-12-17  Miguel de Icaza  <miguel@novell.com>
5492
5493         * icall.c (ves_icall_System_Environment_get_Platform): For
5494         compatibility reasons for existing client code we will keep
5495         returning 4 for a while.   
5496
5497         For how long will depend on the documentation being updated, and
5498         for us to give client code a chance to be updated.
5499
5500         This reverts the original decison on #433108 since we did not
5501         catch roughly 33 instances of the broken code in our own source
5502         code base, we did not catch failures on the buildbots, and QA did
5503         not bring this as a problem.
5504
5505         Only today I found some customer's code breaking due to our own
5506         class libraries not being fully updated and tracked it down to
5507         this change.  I am reverting it because if we could not even get
5508         our story straight in our own code base, how can we hope that our
5509         end user code be fixed?
5510
5511         As of this morning, our Wiki page that documents how to detect
5512         Unix had not been fixed.    
5513
5514 2008-12-16  Zoltan Varga  <vargaz@gmail.com>
5515
5516         * metadata.c (inflated_method_in_image): Add a workaround for #458168.
5517
5518         * class.c (mono_class_get_fields): Handle loading errors.
5519
5520 2008-12-12 Mark Mason <mmason@upwardaccess.com>
5521
5522         * 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.
5523         
5524 2008-12-12 Gonzalo Paniagua Javier <gonzalo@novell.com>
5525
5526         * mono-perfcounters.c: avoid warning.
5527
5528 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
5529
5530         * reflection.c (ensure_runtime_vtable): Work on generic instances and
5531         make sure all interfaces have MonoClass::interface_id set.
5532
5533         * reflection.c (ensure_generic_class_runtime_vtable): Ensure the
5534         method table is property set.
5535
5536 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
5537
5538         * class.c: New function mono_class_setup_interface_id that setup
5539         MonoClass::interface_id if needed.
5540
5541         * class-internals.h: Export new function.
5542
5543 2008-12-12 Rodrigo Kumpera  <rkumpera@novell.com>
5544
5545         * class.c: Add code to sanity check the vtable after setup_vtable_general
5546         has done it's work.
5547
5548 2008-12-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
5549
5550         * icall.c: make Assembly.GetExecutingAssembly work properly when
5551         reflection is used to invoke the method.
5552         Bug #321781 fixed.
5553
5554 2008-12-11  Mark Probst  <mark.probst@gmail.com>
5555
5556         * metadata/generic-sharing.c: Look for constraints in all type
5557         arguments, not just the first one.
5558
5559 2008-12-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
5560
5561         * appdomain.c: return the correct CodeBase for an Assembly instance
5562         that was loaded from the shadow-copy directories.
5563         Bug #458190 fixed.
5564
5565 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
5566
5567         * sgen-gc.c (build_nursery_fragments): Clear nursery_next/nursery_frag_real_end.
5568
5569         * sgen-gc.c (check_object): New debugging helper function.
5570
5571         * object.c: Fix calls to mono_value_copy_array ().
5572
5573 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         * class.c (mono_class_setup_fields): If working on an inflated class
5576         first check if the generic definition did init with success.
5577
5578         Fixes #445361.
5579
5580 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
5581
5582         pedump.c (main): Fix a warning.
5583
5584 2008-12-10  Bill Holmes  <billholmes54@gmail.com>
5585
5586         * object-internals.h : Adding a definition for 
5587           MonoReflectionComVisibleAttribute.
5588
5589         * marshal.c (cominterop_com_visible) :  Method added to check the 
5590           ComVisible attribute of a class.
5591
5592         * marshal.c (cominterop_raise_hr_exception, cominterop_get_interface) :  
5593           cominterop_raise_hr_exception added to consolidate common code 
5594           to raise hr exceptions.
5595
5596         * marshal.c (cominterop_can_support_dispatch) :  Method added to determine 
5597           if a managed class should support IDispatch.
5598
5599         * marshal.c 
5600           (cominterop_get_idispatch_for_objec, cominterop_ccw_queryinterfacet) :  
5601           Added additional checks for managed object when getting 
5602           an IDispatch interface.
5603
5604         Code is contributed under MIT/X11 license.
5605
5606 2008-12-10 Rodrigo Kumpera  <rkumpera@novell.com>
5607
5608         pedump.c (main): Handle mono_get_method () returning NULL. 
5609
5610 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5611
5612         * marshal.h: Fix a warning.
5613
5614 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
5615
5616         * marshal.c : Adding cominterop_release_all_rcws to release all
5617           runtime callable wrappers held by the runtime.
5618
5619         * marshal.h : Adding declaration for cominterop_release_all_rcws.
5620           
5621         Code is contributed under MIT/X11 license.
5622
5623 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
5624
5625         * metadata.c (mono_image_alloc_lock): New helper function.
5626         (mono_image_alloc0_lock): Ditto.
5627
5628         * metadata.c: Use the alloc_lock () helper functions for allocating
5629         memory from the image mempool.
5630
5631 2008-12-08 Rodrigo Kumpera  <rkumpera@novell.com>
5632
5633         * class.c (mono_class_from_generic_parameter): Document it's
5634         locking behavior. Fix double checked locking here, we stored in
5635         param->pklass a partially initialized MonoClass and no membar was used.
5636
5637 2008-12-05  Marek Habersack  <mhabersack@novell.com>
5638
5639         * sysmath.c (ves_icall_System_Math_Round2): if round (3) and rint
5640         (3) functions are present in the C library use them to do the
5641         job. If they are absent, make sure that the sum of int_part and
5642         dec_part is rounded before returning. This is necessary due to the
5643         division of dec_part by the power of 10 before the final addition
5644         is performed - if the result is not rounded in some cases it will
5645         yield invalid results.
5646
5647 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
5648
5649         * marshal.c (mono_marshal_emit_native_wrapper): Add AOT support for pinvoke
5650         wrappers by emitting the function address using a CEE_MONO_ICALL_ADDR 
5651         instruction instead of a pointer constant.
5652
5653 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
5654
5655         * loader.c (mono_method_get_header): Do most of the work outside the
5656         loader lock, to avoid assembly load hook deadlocks.
5657
5658         * metadata.c (mono_metadata_parse_mh_full): Use finer-grained locking.
5659         (mono_metadata_parse_type_full): Ditto.
5660
5661 2008-12-02 Rodrigo Kumpera  <rkumpera@novell.com>
5662
5663         * mempool.c (mono_backtrace): Take the number of allocated bytes as argument.
5664         Make the stack depth fixed. Ensure proper argument passing to the backtrace
5665         funtions. Finally, use a lock to produce well ordered output.
5666
5667         The lock looks silly, as all calls to the corlib mempool should be guarded
5668         with the loader lock, but for some reason this fact doesn't help. 
5669
5670         * mempool.c (mono_mempool_alloc0): Add support for TRACE_ALLOCATIONS.
5671
5672 2008-12-02  Mark Probst  <mark.probst@gmail.com>
5673
5674         * socket-io.c: 64 bit big-endian fixes.
5675
5676 2008-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
5677
5678         * verify.c (is_compatible_boxed_valuetype): Rewrite function to work properly with
5679         targets that require strict compatibility between the types.
5680
5681         * verify.c (verify_stack_type_compatibility_full): Boxed values are not compatible
5682         to unboxed types. All cases that this is true are checked by is_compatible_boxed_valuetype.
5683         Kill the strict argument and create a new one valuetype_must_be_boxed.
5684
5685         * verify.c (verify_delegate_compatibility): Use verify_stack_type_compatibility_full to
5686         state that all valuetypes must be boxed.
5687
5688         Fixes #448560.
5689
5690 2008-11-29  Kornél Pál  <kornelpal@gmail.com>
5691
5692         * coree.c (MonoFixupExe): Use sizeof(IMAGE_BASE_RELOCATION) instead of
5693         IMAGE_SIZEOF_BASE_RELOCATION as newer Vista SDKs no longer define the latter.
5694
5695         Contributed under MIT/X11 license.
5696
5697 2008-11-28 Rodrigo Kumpera  <rkumpera@novell.com>
5698
5699         * class.c (mono_class_setup_fields): Don't copy MonoType::attrs as
5700         the inflate_generic_type machinery should handle it.
5701
5702         This avoids a crash when the field's flags is zero and it's type is
5703         a primitive.
5704         What happens is that mono_metadata_parse_type_full will see that opt_attrs
5705         is zero and will return one of the cached built-in primitive types. Since
5706         those types live in read-only memory, the code that copies it crashes.  
5707
5708 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5709
5710         * object.c: Don't put function descriptors into generalized IMT
5711         thunks.
5712
5713 2008-11-28  Mark Probst  <mark.probst@gmail.com>
5714
5715         * class.c: Enable generic code sharing on PPC64.
5716
5717 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5718
5719         * mempool.c, mempool-internals.h: Added g_slist_append_mempool()
5720         from mini/mini.c.
5721
5722         * generic-sharing.c: Allocate the method template slists from the
5723         image mempool so it doesn't leak.
5724
5725 2008-11-27 Rodrigo Kumpera  <rkumpera@novell.com>
5726
5727         * class.c (generic_array_methods): Release the linked list.
5728
5729 2008-11-27  Mark Probst  <mark.probst@gmail.com>
5730
5731         * marshal.c (mono_string_builder_to_utf8): Fixed a wrong
5732         invocation to g_utf16_to_utf8().
5733
5734 2008-11-26  Mark Probst  <mark.probst@gmail.com>
5735
5736         * icall.c (mono_ArgIterator_IntGetNextArg): Handle sub-word sized
5737         arguments on big endian archs.
5738
5739 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5740
5741         * reflection.c: (_mono_reflection_parse_type) skip leading spaces in
5742         the type name (test added in corlib).
5743
5744 2008-11-25 Gonzalo Paniagua Javier <gonzalo@novell.com>
5745
5746         * pedump.c: initialize perf. counters. Fixes a segv.
5747
5748 2008-11-25  Martin Baulig  <martin@ximian.com>
5749
5750         * mono-debug-debugger.c
5751         (mono_debugger_runtime_invoke): Return the exception object if an
5752         exception was thrown.  Visual Studio displays the exception object
5753         in the locals window.
5754
5755 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5756
5757         * mini-trampolines.c (mono_delegate_trampoline): Don't return a
5758         ftnptr.
5759
5760 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5761
5762         * marshal.c (mono_type_native_stack_size): MONO_TYPE_I and
5763         MONO_TYPE_U are sizeof (gpointer), too.
5764
5765 2008-11-24  Mark Probst  <mark.probst@gmail.com>
5766
5767         * marshal.c (mono_type_native_stack_size): Fixed size and
5768         alignment for reference types.
5769
5770 2008-11-23  Mark Probst  <mark.probst@gmail.com>
5771
5772         * class.c (mono_class_generic_sharing_enabled): Disable generic
5773         code sharing for PPC64.
5774
5775 2008-11-21 Rodrigo Kumpera  <rkumpera@novell.com>
5776
5777         * icall.c (mono_method_get_equivalent_method): Make sure
5778         method->klass->methods is inited before looping over it.
5779
5780 2008-11-20 Gonzalo Paniagua Javier <gonzalo@novell.com>
5781
5782         * object.c: when calling ExecuteAssembly in a newly created domain,
5783         the configuration file and application base are already set up.
5784         Bug #446353 take 2 fixed.
5785
5786 2008-11-20  Zoltan Varga  <vargaz@gmail.com>
5787
5788         * marshal.c: Add support for MONO_TYPE_GENERICINST to some functions.
5789         Fixes #444715. Fix a warning.
5790
5791 2008-11-18 Gonzalo Paniagua Javier <gonzalo@novell.com>
5792
5793         * appdomain.c: write the full path of the assembly to the .ini file
5794         created when "shadow-copying"
5795         Bug #446353 fixed.
5796
5797 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
5798
5799         * debug-helpers.c (mono_method_full_name): Stringify wrapper types even
5800         if signature==FALSE.
5801
5802 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5803
5804         * marshal.h : Fix the cygwin build.
5805            marshal.c:12442: undefined reference to `_IID_IMarshal'
5806           
5807         Code is contributed under MIT/X11 license.
5808
5809 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
5810
5811         * marshal.h : cominterop_ccw_getfreethreadedmarshaler added to return the
5812           free threaded marshaler when QueryInterface is called on a COM callable
5813           wrapper requesting the IMarshal interface.
5814           
5815         Code is contributed under MIT/X11 license.
5816
5817 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * domain-internals.h (MonoDomain): Update MONO_DOMAIN_LAST_GC_TRACKED.
5820
5821         * reflection.c (mono_type_get_object): Special case the very common
5822         void type.
5823
5824         * domain-internals.h (struct _MonoDomain): Add 'typeof_void' field to
5825         hold typeof(void).
5826
5827 2008-11-13  Bill Holmes  <billholmes54@gmail.com>
5828
5829         * process.h : Adding method declaration for
5830           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
5831           
5832         * process.c : Adding implementation for
5833           ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
5834           
5835         * icall-def.h : Registering ICALL Processs.WaitForInputIdle_internal
5836           to ves_icall_System_Diagnostics_Process_WaitForInputIdle_internal.
5837
5838         Code is contributed under MIT/X11 license.
5839
5840 2008-11-10  Rodrigo Kumpera  <rkumpera@novell.com>
5841
5842         * appdomain.c (unload_thread_main): Clean up threadpool by
5843         calling mono_thread_pool_remove_domain_jobs.
5844
5845         * domain-internals.h (struct _MonoDomain): Add new fields to
5846         help coordinate the cleanup of the threadpool.
5847
5848         * threadpool.c (mono_thread_pool_remove_domain_jobs): New fuction
5849         that cleans up the threadpool of all jobs associated with an appdomain.
5850         It does that by cleaning up the queues and making sure all active
5851         threads are accounted.
5852
5853         * threadpool.c (async_invoke_io_thread): Ignore job if its domain is
5854         unloaded or in the process of. Take this is such way that there is
5855         no race condition between another thread starting the unload and the
5856         current thread acknowledging it.
5857
5858         * threadpool.c (async_invoke_thread): Same.
5859
5860         * threadpool.c (start_io_thread_or_queue): Increment threadpool_jobs before
5861         firing the new thread.
5862
5863         * threadpool.c (start_tpthread): Same.
5864
5865         * theadpool.c (append_job): Increment threadpool_jobs before queueing.
5866
5867         * threadpool.h: Add mono_thread_pool_remove_domain_jobs.
5868
5869 2008-11-06  Jonathan Chambers  <joncham@gmail.com>
5870
5871         * file-io.c (ves_icall_System_IO_MonoIO_DuplicateHandle): 
5872         Add support for DuplicateHandle.
5873         
5874         * file-io.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
5875         Add support for DuplicateHandle.
5876         
5877         * icall-def.h (ves_icall_System_IO_MonoIO_DuplicateHandle): 
5878         Add support for DuplicateHandle.
5879
5880         Code is contributed under MIT/X11 license.
5881
5882 2008-11-06  Mark Probst  <mark.probst@gmail.com>
5883
5884         * class-internals.h: Make min_align into a whole byte.
5885
5886         * class.c: Set min_align for SIMD types to 16.
5887
5888 2008-11-05  Geoff Norton  <gnorton@novell.com>
5889
5890         * attach.c: Default the attacher to enabled for all cases including
5891         embedded.
5892
5893 Wed Nov 5 16:33:41 CET 2008 Paolo Molaro <lupus@ximian.com>
5894
5895         * monitor.c, class-internals.h, wrapper-types.h: revert incorrect
5896         change r117650.
5897
5898 2008-11-04  Mark Probst  <mark.probst@gmail.com>
5899
5900         * monitor.c, monitor.h: New function for querying offsets of
5901         members of MonoThreadsSync.
5902
5903 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
5904
5905         * marshal.c (mono_marshal_get_runtime_invoke): Use runtime_invoke_direct_cache
5906         to speed up this function and to avoid the boundless memory growth caused by
5907         the signature_dup () calls.
5908
5909 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
5910
5911         * monitor.c (mono_monitor_get_fast_enter_method): Add a proper type for the
5912         wrapper.
5913
5914         * class-internals.h (struct _MonoMethod): Increase the size of 'wrapper_type'
5915         by 1 bit.
5916
5917         * wrapper-types.h: Add MONO_WRAPPER_MONITOR_FAST_ENTER/EXIT.
5918
5919 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
5920
5921         * appdomain.c:
5922         * domain-internals.h: made mono_set_private_bin_path_from_config()
5923         "internal".
5924         * object.c: call the above function after setting the configuration
5925         file path for the root domain.
5926         Fixes bug #314478.
5927
5928 2008-10-31 Gonzalo Paniagua Javier <gonzalo@novell.com>
5929
5930         * assembly.c: when the assembly is loaded from an absolute path, end
5931         basedir with a directory separator.
5932         Bug #440781 fixed.
5933
5934 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5935
5936         * monitor.c (mono_monitor_get_fast_enter_method): If
5937         CompareExchange is not available, don't create the fastpath
5938         instead of asserting.  (The method is missing in the 1.1 profile.)
5939
5940 2008-10-30  Mark Probst  <mark.probst@gmail.com>
5941
5942         * marshal.c, marshal.h: Rename signature_no_pinvoke() and make it non-static.
5943
5944         * monitor.c, monitor.h: Code for generating Monitor.Enter and
5945         Monitor.Exit IL fastpaths.
5946
5947 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5948
5949         * class.c (mono_class_create_from_typedef): Added Vector2ul.
5950
5951 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
5952
5953         * class.c (mono_class_create_from_typedef): Added Vector2l.
5954
5955 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
5956
5957         * class.c (mono_class_create_from_typedef): Added Vector2d.
5958
5959 2008-10-27 Gonzalo Paniagua Javier <gonzalo@novell.com>
5960
5961         * appdomain.c: translate \ into / for cache_path.
5962         * domain-internals.h: new mono_is_shadow_copy_enabled().
5963         * icall.c: (fill_reflection_assembly_name) do the same path
5964         manipulations that get_code_base does.
5965         (get_code_base) use mono_is_shadow_copy_enabled.
5966
5967 2008-10-26 Gonzalo Paniagua Javier <gonzalo@novell.com>
5968
5969         * appdomain.c: shadow-copied assemblies go to CachePath +
5970         ApplicationName when both are set. DynamicBase has nothing to do with
5971         shadow copies.
5972         Bug #406877 fixed.
5973
5974 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * reflection.c (encode_locals): Use a cache to avoid duplicate entries in the
5977         STANDALONESIG table.
5978
5979         * metadata-internals.h (struct _MonoDynamicImage): Add cache for
5980         standalone signatures.
5981
5982         * marshal.c (mono_marshal_get_runtime_invoke): Rewrite the signature 
5983         comparison code: instead of comparing the signatures using a custom
5984         equals function, transform them to a common signature and compare that. This
5985         works better with AOT.
5986
5987 2008-10-25  Zoltan Varga  <vargaz@gmail.com>
5988
5989         * Reapply r116521 with (!mono_debug_using_mono_debugger ()) checks.
5990
5991         * class.c (mono_class_init): Remove unneccesary mono_class_setup_properties ()
5992         call for generic instances.
5993         (mono_class_setup_properties): Call setup_properties () before accessing
5994         gklass->properties.
5995
5996         * class.c (mono_class_get_virtual_methods): New helper function to iterate
5997         over the virtual methods of a class using metadata if possible, avoiding the
5998         creation of MonoMethod's for non-virtual methods.
5999         
6000         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
6001         get_virtual_methods () to iterate over the virtual methods of classes.
6002
6003 2008-10-25  Martin Baulig  <martin@ximian.com>
6004
6005         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_DEAD): New #define.
6006
6007 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6008
6009         * class.c (mono_class_create_from_typedef): Added Vector4i.
6010
6011 2008-10-24  Mark Probst  <mark.probst@gmail.com>
6012
6013         * marshal.c (mono_marshal_get_synchronized_wrapper): Emit
6014         ldtoken+GetTypeFromHandle instead of i4+icall so that the JIT
6015         special-casing applies to eliminate the call completely.
6016
6017 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
6018
6019         * class.c (mono_class_create_from_typedef): Added Vector8s.
6020
6021 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
6022
6023         * class.c (mono_class_create_from_typedef): Added Vector16sb.
6024
6025 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
6026
6027         * icall.c: get rid of annoying warning.
6028
6029 2008-10-23 Gonzalo Paniagua Javier <gonzalo@novell.com>
6030
6031         * threadpool.c: in 1.x, if you change the background status of the
6032         threadpool thread, it's not reset.
6033         Remove unnecessary calls to SetState.
6034
6035 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
6036
6037         * threadpool.c: asynchronously create a set of idle threads upon first
6038         use of the threadpool. SetMinThreads will now start the appropriate
6039         number of idle threads if they are not already running. The default is
6040         1 threadpool thread per CPU. Increased the maximum number of threads
6041         per CPU to 10.
6042
6043 2008-10-22  Martin Baulig  <martin@ximian.com>
6044
6045         Revert r116521 from Zoltan, it breaks the debugger:
6046
6047         * class.c (mono_class_get_virtual_methods): New helper function to iterate
6048         over the virtual methods of a class using metadata if possible, avoiding the
6049         creation of MonoMethod's for non-virtual methods.
6050         
6051         * class.c (mono_class_setup_vtable_general): Rewrite this to use 
6052         get_virtual_methods () to iterate over the virtual methods of classes.
6053
6054 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
6055
6056         * threads.c: when creating a threadpool thread, set its state to
6057         'background'.
6058         * threadpool.c: reset the background state of a threadpool thread
6059         after finishing each work item
6060         Bug #437888 fixed.
6061
6062 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
6063
6064         * class.c (mono_class_get_vtable_entry): Add an optimization for szarrays.
6065         
6066         * class.c (mono_class_setup_vtable_general): Add an optimized version for
6067         generic instances which works by inflating the methods in the container
6068         class's vtable.
6069
6070         * class.c (mono_class_inflate_generic_type_with_mempool_no_copy): New
6071         variant which doesn't make a copy if no inflation was done.
6072         (mono_class_setup_fields): Use it.
6073
6074         * metadata.c (mono_metadata_get_shared_type): New helper function to
6075         return a shared instance of a given MonoType.
6076
6077         * class.c (mono_class_inflate_generic_type_with_mempool): Avoid making
6078         a copy of most non-generic types.
6079
6080 Wed Oct 22 18:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
6081
6082         * threadpool.c: remove one more GetSystemInfo () call.
6083
6084 Wed Oct 22 17:45:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
6085
6086         * mono-perfcounters.c, icall-def.h, environment.c, environment.h:
6087         use the code in mono-proclib.h to get processor information.
6088
6089 2008-10-22 Gonzalo Paniagua Javier <gonzalo@novell.com>
6090
6091         * appdomain.c: fixed the logic that determines whether assemblies in a
6092         directory are "shadow-copied" or not. Bug #433483 fixed.
6093
6094 2008-10-22  Zoltan Varga  <vargaz@gmail.com>
6095
6096         * process.c (ves_icall_System_Diagnostics_Process_GetProcessData): Fix a
6097         warning.
6098
6099 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6100
6101         * marshal.c (runtime_invoke_signature_equal): Don't shared wrappers
6102         returning a vtype.
6103
6104         * class.c debug-helpers.c object.c class-internals.h marshal.c icall.c
6105         reflection.c: Use mono_field_get_name () for accessing a field's name.
6106
6107         * class-internals.h (MONO_CLASS_HAS_STATIC_METADATA): Move this here from
6108         class.c
6109
6110         * class.c (mono_field_get_rva): Fix crash if this is called on a dynamic
6111         field.
6112
6113         * loader.c (find_method_in_class): Reenable the metadata optimization by
6114         not using it for generic instances.
6115
6116         * class-internals.h (MonoFieldDefaultValue): Extract the rarely used 
6117         data/def_type fields from MonoClassField into a separate structure.
6118         (struct MonoClassField): Remove data/def_type fields.
6119         (struct _MonoClass): Add a 'field_def_values' array to store the default
6120         values/RVA for fields.
6121
6122         * class.c reflection.c: Update after the changes.
6123         
6124         * object.c (mono_class_create_runtime_vtable): Use mono_field_get_data ()
6125         for accessing field->data.
6126
6127         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray): Ditto.
6128
6129         * loader.c (find_method_in_class): Revert the last change for now as
6130         it breaks Mono.C5 unit tests.
6131
6132         * class-internals.h (struct _MonoDynamicGenericClass): Add fields
6133         'field_generic_types' and 'field_objects' which contain the information
6134         previously stored in MonoInflatedField.
6135         (MonoInflatedField): Delete.
6136         (struct _MonoClassField): Delete 'generic_info' field.
6137
6138         * reflection.c: Store the information which was previously in 
6139         field->generic_info in MonoDynamicGenericClass instead.
6140
6141         * metadata.c (free_generic_class): Update after MonoDynamicGenericClass/
6142         MonoClassField changes.
6143
6144 Tue Oct 21 17:07:55 CEST 2008 Paolo Molaro <lupus@ximian.com>
6145
6146         * marshal.c, method-builder.c: get rid of wrapper_hash and instead
6147         store the value inside the data array of the MonoMethodWrapper.
6148         This saves memory, is faster and fixes the lifetime issues (methods
6149         were never removed from the hash previously). May also fix bug#436996.
6150
6151 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
6152
6153         * reflection.c (mono_image_get_fieldref_token): For fields of non-dynamic 
6154         generic instances, compute the type from the generic definition instead of
6155         looking in field->generic_info.
6156
6157         * class.c (mono_class_setup_fields): Don't create a MonoInflatedField
6158         for inflated fields, the only user was get_fieldref_token () which no
6159         longer needs it.
6160
6161         * class.c (mono_class_init): Revert the last change as it seems to cause
6162         crashes.
6163
6164         * class-internals.h (struct _MonoClassField): Reorder fields to save 4
6165         bytes on 64 bit platforms.
6166
6167         * object.c (mono_class_create_runtime_vtable): Fix a warning.
6168         
6169         * object.c (mono_class_create_runtime_vtable): Don't initalize
6170         field->data/field->def_type here, it is done lazily by 
6171         mono_class_get_field_default_value ().
6172
6173         * icall.c (ves_icall_get_enum_info): Call 
6174         mono_class_get_field_default_value () instead of directly accessing
6175         field->data and field->def_type.
6176
6177         * object.c (get_default_field_value): Ditto.
6178
6179         * class.c (mono_field_get_data): Ditto.
6180         
6181         * class.c (mono_class_init): Remove unneccesary mono_class_setup_methods ()
6182         call for generic instances.
6183
6184         * loader.c (find_method_in_class): If klass != from_class, then inflate
6185         the method with the context of from_class, since the caller assumes this.
6186
6187 2008-10-20  Zoltan Varga  <vargaz@gmail.com>
6188
6189         * class.c (mono_method_get_vtable_index): Use mono_method_get_vtable_slot ()
6190         for accessing method->slot.
6191
6192 2008-10-20  Cedric Vivier  <cedricv@neonux.com>
6193
6194         * icall-def.h, icall.c: Add icall for Debugger.IsAttached.
6195
6196 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
6197
6198         * class.c (mono_method_get_vtable_index): Use
6199         mono_method_get_vtable_slot () for accessing method->slot.
6200
6201         * object.c (build_imt_slots): Use mono_class_get_method_by_index () for
6202         accessing klass->methods.
6203
6204         * class.c (mono_method_get_vtable_slot): New helper function.
6205         (mono_class_get_vtable_entry): Ditto.
6206         (mono_class_setup_vtable_general): Use mono_method_get_vtable_slot () for
6207         accessing method->slot.
6208
6209         * generic-sharing.c (mono_class_get_method_generic): Pass the declaring
6210         method to get_inflated_method ().
6211
6212         * class.c (mono_class_get_inflated_method): New helper method to obtain
6213         a method of an inflated class without calling setup_methods ().
6214         (mono_class_get_cctor): Use get_inflated_method.
6215
6216         * generic-sharing.c (mono_class_get_method_generic): Ditto.
6217         
6218         * marshal.c image.c: Lazily create all the marshal caches.
6219
6220         * image.c (mono_image_init): Move initialization of runtime_invoke
6221         caches to marshal.c.
6222
6223         * marshal.c (get_cache): New helper function to lazily initialize a 
6224         wrapper cache.
6225         (mono_marshal_get_runtime_invoke): Share more runtime invoke wrappers.
6226
6227         * debug-helpers.c (mono_method_full_name): Include generic arguments.
6228
6229 Fri Oct 17 10:51:32 CEST 2008 Paolo Molaro <lupus@ximian.com>
6230
6231         * loader.c: fixed check for interface type.
6232
6233 Thu Oct 16 20:59:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
6234
6235         * appdomain.c: check for NULL setup before it's referenced.
6236
6237 p
6238 Thu Oct 16 16:12:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
6239
6240         * class.c: remove the unused old vtable setup code.
6241
6242 Thu Oct 16 12:53:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
6243
6244         * class.c: don't depend on interface order in
6245         setup_interface_offsets (bug #435777).
6246         * reflection.c: sort the InterfaceImpl table (patch from
6247         Jb Evain  <jbevain@novell.com>).
6248
6249 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
6250
6251         * assembly.c (mono_assembly_open_full): Avoid loading images while holding
6252         the low level assemblies lock.
6253
6254 Mon Oct 13 16:35:26 CEST 2008 Paolo Molaro <lupus@ximian.com>
6255
6256         * domain-internals.h, domain.c, icall.c, image.c, marshal.c,
6257         object.c, reflection.c, socket-io.c, threads.c: introduced
6258         mono_framework_version () to return the major framewrok version,
6259         changed the code that was using more complex patterns to use it.
6260         Return the correct value for PlatformID for OSX.
6261
6262 Mon Oct 13 14:38:01 CEST 2008 Paolo Molaro <lupus@ximian.com>
6263
6264         * icall-def.h, process.h, process.c: added an icall to get info about
6265         processes using mono-proclib.
6266
6267 Mon Oct 13 11:14:44 CEST 2008 Paolo Molaro <lupus@ximian.com>
6268
6269         * mono-perfcounters.c: use the mono-proclib functions to
6270         access process information.
6271
6272 Mon Oct 13 11:00:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
6273
6274         * domain.c, assembly.c, debug-mono-symfile.c, debug-mono-symfile.h,
6275         monosn.c, Makefile.am, pedump.c, image.c, metadata-internals.h,
6276         reflection.c: remove rawbuffer usage: mmap support is more sanely
6277         provided by utils/mono-mmap.
6278
6279 Sat Oct 11 19:46:19 CEST 2008 Paolo Molaro <lupus@ximian.com>
6280
6281         * gc.c: use posix semaphores when possible so that
6282         mono_gc_finalize_notify() is signal safe.
6283
6284 2008-10-11  Zoltan Varga  <vargaz@gmail.com>
6285
6286         * reflection.c: Implement DISABLE_REFLECTION_EMIT, remove some
6287         #ifdef DISABLE_REFLECTION_SAVE stuff, only the exported functions need to
6288         be #ifdef-ed out, the linker will remove the rest.
6289
6290         * marshal.c: Implement DISABLE_COM.
6291
6292         * reflection.c: Implement DISABLE_REFLECTION_EMIT_SAVE.
6293
6294 2008-10-11  Miguel de Icaza  <miguel@novell.com>
6295
6296         * locales.c (string_invariant_compare_char): Optimization: do not
6297         call g_unichar_type unless we actually need the information.
6298
6299 2008-10-10  Mark Probst  <mark.probst@gmail.com>
6300
6301         * object.c, class-internals.h: Also create remoting trampolines
6302         for generic methods.  Pass the domain to the remoting trampoline
6303         creation function, too.
6304
6305 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
6306
6307         * class.c (mono_class_init): Fix+re-enable the finalize optimization.
6308
6309 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6310
6311         * class.c (mono_class_create_from_typedef): Vector4u was renamed to
6312         Vector4ui.
6313
6314 2008-10-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
6315
6316         * assembly.c:
6317         * locales.c: remove the use of g_strdown. Fixes bug #322313.
6318
6319 Fri Oct 10 17:01:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
6320
6321         * assembly.c: in mono_assembly_load_friends() take the assemblies lock
6322         for the least possible amount of time (extending the fix in r113458).
6323
6324 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
6325
6326         * class.c (mono_class_create_from_typedef): Retrofit to new type names.
6327
6328 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
6329
6330         * class.c (mono_class_create_from_typedef): Added Vector8u and Vector16u
6331         as possible simd intrinsic types.
6332         Optimized the test to check for the common prefix first.
6333
6334 Thu Oct 9 17:38:24 CEST 2008 Paolo Molaro <lupus@ximian.com>
6335
6336         * class.c: back out part of a broken optimization committed on
6337         May 23th (bug #433908).
6338
6339 2008-10-09  Mark Probst  <mark.probst@gmail.com>
6340
6341         * profiler.c (simple_shutdown): Don't call mono_thread_attach() on
6342         Win32.  Should fix #432388 for most cases until we have the new
6343         profiler on Win32.
6344
6345 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
6346
6347         * metadata.c (mono_metadata_generic_context_hash): Call generic_inst_hash
6348         instead of using inst->id so the hash is stable for AOT.
6349
6350 2008-10-07 Gonzalo Paniagua Javier <gonzalo@novell.com>
6351
6352         * appdomain.c:
6353         * icall.c: create a .ini file for shadow-copied assemblies that
6354         contains the location of the original assembly. Use this to return the
6355         proper CodeBase for shadow-copied assemblies. Fixes bug #323606.
6356         Also fix the number of '/' for windows when returning the CodeBase.
6357         Fixes bug #430920.
6358
6359 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6360
6361         * marshal.c (cominterop_get_ccw) : Fixing a copy paste error from r115126.
6362
6363         Code is contributed under MIT/X11 license.
6364
6365 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6366
6367         * marshal.c (cominterop_get_native_wrapper) : Adding a call to mono_class_setup_vtable
6368           if if the class vtable needs initialized.
6369
6370         Code is contributed under MIT/X11 license.
6371
6372 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
6373
6374         * marshal.c (cominterop_get_native_wrapper_adjusted, cominterop_get_ccw) : 
6375           Adding default MonoMarshalSpecs for COM methods.  OBJECT->STRUCT,
6376           STRING->BSTR, and CLASS->INTERFACE.
6377
6378         Code is contributed under MIT/X11 license.
6379
6380 2008-10-07  Marek Habersack  <mhabersack@novell.com>
6381
6382         * sysmath.h: changed the declaration of the
6383         ves_icall_System_Math_Round2 icall by adding an extra
6384         away_from_zero parameter.
6385
6386         * sysmath.c (ves_icall_System_Math_Round2): added support for
6387         away from zero rounding. The icall now takes an extra boolean
6388         parameter to signal that away from zero operation is requested.
6389
6390 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
6391
6392         * marshal.c (mono_marshal_get_delegate_begin_invoke): Put the wrapper in
6393         the delegate klass so it can work with full-aot.
6394         (mono_marshal_get_delegate_end_invoke): Ditto.
6395         (mono_marshal_get_delegate_invoke): Ditto.
6396
6397 Mon Oct 6 16:10:02 CEST 2008 Paolo Molaro <lupus@ximian.com>
6398
6399         * gc.c, attach.h, attach.c: remove a bad pattern:
6400         add_finalizer_callback () is not implemented correctly, it can't
6401         without adding more overhead to the finalizer loop and it's not
6402         even needed, since we know exactly what we need to call, so there is
6403         no need to do so through an expensive function pointer.
6404
6405 2008-10-04  Zoltan Varga  <vargaz@gmail.com>
6406
6407         * gc.c: Define a dummy version of mono_gc_add_finalizer_thread_callback ()
6408         for the no-gc case.
6409         * attach.c (mono_attach_init): Remove the #ifdef.
6410
6411 2008-10-04  Andreas Färber  <andreas.faerber@web.de>
6412
6413         * attach.c (mono_attach_init): Don't use
6414         mono_gc_add_finalizer_thread_callback when compiling without GC.
6415         Fixes #432306.
6416         
6417         Code is contributed under MIT/X11 license.
6418
6419 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
6420
6421         * class.c (mono_class_create_from_typedef): Remove the 
6422         #ifndef DISABLE_SIMD stuff.
6423
6424 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
6425
6426         * class-internals.h (MonoClass): Added simd_type bit field.
6427
6428         * class.c (mono_class_create_from_typedef): Check if type is a simd
6429         intrinsic.
6430
6431 2008-10-03  Mark Probst  <mark.probst@gmail.com>
6432
6433         * object.c (mono_method_add_generic_virtual_invocation): Only add
6434         instantiations to the thunk whose count is at least as large as
6435         the threshold.
6436
6437 2008-10-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
6438
6439         * icall.c: changed the Type of the exception thrown when trying to
6440         invoke a constructor on an abstract class. Part of the fix for bug
6441         #324185.
6442
6443 2008-10-02  Mark Probst  <mark.probst@gmail.com>
6444
6445         * class.c, class-internals.h (mono_method_get_vtable_index): New
6446         function which returns the index into the vtable and properly
6447         handles inflated virtual generic methods.
6448
6449 2008-10-01  Mark Probst  <mark.probst@gmail.com>
6450
6451         * object.c, domain.c, object-internals.h, domain-internals.h:
6452         Generalize IMT thunk machinery to also handle thunks for virtual
6453         generic method invokes.  When a virtual generic method is invoked
6454         more than a number of times we insert it into the thunk so that it
6455         can be called without lookup in unmanaged code.
6456
6457         * generic-sharing.c, class-internals.h: Fetching a
6458         MonoGenericInst* for a method from an (M)RGCTX.
6459
6460 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
6461
6462         * marshal.c (emit_marshal_string): Applied a variant of a patch by
6463         tom hindle <tom_hindle@sil.org>. Fix byref native-to-managed string
6464         marshalling. Fixes #431304.
6465
6466 2008-10-01  Bill Holmes  <billholmes54@gmail.com>
6467
6468         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
6469           handle when ref is specified without In or Out.
6470
6471         Code is contributed under MIT/X11 license.
6472
6473 2008-09-30  Mark Probst  <mark.probst@gmail.com>
6474
6475         * loader.c (mono_get_method_constrained): Don't expand method with
6476         the class's context, because it's already a method of that class.
6477
6478 2008-09-30  Atsushi Enomoto  <atsushi@ximian.com>
6479
6480         * attach.c : should be correct build fix.
6481
6482 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
6483
6484         * attach.c: Fix the previous change.
6485
6486 2008-09-29  Atsushi Enomoto  <atsushi@ximian.com>
6487
6488         * attach.c : quick w32 build fix.
6489
6490 2008-09-27  Miguel de Icaza  <miguel@novell.com>
6491
6492         * Turn off MONO_GENERIC_SHARING=all and go back to corlib as it
6493         crashes MonoDevelop: #430455.
6494
6495 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
6496
6497         * domain-internals.h (struct _MonoDomain): Move most fields used only by
6498         the JIT do MonoJitDomainInfo in ../mini/mini.h.
6499
6500         * domain.c: Remove initialization/cleanup of the removed fields.
6501
6502 2008-09-27  Mark Probst  <mark.probst@gmail.com>
6503
6504         * class.c (mono_class_generic_sharing_enabled): Enable generic
6505         code sharing for PPC.
6506
6507 2008-09-26  Bill Holmes  <billholmes54@gmail.com>
6508
6509         * attach.c : Fixing the Windows builds.
6510
6511         Code is contributed under MIT/X11 license.
6512
6513 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6514
6515         * class.c (mono_class_generic_sharing_enabled): Experimentally change 
6516         the default generic sharing mode to 'all'.
6517
6518 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6519
6520         * generic-sharing.c, class-internals.h: New function for checking
6521         whether a method needs a static RGCTX invoke wrapper.  A few
6522         funtions moved from mini/generic-sharing.c.
6523
6524         * icall.c: New function used.
6525
6526 2008-09-25  Mark Probst  <mark.probst@gmail.com>
6527
6528         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
6529         Static RGCTX invoke wrapping applies to value type methods, too.
6530
6531         * class.c (mono_class_setup_vtable_general): In generic-shared
6532         value types, wrap methods with a static RGCTX invoke wrapper.
6533
6534 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * attach.c (ipc_connect): Use AF_UNIX instead of AF_FILE to fix the
6537         osx build.
6538
6539 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
6540
6541         * gc.c (mono_gc_add_finalizer_thread_callback): New function to
6542         register a callback which is called when the finalizer thread is woken
6543         up.
6544         (finalizer_thread): Call the callback if it exists.
6545
6546         * attach.h attach.c: New files, implementing the attach mechanism.
6547
6548         * appdomain.c: Init/cleanup the attach mechanism on startup/shutdown.
6549         
6550         * object.c (mono_object_get_virtual_method): Fix an assertion introduced
6551         by the previous change.
6552
6553 Tue Sep 23 15:24:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
6554
6555         * class.c, domain-internals.h, domain.c, generic-sharing.c, image.c,
6556         loader.c, marshal.c, metadata-internals.h, metadata.c,
6557         method-builder.c, object.c, reflection.c: introduced specific functions
6558         to allocate from the domain and image mempools and cleaned up most of
6559         the code to use them (still missing a few in reflection.c).
6560         Keep the loader bytes counter updated.
6561
6562 Mon Sep 22 17:33:12 CEST 2008 Paolo Molaro <lupus@ximian.com>
6563
6564         * domain.c, monitor.c, boehm-gc.c, gc.c: update some of the GC and
6565         loader-related counters.
6566
6567 Mon Sep 22 17:29:54 CEST 2008 Paolo Molaro <lupus@ximian.com>
6568
6569         * mono-perfcounters-def.h, mono-perfcounters.c, class-internals.h:
6570         added more MS-compatible counters.
6571
6572 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
6573
6574         * class.c (mono_class_setup_fields): Call setup_fields before accessing
6575         class->blittable. Fixes #428217.
6576
6577 2008-09-21  Zoltan Varga  <vargaz@gmail.com>
6578
6579         * reflection.c (mono_image_get_field_on_inst_token): Call 
6580         field_encode_signature () since that handles custom modifiers too.
6581         Fixes #424663.
6582
6583 2008-09-20  Zoltan Varga  <vargaz@gmail.com>
6584
6585         * reflection.c (add_custom_modifiers): New helper function to merge custom
6586         modifiers stored in objects to a MonoType.
6587         (fieldref_encode_signature): Encode custom modifiers.
6588         (mono_image_get_generic_field_token): Call add_custom_modifiers ().
6589         (fieldbuilder_to_mono_class_field): Ditto. Fixes #424663.
6590
6591 2008-09-19  Kornél Pál  <kornelpal@gmail.com>
6592
6593         * coree.c (_CorValidateImage): Some 64-bit IL only images have entry point
6594         calling _CorDllMain imported from mscoree.dll. Set entry point RVA to 0 for
6595         64-bit IL only images because imports are not resolved for IL only images.
6596         Special thanks to Bill Holmes for finding this bug and testing the patch.
6597         Also fail for 64-bit images marked as CLI_FLAGS_32BITREQUIRED.
6598
6599         Contributed under MIT/X11 license.
6600
6601 2008-09-19  Miguel de Icaza  <miguel@novell.com>
6602
6603         * mono-config.c (dllmap_start): Add support for the bits keyword
6604         on dllentry and dllmap to easily detect 32 vs 64 bit systems.
6605
6606 2008-09-19  Mark Probst  <mark.probst@gmail.com>
6607
6608         * reflection.c (inflate_mono_method): When the class the method is
6609         to be inflated for is itself not inflated, just return the method.
6610
6611 Fri Sep 19 11:51:36 CEST 2008 Paolo Molaro <lupus@ximian.com>
6612
6613         * mono-perfcounters.c: use more user friendly process instance names.
6614
6615 2008-09-18  Bill Holmes  <billholmes54@gmail.com>
6616
6617         * marshal.c (emit_marshal_variant) : Change the attribute checks to 
6618           handle "[in] ref" and "[in][out] ref" cases.
6619
6620         * marshal.c (cominterop_get_ccw) : The wrong signature was being passed
6621           to mono_mb_create_method.  This was causing problems calling native to
6622           managed passing Variants by value.
6623
6624         Code is contributed under MIT/X11 license.
6625
6626 2008-09-18  Zoltan Varga  <vargaz@gmail.com>
6627
6628         * class.c (can_access_internals): Call mono_assembly_load_friends ()
6629         before accessing the friend_assembly_names field.
6630
6631         * assembly.c (mono_assembly_load_friends): Make this callable multiple
6632         times.
6633         (mono_assembly_load_from_full): Avoid calling load_friends (), it is
6634         called lazily when it is needed.
6635
6636         * metadata-internals.h (struct _MonoAssembly): Add 
6637         'friend_assembly_names_inited' flag.
6638
6639 Thu Sep 18 18:18:47 CEST 2008 Paolo Molaro <lupus@ximian.com>
6640
6641         * mono-perfcounters-def.h: fix the types of a few counters.
6642         * mono-perfcounters.c: implemented the instance names getter
6643         and a few bugfixes.
6644
6645 2008-09-18  Atsushi Enomoot  <atsushi@ximian.com>
6646
6647         * culture-info-table.h : regenerated.
6648
6649 2008-09-17  Robert Jordan  <robertj@gmx.net>
6650
6651         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
6652         context bound objects. Fixes #415577.
6653
6654         Code is contributed under MIT/X11 license.
6655
6656 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
6657
6658         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
6659         implementation (bug #423582).
6660
6661 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
6662
6663         * object.c (mono_object_get_virtual_method): Handle the case method->slot
6664         is not set. Fixes #426309.
6665
6666 2008-09-16  Jb Evain  <jbevain@novell.com>
6667
6668         * class.c (mono_class_from_name): fix the exported type look up
6669         when the type is defined in a referenced assembly.
6670
6671 2008-09-16  Jb Evain  <jbevain@novell.com>
6672
6673         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
6674         increment the next index counter on each iteration to make that work
6675         for more than one type forwarder. Unmanaged part to fix #422929.
6676
6677 2008-09-15  Mark Probst  <mark.probst@gmail.com>
6678
6679         * object-internals.h: enum ComInterfaceType in
6680         MonoInterfaceTypeAttribute is guint32, not guint16.
6681
6682 2008-09-12  Mark Probst  <mark.probst@gmail.com>
6683
6684         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
6685         writing code.
6686
6687 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6688
6689         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
6690         not gboolean.
6691
6692 2008-09-11  Mark Probst  <mark.probst@gmail.com>
6693
6694         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
6695         Endianness fixes for MonoSymbolFileOffsetTable.
6696
6697 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
6698
6699         * process.c (complete_path) : Removing quotes from the 
6700           input path.  The glib file routines do not handle file paths
6701           that have quotes around them.
6702
6703         Code is contributed under MIT/X11 license.
6704
6705 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
6706
6707         * socket-io.h : Adding a comment to provide locations where 
6708           changes to MonoSocketAsyncResult need to be synced.
6709
6710         Code is contributed under MIT/X11 license.
6711
6712 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
6715         parameters as well. Fixes #425001.
6716
6717 2008-09-08  Miguel de Icaza  <miguel@novell.com>
6718
6719         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
6720         windows build.
6721
6722 2008-09-07  Miguel de Icaza  <miguel@novell.com>
6723
6724         * console-io.c: Add support for tracking the window size if it
6725         changes.
6726
6727         The setup is very simple: the TtySetup function will now return a
6728         pointer to a location in memory that tracks the current console
6729         size.  The managed code checks its current value every time its
6730         queried against the last value set, and updates accordingly.
6731
6732         With this setup we can work with multiple consoles, and we do not
6733         require to poke into managed code from a signal handler.
6734
6735         Additionally, the environment for COLUMNS and LINES is now handled
6736         in unmanaged code.
6737
6738         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
6739
6740 2008-09-07  Mark Probst  <mark.probst@gmail.com>
6741
6742         * marshal.c (mono_type_native_stack_size): Treat
6743         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
6744
6745 2008-09-04  Jb Evain  <jbevain@novell.com>
6746
6747         * class.c (mono_class_is_assignable_from): fix assignability of nullables
6748         to nullables.
6749
6750 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
6751
6752         * verify.c (verify_type_compatibility_full): Revert change
6753         to allow converting a native int to unmanaged pointer be verifiable
6754         under non-strict mode.
6755         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
6756
6757         * verify.c: Added some TODOs.
6758
6759 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
6760
6761         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
6762           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
6763           Changed to use GlobalAlloc for the memory returned on Windows platforms.
6764
6765         Code is contributed under MIT/X11 license.
6766
6767 2008-09-02  Jb Evain  <jbevain@novell.com>
6768
6769         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
6770
6771 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
6772
6773         reflection.c (typebuilder_setup_fields): Handle classes with
6774         explicit size.
6775
6776 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
6777
6778         class.c (mono_class_setup_events): Add memory barrier due to
6779         double checked locking.
6780         
6781         class.c (mono_class_setup_properties): Same.
6782
6783 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
6784
6785         * class.c (mono_class_is_assignable_from): Fix the build.
6786         
6787         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
6788         before accessing klass->interface_bitmap. Fixes #421744.
6789
6790 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
6791
6792         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
6793         the runtime into no-exec mode, useful when running the AOT compiler.
6794
6795         * appdomain.c gc.c object.c: Avoid executing managed code when running
6796         in no-exec mode.
6797         
6798         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
6799
6800         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
6801         special case when the mono_assembly_loaded () returns NULL because the 
6802         search hook is not installed.
6803
6804 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
6805
6806         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
6807         crashes in bstr marshalling on linux.
6808
6809 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6810
6811         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
6812         with more than one parameter.
6813
6814 2008-08-24  Miguel de Icaza  <miguel@novell.com>
6815
6816         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
6817         start/stop flow control as well when turning off ICANON (allows
6818         C-s and C-q to be read by Console.ReadKey).
6819
6820 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
6821
6822         * class.c (mono_class_init): Move the initialization of nested classes
6823         into mono_class_get_nested_types (). Fixes #418433.
6824
6825         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
6826         flag.
6827
6828         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
6829         iterating tough the nested classes of a class.
6830
6831 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
6832
6833         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
6834         on arm.
6835
6836 2008-08-22  Miguel de Icaza  <miguel@novell.com>
6837
6838         * console-io.c (sigcont_handler): Support signal chaining for
6839         SIGCONT.
6840
6841         (console_set_signal_handlers): Use best practices with sigaction,
6842         clear the structure before using it. 
6843
6844 2008-08-22  Robert Jordan  <robertj@gmx.net>
6845
6846         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
6847         Fix the Windows build.
6848
6849 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
6850
6851         * class.c (mono_class_generic_sharing_enabled): Make the default
6852         sharing mode 'corlib'.
6853
6854 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
6855
6856         * console-io.c (console_set_signal_handlers): Fix a warning.
6857
6858         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
6859         method normally, the JIT will take care of avoiding recursion.
6860
6861 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
6862
6863         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
6864
6865         Code is contributed under MIT/X11 license.
6866
6867 2008-08-20  Miguel de Icaza  <miguel@novell.com>
6868
6869         * console-io.c (sigcont_handler): We need to restore the entire
6870         termios state, not only the original settings, as things like echo
6871         can be controlled after this (Booish exposes this issue with its
6872         own ReadLine implementation).
6873
6874         Additionally, we need to set the terminal back into keypad_xmit
6875         mode.
6876         
6877         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
6878         string as a paramter as well.   Otherwise we get different
6879         keyboard sequences.
6880
6881 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
6882
6883         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
6884         delegates with byref out parameter passing. Fixes #351520.
6885
6886         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
6887         a generic context.
6888         (mono_type_get_desc): Add the type arguments for GENERICINST.
6889         (mono_method_full_name): Stringify the class name using mono_type_full_name
6890         so it picks up generic arguments.
6891
6892 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
6893
6894         * console-io.c: Removed debug output.
6895
6896 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
6897
6898         reflection.c (mono_reflection_create_runtime_class): Alloc
6899         the nested classes linked list using the dynamic image mempool.
6900         Fixes leak in corlib compilation.
6901
6902 2008-08-19  Miguel de Icaza  <miguel@novell.com>
6903
6904         * console-io.c: Fix incredibly annoying behavior on the console
6905         after resuming execution after control-z.   This affected every
6906         console application.
6907
6908 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * mempool-internals.h: Header for mono private mempool functions. The first
6911         two function are for allocating glib linked lists using pools.
6912
6913         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
6914
6915         * Makefile.am: Added mempool-internals.h.
6916
6917 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
6918
6919         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
6920         (mono_domain_free): Ditto.
6921
6922         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
6923         be used by the JIT to store its domain-specific information, instead of putting
6924         it directly into MonoDomain.
6925
6926         * domain.c (mono_install_create_domain_hook): New helper function to install
6927         a hook which initializes domain->runtime_info.
6928
6929         * domain.c (mono_install_free_domain_hook): Ditto.
6930         
6931 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
6932
6933         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
6934         asserting if the ares parameter is null.
6935
6936         * mono-perfcounters.c: Fix warnings.
6937
6938         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
6939         is not needed, don't check for interruptions either.
6940         (mono_marshal_get_delegate_end_invoke): Ditto.
6941
6942 2008-08-15  Marek Habersack  <mhabersack@novell.com>
6943
6944         * mono-perfcounters.c (predef_readonly_counter): added support for
6945         reading the ASP.NET Requests Queued counter from another process.
6946
6947 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
6948
6949         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
6950         MonoImage to simplify the AOT code.
6951
6952 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
6953
6954         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
6955         marshalling. Fixes #416078.
6956
6957 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6958         
6959         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
6960         it is set, looking up the icall address is deferred to the JIT, since 
6961         in embedded scenarios, the icall might not be registered in the runtime
6962         doing the AOT compilation. Backported from the 2.0 branch.
6963
6964 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
6965
6966         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
6967         Fixes #415621.
6968
6969 2008-08-05  Marek Habersack  <mhabersack@novell.com>
6970
6971         * Makefile.am: added support for cross-compilation.
6972
6973 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
6974
6975         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
6976
6977 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
6978
6979         * mono-perfcounters.c: jitted methods and jitted bytes counters.
6980
6981 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
6982
6983         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
6984         mono-perfcounters.c: performance counters implementation.
6985
6986 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
6987
6988         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
6989         to gpointer, letting the AOT code decide what to store in it.
6990
6991 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
6992
6993         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
6994           mono_class_setup_methods if the methods are not initialized.
6995
6996         Code is contributed under MIT/X11 license.
6997
6998 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
6999
7000         * verify.c: Remove some debug code I commited by accident.
7001
7002         * verify.c (mono_method_is_valid_in_context): Change the return value
7003         to make possible to distinguish between invalid and unverifiable.
7004
7005         * verify.c (verifier_load_method): Don't return NULL for unverifiable
7006         methods.
7007
7008 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
7009
7010         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
7011         constraints. Fixes regression in gtest-253.
7012
7013 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
7014
7015         * verify.c (mono_verifier_verify_class): Don't allow generic types
7016         with explicit layout.
7017
7018         * verify.c (mono_method_verify): Check locals and argument types.
7019
7020 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
7021
7022         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
7023         wait if the thread is in StopRequested state.
7024
7025         * class.c (mono_class_from_name): Refactor the module searching code into
7026         a separate function so it can be reused in the AOT case too.
7027
7028 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
7029
7030         * verify.c (mono_type_is_valid_in_context): Improve the error message.
7031         Check both the type and it's generic type definition for loader errors.
7032         
7033         * verify.c (mono_method_is_valid_in_context): Don't generate another
7034         error when a type errors occur, this leads to the wrong exception been
7035         thrown.
7036
7037 2008-07-28  Dick Porter  <dick@ximian.com>
7038
7039         * icall-def.h
7040         * process.c
7041         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
7042         New internal calls to duplicate and close a process handle.
7043
7044 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
7045
7046         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
7047
7048 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
7049
7050         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
7051
7052 2008-07-27  Robert Jordan  <robertj@gmx.net>
7053
7054         * class.c (mono_class_init): Don't compute class.has_finalize for
7055         valuetypes. Fixes #412477.
7056
7057 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
7058
7059         * verify.c: Implement constraint equivalence checking.
7060         This is required when a generic parameter is used as
7061         argument to a constrained one.
7062
7063         Fixes #410637.
7064
7065 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
7066
7067         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7068
7069         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
7070
7071         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
7072         synch with managed object layout.
7073
7074 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
7075
7076         * verify.c (do_branch_op): Handle valuetypes and generic
7077         arguments properly.
7078
7079         * verify.c (do_cmp_op): Same.
7080
7081         Fixes #410383.
7082
7083 2008-07-24  Mark Probst  <mark.probst@gmail.com>
7084
7085         * generic-sharing.c: Fix memory leaks.
7086
7087         * class.c, class-internals.h: Make
7088         mono_class_inflate_generic_type_with_mempool() non-static.
7089
7090 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * pedump.c (dump_verify_info): Dump full class name.
7093
7094 2008-07-24  Mark Probst  <mark.probst@gmail.com>
7095
7096         * generic-sharing.c: Removed some old code that didn't do anything.
7097
7098 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
7099         * profiler.c: Added runtime_initialized_event,
7100         mono_profiler_install_runtime_initialized and
7101         mono_profiler_runtime_initialized. This new hook tells the profiler
7102         when the runtime is sufficiently initialized to be able to call
7103         mono_thread_attach on the root appdomain.
7104         * profiler.h, profiler-private.h: Likewise.
7105
7106 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
7107
7108         * verify.c (do_cast): Do boxing for generic arguments as well.
7109
7110         * class.c (is_nesting_type): Drop generic instantiations before
7111         checking for nesting.
7112
7113         * class.c (can_access_instantiation): Allow access to generic
7114         arguments.
7115
7116 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
7117
7118         * verify.c (verify_class_for_overlapping_reference_fields):
7119         On some cases, the field size might be zero, guard against that.
7120         Fix the explicit layout check to work as expected.
7121
7122 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
7123
7124         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
7125         mono_thread_resume () during shutdown, since the thread we want to abort
7126         might be suspended.
7127
7128 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
7129
7130         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
7131         warning.
7132
7133         * debug-mono-symfile.c: Fix a warning.
7134
7135         * mono-perfcounters.c (get_cpu_times): Fix a warning.
7136
7137         * object.c (mono_class_vtable): Check if exception_type is set, and return
7138         NULL as defined by the function comments.
7139
7140 2008-07-22  Mark Probst  <mark.probst@gmail.com>
7141
7142         * mempool.c: Use malloc for every single mempool allocation if the
7143         configure option is set.  This makes it easier to track mempool
7144         allocations with tools like Valgrind.
7145
7146 2008-07-22  Jb Evain  <jbevain@novell.com>
7147
7148         * reflection.c (create_dynamic_mono_image): emit the same
7149         metadata version that SL2 does when creating a SL2 image.
7150
7151 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
7152
7153         * icall-def.h:
7154         * icall.c: New icall System.Enum:get_hashcode. This function
7155         avoids the overhead of boxing the enum to the underlying type.
7156
7157 2008-07-21  Mark Probst  <mark.probst@gmail.com>
7158
7159         * reflection.c (mono_method_get_object): Don't let static RGCTX
7160         invoke wrappers get into MonoReflectionMethods.
7161
7162 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
7163
7164         * object-internals.h:
7165         * object.c: New mono_runtime_class_init_full function
7166         that makes throwing the exception optinal.
7167
7168         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
7169         for the case where the exception object is supplied.
7170
7171 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
7172
7173         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
7174         old ld versions.
7175
7176         Contributed under MIT/X11 license.
7177
7178 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
7179
7180         * string-icalls.c (ves_icall_System_String_InternalSplit):
7181         Optimize array allocation by caching the MonoClass of the
7182         array type.
7183
7184         * icall.c (ves_icall_Type_GetMethodsByName): Same.
7185
7186         * reflection.c (mono_param_get_objects): Same.
7187
7188 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
7189
7190         * icall-def.h:
7191         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
7192         It inflates the given type using the class context.
7193
7194 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
7195
7196         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
7197         the vtable if it already exists.
7198
7199         * object-internals.h: Add mono_class_try_get_vtable as part of the
7200         internal API.
7201
7202         * reflection.c (mono_type_get_object): Use the MonoObject from the
7203         vtable when possible. Reduces locking contention on reflection heavy
7204         code.
7205
7206 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
7207
7208         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
7209         g_bit_nth_msf () since that macro is not implemented in eglib.
7210
7211 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
7212
7213         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
7214         on platforms which do not support it.
7215
7216 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
7217
7218         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
7219
7220 2008-07-11  Martin Baulig  <martin@ximian.com>
7221
7222         * mono-debug-debugger.h
7223         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
7224
7225         * mono-debug-debugger.c
7226         (_mono_debugger_interruption_request): New global volatile variable.
7227         (mono_debugger_check_interruption): New public function.
7228
7229         * threads.c
7230         (mono_thread_current_check_pending_interrupt): Call
7231         mono_debugger_check_interruption().
7232         (mono_thread_interruption_checkpoint_request): Likewise.
7233
7234 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
7235
7236         * verify.c: Add more type checks for loaded types. Verify the result
7237         handle from ldtoken.
7238
7239 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
7240
7241         * loader.c (field_from_memberref): Don't crash if the field
7242         wasn't found.
7243
7244 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
7245
7246         * verify.c: Verify if type and method instantiations
7247         don't have invalid VAR or MVAR arguments.
7248
7249 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
7250
7251         * verify.c: Fix double free of function pointer list.
7252
7253 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
7254
7255         * object.c (mono_string_to_utf8): Comment the new code as it
7256         breaks under eglib.
7257
7258 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
7259
7260         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
7261
7262 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
7263
7264         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
7265           is not throw too many times.
7266
7267         Code is contributed under MIT/X11 license.
7268
7269 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
7270
7271         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
7272         debugging is turned off.
7273
7274 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
7275
7276         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
7277
7278 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7279
7280         * class-internals.h, class.c: Added new generic sharing option:
7281         Share only stuff in System.Collections.Generic, which is now the
7282         default.
7283
7284 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7285
7286         * generic-sharing.c, class-internals.h: New function for getting a
7287         generic method in a generic class given the corresponding method
7288         for a different instantiation of the class.  Partly refactored
7289         from mini-trampolines.c.
7290
7291         * class.c: Make sure generic methods have a class_inst if they are
7292         part of a generic class.
7293
7294         * metadata.c (mono_type_stack_size_internal): Handle type
7295         variables.
7296
7297 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7298
7299         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
7300         Signifies whether information on the this/vtable/mrgctx variable
7301         is available.
7302
7303 2008-07-04  Mark Probst  <mark.probst@gmail.com>
7304
7305         * object.c, object-internals.h, icall.c: New function
7306         mono_delegate_ctor_with_method(), which does the same as
7307         mono_delegate_ctor(), but takes an explicit method argument
7308         instead of taking the method from the jit info.
7309
7310         * marshal.c: When creating a delegate with an inflated method take
7311         the "this" argument as the target class for the castclass.
7312
7313 2008-07-03  Mark Probst  <mark.probst@gmail.com>
7314
7315         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
7316         mono_jit_info_table_find() to perform very badly in some cases.
7317
7318 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
7319
7320         * icall.c (type_from_typename): Handle 'string'.
7321
7322         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
7323         wrappers into the wrapper_hash, since the key is not a MonoMethod.
7324
7325 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
7326
7327         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
7328
7329         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
7330         number of available managed allocator types.
7331
7332         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
7333         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
7334
7335 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
7336
7337         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
7338         which is a low level lock protecting just the 'jit_code_hash' hash table.
7339
7340         * domain.c: Initialize+cleanup jit_code_hash_lock.
7341         
7342 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
7343
7344         * coree.c (mono_load_coree): Set coree_module_handle global variable only
7345         after initialization.
7346
7347         * coree.h: Make MonoFixupExe internal.
7348
7349         Contributed under MIT/X11 license.
7350
7351 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
7352
7353         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
7354         because that is platform independent. Check NumberOfRvaAndSizes in PE32
7355         as well.
7356         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
7357         image being loaded is a CLI image and _CorValidateImage gets called.
7358
7359         * coree.h: Add MonoLoadImage.
7360
7361         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
7362         instead of LoadLibrary.
7363
7364         Contributed under MIT/X11 license.
7365
7366 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
7367
7368         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
7369         for any primitive type.
7370
7371 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
7372
7373         * object.c (mono_array_new_specific): Optimize this and the other allocation
7374         functions a bit.
7375         
7376         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
7377         domains too if mono_dont_free_domains is set.
7378
7379         * domain-internals.h (mono_dont_free_domains): New internal option controlling
7380         whenever to free appdomain data after it has been unloaded.
7381
7382         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
7383         
7384 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
7385
7386         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
7387         (mono_method_get_equivalent_method): Fix a warning.
7388
7389         * object.c (mono_message_init): Avoid looking up array types for each call.
7390
7391 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
7392
7393         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
7394         call.
7395
7396         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
7397         even more.
7398
7399         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
7400         each iteration.
7401
7402         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
7403         fields of an enum.
7404
7405 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
7406
7407         * object.c (mono_value_box): Fix boxing of nullables.
7408
7409 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
7410
7411         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
7412         mono_module_handle that is defined by the linker; no initialization required.
7413         * coree.h: Remove mono_module_handle, add __ImageBase, update
7414         mono_image_open_from_module_handle.
7415         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
7416         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
7417         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
7418         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
7419         to 4 GB away from image base address. IA64 version is not tested but was very
7420         easy to implement and should work if we ever need it.
7421         * domain.c (mono_init_internal): Avoid system error message boxes.
7422         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
7423         with has_entry_point. Handle do_mono_image_load fauilre correctly.
7424         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
7425         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
7426         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
7427
7428         Contributed under MIT/X11 license.
7429
7430 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
7431
7432         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
7433         as part of the private mono API.
7434         
7435         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
7436         Do proper argument checking for methods that belong to generic classes.
7437         Do proper type resolution for GMFH/2.
7438         Fixes #377324.
7439         
7440 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
7441
7442         * verify.c (do_switch): Fix a memory corruption bug with
7443         the jump index is out of bound.
7444
7445 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
7446
7447         * verify.c: Disable debug code.
7448
7449 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
7450
7451         * reflection.c (mono_image_get_methodbuilder_token): Use
7452         mono_image_get_methodspec_token_for_generic_method_definition
7453         instead of mono_image_get_memberref_token. We cache more memberef
7454         entries now.
7455
7456 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
7457
7458         * verify.c: Inflate exception clause types.
7459         Fixes #402606.
7460         
7461 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
7462
7463         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
7464         name.
7465
7466         * reflection.c (mono_image_get_ctorbuilder_token): Same.
7467
7468         * reflection.c (mono_image_create_method_token): Same.
7469
7470 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
7471
7472         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
7473         It does the same as mono_image_get_methodref_token but works on
7474         MethodBuilder.
7475
7476         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
7477         and always generate a methodspec. This follows the old behavior and fixes
7478         the regressions in System.Core. 
7479
7480 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
7481
7482         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
7483         don't event mono_class_get () succeeds. Fixes #402182.
7484
7485 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
7486
7487         * metadata-internals.h: Added MonoDynamicImage::methodspec
7488         hashtable to store methodspec tokens created for MethodBuilders.
7489
7490         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
7491         MethodBuilders as open instantiations if a methodspec was requested.
7492
7493         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
7494
7495         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
7496
7497         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
7498
7499         Fixes bug #349190.
7500
7501 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
7502
7503         * loader.c (method_from_methodspec): Avoid crashing if the
7504         method lookup fails.
7505
7506 2008-06-20  Dick Porter  <dick@ximian.com>
7507
7508         * socket-io.c (get_socket_assembly): Cope with Moonlight network
7509         classes being in a different assembly.  Fixes bug 399184.
7510
7511 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
7512
7513         * loader.c (mono_loader_init): Make this callable multiple times.
7514         (mono_dllmap_insert): Call mono_loader_init () so this works even before
7515         the runtime is initialized. Fixes #401755.
7516
7517 2008-06-19  Dick Porter  <dick@ximian.com>
7518
7519         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
7520         Fixes bug 349688.
7521
7522 2008-06-19  Dick Porter  <dick@ximian.com>
7523
7524         * socket-io.c:
7525         * icall-def.h: Implement Socket generic Send() and Receive()
7526         methods.  Fixes bug 395168.
7527
7528 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
7529
7530         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
7531
7532         Contributed under MIT/X11 license.
7533
7534 2008-06-18  Martin Baulig  <martin@ximian.com>
7535
7536         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
7537         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
7538         set to 80.0.  The debugger <-> runtime interface is now frozen as
7539         well.   
7540
7541         * mono-debug.c
7542         (mono_debug_debugger_version): Bump to 4.
7543
7544 2008-06-18  Martin Baulig  <martin@ximian.com>
7545
7546         * debug-mono-symfile.c
7547         (load_symfile): Don't check the minor version.
7548
7549         * debug-mono-symfile.h: Bump the version number to 50.0.
7550
7551 2008-06-18  Martin Baulig  <martin@ximian.com>
7552
7553         * debug-mono-symfile.c
7554         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
7555         minimum required version.
7556
7557 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
7558
7559         * reflection.c (mono_custom_attrs_from_property): Fix support for
7560         retriveving cattrs of dynamic inflated generic types.
7561
7562         * reflection.c (mono_custom_attrs_from_event): Same.
7563
7564         * reflection.c (mono_custom_attrs_from_field): Same;
7565
7566         * reflection.c (typebuilder_setup_events): Same cattrs of events.
7567
7568         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
7569         Moved to metadata.c.
7570
7571         * metadata.c: New functions to retrive the equivalent field, event
7572         of property from the generic type definition.
7573
7574         * metadata-internals.h: Added new functions from metadata.c.
7575
7576 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
7577
7578         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
7579         to cached in a mempool is used.
7580
7581         * metadata.c (free_generic_class): In some situations field generic_info type
7582         is not properly dup'ed and leads to double free'ing.
7583
7584         Fixes #400643.
7585
7586 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7587
7588         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
7589         this arguments (will be needed later for generic methods).
7590         Collect stats.
7591
7592 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7593
7594         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
7595         Create a static RGCTX invoke wrapper for methods which require it.
7596
7597 2008-06-17  Mark Probst  <mark.probst@gmail.com>
7598
7599         * object.c, class-internals.h: New function for checking whether
7600         an individual field is special static.
7601
7602 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
7603
7604         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
7605         linear search since the table is sorted.
7606
7607         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
7608         Fixes #324180.
7609
7610 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
7611
7612         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
7613         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
7614
7615         * gc.c (mono_domain_finalize): Allow an infinite timeout.
7616
7617         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
7618         
7619         * threads.c (mono_thread_request_interruption): Get rid of locking, use
7620         InterlockedCompareExchange to query and modify 
7621         thread->interruption_requested.
7622
7623         * object-internals.h (struct _MonoThread): Change interruption_requested
7624         to a gint32 so it can be modified by atomic operations. Add 
7625         'critical_region_level' from the managed side, change small_id to a guint32,
7626         add new set of 'unused' fields.
7627
7628         * appdomain.c: Bump corlib version.
7629
7630 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
7631
7632         * class.c (mono_class_from_name): Search modules as well. Fixes
7633         #322332.
7634
7635 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7636
7637         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
7638         templates.  Templates are generalized with an additional type_argc
7639         argument.  RGCTX templates have type_argc==0, MRGCTX templates
7640         have type_argc>0.
7641
7642         * domain-internals.h, domain.c: New hash table for looking up
7643         MRGCTXs.
7644
7645         * metadata.c, metadata-internals.h: Rename hash and equal
7646         functions for MonoGenericInst's and make them public.
7647
7648         * class-internals.h: New data structures for the MRGCTX.  Macros
7649         for distinguishing slots in the RGCTX and the MRGCTX.
7650
7651 2008-06-13  Mark Probst  <mark.probst@gmail.com>
7652
7653         * object.c (mono_method_get_imt_slot): Put the same methods of
7654         different instantiations of the same generic interface in the same
7655         IMT slots, to make generic sharing simpler.
7656
7657 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
7658
7659         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
7660
7661         * metadata.c (mono_metadata_field_info_with_mempool): Added.
7662         This function works just like mono_metadata_field_info, but
7663         accept a mempool as argument to be used allocating memory.
7664
7665         * marshal.c (mono_marshal_load_type_info): Use new function
7666         to load marshal data into image mempool.
7667
7668 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * class.c (mono_class_inflate_generic_type_with_mempool):
7671         This function allows to inflate a generic type using
7672         a mempool.
7673
7674         * class.c (inflate_generic_type): Take a mempool as argument
7675         and use it to do type dup'ing.
7676
7677         * class.c (mono_class_setup_fields): Field type for generic
7678         generic classes are allocated from the image mempool.
7679
7680         * metadata.c (free_generic_class): Inflated field type is
7681         now allocated in the image mempool.
7682
7683 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
7684
7685         * threads.c (thread_cleanup): Free MonoThread::name.
7686
7687 2008-06-12  Marek Habersack  <mhabersack@novell.com>
7688
7689         * appdomain.c (ensure_directory_exists): avoid unnecessary
7690         mkdir(2) calls when the shadow directory already exists.
7691         (mono_make_shadow_copy): copy also satellite assemblies from the
7692         private bin directories.
7693
7694 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
7695
7696         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
7697         
7698         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
7699         a page boundary. Fixes #396219.
7700
7701 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7702
7703         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
7704         due to double-checked locking.
7705
7706 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7707
7708         * assembly.c (build_assembly_name): Release memory on failure.
7709
7710         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
7711
7712 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7713
7714         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
7715         memory on failure.
7716
7717 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7718
7719         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
7720         memory on failure.
7721
7722 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7723
7724         * loader.c (field_from_memberref): Check if field signature type is equal
7725         to the non-inflated type of the field. Fixes #398980.
7726
7727 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
7728
7729         * assembly.c (mono_assembly_load_from_full): Call 
7730         mono_assembly_load_friends () outside the assemblies lock, since it can
7731         acquire the loader lock. Fixes #323696.
7732
7733         * reflection.c (resolve_object): Inflate the inst with the context for
7734         FieldOnTypeBuilderInst. Fixes #399010.
7735
7736 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7737
7738         * reflection.c (mono_image_get_field_on_inst_token): Don't
7739         inflate the field to encode it's signature. If it's a
7740         VAR or MVAR it should stay that way in the signature.
7741         Fixes #399047.
7742
7743 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7744
7745         * reflection.c (resolve_object): Release memory of inflated types.
7746
7747 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7748
7749         * loader.c (mono_method_get_signature_full): Remove assert about
7750         loading a methodspec to a generic method. We have such methods, such as
7751         System.Threading.Interlocked::CompareExchange<T>.
7752         This assert was removed since it crashes the verifier when it checks
7753         methods calling CompareExchange<T>.
7754
7755 2008-06-10  Marek Safar  <marek.safar@gmail.com>
7756
7757         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
7758         of Type array and not MonoType.
7759
7760 2008-06-10  Marek Habersack  <mhabersack@novell.com>
7761
7762         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
7763         <lupus@ximian.com>
7764
7765 2008-06-10  Martin Baulig  <martin@ximian.com>
7766
7767         * debug-mono-symfile.h
7768         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
7769         changes to the file format, but we were generating incorrect
7770         source file indices in the line number table due to a bug, which
7771         made backtraces report an incorrect source file.
7772
7773 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
7774
7775         * mono-debug.c: Moved mono_debug_free_method_jit_info from
7776         mini/debug-mini.c to here.
7777
7778         * mono-debug.c (il_offset_from_address): Free memory from find_method.
7779
7780         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
7781         use it to release structs returned by mono_debug_find_method.
7782
7783 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
7784
7785         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
7786         since it needs to set method->slot for all interface methods.
7787
7788 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
7789
7790         * class-internals.h: Forgot to add.
7791
7792 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
7793
7794         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
7795
7796         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
7797         Lookup the custom attributes from property_hash.
7798
7799         * reflection.c (mono_save_custom_attrs): Save the custom attributes
7800         in property_hash. Allocate all data using the image mempool.
7801
7802         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
7803         for dynamic_custom_attrs to checks if the image is dynamic.
7804
7805 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7806
7807         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
7808         assemblies array.
7809         
7810         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
7811         runtime functions while holding the domain assemblies lock.
7812
7813 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
7814
7815         * verify.c: Reapplied the last bit of the reverted changes.
7816
7817 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
7818
7819         * verify.c: Reapplied more of the reverted changes.
7820
7821 2008-06-09  Martin Baulig  <martin@ximian.com>
7822
7823         * debug-mono-symfile.c (load_symfile): Check the major version
7824         first; if it's wrong, don't print the minor version in the error message.
7825
7826 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
7827
7828         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
7829         lock instead of the domain lock to avoid deadlocks, since the thread might
7830         already hold the loader lock.
7831
7832         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
7833         (mono_thread_attach): Ditto.
7834
7835         * monitor.c: Use a TLS variable for holding the current thread id instead
7836         of calling pthread_self ().
7837         (mono_monitor_init_tls): New internal function to initialize the TLS
7838         variable.
7839         (mono_monitor_try_enter_internal): Put the owner == id check after the
7840         owner == 0 check.
7841
7842         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
7843         missed optimizations when using gcc-4.3.
7844
7845 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
7846
7847         * reflection.c (mono_dynamic_image_free): Free the memory
7848         used by MonoGenericParam in MonoDynamicImage::gen_param.
7849
7850         * reflection.c (mono_reflection_setup_generic_class): Allocate
7851         container from mempool.
7852
7853         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
7854         container from mempool.
7855
7856 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * threads.c (mono_set_pending_exception): New internal function to set the
7859         pending exception of the current thread.
7860         (mono_thread_get_and_clear_pending_exception): Check for 
7861         thread->pending_exception as well.
7862
7863         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
7864
7865         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
7866         it can trigger a collection.
7867
7868 2008-06-06  Martin Baulig  <martin@ximian.com>
7869
7870         Merged the `debugger-kahalo' branch.
7871
7872         * mono-debug.h
7873         (MONO_DEBUGGER_VERSION): Bumped to 72.
7874
7875         * debug-mono-symfile.h
7876         (MonoSymbolFileMethodIndexEntry): Removed.
7877         (MonoSymbolFileMethodEntry): New public typedef.
7878         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
7879         (MonoSymbolFileSourceEntry): Remove everything except `index' and
7880         `data_offset'.
7881         (MonoSymbolFileMethodEntry): Removed.
7882         (MonoSymbolFileLexicalBlockEntry): Removed.
7883         (MonoSymbolFileLineNumberEntry): Removed.
7884         (MonoDebugLexicalBlockEntry): Removed.
7885         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
7886         removed `num_il_offsets' and `il_offsets'.
7887         (MonoSymbolFile): Replace `version' with `major_version' and
7888         `minor_version'.
7889         (MONO_SYMBOL_FILE_VERSION): Replace with
7890         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
7891         `MONO_SYMBOL_FILE_MINOR_VERSION'.
7892
7893         * debug-mono-symfile.c
7894         (mono_debug_symfile_lookup_location): Add support for the new line
7895         number table format.
7896
7897 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
7898
7899         * metadata.c (free_generic_class): Release the inflated
7900         MonoClass of dynamic generic classes if it's not a generic
7901         type definition.
7902
7903 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
7904
7905         * verify.c: Reapplied more of the reverted changes.
7906
7907 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
7908
7909         * reflection.c (lookup_custom_attr): Clean the cached flag or
7910         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
7911         for SRE types.
7912
7913 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
7914
7915         * verify.c: Reapplied a small part of the reverted changes.
7916
7917 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
7918
7919         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
7920
7921         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
7922         previously in managed code.
7923         (mono_monitor_exit): Ditto.
7924         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
7925
7926         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
7927         the managed definition.
7928
7929 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
7930
7931         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
7932
7933 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7934
7935         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
7936         
7937         * monitor.c: Add some micro optimizations.
7938
7939         * icall.c (type_from_typename): Handle 'bool'.
7940
7941 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
7942
7943         * verify.c: Implement constructor verification per P III 1.8.1.4.
7944         Fixes #396716.
7945
7946 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
7947
7948         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
7949         holding the assemblies lock here too.
7950
7951 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
7952
7953         * verify.c: Kill stack_top function.
7954
7955 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
7956
7957         * verify.c: Kill stack_get function.
7958
7959 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
7960
7961         * verify.c (mono_method_verify): Last change broke the build. Fixed.
7962
7963 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
7964
7965         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
7966         more reliable.
7967
7968         * verify.c (mono_method_verify): Inflate params and locals to avoid
7969         mismatch when checking for compatibility.
7970
7971 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
7972
7973         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
7974         Length prefix should be size in bytes. Fix bug #339530.
7975         
7976         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
7977         Length prefix should be size in bytes. Fix bug #339530.
7978
7979         Code is contributed under MIT/X11 license.
7980
7981 2008-06-05  Bill Holmes <billholmes54@gmail.com>
7982
7983         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
7984
7985         Contributed under MIT/X11 license.
7986
7987 2008-06-05  Martin Baulig  <martin@ximian.com>
7988
7989         * mono-debug-debugger.c
7990         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
7991
7992 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
7993
7994         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
7995         while holding the assemblies lock to prevent deadlocks. Handle the case
7996         where the search hook returns NULL but the assembly was still loaded.
7997         Fixes #323696.
7998
7999         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
8000         modify domain state.
8001
8002 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
8003
8004         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
8005         * Makefile.am (pedump_LDADD): Post-process object files and
8006         add dtrace-generated object file, if necessary.
8007
8008         Code is contributed under MIT/X11 license.
8009
8010 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
8011
8012         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
8013
8014 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
8015
8016         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
8017
8018 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8019
8020         * threads.c: Try to free everything from the delayed free table
8021         when shutting down threads, and set the variable to NULL after the
8022         table is freed so that calling
8023         mono_thread_hazardous_try_free_all() when shutting down the root
8024         domain doesn't crash.
8025
8026 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
8027
8028         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
8029         the caller if resulting type was inflated.
8030
8031         * class.c (mono_class_create_from_typespec): Free the MonoType if it
8032         was inflated.
8033
8034         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
8035
8036
8037 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
8038
8039         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
8040         class library tests.
8041
8042         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
8043         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
8044         #396989.
8045
8046 2008-06-04  Mark Probst  <mark.probst@gmail.com>
8047
8048         * domain.c, domain-internals.h: The JIT infos are now freed by the
8049         JIT info table code.  They are freed immediately if there only a
8050         single JIT info table in circulation.  If there is more, the free
8051         is delayed via a queue.
8052
8053         * threads.c, threads-types.h: New hazard pointer function for
8054         freeing all freeable delayed items in one sitting.
8055
8056 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
8057
8058         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
8059
8060         * reflection.c (typebuilder_setup_properties): Same.
8061
8062         * reflection.c (typebuilder_setup_events): Same.
8063
8064 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
8065
8066         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
8067         and use it for allocating memory.
8068
8069         * reflection.c (mono_marshal_spec_from_builder): Same.
8070
8071         * reflection.c: Change code to use new signatures.
8072
8073         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
8074
8075 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8076
8077         * decimal.c (rescale128): Put back one line which was accidently commented
8078         out.
8079         
8080         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
8081         to cause crashes.
8082
8083 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
8084
8085         * reflection.c (mono_reflection_generic_class_initialize): Name must
8086         be always malloc'ed so we can free it later on. Do this for field, property
8087         and event.
8088
8089         * metadata.c (free_generic_class): Free field, property and event names.
8090
8091 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
8092
8093         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
8094         instead of g_memdup.
8095
8096         * reflection.c (typebuilder_setup_fields): Same.
8097
8098 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8099
8100         * decimal.c (rescale128): Optimize this function a bit more.
8101
8102 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
8103
8104         * metadata.c (free_generic_class): Release some memory from
8105         SRE generic classes.
8106
8107 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
8108
8109         * reflection.c (mono_image_get_generic_field_token): No reference
8110         to name is kept, free it.
8111
8112         * reflection.c (mono_reflection_generic_class_initialize): Free
8113         more memory of the inflated field.
8114
8115 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
8116
8117         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
8118         code.
8119
8120 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
8121
8122         * reflection.c (mono_dynamic_image_free): Release memory used by
8123         MonoDynamicImage::array_methods elements.
8124
8125         * reflection.c (assembly_add_win32_resources): Release memory after
8126         encoding.
8127
8128 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
8129
8130         * decimal.c (log2_32): Use an optimized version for this function too.
8131         
8132         * decimal.c (log2_64): Fix this on 32 bit machines.
8133
8134 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
8135
8136         * class.c (mono_dup_array_type): Implement allocation using a mempool.
8137
8138         * class.c (mono_metadata_signature_deep_dup): Same.
8139
8140         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
8141         a mempool.
8142
8143         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
8144
8145         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
8146
8147         * metadata-internals.h: Added mono_metadata_signature_dup_full.
8148
8149         * class-internals.h: Update signatures to take a MonoMemPool.
8150
8151 2008-06-02  Dick Porter  <dick@ximian.com>
8152
8153         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
8154         * icall-def.h: Add
8155         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
8156         FormatMessage API to get the error text.  Fixes bug 321827.
8157
8158 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
8159
8160         * decimal.c: Add some micro optimizations to make decimal operations faster.
8161
8162 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
8163
8164         * reflection.c (method_encode_clauses): Take a mempool
8165         as parameter and use it to allocate the clause array.
8166
8167         * reflection.c (mono_image_get_field_on_inst_token): Free
8168         the inflated type after encoding it.
8169
8170         * reflection.c (mono_dynamic_image_free): Free each element
8171         of MonoDynamicImage::gen_params.
8172
8173         * reflection.c (reflection_methodbuilder_to_mono_method):
8174         Allocate the generic param array from the mempool.
8175         Allocate signature params from the mempool.
8176
8177         * reflection.c (mono_reflection_generic_class_initialize):
8178         Free inflated fields after been used.
8179
8180 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
8181
8182         * icall.c: Reapply the memory leak fixes as they no
8183         longer make mono crash.
8184
8185 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
8186
8187         * reflection.c (mono_type_get_object): Don't store the suplied
8188         MonoType with type_hash. A caller which pass a type that
8189         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
8190         might end with a pointer to freed memory.
8191         The solution is to use byval_arg or this_arg from the associated
8192         MonoClass of the supplied type.
8193
8194 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
8195
8196         * icall.c: Revert the rest of the last change as it breaks the build too.
8197
8198 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
8199
8200         * icall.c: Revert a leak fix as it's breaking the build.
8201
8202 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
8203
8204         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
8205
8206 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
8207
8208         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
8209
8210 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
8211
8212         * icall.c: Fix some memory leaks.
8213
8214 2008-05-29  Dick Porter  <dick@ximian.com>
8215
8216         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
8217         async socket operations from the pending list when a socket
8218         closes.  Leaving it until the threadpool services the event
8219         exposes a race condition when a socket descriptor is reused.
8220         Fixes bug 377589.
8221
8222 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
8223
8224         * object.c: Fix negative index check for array alocation.
8225
8226 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
8227
8228         * icall.c, marshal.c: Delegate wrappers should skip visibility.
8229         This check is performed by the verifier for IL created delegates
8230         and by Delegate::CreateDelegate for programatically created ones.
8231         Fixes #372406.
8232
8233 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
8234
8235         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
8236         Fix code to use mono_array_size_t instead of int.
8237
8238         Based on patch by Luis F. Ortiz.
8239         Contributed under X11 license.
8240         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
8241
8242 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
8243
8244         * icall.c: Added ves_icall_System_Array_GetLongLength and
8245         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
8246         arrays.
8247
8248         * icall.h: Export both new functions.
8249
8250         Based on patch by Luis F. Ortiz.
8251         Contributed under X11 license.
8252         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
8253
8254 2008-05-28  Martin Baulig  <martin@ximian.com>
8255
8256         The debugger now requires exactly r103463.
8257
8258         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
8259         This version is not supported by the debugger, wait for 72.
8260
8261 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
8262
8263         * object.h: Changed array related functions to use
8264         mono_array_size_t instead of guint32. Forgot to commit this file.
8265
8266         Patch by Luis F. Ortiz.
8267         Contributed under X11 license.
8268         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
8269
8270
8271 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
8272
8273         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
8274         don't define it. Use the number literal instead.
8275
8276 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
8277
8278         * icall.c: Changed array related functions to use
8279         mono_array_size_t instead of guint32.
8280
8281         * icall.c (ves_icall_System_Array_GetLength): Check for length
8282         overflow under MONO_BIG_ARRAYS.
8283
8284         Based on patch by Luis F. Ortiz.
8285         Contributed under X11 license.
8286         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
8287
8288 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
8289
8290         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
8291
8292         Based on patch by Luis F. Ortiz.
8293         Contributed under X11 license.
8294         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
8295
8296 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
8297
8298         * object.c, object.h: Changed array related functions to use
8299         mono_array_size_t instead of guint32.
8300
8301         Patch by Luis F. Ortiz.
8302         Contributed under X11 license.
8303         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
8304
8305 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
8306
8307         * object.h: Introduced mono_array_size_t typedef. This must be used
8308         in all places an array length is expected. This is 64bits wide if
8309         MONO_BIG_ARRAYS is enabled.
8310
8311         Patch by Luis F. Ortiz.
8312         Contributed under X11 license.
8313         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
8314
8315 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
8316
8317         * security-manager.c class.c: Set the class exception info by calling
8318         mono_class_set_failure ().
8319
8320         * class.c (mono_class_get_exception_data): New accessor function.
8321         (mono_class_set_failure): Store exception_data in the property hash.
8322
8323         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
8324         the struct as a property.
8325
8326         * loader.c (mono_get_method_full): Store the lookup result for method
8327         tokens in method_cache, the others in methodref_cache to decrease the memory
8328         usage of hash tables.
8329
8330         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
8331         (mono_image_init): method_cache is lazy inited now.
8332
8333         * metadata-internals.h (struct _MonoImage): Change method_cache to
8334         a MonoValueHashTable, add a separate methodref_cache.
8335
8336 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
8337
8338         * number-formatter.h: Fix tables to avoid arithemtic overflow in
8339           Double.ToString as exposed by Bug #383531.
8340
8341 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
8342
8343         * number-formatter.h: Make some tables static.
8344
8345         * class.c (mono_method_set_generic_container): New accessor function.
8346         (mono_method_get_generic_container): Ditto.
8347
8348         * class-internals.h (struct _MonoMethod): Remove rarely used 
8349         'generic_container' field, store it in the property hash instead. Add 
8350         'is_generic' boolean field instead.
8351
8352         * image.c (mono_image_init): Initialize property_hash.
8353         (mono_image_close): Destroy property_hash.
8354
8355         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
8356         hold rarely used fields of runtime structures belonging to this image.
8357
8358         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
8359         to get/set method->generic_container.
8360
8361         * loader.c (mono_get_method_from_token): Avoid loading the method header for
8362         generic methods.
8363
8364 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
8365
8366         * class.c (mono_class_inflate_generic_method_full): Don't increase
8367         mono_stats.inflated_method_count for methods found in the cache.
8368
8369         * threads.c (mono_thread_request_interruption): Add a comment about 
8370         QueueUserAPC ().
8371
8372 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
8373
8374         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
8375         interface_offsets_packed table.
8376         
8377         * class.c (mono_class_init): Remove some dead code.
8378
8379         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
8380         mono_class_setup_vtable () when CAS is active to detect security problems.
8381
8382 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
8383
8384         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
8385
8386         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
8387         parameters as it's irrelevant for delegate checking.
8388
8389 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
8390
8391         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
8392
8393         * class.c (mono_class_init): Control the creation of a generic vtable using
8394         a global which is true by default, but set to false by the runtime startup code.
8395         
8396         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
8397         Disabled for now since it breaks the embedding API.
8398         Move the setup of class->methods for arrays to mono_class_setup_methods ().
8399         (mono_class_setup_methods): Add a memory barrier.
8400
8401         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
8402         when mono_class_init () doesn't compute the generic vtable.
8403         
8404 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
8405         * profiler.c: Added mono_profiler_install_statistical_call_chain,
8406         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
8407         to support call chains (backtrace) in the stat profiler.
8408         * profiler.c, profiler-private.h: Likewise.
8409
8410 2008-05-22  Mark Probst  <mark.probst@gmail.com>
8411
8412         * generic-sharing.c: Init generic class when a method of it is
8413         requested via a runtime generic context.
8414
8415 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
8416
8417         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
8418
8419         * reflection.c (mono_type_get_object): Add a FIXME.
8420
8421         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
8422
8423         * class.c (mono_class_get_method_by_index): New helper function, returning an
8424         entry in the class->methods array.
8425
8426 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8427
8428         * class.c (mono_class_init): Only do the array optimization for szarrays. 
8429         Avoid creating a generic vtable for generic instances as well.
8430         (mono_class_get_method_from_name_flags): Don't search in the metadata for
8431         generic instances.
8432
8433 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
8434
8435         * loader.c (mono_get_method_constrained): Inflate the signature
8436         with class context. Fix #325283.
8437
8438 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
8439
8440         * object.c (mono_class_create_runtime_vtable): Add a comment.
8441
8442         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
8443         where needed.
8444         (setup_interface_offsets): Handle the case when this is called twice for arrays.
8445         (mono_class_setup_vtable_general): Add an assert.
8446         (mono_class_init): Avoid creating a generic vtable for arrays.
8447
8448         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
8449         here, let mono_class_init () do that.
8450
8451         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
8452         interfaces in mscorlib.
8453
8454         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
8455         interfaces. Add some comments.
8456         (mono_class_init): Call mono_class_setup_methods () here since it is no
8457         longer called by mono_class_setup_vtable ().
8458
8459         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
8460         not set in class->vtable.
8461         (mono_class_create_runtime_vtable): Reenable the disabled code.
8462
8463         * object.c (mono_class_create_runtime_vtable): Disable the last change for
8464         now as it causes some test failures.
8465
8466         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
8467         if using the vtable trampoline. Also remove some strange code which put the
8468         generic methods themselves into the vtable slots. Remove the AOT init_vtable
8469         stuff as it is no longer needed.
8470
8471 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
8472
8473         * pedump.c: Give make --verify all option check code as well.
8474         Using --verify code won't check for metadata now.
8475
8476 2008-05-19  Martin Baulig  <martin@ximian.com>
8477
8478         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
8479
8480         * mono-debug.c
8481         (_mono_debug_using_mono_debugger): New global variable; it's set
8482         directly by the debugger, so mono_debug_using_mono_debugger() also
8483         works after attaching.
8484
8485 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
8486
8487         * object.c (mono_class_create_runtime_vtable): Use memory barriers
8488         as we do double checked locking on MonoClass::runtime_info and
8489         MonoClassRuntimeInfo::domain_vtables.
8490
8491 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
8492
8493         * debug-helpers.c (print_field_value): Fix a warning.
8494
8495 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
8496
8497         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
8498         set in the AOT case.
8499
8500 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * class.c (mono_class_setup_vtable_general): Use memory barriers
8503         as we do double checked locking on MonoClass::vtable.
8504
8505 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
8506
8507         * reflection.c (resolve_object): Inflate only if the generic context
8508         is not null. Fixes #389886.
8509
8510 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
8511
8512         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
8513         instead of g_free.
8514
8515         Code is contributed under MIT/X11 license.
8516
8517 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
8518
8519         * class.c: Revert unrelated change.
8520
8521 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
8522
8523         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
8524         a generic instantiation, use mono_class_from_mono_type instead of playing
8525         with MonoType directly.
8526
8527 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
8528
8529         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
8530         checks must ignore generic instantiations, so mono_class_has_parent is not
8531         suitable. Fixes #390128.
8532
8533 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
8534
8535         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
8536         it to avoid registering tokens during metadata generation. Fixes #390023.
8537
8538 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
8539
8540         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
8541         consistent.
8542
8543         Contributed under MIT/X11 license.
8544
8545 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
8546
8547         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
8548         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
8549         to fixup the EXE image.
8550         (mono_cleanup): Use mono_close_exe_image.
8551         (mono_close_exe_image): New function.
8552         * image.c: Include "marshal.h".
8553         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
8554         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
8555         counting when the image is loaded outside of mono_image_open_full. Set status
8556         based on GetLastError.
8557         * coree.c: Include required headers. Add init_from_coree.
8558         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
8559         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
8560         (_CorExeMain): Set init_from_coree.
8561         (CorExitProcess): Only call ExitProcess for now.
8562         (CorBindToRuntimeEx): New stub implementation.
8563         (CorBindToRuntime): New function.
8564         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
8565         (MonoFixupExe): ILONLY executables require no fixups.
8566         (mono_set_act_ctx): New function to set activation context.
8567         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
8568         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
8569         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
8570         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
8571         as MONO_INTERNAL.
8572         * domain-internals.h: Add mono_close_exe_image.
8573
8574         Contributed under MIT/X11 license.
8575
8576 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
8577
8578         * metadata.c (mono_metadata_compute_size): Correctly calculate field
8579         size for generic param and event tables. Fixes #388977.
8580
8581 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * loader.c (mono_method_signature): Use memory barriers because of the double
8584         checked locking pattern.
8585
8586         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
8587         aborting or aborted as well. Fixes #376391.
8588         
8589         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
8590         existing runtime state in the Suspend handler during shutdown.
8591
8592 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
8593
8594         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
8595
8596         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
8597         which are starting up or shutting down.
8598
8599         * threads.c (mono_threads_set_shutting_down): Don't return a value since
8600         this function never returns if the runtime is already shutting down.
8601
8602         * icall.c (ves_icall_System_Environment_Exit): Update after 
8603         mono_threads_set_shutting_down () signature change.
8604         
8605 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
8606
8607         * class.c: Added can_access_instantiation to verify if the instantiation
8608         is visible. Fix access check for nested types as they returned TRUE
8609         before doing type and generic instantiation visibility checks.
8610
8611 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
8612
8613         * reflection.c (mono_reflection_create_generic_class): The created type
8614         must have a different container from its TypeBuilder. Otherwise they
8615         will end sharing generic arguments, which is wrong.
8616
8617         Due to the sharing, making a generic instance of the created type using
8618         the TypeBuider generic arguments resulted in the generic type definition
8619         been returned, which is wrong as well.
8620
8621         As a bonus the code was leaking the type_params array. This memory should
8622         be allocated from the image mempool.
8623
8624         This fixes bug #354047.
8625
8626 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
8627
8628         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
8629         to here         as they are now used in assembly.c new code.
8630         Added a skipverification flag to MonoAssembly.
8631         New internal function mono_assembly_has_skip_verification.
8632
8633         * assembly.c: New function mono_assembly_has_skip_verification. It checks
8634         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
8635         part of #387274.
8636
8637 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
8638
8639         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
8640         needed. Fixes #387034.
8641
8642         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
8643
8644 2008-05-06  Miguel de Icaza  <miguel@novell.com>
8645
8646         * assembly.c (mono_assembly_load_reference): Prevent crash while
8647         disassembling Silverlight 2.0 executables while we still do not
8648         have GACed libraries.
8649
8650 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
8651
8652         * reflection.c: Special case generic type definitions as well. Fixes #383444.
8653
8654 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
8655
8656         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
8657         of the dynamic case. Fixes #387404.
8658
8659 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
8660
8661         *verify.c (mono_verifier_is_class_full_trust): If under
8662         verify_all and the verifier mode was not set, only
8663         gac and corlib types are fulltrust. This makes --verify-all
8664         usable to detect unverifiable code, which is the expected
8665         use case.
8666
8667 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
8668
8669         * verify.h: Ops, commited the header with debug
8670         enabled.
8671
8672 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
8673
8674         * verify.c (merge_stack): Use the new value on unverifiable
8675         stack merges.
8676
8677         * verify.c (verify_type_compatibility_full): Comparison
8678         of nullable types can't use mono_class_is_assignable_from.
8679
8680         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
8681         that makes all verification errors be reported.
8682
8683         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
8684         mono_method_verify.
8685
8686 2008-05-05  Robert Jordan  <robertj@gmx.net>
8687
8688         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
8689         support for value types. See #386415.
8690
8691         * object.c: comments.
8692
8693         Code is contributed under MIT/X11 license.
8694
8695 2008-05-05  Martin Baulig  <martin@ximian.com>
8696
8697         * debug-mono-symfile.h
8698         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
8699         for old pre-terrania symbol files.
8700
8701 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
8702
8703         * mono-config.c: Add ppc64 architecture.
8704
8705         Code is contributed under MIT/X11 license.
8706
8707 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
8708
8709         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
8710           PPC64 uses function descriptors as well.
8711
8712         Code is contributed under MIT/X11 license.
8713
8714 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
8715
8716         * object.c (compute_class_bitmap): Ignore literal static fields.
8717
8718         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
8719         var has an invalid format.
8720         (describe_ptr): Add some sanity checks for the vtable.
8721         (add_nursery_frag): Clear unused nursery fragments.
8722         (major_collection): Clear all remaining nursery fragments.
8723
8724 2008-05-03  Robert Jordan  <robertj@gmx.net>
8725
8726         * image.c, metadata-internals.h: add thunk_invoke_cache.
8727
8728         * marshal.c, marshal.h: implement
8729         mono_marshal_get_thunk_invoke_wrapper ().
8730
8731         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
8732
8733         Code is contributed under MIT/X11 license.
8734
8735 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
8736
8737         * verify.c (do_leave): Empty the stack.
8738
8739 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
8740
8741         * class.c (mono_class_is_assignable_from): Variance
8742         doesn't work between reference and value types. For example,
8743         given type C<T+>, C<int32> is not assignable to C<object>.
8744         Break the argument checking loop on first error. 
8745
8746 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
8747
8748         * icall.c : base64_to_byte_array() needs some more strict
8749           check for sequence of '=' characters. Patch by Santa
8750           Marta (http://deee.g.hatena.ne.jp/santamarta).
8751
8752           Contributed under MIT/X11 license.
8753           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
8754
8755 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
8756
8757         * domain.c: Disable LoadLibrary support to fix Win32 build.
8758
8759         Code is contributed under MIT/X11 license.
8760
8761 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
8762
8763         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
8764         to help with cache behaviour.
8765
8766 2008-05-01  Miguel de Icaza  <miguel@novell.com>
8767
8768         * appdomain.c (mono_domain_from_appdomain): Add new accessor
8769         method. 
8770
8771 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
8772
8773         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
8774
8775 2008-05-01  Dick Porter  <dick@ximian.com>
8776
8777         * process.c (process_get_fileversion): Only pass 16 bits of
8778         language ID to VerLanguageName.  Fixes bug 381204.
8779
8780 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
8781
8782         * verify.c (mono_method_verify): Fix the comparison
8783         operator for code bounds check.
8784
8785 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
8786
8787         * verify.c (mono_method_verify): Check the bounds of
8788         all access of the code array.
8789
8790 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
8791
8792         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
8793
8794 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
8795
8796         * image.c (mono_image_strong_name_position): Fix return value when the rva is
8797         not valid.
8798
8799 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
8800
8801         * loader.c (mono_get_method_from_token, mono_method_signature): Add
8802         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
8803         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
8804         fixup main EXE images when using mono.exe for mixed-mode assembly support.
8805         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
8806         mono_runtime_load.
8807         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
8808         runtime initialization from metadata.
8809         * assembly.c: Remove obsolete ceGetModuleFileNameA.
8810         (mono_set_rootdir): Use mono_get_module_file_name.
8811         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
8812         handles.
8813         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
8814         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
8815         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
8816         MonoCLIImageInfo. Add support for module handles.
8817         (load_cli_header): Update mono_cli_rva_image_map signature.
8818         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
8819         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
8820         (mono_image_rva_map): Add support for module handles.
8821         (mono_image_ensure_section_idx): Add support for module handles.
8822         (mono_image_close): Add support for module handles.
8823         (do_load_header): Add support for module handles.
8824         (mono_image_open_from_module_handle): New function for internal use.
8825         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
8826         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
8827         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
8828         handles.
8829         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
8830         * image.h: Add mono_image_fixup_vtable.
8831         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
8832         support.
8833         * coree.h: New file.
8834         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
8835         unsupported native code.
8836         (mono_marshal_set_callconv_from_modopt): New function splitted from
8837         mono_marshal_get_managed_wrapper.
8838         (mono_marshal_get_managed_wrapper): Use
8839         mono_marshal_set_callconv_from_modopt.
8840         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
8841         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
8842         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
8843         that results in a deadlock when the runtime is loaded in _CorDllMain.
8844         * Makefile.am: Add coree.c and coree.h.
8845
8846         Contributed under MIT/X11 license.
8847
8848 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8849
8850         * generic-sharing.c: Search for type arguments in array element
8851         types as well.
8852
8853 2008-04-28  Mark Probst  <mark.probst@gmail.com>
8854
8855         * class-internals.h, generic-sharing.c: New, small runtime generic context.
8856
8857         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
8858
8859         * object.c: Don't setup the RGCTX when the vtable is created,
8860         because we're setting it up lazily now.
8861
8862 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
8863
8864         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
8865         64 bit support.
8866
8867 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
8868
8869         * verify.c (verify_class_for_overlapping_reference_fields): 
8870         If class is under fulltrust allow reference types to overllap
8871         if they have the same RVA.
8872
8873 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
8874
8875         * pedump.c: Added new flag valid-only, that makes the verifier
8876         behaves just like --security=validil. It won't fail type load
8877         due to unverifiable restrictions.
8878
8879 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
8880
8881         * class-internals.h (struct MonoMethod): Added a verification_success
8882         field to cache verifier executions. Reduced MonoMethod:slot size by
8883         one bit.
8884
8885 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
8888         instead of a 'vt' argument to save an indirection and to allow these to be used
8889         for valuetypes.
8890         (scan_vtype): New helper function to scan an area using a gc descriptor.
8891         (mono_gc_wbarrier_value_copy): Implement this.
8892         (handle_remset): Add support for REMSET_VTYPE.
8893         (find_in_remset_loc): Ditto.
8894         (mono_gc_base_init): Allow some debugging options to be controlled through the
8895         use of the MONO_GC_DEBUG env variable.
8896         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
8897         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
8898
8899 2008-04-23  Martin Baulig  <martin@ximian.com>
8900
8901         * domain.c (mono_domain_create): Move the call to
8902         mono_debug_domain_create() down, after allocating the domain id.
8903
8904 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
8905
8906         verify.c (verify_class_for_overlapping_reference_fields): Skip
8907         static fields while verifying for overlapping fields as they
8908         don't matter at all.
8909
8910 2008-04-23  Marek Habersack  <mhabersack@novell.com>
8911
8912         * domain-internals.h: added a declaration of
8913         mono_make_shadow_copy.
8914
8915         * assembly.c (mono_assembly_open_full): shadow copying of
8916         assemblies moved to here, so that all the assemblies within the
8917         application domain's private binary directories can be
8918         processed. Fixes bug #380546
8919
8920         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
8921         mono_make_shadow_copy and made non-static. The decision whether
8922         to shadow-copy an assembly is made based on its location - it's
8923         copied if it's in one of the private application domain binary
8924         directories and its different to the target file in the shadow
8925         directory. Fixes bug #380546
8926
8927 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
8928
8929         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
8930
8931         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
8932         types.
8933
8934         * reflection.c (mono_image_create_token): Handle 
8935         Method/ConstructorOnTypeBuilderInst.
8936         (resolve_object): Ditto.
8937         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
8938         so it can be called from resolve_object. Also handle the case when the inflated
8939         class already has its methods setup.
8940
8941 2008-04-21  Martin Baulig  <martin@ximian.com>
8942
8943         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
8944
8945 2008-04-20  Geoff Norton  <gnorton@novell.com>
8946
8947         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
8948         pointer dereference.
8949
8950 2008-04-15  Marek Habersack  <mhabersack@novell.com>
8951
8952         * appdomain.c (try_load_from): if IOMAP is in effect, call the
8953         portability API to look up the assembly file. Fixes behavior in
8954         situations when the application has a bin/ directory, but the
8955         assembly search patch refers to Bin/ (and thus the requested file
8956         name is Bin/SomeLibrary.dll). Fixes bug #379888
8957
8958 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
8959
8960         verify.c (mono_type_is_generic_argument): Extracted this check
8961         from a dozen places to here.
8962
8963         verify.c: Fixed all issues related to boxing generic arguments
8964         and their constraints.
8965
8966 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
8967
8968         verify.c (mono_class_interface_implements_interface): Fix win32 build.
8969
8970 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
8971
8972         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
8973         isn't finished yet. Fixes #363447.
8974
8975 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
8976
8977         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
8978         Fixes #346419.
8979
8980 2008-04-13  Jb Evain  <jbevain@novell.com>
8981
8982         * domain.c: update the 2.1 profile versions.
8983         Merged from the Moonlight 2 branch.
8984
8985 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
8986
8987         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
8988         mscorlibs for the non-refonly case as well.
8989
8990         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
8991         in mono_assembly_load_from_full (). Fixes #378924.
8992
8993 2008-04-11  Geoff Norton  <gnorton@novell.com>
8994
8995         * icall.c: The global extern environ doesn't exist on Mac.  We
8996         need to call NSGetEnviron instead.
8997
8998 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
8999
9000         verify.c: Add generic method constraint verification.
9001
9002 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
9003
9004         class.c (mono_class_inflate_generic_method_full): Add a long
9005         explanation to the is_mb_open hack. Remove the FIXME.
9006
9007 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
9008
9009         * verify.c (mono_method_verify): Mark all unknown opcodes
9010         as invalid. Mark jmp as unverifiable.
9011
9012 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
9013
9014         * verify.c: Add code to do type constraint verification on class instances.
9015
9016         * verify.c (mono_verifier_verify_class): Use the type constraint 
9017         verification code.
9018
9019 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
9020
9021         * class.c (mono_class_get_field_default_value): Don't pass cindex
9022         as hint to mono_metadata_get_constant_index. The local is not initialized
9023         and should contain garbage most of the time. This could only work
9024         with a lot of luck.
9025
9026 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
9027
9028         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
9029
9030 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
9031
9032         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
9033
9034         * class.c (mono_class_from_generic_parameter): Save the token of the
9035         generic param in MonoClass::sizes.generic_param_token.
9036
9037         * reflection.c (mono_custom_attrs_from_class): If the class type is
9038         VAR or MVAR retrieve the attributes of the generic param.
9039
9040 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
9041
9042         * class.c (mono_class_init): Do class verification if the verifier
9043         is enabled.
9044
9045 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
9046
9047         * verify-internal.h: Added mono_verifier_verify_class.
9048
9049         * verify.c: Added mono_verifier_verify_class. It checks for
9050         classes with explicit layout that have overlapping reference fields.
9051
9052         * pedump.c: Init the verifier state prior to verification. Fixed
9053         command line arguments.
9054
9055 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
9056
9057         * Makefile.am: Added verify-internals.h, hopefully fix the build.
9058
9059 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
9060
9061         * verify-internals.h: Fix a warning.
9062
9063 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
9064
9065         * verify-internals.h: New header with the verifier configuration
9066         extracted from mini.c.
9067
9068         * verify.c: Implemented the new functions exported by verify-internals.h.
9069
9070 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
9071
9072         * verify.c: Add proper verification of ckfinite.
9073
9074 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
9075
9076         * verify.c (do_conversion): Improved error message to something
9077         more meanfull.
9078
9079         * verify.c (check_is_valid_type_for_field_ops): Fix to work
9080         with primitive types.
9081
9082 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
9083
9084         * verify.c: Added tail prefix checking. Marked icall
9085         as unverifible.
9086
9087 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
9088
9089         * verify.c: Fix the detection of branches to the middle
9090         of an instruction.
9091
9092 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
9093
9094         * verify.c: Implemented verification of volatile. and
9095         unaligned. prefix. Check if a type is valid after retrieving it.
9096
9097 2008-04-01  Dick Porter  <dick@ximian.com>
9098
9099         * process.c (process_get_fileversion): If there's no string block,
9100         set the file language to en_US.  Fixes the other new part of bug
9101         374600.
9102
9103 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
9104
9105         * class.c: New functions mono_method_can_access_field_full and
9106         mono_method_can_access_method_full. They perform type visibility
9107         and type site check.
9108
9109         * class-internal.h: Added exported functions.
9110
9111         * verify.c: Use new functions to implement proper visibility checks.
9112
9113 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
9116
9117 2008-03-28  Dick Porter  <dick@ximian.com>
9118
9119         * process.c (process_get_fileversion): Use the first language ID
9120         we see, rather than insisting on an invariant language.  Fixes bug
9121         374600.
9122
9123 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
9124
9125         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
9126         the streams to fix reading of invalid memory later.
9127
9128         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
9129         to ease debugging.
9130
9131 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
9132
9133         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
9134         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
9135
9136 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
9137         * threads.h: Added MonoThreadManageCallback type and
9138         mono_thread_set_manage_callback prototype
9139         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
9140         (used to store the mono_thread_manage callback).
9141         * threads.c: Added mono_thread_set_manage_callback, and handle
9142         "MonoThread->manage_callback" in build_wait_tids.
9143
9144 2008-03-26  Dick Porter  <dick@ximian.com>
9145
9146         * process.c (process_get_fileversion): Set FileVersionInfo strings
9147         to Empty when the resource doesn't have the particular info.
9148         Fixes bug 355717.
9149
9150 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
9151
9152         * verify.c (mono_method_verify): Proper prefix validation.
9153
9154 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
9155
9156         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
9157         itself in a separate argument instead of throwing them. Fixes #373448.
9158
9159         * appdomain.c: Bump corlib version.
9160
9161 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
9162
9163         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
9164
9165 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
9166
9167         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
9168         version macros.
9169
9170 2008-03-20  Mark Probst  <mark.probst@gmail.com>
9171
9172         * generic-sharing.c, class-internals.h: Code for putting
9173         reflection types into the runtime generic context.
9174
9175 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
9176
9177         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
9178         Fixes #340662. 
9179
9180
9181 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
9182
9183         * verify.c (VerifyContext): Added instruction prefix data to the struct.
9184
9185         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
9186
9187         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
9188
9189         * verify.c (do_cast): Let the result value keep the boxed status.
9190
9191         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
9192
9193 2008-03-17  Jb Evain  <jbevain@novell.com>
9194
9195         * reflection.c: when running on a 2.0 runtime, emit
9196         unconditionally the #~ header version as 2.0, and the
9197         CLI header version as 2.5, for symmetry's sake with csc.
9198
9199 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
9200
9201         * class.c: Remove the unused cache_interface_offsets stuff.
9202
9203         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
9204         profiler.c: Fix warnings.
9205
9206 2008-03-16  Mark Probst  <mark.probst@gmail.com>
9207
9208         * generic-sharing.c, class-internals.h: Support for putting
9209         methods into the runtime generic context.
9210
9211 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
9212
9213         * class.c (mono_class_setup_fields): Ignore calls made to this function for
9214         classes which are generic instances of not-yet finished typebuilders. Fixes
9215         #351172.
9216
9217         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
9218
9219 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
9220
9221         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
9222
9223         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
9224         field, replace it with a hash table in MonoDynamicImage.
9225
9226         * reflection.c (inflate_mono_method): Access the generic definition object from
9227         image->generic_def_objects instead of imethod->reflection_info.
9228
9229         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
9230
9231         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
9232         
9233         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
9234         function in reflection.c so it is easier to keep in sync with the dynamic image
9235         creation code.
9236
9237         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
9238         mono_image_close ().
9239
9240 2008-03-15  Mark Probst  <mark.probst@gmail.com>
9241
9242         * class.c (mono_class_generic_sharing_enabled): Disable generic
9243         sharing for all architectures except AMD64 and x86 to fix build.
9244
9245 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
9246
9247         * verify.c: Use the generic definition MonoGenericContext when available.
9248         Remove code for checking generics instance compatibility in favor of
9249         mono_class_is_assignable_from.
9250
9251 2008-03-14  Mark Probst  <mark.probst@gmail.com>
9252
9253         * marshal.c, marshal.h, metadata-internals.h, image.c,
9254         wrapper-types.h: New wrapper for invoking a shared static method
9255         without having to pass the runtime generic context argument.
9256
9257 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
9258
9259         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
9260
9261 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
9262
9263         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
9264         
9265         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
9266         create a token from a FieldOnTypeBuilderInst.
9267         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
9268         (resolve_object): Ditto.
9269
9270         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
9271         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
9272
9273 2008-03-14  Martin Baulig  <martin@ximian.com>
9274
9275         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
9276
9277         * debug-mono-symfile.h
9278         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
9279         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
9280
9281 2008-03-10  Martin Baulig  <martin@ximian.com>
9282
9283         * debug-mono-symfile.h
9284         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
9285         `lexical_block_table_offset'.
9286         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
9287         `lexical_blocks'.
9288         (MonoSymbolFile): Added `version'.
9289
9290         * mono-debug.h
9291         (MonoDebugLexicalBlockEntry): Removed.
9292         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
9293         `lexical_blocks'.
9294
9295         * mono-debug.c (mono_debug_add_method): Don't compute lexical
9296         blocks here; the debugger now does this internally.
9297
9298 2008-02-27  Martin Baulig  <martin@ximian.com>
9299
9300         * object.c (mono_runtime_exec_main): Call
9301         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
9302         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
9303
9304 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
9305
9306         * verify.c (verify_type_compatibility_full): Allow native int to be converted
9307         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
9308
9309 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
9310
9311         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
9312         ldftn with a virtual method.
9313
9314 2008-03-13  Geoff Norton  <gnorton@novell.com>
9315
9316         * decimal.c:  Only include memory.h if the platform has it.
9317
9318 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
9319
9320         * assembly.c, class.c, metadata-internals.h: make sure public key
9321         tokesns are compared in a case-insensitive way. Also, all
9322         the lookups in the GAC use a lowercase public key token
9323         (gaacutil already does the lowercasing on install). Fixes
9324         bug #369541.
9325
9326 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
9327
9328         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
9329         and return value.
9330
9331 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
9332
9333         * image.c: when someone loads a mscorlib from a file, return the
9334         currently loaded mscorlib (fixes bug #369253).
9335
9336 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
9337
9338         * class.c: handle types with no parents by forcing them to have
9339         System.Object as a parent and marking them as broken (this currently
9340         allows the first part of bug #369173 to work as well, likely because
9341         we don't check for typeload exceptions everywhere yet).
9342
9343 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
9344
9345         * class.c: more complete check that types belong to corlib
9346         (fixes second part of bug #369173).
9347
9348 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
9349
9350         * generic-sharing.c:  Including glib.h for the MSVC builds to define
9351           "inline" to "__inline" before including mono-membar.h.
9352           
9353         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
9354           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
9355           MSVC builds.
9356
9357         Contributed under MIT/X11 license.
9358
9359 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
9360
9361         * verify.c (do_invoke_method): Remove return type validation.
9362
9363         * verify.c (do_ret): Do return type validation at return site instead of
9364         call site.
9365
9366 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
9367
9368         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
9369
9370         * verify.c: Some todos cleaned and improved a few error messages.
9371
9372 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
9373
9374         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
9375
9376 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
9377
9378         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
9379         system types correctly.
9380
9381         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
9382         function.
9383
9384 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
9385
9386         * assembly.c (build_assembly_name): Fix a warning.
9387
9388 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
9389
9390         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
9391         the called function takes an object type argument. Fixes storing or
9392         valuetypes across remoting as well as reducing memory usage.
9393         * image.c, metadata-internals.h: remove now unused ldfld_remote and
9394         stfld_remote wrapper caches.
9395
9396 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
9397
9398         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
9399         is not found.
9400
9401         * reflection.c (mono_image_register_token): New helper function to save
9402         a token->object mapping.        
9403
9404         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
9405         managed code.
9406
9407         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
9408         one dimension arrays. Fixes #367670.
9409         (mono_reflection_get_type_internal): Ditto.
9410
9411 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
9412
9413         * marshal.c: mono_load_remote_field_new() always returns object.
9414         so use the proper signature (fixes bug #366445).
9415
9416 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9417         
9418         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
9419         add an 'inline_failure' flag instead.
9420
9421 2008-03-04  Mark Probst  <mark.probst@gmail.com>
9422
9423         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
9424         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
9425         contains the location of "this", used for exception handling.
9426
9427 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
9428
9429         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
9430         their size on all platforms for perf reasons.
9431
9432 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
9435         object-internal.h
9436
9437         * object-internal.h: Same.
9438
9439 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
9440
9441         * reflection.h: Fix the build I just broke.
9442
9443 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
9444
9445         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
9446         Test if a token is valid, this remove explicit usage of 
9447         MonoDynamicImage::tokens from the verifier code.
9448
9449         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
9450
9451         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
9452         instead of direct access to MonoDynamicImage::tokens.
9453
9454 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
9455
9456         * verify.c (token_bounds_check): Fix the build I just broke.
9457
9458 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
9459
9460         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
9461
9462         * verify.c (verifier_load_method): Fixed the errors message.
9463
9464         * verify.c (mono_method_verify): Fixed a debug message.
9465
9466 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
9467
9468         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
9469         mono-perfcounters.h, class-internals.h: support for predefined
9470         writable counters, query of categories and counters, bugfixes.
9471
9472 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
9473
9474         * verify.c (do_refanytype): Verify the refanytype opcode.
9475
9476         * verify.c (mono_method_verify): Use do_refanytype.
9477
9478 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
9479
9480         * verify.c (do_mkrefany): Verify the mkrefany opcode.
9481
9482         * verify.c (mono_method_verify): Use do_mkrefany.
9483
9484 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
9485
9486         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
9487         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
9488         implementation.
9489
9490 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
9491
9492         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
9493         the type load exception.
9494
9495 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
9496
9497         * verify.c: Added a few FIXME for method signatures
9498
9499         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
9500         of mono_method_get_signature and get vararg call working. Removed unused
9501         checks for return value.
9502
9503         * verify.c (do_refanyval): Verify the refanyval opcode.
9504
9505         * verify.c (mono_method_verify): Implemented verification of arglist and
9506         use do_refanyval.
9507
9508 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
9509
9510         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
9511         vtypes to marshal.c.
9512
9513         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
9514         it works for AOT as well.
9515
9516 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
9517
9518         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
9519         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
9520         the system time is adjusted.
9521
9522 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
9523
9524         * icall.c, icall-def.h: use the new time functions (fixes the
9525         non-monotonic behaviour of TickCount).
9526
9527 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
9528
9529         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
9530         it breaks the build.
9531         
9532         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
9533         cattr is not finished yet.
9534
9535 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
9536
9537         * verify.c: Proper token validation for field, method and type.
9538
9539 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
9540
9541         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
9542
9543         * loader.c (method_from_memberref): Generate type load error instead of method missing
9544         if the type is not found.
9545
9546 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
9547
9548         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
9549         some of the conversions caused the generation of a marshal directive exception.
9550
9551 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
9552
9553         verify.c: Report which exception should be thrown by the JIT.
9554         Added a lot of FIXME notes.
9555
9556 2008-02-22  Mark Probst  <mark.probst@gmail.com>
9557
9558         * generic-sharing.c: Runtime generic context slots are not
9559         instantiated on init anymore.  Instead, provide function to do the
9560         instantiating on demand.
9561
9562         * class-internals.h: Added vtable to runtime generic context.
9563         Macros for encoding direct and indirect slot offsets in one
9564         guint32.
9565
9566 2008-02-21  Mark Probst  <mark.probst@gmail.com>
9567
9568         * object.c, generic-sharing.c: Moved some generic sharing code
9569         from object.c to generic-sharing.c.
9570
9571         * generic-sharing.c: Added support for extensible runtime generic
9572         context.
9573
9574         * metadata-internals.h: Two new hash tables in MonoImage for
9575         extensible runtime generic context support.
9576
9577         * domain.c: Unregister generic vtables upon domain unloading.
9578
9579         * image.c: Destroy new hash tables upon image unloading.
9580
9581         * metadata.c: Unregister generic subclasses upon image unloading.
9582
9583         * class-internals.h: New data structure for runtime generic
9584         context template.  New fields in the runtime generic context for
9585         extensible part.
9586
9587         * Makefile.am: Added generic-sharing.c.
9588
9589 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
9590
9591         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
9592         there is a pending loader exception, raise it.
9593
9594         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
9595         same.
9596
9597         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
9598         same.
9599
9600         Fixes #363450.
9601
9602 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
9603
9604         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
9605
9606         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
9607         
9608         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
9609         ref-only requests for compatibility with MS.
9610
9611 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
9612
9613         * reflection.c (mono_custom_attrs_from_method): Don't silently
9614         return an empty list for generic method instances.
9615         (mono_custom_attrs_from_param): Likewise.
9616
9617 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
9618             Raja R Harinath  <harinath@hurrynot.org>
9619
9620         Fix #354757
9621         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
9622         * class.c (mono_class_inflate_generic_method_full): Initialize it
9623         when a fully-open method is instantiated.
9624         * metadata.c (inflated_method_equal, inflated_method_hash): Update
9625         to new field.
9626         * reflection.c (inflate_mono_method): Don't create a temporary context.
9627
9628 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
9629
9630         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
9631         Compute correct value, to prepare for imethod->reflection_info going away.
9632
9633 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
9634
9635         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
9636
9637 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
9638
9639         * verify.c: Implement skip visibility flag.
9640
9641 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
9642
9643         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
9644         which contains an extra field to tell the kind of exception that should be thrown.
9645
9646         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
9647
9648 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
9649
9650         * loader.c (mono_method_get_param_names): Initialize 'klass' after
9651         'method' is updated.
9652
9653 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
9654
9655         * class.c (mono_class_layout_fields): Set class->min_align for classes using
9656         explicit layout as well. Fixes #360375.
9657
9658 2008-02-11  Geoff Norton  <gnorton@novell.com>
9659
9660         * loader.c: Guard and dereference against inflated generic methods
9661
9662 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
9663
9664         * class.c: Include Retargetable spec in assembly name.
9665         * assembly.c: Always include PublicKeyToken spec in assembly name
9666         (with value "null" if assembly is not signed), and include
9667         Retargetable spec.
9668         * icall-def.h: Added icall for Assembly.get_fullname.
9669         * icall.c: Added icall returning the fullname of an assembly.
9670
9671 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
9672
9673         * class.c (mono_class_setup_vtable_general): Add a missing call to
9674         mono_class_setup_methods () which is needed in the AOT case.
9675
9676 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
9677
9678         * verify.c (mono_type_get_stack_name): Added. Return the name for the
9679         stack type of the given MonoType.
9680
9681         * verify.c (verify_type_compatibility_full): Handle the void type.
9682
9683         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
9684         way stack merging works.
9685
9686         * verify.c (store_local): Improved verification message.
9687
9688         * verify.c (do_branch_op): If the merging is invalid, the method
9689         is unverifiable and not invalid. Improved error message.
9690
9691         * verify.c (merge_stacks): Properly merge a boxed valuetype and
9692         a reference type diferent than System.Object. Improved error
9693         message.
9694
9695 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
9696
9697         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
9698
9699         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
9700         type of an enum even if the argument is byref.
9701
9702         * verify.c: Replace all explicit uses of enumtype and enum_basetype
9703         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
9704
9705         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
9706
9707         *verify.c (verify_type_compatibility_full): Make enum types
9708         compatible with their base types.
9709
9710         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
9711         types are compatible for the special case of a boxed valuetype and
9712         System.Object.
9713
9714         * verify.c (verify_stack_type_compatibility): The function
9715         is_compatible_boxed_valuetype was extracted from here.
9716
9717         * verify.c (push_arg): Only set ctx->has_this_store if the method
9718         is not static.
9719
9720         * verify.c (do_ldelem): Fixed a typo in an error message and added
9721         strict check for mixing int32 and native int as the array type
9722         and ldelem type.
9723
9724         * verify.c (merge_stacks): Consider boxed valuetypes in the
9725         compatibility checks.
9726
9727 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
9728         * profiler.h: (MonoGCEvent): Added start-stop the world events.
9729
9730 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
9731         *class.c: use_new_interface_vtable_code: renamed the env var to have
9732         a "MONO_" prefix, and fix the logic to enable it by default.
9733
9734 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
9735         *class.c:
9736         mono_class_setup_vtable_general: rewrote the way in which interface
9737         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
9738         makes the code more maintainable.
9739         For now the old code is still there, and can be activated setting
9740         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
9741
9742 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
9743
9744         * verify.c: guarded some debug functions around and #ifdef.
9745
9746         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
9747
9748 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
9749
9750         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
9751         changes for now since they seem to break too many things.
9752
9753 2008-02-05  Mark Probst  <mark.probst@gmail.com>
9754
9755         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
9756         mono_marshal_find_nonzero_bit_offset): Added macro and function
9757         for finding the byte- and bit-offset of a bitfield within a
9758         struct.
9759
9760 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
9761
9762         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
9763         (mono_marshal_get_struct_to_ptr): Ditto.
9764
9765         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
9766         cctor_signature.
9767
9768 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
9769
9770         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
9771         between methods for non-corlib types.
9772
9773 2008-02-02  Geoff Norton  <gnorton@novell.com>
9774
9775         * loader.c (mono_method_get_param_names): Populate the parameter name for 
9776         generic parameters as well. (Fixes #342536)
9777
9778 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
9779
9780         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
9781
9782         * verify.c (do_invoke_method): Fix for calling with byref structs.
9783
9784         * verify.c (do_cast): push a boxed value type based on the type token and not
9785         the type of stack.
9786
9787 2008-01-31  William Holmes  <billholmes54@gmail.com>
9788
9789         * process.c (process_module_string_read): Check the size returned form 
9790           VerQueryValue to avoid out of memory exception. 
9791
9792 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
9793
9794         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
9795         Handle properly modules which are not in the moduleref table. Fixes
9796         #356938.
9797
9798 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
9799
9800         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
9801         the dynamic case which is now in managed code.
9802         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
9803
9804         * marshal.c (mono_string_to_bstr): Fix a warning.
9805         (init_com_provider_ms): Ditto.
9806
9807         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
9808
9809         * exception.c (mono_get_exception_out_of_memory): New helper function.
9810
9811 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
9812
9813         * marshal.c: Add support for BSTR marshalling
9814         using other COM systems.
9815
9816         Code is contributed under MIT/X11 license.
9817
9818 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
9819
9820         * object.c (mono_runtime_invoke_array): reverted previous
9821         commit as it breaks the build.
9822
9823 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
9824
9825         * object.c (mono_runtime_invoke_array): Verify arguments for
9826         invalid types. Fixes #348522.
9827
9828 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
9829
9830         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
9831         non-final virtual calls using call. 
9832
9833         * verify.c (do_invoke): fixed some TODOs.
9834
9835         * verify.c (push_arg): set has_this_store for "ldarga 0".
9836
9837 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
9838
9839         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
9840         which belong to an inflated class. Fixes #356531.
9841
9842 2008-01-26  Robert Jordan  <robertj@gmx.net>
9843
9844         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
9845         which resort to FindFirstFile when a certain error condition
9846         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
9847         Code is contributed under MIT/X11 license.
9848
9849 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
9850
9851         * marshal.c (emit_marshal_string): Fix out string marshalling
9852         to use specified encoding. Fixes #323900.
9853
9854         Code is contributed under MIT/X11 license.
9855
9856 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
9857
9858         * class.c (mono_class_inflate_generic_method_full): Don't modify
9859         iresult->context after cache check.
9860
9861 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * class.c (mono_class_inflate_generic_method_full): Change the
9864         struct assignments to memcpy for better visibility and add some comments.
9865
9866 2008-01-23  Dick Porter  <dick@ximian.com>
9867
9868         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
9869         procedure, and make it work on windows.
9870
9871 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
9872
9873         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
9874         a MonoReflectionTypeBuilder since it is always of that type.
9875
9876         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
9877
9878         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
9879
9880         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
9881         
9882         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
9883
9884         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
9885
9886         * reflection.c (mono_reflection_create_runtime_class): Remove already created
9887         instantiations from the type cache.
9888
9889 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
9890
9891         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
9892
9893         * verify.c (do_unbox_value): push a controled mutability managed pointer.
9894
9895 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
9896
9897         * verify.c (do_ldstr): added, verifies if the #US token is valid.
9898
9899         * verify.c (mono_method_verify): removed old TODO
9900
9901 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
9902
9903         * verify.c (do_newobj): add visibility check.
9904
9905 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
9906
9907         * verify.c (do_load_function_ptr): add visibility check.
9908
9909 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
9910         *class.c:
9911         mono_generic_class_get_class: hook profiler events.
9912         mono_field_get_offset: added to support heap-shot in the new profiler.
9913         *class.h: exported mono_field_get_offset.
9914         * reflection.c:
9915         mono_reflection_setup_internal_class: hook profiler events.
9916
9917 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
9918
9919         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
9920         argument here too and use it to avoid checking for pending exceptions if 
9921         possible.
9922
9923 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
9924
9925         * assembly.c (build_assembly_name): add arg for passing the assembly
9926         flags. Do not consider a PublicKey with value "null" valid.
9927         (mono_assembly_name_parse_full): added boolean argument that will be
9928         set if the assembly name contains a PublicKeyToken spec. Added support
9929         for the Retargetable spec for which only Yes or No are allowed as valid
9930         value. Consider assembly name invalid if Retargetable spec is set, but
9931         either version, culture or public key (token) are not specified.
9932         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
9933         with implementation in assembly.c.
9934         * icall.c (fill_reflection_assembly_name): also copy assembly flags
9935         from MonoAssemblyName.
9936         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
9937         introduced argument for mono_assembly_name_parse_full to know if the
9938         assembly name has a PublicKeyToken spec, and if it has instruct
9939         fill_reflection_assembly_name to use default value for keyToken (if
9940         PublicKeyToken is null).
9941
9942 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
9943
9944         * verify.c (mono_method_verify): fixed ovf ops with
9945         float values. They are unverifiable now.
9946
9947 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
9948
9949         * class.c (set_failure_from_loader_error): add BadImageException to the
9950         list of exceptions that can cause a type to fail to load.
9951
9952         * class.c (mono_class_get_exception_for_failure): same.
9953
9954 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
9955
9956         * verify.c (in_any_exception_block): added, check if offset
9957         is part of any exception handling clause.
9958
9959         * verify.c (get_stack_type): added VAR and MVAR types.
9960
9961         * verify.c (do_stobj): better error messages.
9962
9963         * verify.c (do_cpobj): added, check cpobj.
9964
9965         * verify.c (do_initobj): added, check initobj.
9966
9967         * verify.c (do_sizeof): added, check sizeof.
9968
9969         * verify.c (do_localloc): added, check localloc.
9970
9971         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
9972
9973 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
9976         save_lmf/restore_lmf opcodes.
9977
9978         * threads.c (mono_threads_install_notify_pending_exc): New function to
9979         install a callback notifying the JIT there is a pending exception on a thread.
9980         (mono_thread_request_interruption): Call the new callback.
9981         (mono_thread_get_and_clear_pending_exception): New function to return the
9982         exception pending on a thread.
9983
9984         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
9985         to turn off checking for pending exceptions.
9986         (mono_marshal_get_native_wrapper): Ditto.
9987
9988 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
9989
9990         * threads-types.h: Get rid of the unnecessary extern declarations.
9991
9992 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
9993
9994         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
9995         return field from parent class if not private.
9996         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
9997         returns fields from parent class if they are not private.
9998         (method_nonpublic): added function to determine if a given method
9999         should be considered non-public. Returns false for private methods
10000         on parent class, and internal methods from parent on the 1.0 profile.
10001         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
10002         use method_nonpublic function to determine whether method should be
10003         returned.
10004         (property_accessor_public): use newly introduced method_nonpublic
10005         function to determine whether accessor is non-public. 
10006         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
10007         event from parent class if not private. Only return static event if
10008         Static flag is set, and only return static event from parent class if
10009         FlattenHierarchy flag is set.
10010         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
10011         include non-private events from parent class.
10012
10013 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
10014
10015         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
10016         warning.
10017
10018 2008-01-16  Wade Berrier <wberrier@novell.com>
10019
10020         * security.c: Add assembly.h header to appease some warnings
10021
10022 2008-01-16  Dick Porter  <dick@ximian.com>
10023
10024         * process.c (process_module_string_read): Remove trailing null
10025         when saving string.
10026
10027 2008-01-16  Mark Probst  <mark.probst@gmail.com>
10028
10029         * class-internals.h: A new data structure describing the layout of
10030         a runtime generic context (MonoRuntimeGenericContextTemplate).
10031
10032         * metadata-internals.h: Added a hash table to MonoDomain that maps
10033         from open generic classes to their runtime generic context
10034         templates.
10035
10036         * object.c: Building of the runtime generic context, including
10037         proper handling of generic type arguments of superclasses.
10038         Building of the runtime generic context according to the template.
10039
10040 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
10041
10042         * class.c (mono_class_setup_fields): Set field.count for generic instances.
10043         Fixes #350856.
10044
10045         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
10046         mono_portability_find_file (). Fixes #325466.
10047         (mono_image_get_public_key): Fix a warning.
10048
10049 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
10050
10051         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
10052         Fixes #353550.
10053         (mono_class_from_name_case): Ditto.
10054
10055 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
10056
10057         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
10058           common storage for the tables used in the System/NumberFormatter class.
10059
10060 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
10061
10062         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
10063
10064 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
10065
10066         * verify.c (get_boxable_mono_type): check if the token is valid.
10067
10068         * verify.c (set_stack_value): changed to add an error if an
10069         invalid type is set on stack. Changed all callers due to signature change.
10070
10071         * verify.c (do_stobj): implement stobj validation.
10072
10073 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
10074
10075         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
10076         set container->is_method, it was set earlier.
10077
10078         * metadata.c (type_in_image): Handle MVARs which belong to not finished
10079         generic methods.
10080
10081         * reflection.c (mono_reflection_initialize_generic_parameter): Set
10082         is_method of the generic container to TRUE for methods.
10083
10084 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10085
10086         * metadata.c (type_in_image): Handle type parameters properly.
10087
10088         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
10089         memory ownership of this structure.
10090
10091 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
10092
10093         * verify.c (get_boxable_mono_type): make typedref types been just
10094         unverifiable. check for void type.
10095
10096         * verify.c (do_unbox_any): added, verify opcode unbox.any.
10097
10098         * verify.c (do_load_function_ptr): accept method spec tokens.
10099
10100 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
10101
10102         * marshal.c (mono_class_native_size): Always set *align even if this is called
10103         recursively.
10104
10105 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
10106
10107         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
10108         out-of-date.
10109
10110 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
10111
10112         * verify.c: removed some old unused tables. A huge bunch of small fixes
10113         to things found while testing the verifier with mono basic.
10114
10115         * verify.c (dump_stack_value): dump null literal flag to.
10116
10117         * verify.c (verify_type_compatibility_full): fix comparison
10118         for types that have a generic super type.
10119
10120         * verify.c (verify_stack_type_compatibility): fix compatibility
10121         between null literals and reference types. fix compatibility between
10122         boxed valuetypes and object. fix corner case test for enums.
10123
10124         * verify.c (do_cmp_op): proper verification of cgt.un in case
10125         of reference types.
10126
10127         * verify.c (do_invoke_method): fix error message.
10128
10129         * verify.c (do_store_indirect
10130
10131         * verify.c (check_is_valid_type_for_field_ops): proper verification
10132         of managed pointers to valuetypes and boxed valuetypes. proper verification
10133         of null literals.
10134
10135         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
10136         allow token to be a reference type.
10137
10138         * verify.c (do_cast): proper handling of boxes valuetypes.
10139
10140         * verify.c (do_stelem): proper handling of storing a boxed valuetype
10141         in object[].
10142
10143         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
10144         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
10145         fixed the decoding of unbox_any
10146
10147 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
10148
10149         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
10150
10151 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
10152
10153         * verify.c (do_newobj): do delegate verification.
10154
10155         * verify.c (verify_delegate_compatibility): perform delegate
10156         verification.
10157
10158         * verify.c (verify_ldftn_delegate): perform tests related to
10159         ldftn delegates.
10160
10161         * verify.c (mono_delegate_signature_equal): perform the
10162         slightly diferent signature comparison required by delegates.
10163
10164         * metadata.c (mono_metadata_type_equal_full): added and exported
10165         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
10166         allows signature only comparison.
10167
10168         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
10169         as MONO_INTERNAL.
10170
10171 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
10172
10173         * verify.c: added a bunch of stack_slot_* functions to
10174         make access to stack slot type easier. This is required to
10175         allow optional flags, like null literal, boxed value and
10176         this pointer.
10177         All access paths to IlStackDesc::stype have been changed 
10178         to use these new funcions.
10179         Removed a bunch of unused functions and cleared all warnings.
10180         This patch introduces the usage of the this pointer and 
10181         boxed value flags.
10182
10183 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
10184
10185         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
10186
10187 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
10188
10189         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
10190         match managed version.
10191
10192         * appdomain.c: Bump corlib version.
10193         
10194         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
10195         argument.
10196
10197 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
10198
10199         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
10200         Set public key token to zero-length byte array if assembly is not
10201         strongnamed.
10202
10203 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
10206         writing a vtype array elem.
10207
10208 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
10209
10210         * assembly.c (build_assembly_name): return FALSE if length of token is
10211         not 16 (if not "null").
10212         (mono_assembly_name_parse_full): return FALSE if value of version,
10213         culture, token or key is 0.
10214         * icall.c (fill_reflection_assembly_name): add boolean arguments to
10215         specify whether public key and public key token must be set to default
10216         value (zero-length byte array) if not available. Set versioncompat to
10217         SameMachine. If public key is available or the default is set, then
10218         set PublicKey flag.
10219         (ves_icall_System_Reflection_Assembly_FillName): if no public key
10220         is available, use empty byte array as default value. On the 2.0
10221         profile, use default value for public key token if not set.
10222         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
10223         profile, use default value for public key if not set. On the 2.0
10224         profile, use default value for public key token if not set.
10225         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
10226         default values for public key and public key token.
10227
10228 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
10229
10230         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
10231         field to keep it in synch with the managed object.
10232
10233         * marshal.c (emit_marshal_object): Add support for byref marshalling of
10234         delegates. Fixes #351520.
10235
10236         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
10237         contains defined memory.
10238         
10239         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
10240
10241         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
10242         
10243         * sgen-gc.c (check_consistency): New helper function to do a consistency check
10244         of the GC data structures.
10245
10246         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
10247
10248         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
10249         
10250         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
10251         barrier.
10252         (mono_array_clone_in_domain): Ditto.
10253         (mono_array_clone_in_domain): Ditto.
10254
10255         * threads.c (start_wrapper): Register the thread start argument as a GC root.
10256         (cache_culture): Use a write barrier.
10257
10258         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
10259         (ves_icall_get_property_info): Ditto.
10260
10261         * object.h (MONO_STRUCT_SETREF): New macro.
10262
10263         * class-internals.h (MonoStats): Add some GC statistics.
10264
10265         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
10266
10267 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
10268
10269         * exception.c (mono_exception_from_name_two_strings):
10270         Break from loop after method is found.
10271
10272 2008-01-04  Dick Porter  <dick@ximian.com>
10273
10274         * process.c (process_module_string_read): Rename variable to
10275         reflect correct usage, after fixing bug 345972.
10276
10277 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
10278
10279         * verify.c (mono_type_create_fnptr_from_mono_method): 
10280         created a MonoType function pointer instance to be used during
10281         verification. The verifier releases this memory at end.
10282
10283         * verify.c (mono_method_is_constructor): extracted repeated
10284         checks for constructor into a single class.
10285
10286         * verify.c (do_push_field): use new extracted method
10287         for constructor check.
10288
10289         * verify.c (do_newobj): same.
10290
10291         * verify.c (do_ldftn): renamed to do_load_function_ptr
10292         and make it verify ldvirtftn too.
10293
10294         * verify.c (mono_method_verify: proper verification
10295         of ldvirtftn. release created MonoMethod instances.
10296
10297 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
10298
10299         * verify.c (token_bounds_check): added.
10300
10301         * verify.c (do_ldftn): added.
10302
10303         * verify.c (mono_method_verify): proper verificartion of ldftn.
10304
10305 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
10306
10307         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
10308         than the table row count. It's the resposibility of the caller to
10309         make the bounds check and raise the correct error.
10310
10311         * metadata.c (mono_metadata_decode_row_col): Same.
10312
10313         * loader.c (mono_get_method_from_token): perform bounds check
10314         on token for methoddef table.
10315
10316 2007-12-29  Miguel de Icaza  <miguel@novell.com>
10317
10318         * icall.c
10319         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
10320         assert into a negative result, the managed code already coped with
10321         that.
10322
10323         Some folks on Windows reported this error. 
10324
10325 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
10326
10327         * appdomain.c: Bump corlib version.
10328         * icall.c:
10329         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
10330         CultureInfo.CreateCulture to create CultureInfo for name.
10331         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
10332         create CultureInfo for name. Fixes bug #347174.
10333
10334 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
10335
10336         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
10337         flags.
10338
10339         * verify.c (is_valid_branch_instruction): allow branching to the
10340         first instruction of the protected block.
10341
10342         * verify.c (is_valid_cmp_branch_instruction): same.
10343
10344         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
10345         avoid double initialization.
10346
10347         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
10348         detect which cases the eval stack should just be copied.
10349
10350         * verify.c (mono_method_verify): check if the eval stack
10351         is empty when entering a protected block.
10352
10353 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
10354
10355         * verify.c: added is_clause_in_range, is_clause_inside_range,
10356         is_clause_nested and verify_clause_relationship. They perform
10357         the verifications stated in P1 12.4.2.7.
10358
10359         * verify.c (mono_method_verify): remove some unused variables,
10360         add the new exception clause checks, add instruction border
10361         checks for protected block start/end, improved some error 
10362         messages and fixed a bug in the way invalid instruction access
10363         is detected.
10364
10365 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
10366
10367         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
10368         from GC 7.0 if available.
10369
10370         * object.c: Remove an unused define.
10371         
10372         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
10373
10374         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
10375
10376         * null-gc.c (mono_gc_make_descr_for_array): Implement.
10377
10378         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
10379
10380         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
10381         to take the same arguments as the other make_descr functions.
10382
10383         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
10384
10385         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
10386         directly.
10387
10388         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
10389         mini.c.
10390
10391         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
10392         call to boehm-gc.c.
10393
10394         * boehm-gc.c (mono_gc_register_root): Fix a warning.
10395
10396         * null-gc.c (mono_gc_register_root): Fix a warning.
10397
10398         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
10399
10400         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
10401         (mono_gc_base_init): Call GC_init ().
10402
10403         * null-gc.c: Define mono_gc_register_root () as a no-op.
10404
10405         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
10406
10407 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
10408
10409         * verify.c: add prototype for merge_stacks at top
10410
10411         * verify.c (do_switch): added.
10412
10413         * verify.c (merge_stacks): on some cases the stack merging
10414         was not happening properly. Unequal stack sizes at merge
10415         points should be invalid.
10416
10417         * verify.c (mono_method_verify): added more debug info on stack state.
10418         verify switch properly.
10419
10420 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
10421
10422         * method-builder.h: New file, moved the mono_mb_ declarations here from 
10423         marshal.h.
10424
10425         * boehm-gc.c marshal.c: Include method-builder.h.
10426
10427         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
10428
10429         * marshal.c: Remove some code which is now in method-builder.c.
10430
10431 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
10432
10433         * method-builder.c: New file, extraction of the method builder functionality 
10434         from marshal.c.
10435
10436         * marshal.c: Move the mb functions into method-builder.c.
10437
10438         * marshal.h marshal.c: Export some mono_mb_... functions.
10439
10440         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
10441
10442         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
10443         the caller.
10444
10445         * class.c (mono_class_get_full): Check the token type in the dynamic case.
10446
10447         * loader.c (mono_field_from_token): Ditto.      
10448
10449         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
10450         type as well.
10451         
10452         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
10453         Fixes #342565.
10454
10455         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
10456         a helper function for setting it.
10457
10458         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
10459
10460         
10461         * assembly.c: Significally simplify code now that referenced assemblies are 
10462         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
10463
10464         * threads.h: Don't include  the internal threads-types.h header file. Fixes
10465         #349952.
10466
10467 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
10468
10469         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
10470         instructions that were target of branches or are at protected block boundaries.
10471
10472         * verify.c (in_same_block): handle filter clauses.
10473
10474         * verify.c (is_valid_branch_instruction): added. checks the target of
10475         instructions br or brtrue/false.
10476
10477         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
10478         binary branch instructions such as beq and bge.
10479
10480         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
10481         and made it pin the instruction as been part of the exception block.
10482
10483         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
10484         of in_same_block.
10485
10486         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
10487         of in_same_block.
10488
10489         * verify.c (do_ret): ret from a protected block is unverifiable and
10490         not invalid.
10491
10492         * verify.c (do_static_branch): verify br and br.s instructions.
10493
10494         * verify.c (merge_stacks): add extra param to support detection
10495         of branches in the middle of instructions.
10496         
10497         * verify.c (mono_method_verify): verify branches and exception blocks
10498         that target the middle of instructions. Proper verification of br and br.s.
10499
10500 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
10501
10502         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
10503         skip_visibility field.
10504         (reflection_methodbuilder_from_dynamic_method): Ditto.
10505
10506         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
10507         registrations. Fixes #348193.
10508
10509         * threads.h: Move the internal mono_thread_get_pending_exception () to
10510         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
10511
10512 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
10513
10514         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
10515         icall registration. Fixes #348193.
10516
10517         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
10518         for corlib classes into object. Fixes #349621.
10519
10520 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
10521
10522         * icall.c (property_accessor_nonpublic): new function to determine
10523         whether an accessor allows a property to be considered non-public.
10524         Returns false for private accessor(s) from parent class, and internal
10525         accessor(s) from parent on 2.0 profile (and higher).
10526         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
10527         to determine whether property should be included if NonPublic flag
10528         is set. Fixes bug #349078.
10529
10530 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
10531
10532         * verify.c (init_stack_with_value): added.
10533
10534         * verify.c (mono_method_verify): extracted common
10535         code for exception initialization into init_stack_with_value.
10536
10537         * verify.c (mono_method_verify): initialize the exception
10538         for handler clauses as well.
10539
10540         * verify.c (mono_method_verify): fix the exception clause
10541         ordering rules, it should use handler end offset and not
10542         start offset.
10543
10544 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
10545
10546         * rawbuffer.c: remove useless warning.
10547
10548 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
10549
10550         * threads.h, threads-types.h: move functions to the correct header
10551         (fixes bug#349952).
10552
10553 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
10554
10555         * verify.c (mono_method_verify): proper verification
10556         of exception handling clauses ranges and fallthru in
10557         and out of protected blocks.
10558
10559 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
10560
10561         * verify.c (mono_method_verify): fixed compilation issue.
10562
10563 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
10564
10565         * verify.c (mono_method_verify): a printf slipped in, changed
10566         to use verifier debug macro.
10567
10568 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
10569
10570         * verify.c (is_correct_leave): check for filter clauses.
10571
10572         * verify.c (do_filter): added.
10573
10574         * verify.c (mono_method_verify): property verification of leave.
10575
10576
10577 2007-12-18  Mark Probst  <mark.probst@gmail.com>
10578
10579         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
10580         Win32 build, until we figure out how to do the proper thing on
10581         Win32.
10582
10583 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
10584
10585         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
10586         by the previous patch.
10587         
10588         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
10589         the assembly resolve handler for refonly assemblies.
10590
10591 2007-12-17  Mark Probst  <mark.probst@gmail.com>
10592
10593         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
10594         Make sure only one thread is allowed to commence shutdown, and
10595         don't allow new threads to be started once shutdown is in
10596         progress.
10597
10598 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
10599
10600         * verify.c (is_correct_endfilter): added.
10601
10602         * verify.c (is_unverifiable_endfilter): added.
10603
10604         * verify.c (do_endfilter): added.
10605
10606         * verify.c (mono_method_verify): property verification of endfilter
10607         and fixed a corner case or endfinally.
10608
10609 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
10610
10611         * verify.h: new flags to support fail fast of unverifiable code and
10612         do non-strict verification. Non-strict verification is required to
10613         have MS runtime compatibility. There are a huge amount of unverifiable
10614         code that it accepts as verifiable. The strict mode verifies the code
10615         as the specs says.
10616         Non-strict mode will be required in cases where code needs to be
10617         accepted as verifiable but fails under strict mode.
10618
10619         * pedump.c: added support to fail fast and non-strict verification.
10620
10621         * verify.c: added support for both fail fast and non-strict verification.
10622
10623 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
10624
10625         * verify.c (is_correct_endfinally): added.
10626
10627         * verify.c (mono_method_verify): property verification of endfinally.
10628
10629 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10630
10631         * verify.c (in_any_block): check for filter clauses.
10632
10633         * verify.c (is_correct_rethrow): added.
10634
10635         * verify.c (mono_method_verify): property verification of rethrow.
10636
10637         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
10638
10639 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
10640
10641         * verify.c (do_throw): added.
10642
10643         * verify.c (mono_method_verify): property verification of throw
10644
10645 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
10646
10647         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
10648         assemblies. Fixes #346425.
10649
10650 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
10651
10652         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
10653         FieldBuilders.
10654
10655         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
10656
10657         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
10658         prevent asserts when this is called with a token which might not be valid.
10659
10660         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
10661         lookup_dynamic_token_class with valid_token == FALSE.
10662
10663         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
10664
10665         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
10666
10667         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
10668         
10669 2007-12-10  Mark Probst  <mark.probst@gmail.com>
10670
10671         * gc.c: Don't delay threadpool thread finalization unless Mono is
10672         shutting down.
10673
10674 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
10675
10676         * threads.c: turn an assert into a non-fatal warning.
10677
10678 2007-12-09  Robert Jordan  <robertj@gmx.net>
10679
10680         * icall.c (GetVirtualMethod): Add missing argument validation.
10681
10682 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
10683
10684         * verify.c (do_cast): added.
10685
10686         * verify.c (mono_method_verify): property verification of castclass and isinst.
10687
10688
10689 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
10690
10691         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
10692
10693         * verify.c (do_stelem): added.
10694
10695         * verify.c (mono_method_verify): property verification of stelem.X.
10696
10697 2007-12-07  Mark Probst  <mark.probst@gmail.com>
10698
10699         * class.c, class-internals.h: Introduce an environment variable
10700         (MONO_GENERIC_SHARING) through which the extent of generic code
10701         sharing can be controlled (share all classes, share only corlib
10702         classes, or share nothing).
10703
10704         * object.c: Only create runtime generic context for classes for
10705         which sharing is enabled.
10706
10707 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
10708
10709         * verify.c (do_ldelem): refactor it to work with ldelem.any.
10710
10711         * verify.c (mono_method_verify): property verification of ldelem.any.
10712
10713 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
10714
10715         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
10716         added ldelem.X opcodes.
10717
10718         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
10719
10720         * verify.c: proper verification of ldelem.X 
10721
10722 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
10725
10726 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
10727
10728         * verify.c (mono_method_verify): null literal requires special handling,
10729         the value pushed on stack need to be flagged as so.
10730
10731         * verify.c (do_ldelema): Verify ldelema properly.
10732
10733 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
10734
10735         * verify.c: Verify ldlen properly.
10736
10737 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
10738
10739         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
10740         to the target object's type. Fixes #346160.
10741
10742 2007-12-05  Dick Porter  <dick@ximian.com>
10743
10744         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
10745         Solaris needs the same workaround as BSD-derived systems.  Fixes
10746         bug 323524, patch by Burkhard Linke
10747         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
10748
10749 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
10750
10751         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
10752         handle to use when error dialog is shown; otherwise, update mask
10753         to show no error dialog when an error occurs.
10754
10755 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
10756
10757         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
10758
10759         * class.c (mono_class_get_field_default_value): New helper function to initialize
10760         field->def_type and field->data.
10761
10762 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
10763
10764         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
10765         the general one.
10766
10767         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
10768
10769         * marshal.c: Avoid depending on delegate->method_info being set.
10770
10771         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
10772         
10773         * object.c (mono_delegate_ctor): Set delegate->method.
10774
10775         * object-internals.h (struct _MonoDelegate): Add 'method' field.
10776
10777         * appdomain.c: Bump corlib version.
10778
10779 2007-11-27  Raja R Harinath  <harinath@gmail.com>
10780
10781         * metadata.c (mono_generic_inst_equal_full): Short-circuit
10782         equality check if we're comparing canonicalized MonoGenericInsts.
10783
10784 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
10785
10786         * class.c (generic_array_methods): Call mono_class_setup_methods () before
10787         accessing class->methods.
10788
10789 2007-11-22  Dick Porter  <dick@ximian.com>
10790
10791         * threads.c: Ensure that the synch_cs is set before trying to use
10792         it.
10793
10794 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
10795
10796         * profiler.c: r89126 broke the statistial profiler, unbreak.
10797
10798 2007-11-22  Martin Baulig  <martin@ximian.com>
10799
10800         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
10801
10802         * mono-debug.c
10803         (mono_debug_debugger_version): Bump to 3.
10804         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
10805         -> mono_debugger_class_initialized().
10806
10807         * mono-debug-debugger.c
10808         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
10809
10810         * class.c
10811         (mono_debugger_start_class_init_func): Removed.
10812         (mono_debugger_class_loaded_methods_func): Added.
10813         (mono_class_setup_methods): Call it here.
10814
10815 2007-11-22  Martin Baulig  <martin@ximian.com>
10816
10817         * mono-debug.c
10818         (mono_debug_add_delegate_trampoline): New public method.
10819         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
10820
10821         * mono-debug.h
10822         (MonoSymbolTable): Added `global_data_table'.
10823         (MonoDebuggerTypeKind): Removed.
10824
10825 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
10826
10827         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
10828         these methods.
10829
10830         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
10831         
10832 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
10833
10834         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
10835
10836 2007-11-20  Martin Baulig  <martin@ximian.com>
10837
10838         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
10839
10840         * mono-debug-debugger.c
10841         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
10842         (mono_debugger_remove_breakpoint): Likewise.
10843         (mono_debugger_check_breakpoints): Likewise.
10844         (mono_debugger_register_class_init_callback): New public method.
10845         (mono_debugger_remove_class_init_callback): Likewise.
10846         (mono_debugger_add_type): Likewise.
10847
10848         * mono-debug-debugger.h
10849         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
10850
10851 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
10852
10853         * class.c: more interface implementations needed for the
10854         array enumerator (fixes bug #341112).
10855
10856 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
10857
10858         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
10859         fix ParamName of ArgumentNullExceptions.
10860
10861 2007-11-17  Miguel de Icaza  <miguel@novell.com>
10862
10863         * reflection.c (mono_reflection_encode_sighelper): Generate the
10864         modopts and modreqs.   I have a useless test that crashes monodis,
10865         but that shows the code working.
10866
10867 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
10868
10869         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
10870         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
10871
10872 2007-11-15  Dick Porter  <dick@ximian.com>
10873
10874         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
10875         When joining a thread, it's the thread that's calling Join that
10876         gets WaitSleepJoin state not the target.  Fixes the standalone
10877         test case in bug 334740, and hopefully the whole bug too.
10878
10879 2007-11-15  Dick Porter  <dick@ximian.com>
10880
10881         * process.c: Read file version info from the files pointed at by
10882         process modules, not the current process.  Fixes bug 315969.
10883
10884         Use windows typedef names in some places to fix warnings on the
10885         windows build.
10886
10887 2007-11-15  Mark Probst  <mark.probst@gmail.com>
10888
10889         * image.c, metadata-internals.h: Added a generic_class_cache hash
10890         to MonoImage for looking up generic classes when sharing generics.
10891
10892 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
10893
10894         * sgen-gc.c: warning cleanups.
10895
10896 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
10897
10898         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
10899         inherited properties.
10900
10901 2007-11-14  Mark Probst  <mark.probst@gmail.com>
10902
10903         * object.c, class-internals.h: Added more information to the
10904         runtime generic context.
10905
10906 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
10909         instead of just the target method. Generalize the abstract method handling to
10910         handle any non-static method.
10911
10912         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
10913         mono_marshal_get_delegate_invoke () signature change.
10914
10915 2007-11-13  Mark Probst  <mark.probst@gmail.com>
10916
10917         * class.c, class-internals.h: Made
10918         mono_type_get_basic_type_from_generic () public.  Fixed member
10919         access check for shared generics.
10920
10921         * loader.c: Don't insert field into field cache if it's part of a
10922         non-inflated generic class.
10923
10924         * domain.c, domain-internals.h: The generic sharing context is now
10925         part of the jit info data structure.  Added two accessor
10926         functions.
10927
10928 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
10929
10930         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
10931         the array Get/Set/Address methods, since the JIT inlines them.
10932
10933         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
10934
10935         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
10936         (mono_image_init): Initialize runtime_invoke_direct_cache.      
10937
10938         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
10939         mono_marshal_get_delegate_invoke signature change.
10940
10941         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
10942         an additional argument. Add support for invoking abstract methods.
10943
10944         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
10945
10946         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
10947
10948 2007-11-09  Mark Probst  <mark.probst@gmail.com>
10949
10950         * class.c: Do field layout for open generic classes as well.
10951
10952 2007-11-09  Mark Probst  <mark.probst@gmail.com>
10953
10954         * gc.c, gc-internal.h: Don't finalize threadpool threads with
10955         other objects, because the threadpool is still around.  Put them
10956         in a list instead and after finalizing all other objects in the
10957         root domain shut down the thread pool and then finalize the
10958         threads.  Fixes bug #337383.
10959
10960         * threads.c, thread-types.h: New mono_thread_create_internal()
10961         function for marking a thread with the threadpool flag before it
10962         started.  Set synch_cs to NULL after freeing it.
10963
10964         * threadpool.c: Mark threadpool threads before they start.
10965
10966 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
10967
10968         * reflection.h, reflection.c: don't export random functions
10969         and lazy load dbnull and missing objects.
10970
10971 2007-11-07  Jonathan Chambers <joncham@gmail.com>
10972
10973         * class.c: Initialize COM types if COM interfaces
10974         are present (not just COM classes).
10975         
10976         Code is contributed under MIT/X11 license.
10977
10978 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
10979         * reflection.c:
10980         create_dynamic_mono_image: hook module profiler events (dynamic case).
10981         mono_image_basic_init: hook assembly profiler events (dynamic case).
10982
10983 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
10984         * profiler.c:
10985         simple_appdomain_unload: completely terminate the profiler
10986         instead of only processing the statistical samples.
10987         simple_shutdown: make sure this is really called exactly once,
10988         even in multithreaded applications, and always listen to
10989         appdomain events.
10990         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
10991         here, the "[un]load" functions will do it.
10992         Fixes bugs #333791 and #325261.
10993
10994 2007-11-07  Geoff Norton  <gnorton@novell.com>
10995
10996         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
10997         rather than depend on __APPLE__.
10998
10999 2007-11-07  Mark Probst  <mark.probst@gmail.com>
11000
11001         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
11002
11003 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
11004
11005         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
11006         UTF16 MonoString. Fix the crash from bug #335488
11007
11008 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
11009
11010         * marshal.c: Correct (for non-Win32 OS) length != size in 
11011         mono_string_from_bstr. Fix #339530.
11012
11013 2007-11-06  Geoff Norton  <gnorton@novell.com>
11014
11015         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
11016         to succeed
11017
11018 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
11019
11020         * process.c: Added run-time GetProcessId API detection for Windows.
11021
11022 2007-11-04  Miguel de Icaza  <miguel@novell.com>
11023
11024         * reflection.c  (mono_param_get_objects): If a parameter has the
11025         attribute [System.Runtime.InteropServices.Optional] we should
11026         set the DefaultValue of the ParameterInfo to be
11027         System.Reflection.Missing instead of DBNull.
11028
11029         See bug #339013.
11030
11031         (mono_get_reflection_missing_object): New method,
11032         returns the System.Reflection.Missing.Value singleton instance.
11033
11034 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
11035
11036         * culture-info-table.h : regenerated.
11037
11038 2007-11-02  Jonathan Chambers <joncham@gmail.com>
11039
11040         * icall.c: Use GetEnvironmentStrings on windows
11041         so we are using the same environment block as 
11042         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
11043         #333740.
11044         
11045         Code is contributed under MIT/X11 license.
11046
11047 2007-10-31  Martin Baulig  <martin@ximian.com>
11048
11049         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
11050
11051         * mono-debug-debugger.h
11052         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
11053
11054 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
11055
11056         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
11057         classes.
11058
11059 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
11060
11061         * culture-info-table.h : regenerated.
11062
11063 2007-10-30  Robert Jordan  <robertj@gmx.net>
11064
11065         * icall-def.h, icall.c:
11066         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
11067
11068         Code is contributed under MIT/X11 license.
11069
11070 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
11071
11072         * class.c (mono_class_setup_vtable): Find the inflated methods in the
11073         inflated class instead of inflating them again.
11074         
11075         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
11076         dynamic case.
11077
11078         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
11079         Call setup_supertypes () after klass->parent is set.
11080         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
11081
11082         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
11083         for inflated instances of not yet created dynamic generic classes.
11084         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
11085         times from inflated_method.
11086         (methodbuilder_to_mono_method): Ditto.
11087
11088 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
11089
11090         * gc.c: code cleanup and removed old untested option of not creating the
11091         finalizer thread.
11092
11093 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
11094
11095         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
11096         creating a jump trampoline for dynamic methods.
11097
11098 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
11099
11100         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
11101         generic TypeBuilders when called from another method of the same type (bug #335131).
11102
11103
11104 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
11105
11106         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
11107         doesn't seem to work perfectly.
11108         
11109         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
11110         called multiple times.
11111         (methodbuilder_to_mono_method): Ditto.
11112         (resolve_object): Inflate FieldBuilder's.
11113
11114 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11115
11116         * string-icalls.c, string-icalls.h, appdomain.c: patch from
11117         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
11118         RemoveEmptyEntries in the string.Split implementation (bug #322375).
11119
11120 2007-10-26  Dick Porter  <dick@ximian.com>
11121
11122         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
11123         Thread initialisation changes
11124
11125 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
11126
11127         * verify.c: fix compatibility check between arrays and System.Array
11128
11129 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
11130
11131         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
11132         too. Fixes #336999.
11133
11134 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
11135
11136         * object.c (mono_value_box): Use typed allocation here.
11137
11138 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
11139
11140         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
11141         trampoline instead of compiling the method right away.
11142
11143         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
11144
11145 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
11146
11147         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
11148         related fields for dynamic classes. Fixes #334493.
11149
11150 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
11151
11152         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
11153         
11154         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
11155
11156         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
11157         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
11158
11159         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
11160
11161         * reflection.c (create_generic_typespec): Initialize klass->generic_container
11162         if needed.
11163         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
11164
11165 2007-10-18  Jonathan Chambers <joncham@gmail.com>
11166
11167         * marshal.c: Use correct key when removing item
11168         from ccw_hash.
11169         
11170         Code is contributed under MIT/X11 license.
11171
11172 2007-10-17  William Holmes  <billholmes54@gmail.com>
11173
11174         *marshal.c: Adding a case to marshal booleans to U1
11175
11176         Code is contributed under MIT/X11 license.
11177
11178 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
11179
11180         * class.c (mono_class_from_name): Search the modules compromising dynamic
11181         assemblies. Fixes #331601.
11182
11183 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
11184
11185         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
11186         exception if the type name contains an assembly component. Fixes #334203.
11187
11188         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
11189         modules inside dynamic assemblies. Fixes #334200.
11190         
11191         * reflection.c: Set image->public_key and image->public_key_length;
11192
11193         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
11194         fields.
11195
11196         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
11197         
11198 2007-10-16  Mark Probst  <mark.probst@gmail.com>
11199
11200         * metadata.c: Implemented correct comparing of generic classes.
11201         An inflated generic class can be equal to a non-inflated one if it
11202         is inflated with generic type variables as type arguments.  Fixes
11203         bug #333798.
11204
11205 2007-10-15  Dick Porter  <dick@ximian.com>
11206
11207         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
11208         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
11209         81646.
11210
11211         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
11212         instead of a monitor lock.  This means that monitor_try_enter and
11213         co can set the thread state safely.
11214         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
11215         thread_interrupt_requested, so interrupt actually works.
11216
11217         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
11218         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
11219         state accessor function
11220
11221 2007-10-15  Martin Baulig  <martin@ximian.com>
11222
11223         * mono-debug.h
11224         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
11225         the debugger with the current runtime.
11226
11227 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
11228
11229         * object.c, object-internals.h: added the ability to set a single
11230         trampoline for all the slots in a vtable.
11231
11232 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11233
11234         * marshal.c: deal with a possible race condition during multicast
11235         delegate invocation.
11236
11237 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11238
11239         * class.c: ensure value type methods don't have the synchronized
11240         flag set.
11241
11242 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
11243
11244         * string-icalls.c, string-icalls.h: reverted unapproved patch that
11245         breaks the build.
11246
11247 2007-10-11  Joel Reed  <joelwreed@comcast.com>
11248
11249         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
11250         to take an options parameter so that empty entries can be removed during
11251         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
11252
11253 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11254
11255         * marshal.c: make sure we don't store the signature from a dynamic
11256         method into the runtime invoke cache (bug #327189).
11257
11258 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
11259
11260         * marshal.c: make sure the wrapper methods are properly initialized.
11261
11262 2007-10-11  Mark Probst  <mark.probst@gmail.com>
11263
11264         * metadata.c, metadata-internals.h: Generalized
11265         mono_type_stack_size() to mono_type_stack_size_internal() which
11266         takes an additional argument specifying whether it allows open
11267         types.
11268
11269 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
11270
11271         * verify.c (do_invoke_method): handle typedbyref params
11272         correctly and check for unverifiable return values.
11273
11274         * verify.c (do_newobj): fix a warning.
11275
11276 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
11277
11278         * verify.c: don't tread typedbyref as allways unverifable,
11279         so uses, like (ld/st)loc.0 are valid. verify for the cases
11280         that it matters, like boxing related operations.
11281
11282 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
11283
11284         * verify.c: add verification of the newobj opcode. verification
11285         of delegate instantation still missing due ldftn and virldftn not
11286         pushing the function type on stack
11287
11288 2007-10-08  Mark Probst  <mark.probst@gmail.com>
11289
11290         * class-internals.h: Runtime generic context data structure
11291         definition.
11292
11293         * object.c: Initialization of runtime generic context at runtime
11294         vtable creation time.
11295
11296 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
11297         * class.c (mono_class_create_from_typedef,
11298         mono_class_from_generic_parameter, mono_ptr_class_get,
11299         mono_fnptr_class_get, mono_bounded_array_class_get)
11300         * domain.c (mono_domain_create, mono_domain_free)
11301         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
11302         * image.c (do_mono_image_load, mono_image_close):
11303         Hooked up load-unload profiler events.
11304
11305 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
11306
11307         * domain.c: track statistics about the actual amount of native code
11308         allocated.
11309
11310 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
11311
11312         * class.c: the valuetype enumerators don't have the additional
11313         supertypes interfaces.
11314
11315 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
11316
11317         * class.c: need more interfaces setup for the IEnumerator<T>
11318         object created for arrays (tests/ienumerator-interfaces.2.cs).
11319
11320 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
11321
11322         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
11323
11324 2007-10-05  Alp Toker  <alp@atoker.com>
11325
11326         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
11327         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
11328         #315863.
11329
11330 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
11331
11332         * verify.c (verify_type_compatibility_full): verification of
11333         compatibility improved, validates correctly non-strict checks between
11334         native int and I4 types different than (unsigned)int32.
11335
11336         * verify.c (do_store_indirect): added, do all verification of
11337         ldind.X opcodes. 
11338
11339         * verify.c (get_load_indirect_mono_type): renamed to
11340         get_indirect_op_mono_type, as it now returns the MonoType for 
11341         ldind.X and stind.X opcodes.
11342
11343 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
11344
11345         * reflection.c: Fix the encoding of generic type definition for
11346         TypeBuilders.
11347
11348         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
11349         mono_image_typedef_or_ref but allows to specify if typespec lookups should
11350         be made. Typespec check is done prior to typeref cache lookup.
11351
11352         * reflection.c (mono_image_typedef_or_ref): now just delegate to
11353         mono_image_typedef_or_ref_full.
11354
11355         * reflection.c (encode_generic_class): encode the generic class
11356         directly instead of calling encode_type.
11357
11358         * reflection.c (encode_type): encode the generic type definition
11359         MonoClass as a generic instantiation.
11360
11361         * reflection.c (create_typespec): cache typespec tokens in
11362         the assembly->typespec cache. Don't create typespec for a generic
11363         instance MonoClass. Create typespec for the generic type defintion.
11364
11365         * reflection.c (create_generic_typespec): encode the generic
11366         class directly instead of calling encode_type.
11367
11368         * reflection.c (mono_image_create_token): encode the generic
11369         type definition not using a typespec for MonoType instances.
11370
11371
11372 2007-10-04  Raja R Harinath  <rharinath@novell.com>
11373
11374         Fix #328812
11375         * class.c (mono_image_init_name_cache): Don't return nested
11376         'protected internal' classes.
11377         (mono_class_from_name_case): Likewise.
11378
11379 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
11380
11381         * icall-def.h, icall.c : get_bundled_machine_config() is now the
11382           common function used by both DefaultConfig in System.dll and
11383           InternalConfigurationHost in System.Configuration.dll.
11384
11385 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11386
11387         * class.c: automatically add to vectors only a few essential explicit
11388         generic interfaces. The rest of the interfaces that arrays should
11389         provide are currently implicitly added (but still not lazily, see the
11390         design in the discussion of bug#325495 for the details of what is
11391         needed for that). Additionally, implicit interfaces are assigned the
11392         same vtable slot as the explicit interfaces (as they are compatible):
11393         this enables huge memory savings since we don't need to instantiate
11394         as many memthods and as large vtables anymore. Also, Since
11395         GetEnumerator<T> returns an instance of a type that is required to
11396         support a similarly large set of interfaces as arrays, we add
11397         implicit interfaces and interface offset sharing support to those
11398         types, too. This change adds all the required interfaces so that
11399         the anonarray.cs test case in the bug report works (we don't add
11400         all the interfaces to arrays of arrays 3-level deep and more because
11401         of the memory requirements explained in the bug and since they are much
11402         less common: the lazy-loading support will enabled them to work, too).
11403
11404 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
11405
11406         * verify.c (merge_stacks): major clean up, all type compatibility
11407         checks are done by verify_type_compatibility. This fix my earlier lack
11408         of understanding of the CLR type system and merge_stacks no longer looks
11409         scary.
11410
11411         * verify.c: fixed some bad spelling.
11412
11413 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
11414
11415         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
11416         a given stack slock.
11417         
11418         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
11419         verify_type_compatibility_full. This removed a near indentical function and fixed
11420         handling of Int32 and IntPtr across all opcodes.
11421
11422 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11423
11424         * class.c: only vectors have the additional generic interfaces.
11425
11426 2007-10-01  Jonathan Chambers <joncham@gmail.com>
11427
11428         * mono-config.c: Use g_strcasecmp instead of
11429         strcasecmp like everywhere else to fix
11430         compilation with MSVC.
11431         
11432         Code is contributed under MIT/X11 license.
11433
11434 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11435
11436         * object.c, object-internals.h: refactored the IMT code to enable
11437         building a single slot at a time and lazily creating the IMT trampolines
11438         and thunks.
11439
11440 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
11441
11442         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
11443
11444         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
11445         Fixes #328501.
11446         
11447 2007-09-29  Raja R Harinath  <harinath@gmail.com>
11448
11449         * loader.c (method_from_methodspec): Rearrange to avoid
11450         un-necessary exposition.  Don't assert out if the method's
11451         declaring type is a generic type definition.
11452
11453 2007-09-28  Martin Baulig  <martin@ximian.com>
11454
11455         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
11456
11457 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
11458
11459         * class-internals.h: optimize field layout of MonoClass to
11460         requires less cachelines at runtime and save a few bytes on 64 bit
11461         systems.
11462
11463 2007-09-28  Jb Evain  <jbevain@novell.com>
11464
11465         * reflection.c: when encoding type names in custom attributes,
11466         if the type is a closed generic type, its generic arguments
11467         have to be serialized as AssemblyQualifiedName, so that when
11468         they are deserialized, it's possible to re-create them properly.
11469         Fixes #329450.
11470
11471
11472 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11473
11474         * object.c, class-internals.h: added delegate-creation counter.
11475
11476 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
11477
11478         * class.c: cleanup of the code that synthetizes interfaces for
11479         arrays in 2.0: saves quit a bit of corlib mempool memory.
11480         Code to fix bug #325495 ifdeffed out for now until the issues
11481         with memory usage and O(n^2) behaviour are fixed.
11482
11483 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
11484
11485         * marshal.c: when possible, do not duplicate the name of the methods
11486         in the method builder and in the generated MonoMethod.
11487
11488 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
11489         * verify.c: added support for type checking ldind_* opcodes.
11490
11491 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
11492
11493         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
11494         which is used to distinguish the fully open instantiation of a TypeBuilder
11495         with the rest. This temporary hack is required to restore the property that
11496         the fully open instantiation is the same type of the generic type definition.
11497
11498         * class-internals.h (mono_generic_class_is_generic_type_definition):
11499         new function as part of the internal API.
11500
11501         * class.c (inflate_generic_type): return NULL when the generic inst is
11502         fully open. The fully open generic type is now the same as the generic type
11503         definition for non TypeBuilder types.
11504
11505         * class.c (mono_generic_class_get_class): removed assert since it is
11506         no longer valid, gklass->cached_class can point to the generic type definition.
11507
11508         * class.c (mono_generic_class_is_generic_type_definition): new.
11509
11510         * metadata.c (mono_generic_class_hash): added is_tb_open field
11511         to the hash calculation.
11512
11513         * metadata.c (free_generic_class): if the generic class is associated
11514         with the generic type definition, its field will come from the mempool and
11515         must not be freed.
11516
11517         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
11518         new, this function identifies the corner case of a TypeBuilder fully open
11519         instantiation.
11520
11521         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
11522         for lookup. Set gclass->cached_class to be the container class in case of
11523         the fully open instantiation of non TypeBuilder types.
11524
11525         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
11526         to compare generic classes.
11527
11528         * reflection.c (method_encode_methodspec): remove assert that
11529         no longer is valid.
11530
11531         * reflection.c (mono_reflection_generic_class_initialize): add
11532         an aditional assert to ensure the proper type is used.
11533
11534 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
11535
11536         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
11537         to enjoy it.
11538
11539 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
11540
11541         * verify.c (push_arg): Fixed support for ldarga
11542         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
11543         MonoType used as first arg in case of instance calls.
11544
11545 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
11546
11547         * verify.c: Support for verifying VAR and MVAR types, 
11548
11549 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
11550
11551         * icall.c (ves_icall_get_property_info): Set the reflected type of the
11552         accessors correctly.
11553
11554 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
11555
11556         * threads.c: support OSX and other systems in
11557         mono_thread_get_stack_bounds (bug #328026).
11558
11559 2007-09-25  Martin Baulig  <martin@ximian.com>
11560
11561         * mono-debug.h
11562         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
11563
11564 2007-09-24  Martin Baulig  <martin@ximian.com>
11565
11566         * mono-debug.h
11567         (MonoDebugClassEntry): Moved the definition of this struct into
11568         mono-debug.c to make it private.
11569
11570         * mono-debug.c
11571         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
11572         type table per symbol file, we don't need to store the symfile id
11573         any longer.
11574
11575 2007-09-24  Martin Baulig  <martin@ximian.com>
11576
11577         Create one type table per symbol file, since a `MonoClass *' gets
11578         invalid when its image is unloaded.
11579
11580         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
11581         (MonoDebugHandle): Added `type_table'.
11582
11583 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
11584
11585         * mempool.c, mempool.h: added mono_mempool_new_size () API
11586         to be able to specify a smaller initial size for the pool.
11587         Adjusted the code to slowly increase pool size before using
11588         the previous default size.
11589         * image.c: use a small initial size for image mempools.
11590
11591 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
11592
11593         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
11594         Fixes ##320990.
11595
11596         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
11597         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
11598
11599 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
11600
11601         * metadata.c (mono_type_create_from_typespec): Remove an invalid
11602         free. Fixes #327438.
11603
11604 2007-09-21  Raja R Harinath  <harinath@gmail.com>
11605
11606         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
11607         generic instantiations, etc.
11608         <MONO_TYPE_ARRAY>: Likewise.
11609
11610 2007-09-21  Martin Baulig  <martin@ximian.com>
11611
11612         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
11613         these structs were never defined.
11614         (MonoDebugHandle): Removed the `_priv' field, it was never used.
11615
11616 2007-09-21  Martin Baulig  <martin@ximian.com>
11617
11618         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
11619
11620 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
11621
11622         * image.c: removed the guid hash tables: we can get the same info
11623         without the additional memory usage hit (partially fixes also bug #327052).
11624
11625 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
11626
11627         * profiler.h, profiler-private.h, profiler.c: add a new profiler
11628         event to handle unloading methods. After the event is called, the
11629         corresponding MonoMethod* must be considered invalid.
11630         * loader.c (mono_free_method): call the new mono_profiler_method_free
11631         event.
11632
11633 2007-09-20  Mark Probst  <mark.probst@gmail.com>
11634
11635         * domain-internals.h: New flag in MonoJitInfo which marks shared
11636         generic methods.  New hash table (shared_generics_hash) in
11637         MonoDomain to keep track of shared generic methods.  Prototypes
11638         for functions to register and lookup shared generic methods.
11639
11640         * domain.c: Support for registering and looking up shared generic
11641         methods via a hash table (shared_generics_hash) in MonoDomain.
11642
11643         * class-internals.h: New exception to signal failure of shared
11644         compilation of a generic method.  New counters for generics
11645         sharing in MonoStats.
11646
11647 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
11648
11649         * image.c, metadata-internals.h: don't keep a file descriptor open
11650         for loaded assemblies (bug#325988).
11651
11652 2007-09-19  Raja R Harinath  <rharinath@novell.com>
11653
11654         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
11655         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
11656         use the corresponding datatypes.
11657         (type_in_image): Update to changes.
11658         (CleanForImageUserData): Simplify.
11659         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
11660         Avoid quadratic behaviour in handling the "stolen" list by
11661         separating the filter predicate out, and by prepending the stolen
11662         items rather than appending them.
11663         (steal_ginst_in_image): Likewise.
11664         (mono_metadata_clean_for_image): Update to changes.
11665
11666 2007-09-19  Martin Baulig  <martin@ximian.com>
11667
11668         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
11669
11670 2007-09-19  Martin Baulig  <martin@ximian.com>
11671
11672         * mono-debug.c (mono_debug_cleanup): Don't call
11673         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
11674
11675 2007-09-19  Raja R Harinath  <harinath@gmail.com>
11676
11677         Fix crash on 'make run-test' in mcs/errors
11678         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
11679         Avoid more potential allocations in mono_class_from_mono_type.
11680         (ginst_in_image): Update to changes.
11681         (gclass_in_image): Rearrange slightly.
11682
11683 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11684
11685         * class.c (mono_class_init): Move the code that sets up class->methods to 
11686         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
11687
11688         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
11689         canonical instance of an inflated generic signature.
11690         (mono_type_create_from_typespec): Remove an invalid free.
11691
11692         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
11693
11694 2007-09-18  Marek Habersack  <mhabersack@novell.com>
11695
11696         * domain-internals.h: added a declaration of the
11697         mono_assembly_load_full_nosearch internal function.
11698
11699         * assembly.c (mono_assembly_load_with_partial_name): use
11700         mono_try_assembly_resolve return value properly.
11701         (mono_assembly_load_full_nosearch): copied the function body from
11702         mono_assembly_load_full, without the code to invoke assembly
11703         search hooks.
11704         (mono_assembly_load_full): calls the above new function and if the
11705         assembly is not resolved, invokes the search hooks.
11706
11707         * appdomain.c (mono_runtime_init): restore the global postload
11708         assembly search handlers.
11709
11710 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
11711
11712         * class.c (mono_class_init): Make sure class->methods and class->properties
11713         are never NULL in the generics case.
11714
11715         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
11716
11717 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
11718
11719         * metadata.c (free_generic_class): Disable some code to fix the build.
11720
11721         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
11722
11723         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
11724         from the image mempool.
11725
11726         * metadata.c (free_generic_class): Free more data from the inflated class.
11727
11728         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
11729
11730         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
11731         mempool.
11732         (mono_type_create_from_typespec): Ditto.
11733
11734         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
11735         MonoImage to the caller.
11736         (mono_init_internal): Save the opened image in a global variable.
11737         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
11738
11739         * reflection.c (resolve_object): Fix a leak.
11740
11741         * metadata.c: Fix the freeing of data in the generics caches.
11742         
11743         * metadata.c (free_generic_inst): Comment this out to fix the build.
11744         (free_generic_class): Ditto.
11745
11746         * metadata.c: Free cached generic methods, instantinations and classes when
11747         they are removed from the caches.
11748         (mono_metadata_free_type): Free the type itself.
11749
11750         * class.c: Free the result of mono_class_inflate_generic_type () in a few
11751         places.
11752
11753 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
11754
11755         * boehm-gc.c: restrict managed allocs to __thread supporting
11756         architectures.
11757
11758 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
11759
11760         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
11761         (mono_generic_class_get_class): Fix a leak.
11762
11763         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
11764         mono_metadata_free_type ().
11765         (mono_metadata_inflate_generic_inst): Fix a leak.
11766
11767 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11768
11769         * mono-debug.c (free_header_data): Fix a leak missed earlier.
11770
11771         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
11772         mempool.
11773
11774         * mono-debug.c (mono_debug_close_image): Fix call to 
11775         g_hash_table_remove ().
11776
11777 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
11778
11779         * icall-def.h: redirect all the string ctor to the managed
11780         CreateString () methods.
11781         * string-icalls.c, string-icalls.h: removed dead code for string
11782         ctors and icalls.
11783
11784 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11785
11786         * mono-debug.c: Fix memory leaks.
11787
11788 2007-09-14  Jonathan Chambers <joncham@gmail.com>
11789
11790         * threads-types.h: Implement mono_hazard_pointer_set and 
11791         mono_hazard_pointer_clear macros using do/while(0) to fix
11792         compilation with MSVC.
11793         
11794         Code is contributed under MIT/X11 license.
11795
11796 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
11797
11798         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
11799         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
11800
11801 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
11802
11803         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
11804         icalls.
11805
11806 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
11807
11808         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
11809         managed-code allocated as well.
11810
11811 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11812
11813         * class.c (mono_class_is_assignable_from): Add support for generic variance.
11814
11815 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
11816
11817         * boehm-gc.c: fixed the build after the AOT changes.
11818
11819 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
11820
11821         * wrapper-types.h: Add an ALLOC wrapper type.
11822
11823         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
11824         reference managed allocator methods.
11825
11826 2007-09-12  Marek Safar  <marek.safar@gmail.com>
11827
11828         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
11829         of Type array and not MonoType, a fix suggested by Hari.
11830         
11831 2007-09-12  Jonathan Chambers <joncham@gmail.com>
11832
11833         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
11834         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
11835         
11836         Code is contributed under MIT/X11 license.
11837
11838 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
11839
11840         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
11841
11842 2007-09-12  Marek Habersack  <mhabersack@novell.com>
11843
11844         * image.c (do_mono_image_open): if assembly file fails to open and
11845         MONO_IOMAP is in effect, try to find the path in a
11846         case-insensitive way.
11847
11848         * appdomain.c (mono_runtime_init): do not install postload hooks -
11849         tests show that MS.NET doesn't use anything of that sort to
11850         trigger the AppDomain.AssemblyResolve event.
11851         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
11852         made non-static.
11853         (mono_runtime_init): init portability helpers here.
11854
11855         * assembly.c (mono_assembly_load_with_partial_name): if other   
11856         attempts fail, trigger the AppDomain.AssemblyResolve event handler
11857         to resolve the assembly.
11858
11859         * domain-internals.h: added mono_try_assembly_resolve and marked
11860         it as internal.
11861
11862 2007-09-11  Jb Evain  <jbevain@novell.com>
11863
11864         * object-internals.h (MonoReflectionDynamicMethod): add
11865         a `MonoReflectionType *owner` field. The owner is used
11866         * reflection.c:
11867         (mono_reflection_create_dynamic_method): use the owner of the dynamic
11868         method as the class declaring the dynamic method.
11869         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
11870         dynamic method to the declaring type of the methodbuilder.
11871
11872 2007-09-11  Mark Probst  <mark.probst@gmail.com>
11873
11874         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
11875         rules for calling methods via reflection.
11876
11877 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
11878
11879         * reflection.c (resolve_object): Add support for MonoGenericClass. 
11880         Inflate MonoType's.
11881
11882 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
11883
11884         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
11885         provide a managed method that does fast allocations without needing
11886         a managed->unmanaged transition. Boehm GC implementation currently
11887         enabled for ptrfree objects on sane architectures.
11888
11889 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
11890
11891         * marshal.c, marshal.h: exported a couple of useful functions and
11892         added mono_mb_get_label () to easily handle backward branches.
11893
11894 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
11895
11896         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
11897
11898 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
11899
11900         * loader.c (find_method): Fixed the regression introduced while
11901         fixing bug #81466.
11902
11903 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
11904
11905         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
11906         well.
11907         
11908         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
11909         icall.c reflection.c: Pass a MonoGenericContext argument to 
11910         mono_lookup_dynamic_token ().
11911
11912         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
11913         #82744.
11914         
11915 2007-09-09  Robert Jordan  <robertj@gmx.net>
11916
11917         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
11918         for generic methods.
11919
11920         * object.c (mono_object_get_virtual_method): Handle generic methods.
11921         Fixes bug #78882.
11922
11923         Code is contributed under MIT/X11 license.
11924
11925 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
11926
11927         * image.c: fix locking in mono_image_load_file_for_image ().
11928
11929 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
11930
11931         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
11932         used only as a cache: added an icall to fill it.
11933
11934 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
11935
11936         * reflection.h: exposed mono_reflection_free_type_info
11937         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
11938         since mono_reflection_bind_generic_parameters makes a copy of it.
11939         * reflection.c (free_type_info): subinfos should be freed.
11940         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
11941         made non static.
11942         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
11943         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
11944         this fixes #82695 and #81726.
11945    
11946
11947 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
11948
11949         * process.h, process.c:  added support for user profile/info in
11950           ProcessStartInfo. For now only Windows works.
11951
11952 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
11953
11954         * metadata.c: consider the generic arguments when comparing
11955         signatures (bug #82614).
11956
11957 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11958
11959         * cil-coff.h, image.c: updated assembly loader to cope with the
11960         PE32+ 64 bit file format.
11961
11962 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
11963
11964         * assembly.c, class.c, domain.c, loader.c: remove useless
11965         inclusion of cil-coff.h.
11966
11967 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
11968
11969         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
11970         if interface is marked with CoClassAttribute. 
11971    
11972         Code is contributed under MIT/X11 license.
11973
11974 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
11975
11976         * sgen-gc.c: ensure no object from the to space is copied again or finalized
11977         if it's seen twice in major collections.
11978
11979 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
11980
11981         * sgen-gc.c: big objects are not copied to the gray area, but they
11982         need to be considered for scanning, too, if they are brought alive
11983         by an object ready for finalizations or a survived one.
11984
11985 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
11986
11987         * sgen-gc.c: properly account the number of disappearing links when
11988         they are nullified.
11989
11990 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
11991
11992         * sgen-gc.c: share the code to scan the registered roots between the
11993         different types of collections.
11994
11995 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
11996
11997         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
11998
11999 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
12000
12001         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
12002         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
12003
12004 2007-08-28  Mark Probst  <mark.probst@gmail.com>
12005
12006         * security-manager.c (mono_security_manager_get_methods):
12007         LinkDemandSecurityException now has 2 arguments instead of 3.
12008
12009 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
12010
12011         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
12012         platforms which need it.
12013
12014 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12015
12016         * sgen-gc.c: unregister thread data structures with a pthread_key_t
12017         dtor.
12018
12019 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
12020
12021         * threads.c: free the thread static data on thread exit.
12022
12023 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
12024
12025         * class.c: walk the hierarchy to find the generic definition for
12026         a class (fixes runtime part of bug #82498).
12027
12028 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
12029
12030         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
12031         ...
12032
12033         * image.c (mono_image_close): Here. Hopefully fixes #82510.
12034
12035 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12036
12037         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
12038
12039 2007-08-24  Robert Jordan  <robertj@gmx.net>
12040
12041         * appdomain.c: don't perform the ':'->';' substitution on Win32.
12042
12043 2007-08-24  Jb Evain  <jbevain@novell.com>
12044
12045         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
12046         for byref types.
12047
12048 2007-08-24  Mark Probst  <mark.probst@gmail.com>
12049
12050         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
12051         #82286.
12052
12053 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
12054
12055         * assembly.c: Fix a warning.
12056         
12057 2007-08-23  Marek Habersack  <mhabersack@novell.com>
12058
12059         * appdomain.c: parse the <runtime> section looking for the probing
12060         element with the 'privatePath' attribute, which sets additional
12061         directories in which the runtime should look for assemblies.
12062
12063 2007-08-23  Robert Jordan  <robertj@gmx.net>
12064
12065         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
12066         Fixes #82499.
12067
12068 2007-08-23  Martin Baulig  <martin@ximian.com>
12069
12070         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
12071         _mono_debug_init_corlib() and remove it from the header file.
12072
12073 2007-08-23  Martin Baulig  <martin@ximian.com>
12074
12075         * mono-debug-debugger.c
12076         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
12077         don't notify the debugger about it.
12078
12079         * mono-debug-debugger.h
12080         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
12081
12082 2007-08-23  Robert Jordan  <robertj@gmx.net>
12083
12084         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
12085         Code is contributed under MIT/X11 license.
12086
12087 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
12088
12089         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
12090
12091 2007-08-22  Martin Baulig  <martin@ximian.com>
12092
12093         * mono-debug.c: Store debugging info on a per-domain basis and
12094         free it on domain unload.  Add support for unloading symbol files.
12095
12096         * mono-debug.h
12097         (MonoDebugList): New typedef.
12098         (MonoSymbolTable):
12099         - add `data_tables and `type_table'.
12100         - replace 'symbol_files' and `num_symbol_files' with a
12101           `MonoDebugList *'.
12102         (mono_debug_data_table): Removed.
12103         (mono_debug_list_add): New public function.
12104         (mono_debug_list_remove): New public function.
12105         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
12106         (mono_debug_init_2_memory): Renamed into
12107         mono_debug_open_image_from_memory().
12108         (mono_debug_close_image): New public function.
12109         (mono_debug_domain_create): Likewise.
12110         (mono_debug_domain_unload): Likewise.
12111         (MONO_DEBUGGER_VERSION): Bump to 60.
12112
12113         * mono-debug-debugger.h
12114         (MonoDebuggerEvent):
12115         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
12116         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
12117         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
12118         - rename `THREAD_CREATED' and `THREAD_EXITED' into
12119           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
12120         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
12121           meaning.
12122         (mono_debugger_add_symbol_file): Removed.
12123         (mono_debugger_add_type): Removed.
12124         (mono_debugger_lookup_type): Removed.
12125         (mono_debugger_lookup_assembly): Removed.
12126
12127         * domain.c
12128         (mono_domain_create): Call mono_debug_domain_create().
12129         (mono_init_internal): Call mono_debug_init_corlib().
12130
12131         * assembly.c
12132         (mono_assembly_close): Call mono_debug_close_image().
12133
12134 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
12135
12136         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
12137         mmap call.
12138
12139 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
12140
12141         * sgen-gc.c: ensure section->pin_queue_end is initialized
12142         correctly when non pinning objects in the section have been found.
12143
12144 2007-08-22  Marek Habersack  <mhabersack@novell.com>
12145
12146         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
12147         containing a list of directories separated by ':'. MSDN docs say
12148         the directories should be separated with ';'. Part of a bugfix for
12149         bug #81446
12150
12151 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
12152
12153         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
12154         it should MonoType and not MonoClass.
12155
12156 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
12157
12158         * culture-info-table.h : regenerated.
12159
12160 2007-08-20  William Holmes  <billholmes54@gmail.com>
12161
12162         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
12163          to call ReplaceFile Kernel32 on windows or in io-layer.
12164         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
12165         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
12166          as an internal call.
12167
12168         Code is contributed under MIT/X11 license.
12169
12170 2007-08-20  Jb Evain  <jbevain@novell.com>
12171
12172         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
12173         and MONO_EXCEPTION_FIELD_ACCESS.
12174
12175         * debug-helpers.[c|h]: new mono_field_full_name function.
12176
12177 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12178
12179         * class.c: Removed class_security_level() and moved it to
12180         security-core-clr.c.
12181
12182         * security-core-clr.c, security-core-clr.h: class_security_level()
12183         is now public and renamed to mono_security_core_clr_class_level().
12184         It also looks for security attributes in the classes a class is
12185         nested in.
12186
12187 2007-08-20  Mark Probst  <mark.probst@gmail.com>
12188
12189         * security-core-clr.c, security-core-clr.h: CoreCLR security
12190         utility functions.
12191
12192         * Makefile.am: Added security-core-clr.[ch].
12193
12194         * security-manager.c, security-manager.h: Functions and enum for
12195         setting and getting the security mode.
12196
12197         * class.c: CoreCLR security checks.
12198
12199 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
12200
12201         * icall-def.h, process.c, process.h: implemented icall to get
12202         user/system processor times.
12203
12204 2007-08-17  Mark Probst  <mark.probst@gmail.com>
12205
12206         * domain.c, threads.c, class-internals.h, domain-internals.h: New
12207         reader-lock-free jit_info_table.
12208
12209 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
12210
12211         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
12212
12213         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
12214
12215         * object-internals.h (MonoException): Add missing _data member.
12216
12217 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
12218
12219         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
12220         checking that only methods with matching qname or fqname are picked
12221         from implemented interfaces.
12222
12223 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
12224
12225         * verify.c (do_newarr):added, do type verification of
12226         newarr ops, push the right value on the eval stack.
12227         * verify.c (mono_method_verify): use do_newarr
12228
12229
12230 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
12231
12232         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
12233         factored the common code into get_boxable_mono_type, which
12234         is now using mono_type_get_full, this fixed byref related tests.
12235
12236 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
12237
12238         * class.c: added mono_type_get_full, this function has the same
12239         behavior of mono_class_get_full but the returned MonoType has
12240         all metadata of the associated token in case of a typespec token.
12241         * class.c: added mono_type_retrieve_from_typespec, used by 
12242         mono_type_get_full to retrieve the token type.
12243         * class.c (mono_class_create_from_typespec): changed to use
12244         mono_type_retrieve_from_typespec.
12245         * class.c (mono_ldtoken): changed to use mono_type_get_full
12246         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
12247         * class-internals.h: exported mono_type_get_full for internal use.
12248
12249 2007-08-16  Jb Evain  <jbevain@novell.com>
12250
12251         * domain.c (supported_runtimes): add entry for
12252         the 'moonlight' runtime version.
12253
12254 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
12255
12256         * verify.c (mono_method_verify): small typo sliped in.  
12257
12258 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
12259
12260         * verify.c (do_unbox_value): added, do type verification of
12261         unboxing ops
12262         * verify.c (mono_method_verify): use do_unbox_value
12263
12264
12265 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
12266
12267         * verify.c (dump_stack_value): fixed typo, was printing string
12268         instead of object on stack.
12269         * verify.c (do_box_value): moved the byref check up as it leads
12270         to invalid code and should be done earlier.
12271         * verify.c: improved error messages for and ldobj
12272
12273 2007-08-15  William Holmes  <billholmes54@gmail.com>
12274
12275         * marshal.c (emit_marshal_custom): Omit the call to 
12276           marshal_native_to_managed when calling native to managed 
12277           and the argument is specified as an out argument.
12278
12279         Code is contributed under MIT/X11 license.
12280
12281 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
12282
12283         * verify.c: fixed the type checks for generics, function pointers and vectors.
12284         Added type verification for ldobj and ldtoken. The verifier
12285         would segfault if header or signature of a method contained references
12286         to non-existant types.
12287
12288 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
12289
12290         * marshal.c (cominterop_get_ccw): Patch from
12291         Bill Holmes to no walk up interface hierarchy. 
12292         All parent methods should be present in the interface for COM.
12293    
12294         Code is contributed under MIT/X11 license.
12295
12296 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
12297
12298         * marshal.c (emit_marshal_com_interface): Patch from
12299         Bill Holmes to handle COM Interfaces as return values
12300         for native->managed calls.
12301    
12302         Code is contributed under MIT/X11 license.
12303
12304 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
12305
12306         * marshal.c (cominterop_get_idispatch_for_object): Implement
12307         for runtime callable wrappers.
12308    
12309         Code is contributed under MIT/X11 license.
12310
12311 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
12312
12313         * pedump.c (main): changed from mono_init to mono_init_from_assembly
12314         so 2.0 types are accessible
12315
12316
12317 2007-08-13  Miguel de Icaza  <miguel@novell.com>
12318
12319         * domain.c (mono_init_internal): Call mono_assembly_load_friends
12320         once we load mscorlib.   Due to the order in which we initialize,
12321         the mono_assembly_load_full routine that loads mscorlib did not
12322         load friends.   We now load it once we load the
12323         mono_defaults.internals_visible_class class. 
12324
12325         * assembly.c: Expose the mono_load_friend_assemblies method.
12326
12327 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
12328
12329         * verify.c: improved the handling of boxing, better
12330         type checking for unary ops and conversion. Fix bug
12331         regarding managed pointer compatibility checking
12332
12333 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
12334
12335         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
12336
12337         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
12338
12339 2007-08-09  Raja R Harinath  <rharinath@novell.com>
12340
12341         * reflection.c (dup_type): Remove.
12342         * class.c (dup_type): Remove.
12343         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
12344         instead of the dodgy 'dup_type'.
12345         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
12346         handle the case where 'dup_type' needed the second argument.
12347
12348 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
12349
12350         * domain.c: Fix a warning.
12351
12352 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
12353
12354         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
12355         checking that methods with the same fqname are not overridden
12356         with a method from an ancestor.
12357
12358 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
12359
12360         * threads.c (free_thread_static_data_helper): Avoid a crash if
12361         thread->static_data is not yet set.
12362
12363 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
12364
12365         * marshal.c: Use correct image when emitting
12366         native wrapper for COM calls.
12367    
12368         Code is contributed under MIT/X11 license.
12369
12370 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
12371
12372         * icall-def.h, security.c, security.h :
12373           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
12374
12375 2007-08-07  Martin Baulig  <martin@ximian.com>
12376
12377         * mono-debug-debugger.h
12378         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
12379
12380         * domain.c (mono_domain_free): Call
12381         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
12382
12383 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
12384
12385         * verify.c (check_underflow, check_overflow): error message now returns IL offset
12386         * verify.c (in_same_block): code should test if either offset is inside the clauses
12387         * verify.c (mono_method_verify): push the exception into the eval stack of exception
12388         and filter blocks
12389
12390 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
12391
12392         * image.c (mono_image_close): Fix a leak.
12393
12394         * object.c (mono_runtime_invoke_array): Avoid using alloca.
12395
12396         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
12397
12398 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
12399
12400         * domain.c, threads.c, threads-types.h: fix memory retention issue
12401         with thread static variables not being cleared on domain unload.
12402         Reuse thread static slots after domain unload.
12403
12404 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
12405
12406         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
12407         nullable type.
12408
12409         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
12410         now done in mono_runtime_invoke_array.
12411
12412         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
12413         receiver is a nullable type.
12414
12415         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
12416         generic parameter.
12417
12418 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
12419
12420         * marshal.c: Implement COM Objects as return type for 
12421         managed->unmanaged calls. Added Release calls for COM Object
12422         out/return values in managed->unmanaged calls.
12423
12424         Code is contributed under MIT/X11 license.
12425
12426 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
12427
12428         * threads.h, threads-type.h: move the hazard pointer declarations
12429         to the private header.
12430
12431 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
12432
12433         * file-io.c, appdomain.c: memory leak fixes.
12434
12435 2007-08-02  Dick Porter  <dick@ximian.com>
12436
12437         * socket-io.c
12438         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
12439         SO_REUSEADDR setting into io-layer/sockets.c.
12440
12441 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
12442
12443         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
12444         from Object when called on a generic parameter. Fixes #82211.
12445
12446 2007-08-01  Dick Porter  <dick@ximian.com>
12447
12448         * file-io.c (convert_share): Test FileShare values bit-by-bit.
12449         Fixes bug 79250 yet again.
12450
12451 2007-07-30  Martin Baulig  <martin@ximian.com>
12452
12453         Merged the `debugger-dublin' branch.
12454
12455         * mono-debug.h
12456         (MonoDebugDataTable): New typedef.
12457         (MonoDebugMethodAddressList): New typedef.
12458         (MonoDebugWrapperData): Removed.
12459         (MonoDebugSymbolTable): Removed `current_data_table',
12460         `current_data_table_size', `current_data_table_offset'.
12461         (MonoDebugDataItemType): Moved into mono-debug.c.
12462         (MonoDebugMethodJitInfo): Remove `address'.
12463         (mono_debug_data_table): New global variable.
12464         (mono_debug_lookup_method_addresses): New public function.
12465         (mono_debug_find_method): Take a `MonoMethod *', not a
12466         `MonoDebugMethodInfo *'.
12467
12468         * mono-debug.c: Drop support for the old symbol tables.
12469
12470 2007-06-28  Martin Baulig  <martin@ximian.com>
12471
12472         * mono-debug.c (mono_debug_debugger_version): New public variable.
12473
12474 2007-07-31  William Holmes  <billholmes54@gmail.com>
12475
12476         * metadata.c Changed mono_type_create_from_typespec to not insert
12477           the type into the hash map until after
12478           do_mono_metadata_parse_type has completed.
12479         Fixes Bug #82194
12480         Code is contributed under MIT/X11 license.
12481
12482 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
12485         generic parameter. Fixes #82211.
12486
12487 2007-07-27  Jb Evain  <jbevain@novell.com>
12488
12489         * pedump.c (dump_metadata, dump_metadata_header): dump
12490         versions contained in the metadata header.
12491
12492 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
12493
12494         * threads.c: register small_id_table with the GC.
12495
12496 2007-07-27  Mark Probst  <mark.probst@gmail.com>
12497
12498         * threads.c, threads.h, class-internals.h, object-internals.h:
12499         Hazard pointers, to be used by lock-free parallel algorithms.
12500
12501 2007-07-26  Dick Porter  <dick@ximian.com>
12502
12503         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
12504         routine on non-windows platforms, as I've not managed to think of
12505         a non-kludgy way of doing this.  Finishes off bug 78739.
12506
12507 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
12508
12509         * object.c: properly setup interface_bitmap in proxy vtables.
12510
12511 2007-07-25  Marek Habersack  <mhabersack@novell.com>
12512
12513         * appdomain.c (get_shadow_assembly_location): do not use TickCount
12514         to create unique shadow copy target directories, use the domain's
12515         serial number instead. Each domain gets a unique target directory
12516         that way.
12517
12518         * domain.c (mono_domain_create): added code to increment domain
12519         shadow copy serial number and cache the value in the current
12520         domain structure.
12521
12522         * domain-internals.h (struct _MonoDomain): added a new field -
12523         shadow_serial to hold the serial number used in generation of
12524         shadow-copy directories. This is to make sure that the directory
12525         name is unique for each and every domain created. We avoid a race
12526         condition with overriding assemblies already in use by other app
12527         domains.
12528
12529 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
12530
12531         * class.c (mono_bounded_array_class_get): fixed memory leak when 
12532         binding generic parameters.
12533
12534 2007-07-24  Raja R Harinath  <rharinath@novell.com>
12535
12536         * metadata.c (do_mono_metadata_parse_generic_class): Use
12537         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
12538         error.
12539
12540 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
12541
12542         * loader.c, class-internals.h, reflection.c: removed the per-method
12543         generics hashtable: we use the global one through the call of
12544         mono_class_inflate_generic_method ().
12545
12546 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
12547
12548         * class.c, metadata.c, class-internals.h: introduce yet another
12549         generics global cache for inflated methods (fixes 98% of the perf
12550         issue in bug #81806).
12551
12552 2007-07-23  Raja R Harinath  <rharinath@novell.com>
12553
12554         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
12555         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
12556         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
12557         return a MonoGenericInst containing (a copy) of those types.
12558         (mono_metadata_inflate_generic_inst): Update to changes.
12559         (mono_metadata_parse_generic_inst): Likewise.
12560         (mono_get_shared_generic_inst): Likewise.
12561         * reflection.c (mono_class_bind_generic_parameters): Likewise.
12562         (mono_reflection_bind_generic_method_parameters): Likewise.
12563         * metadata-internals.h: Likewise.
12564         * icall.c (free_generic_context): Kill.
12565         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
12566
12567         * reflection.c (reflection_methodbuilder_to_mono_method): Use
12568         mono_metadata_type_dup.
12569         * marshal.c (mono_mb_create_method): Likewise.
12570
12571         * metadata.c (mono_metadata_type_dup): Rename from
12572         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
12573         MonoImage.  Handle a few more cases, esp. when no mempool is given.
12574         * marshal.c, metadata-internals.h: Update to changes.
12575
12576 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
12577
12578         * class.c: fixed a small leak for array classes and removed warning.
12579
12580 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
12581
12582         * loader.c (mono_method_get_param_token): Make this work on generic methods.
12583         Return 0x8000000 for return parameters. Fixes #82161.
12584
12585 2007-07-21  Marek Habersack  <grendello@gmail.com>
12586
12587         * appdomain.c (get_shadow_assembly_location): append the current
12588         ticks value to the path. Avoids overwriting the same assemblies by
12589         several threads at the same time.
12590
12591 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
12592         and Raja R Harinath  <rharinath@novell.com>
12593
12594         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
12595         Simplify slightly.
12596         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
12597         property for testing if a method is a generic method definition.
12598
12599 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
12600
12601         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
12602
12603 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
12604
12605         * verify.c: used function from private branch, reverted to the one in class.h 
12606
12607 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
12608
12609         * verify.c: a typo slipped in and the code wont compile
12610
12611 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
12612
12613         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
12614         disabled box instruction as it is doing the wrong thing
12615         improved stack dump messages, now it is easier to debug type related issues
12616
12617
12618 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
12619
12620         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
12621
12622 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
12623
12624         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
12625         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
12626         grouped with class and valuetype. This change will simply 
12627         the code as it should be handled just like unmanaged pointers.
12628
12629 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12630
12631         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
12632
12633 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
12634
12635         * verify.c: several stack merge issues fixed, reference comparisons now
12636         check the type size. strict type check now works correctly.
12637         added more uses of IS_MANAGED_POINTER macro.
12638         fixed issues pointed by running the test suite against .net.
12639         
12640
12641 2007-07-19  Mark Probst  <mark.probst@gmail.com>
12642
12643         * class.c, loader.c, class-internals.h: Removed the
12644         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
12645         defines.
12646
12647         * icall.c: Better error checking in some internal reflection
12648         methods.
12649
12650 2007-07-18  William Holmes  <billholmes54@gmail.com>
12651
12652         * filewatcher.c : removed unused variable 'filename' in 
12653           ves_icall_System_IO_FSW_SupportsFSW
12654
12655 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
12656
12657         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
12658         obsolete, removed.
12659
12660 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
12661
12662         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
12663         
12664         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
12665
12666 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
12667
12668         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
12669         Implement generics support.
12670         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
12671
12672         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
12673         type_args and method_args arguments.
12674         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
12675         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
12676         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
12677
12678 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
12679
12680         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
12681           It adds a rootimage parameter to mono_reflection_get_type_internal,
12682           adds new function mono_reflection_get_type_with_rootimage and use
12683           the rootimage to resolve the types instead of the current image
12684
12685 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
12686
12687         * culture-info-table.h: Forgot to update after r78304.
12688
12689 2007-07-13  Raja R Harinath  <rharinath@novell.com>
12690
12691         * class.c (mono_class_is_open_constructed_type)
12692         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
12693
12694 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
12695
12696         * class.c (mono_bounded_array_class_get):  method fails if used with
12697         an incomplete TypeBuilder enum (no basetype field), fixed it by 
12698         avoiding calculating the size for such array as it cannot be instantiated.
12699         Fix bug #82015
12700
12701 2007-07-12  Raja R Harinath  <rharinath@novell.com>
12702
12703         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
12704         field.
12705         * metadata.c, reflection.c: Update to changes.
12706
12707 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
12708
12709         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
12710         mono_class_is_valid_enum, they are used to valide a enum when loading.
12711         * reflection.c: used new functions to throw TypeLoadException when and
12712         invalid enum is build with TypeBuilder. Fixes #82018
12713   
12714 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
12715
12716         * object.c: forgot commit of mono_class_setup_methods () to access
12717         iface->methods.
12718         * object-internals.h: added a few more handy fields to
12719         MonoIMTCheckItem.
12720
12721 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
12722
12723         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
12724         iface->methods.
12725
12726 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
12727
12728         * class-internals.h, object-internals.h, object.c: IMT-based
12729         interface invocation core from Massimiliano Mantione
12730         (massi@ximian.com) with a reworked arch-specific interface,
12731         bsearch implementation and a few bugfixes and memory savings by me.
12732
12733 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
12734
12735         * class.c (mono_class_create_from_typedef): mono would segfault if 
12736         an enum did not have a __value field. It now throws a TypeLoadException
12737         for such cases. Fix bug #82022
12738
12739 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12740
12741         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
12742
12743 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12744
12745         * class.c (mono_class_init): If a class is already inited but has
12746         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
12747
12748 2007-07-09  Mark Probst  <mark.probst@gmail.com>
12749
12750         * class.c: Properly handle the case of an unimplemented interface
12751         method.  Fixes: 81673.
12752
12753 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
12754
12755         * class-internals.h, object.c: cleanup patch from massi: use
12756         MonoVTable->interface_bitmap since the vtable interfaces offset array
12757         is going away.
12758
12759 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
12760
12761         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
12762         GetMDStreamVersion icall instead.
12763
12764 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
12765
12766         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
12767         not use mono_dl_build_path() with a full library name: makes
12768         fallbacks to libgaim and libfam work.
12769
12770 2007-07-06  William Holmes  <billholmes54@gmail.com>
12771
12772         * assembly.c: Added a continue statement in probe_for_partial_name when
12773          parse_assembly_directory_name fails.  Fixes : 82002
12774
12775 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
12776
12777         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
12778         and added a verification  for TYPEDBYREF.
12779         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
12780         make native int interchangeable with int32 and some small cleanup and formating.
12781         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
12782         handle byref of byref.
12783         * verify.c (push_local): handle byref of byref.
12784         * verify.c (do_binop): invalid mix of values is unverifiable
12785         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
12786         added visibility checks
12787         * verify.c (field related method): added visibility checks
12788         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
12789
12790 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
12791
12792         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
12793         string.
12794
12795 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
12796
12797         * profiler.c (mono_profiler_load): Fix an off-by-one error.
12798
12799         * marshal.c (emit_marshal_string): When returning a string from managed code,
12800         allways make a copy even for unicode strings. Fixes #81990.
12801
12802 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
12803
12804         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
12805         of byref generic inst types (bug #81997).
12806
12807 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
12808
12809         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
12810         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
12811
12812 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * marshal.c (emit_marshal_string): Add support for unicode strings in
12815         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
12816
12817 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
12818
12819         * verify.c: field load/store are now verified, missing only access checks now
12820
12821 2007-06-28  Martin Baulig  <martin@ximian.com>
12822
12823         * mono-debug.c (mono_debug_debugger_version): New public variable.
12824
12825 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
12826
12827         * locales.c: When constructing DateTimeFormat or NumberFormat for
12828         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
12829         MonoCultureInfo contructed from the current locale is always
12830         read-only and has UseUserOverride set to true. All MonoCultureInfo
12831         instances returned for GetCultures have both IsReadOnly and
12832         UseUserOverride set to true. Fixes part of bug #81930.
12833
12834 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
12835
12836        * icall-def.h: Update System.__ComObject icalls
12837        * marshal.c: Avoid managed transition (and object creation)
12838        when looking up COM interface in RCW.
12839        * marshal.h: Ditto.
12840        
12841        Code is contributed under MIT/X11 license.
12842
12843 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
12844
12845         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
12846         to avoid crashes during assembly unloading.
12847
12848 2007-06-22  Raja R Harinath  <rharinath@novell.com>
12849
12850         Fix MethodInfo.IsGenericMethodDefinition
12851         * reflection.c (mono_reflection_bind_generic_method_parameters):
12852         Rearrange code to ensure we always uses a generic method definition.
12853         * class.c (mono_class_inflate_generic_method_full): Set
12854         'generic_container' field only for generic method definitions.
12855         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
12856         Use presense of 'generic_container' field as indication of being a
12857         generic method definition.
12858
12859 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
12862
12863         * object-internals.h: Reflect changes in the layout of the managed Delegate
12864         class.
12865         
12866         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
12867         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
12868         runtime memory used by the dynamic method. Fixes #77146.
12869
12870 2007-06-21  Dick Porter  <dick@ximian.com>
12871
12872         * file-io.h: 
12873         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
12874         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
12875         81767.
12876
12877 2007-06-21  Raja R Harinath  <rharinath@novell.com>
12878
12879         * reflection.c (method_encode_methodspec): Add a tripwire.
12880         * class.c (inflate_generic_type): The fully open generic type is
12881         not the same as the generic type definition.
12882
12883 2007-06-21  Martin Baulig  <martin@ximian.com>
12884
12885         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
12886
12887         * mono-debug-debugger.h
12888         (MonoDebuggerBreakpointInfo): Removed.
12889         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
12890         (mono_debugger_remove_breakpoint): Likewise.
12891         (mono_debugger_breakpoint_callback): Likewise.
12892         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
12893
12894 2007-06-21  Raja R Harinath  <rharinath@novell.com>
12895
12896         * metadata.c (mono_metadata_lookup_generic_class): The fully open
12897         generic type is not the same as the generic type definition.
12898         * class.c (mono_generic_class_get_class): Likewise.
12899
12900 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
12901
12902         * icall.c: The second argument to 
12903         System.Reflection.MethodBase.GetMethodFromHandleInternalType
12904         is a MonoType not a MonoClass.
12905
12906 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
12907
12908         * verify.c: support for function pointers in the verifier
12909
12910 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
12911
12912         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
12913
12914 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
12915
12916         * assembly.c: removed Mono.Data.SqliteClient from the list of
12917         forward-compatible assemblies as it breaks the ABI (bug #81899).
12918
12919 2007-06-19  Raja R Harinath  <rharinath@novell.com>
12920
12921         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
12922         lookup/update with the loader lock.
12923         * reflection.c (mono_class_bind_generic_parameters): No need to
12924         protect mono_metadata_lookup_* with the loader lock.
12925         * class.c (inflate_generic_type): Likewise.
12926         
12927         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
12928         on a generic instantiated type.
12929
12930 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
12931
12932         *verify.c: produce meanfull error messages on verification error
12933         *verify.c: fixed some cases of verification errors reported as validation errors
12934         *pedump.c: fixed the error name array, now it shows validation errors properly
12935         *verify.h: fixed the contant that should be used for verification errors
12936
12937 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
12938
12939         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
12940         for bug #77596, 81858 and 80743 (generics data structures on domain
12941         unload).
12942
12943 2007-06-15  Raja R Harinath  <rharinath@novell.com>
12944
12945         Avoid allocating 'MonoGenericContext' on the heap.
12946         * class-internals (_MonoMethodInflated::context): Make field
12947         inline, not a pointer.
12948         * loader.c (method_from_methodspec): Allocate 'new_context' on the
12949         stack.  Use the context embedded within the inflated method as the
12950         hash key, rather than 'new_context'.
12951         * class.c (inflate_generic_context): Simplify.  Return a struct
12952         rather than allocating on the heap.
12953         (mono_class_inflate_generic_method_full): Update to changes.  Now,
12954         doesn't salt away a copy of the context -- simplifying the
12955         lifetime rules of a 'MonoGenericContext *'.
12956         (mono_method_get_context): Return pointer to embedded context.
12957         (setup_generic_array_ifaces): Allocate temporary context on stack.
12958         * reflection.c (inflate_mono_method): Likewise.
12959         (mono_reflection_bind_generic_method_parameters): Likewise.
12960         Use the context embedded within the inflated method as the hash key.
12961
12962         Avoid a source of allocation of 'MonoGenericContext'.
12963         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
12964         and 'cached_context' fields into embedded 'MonoGenericContext' field.
12965         * class.c: Update to changes.
12966         (mono_generic_class_get_context): Simplify drastically.  Now just
12967         returns a pointer to the field.
12968         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
12969         argument as a const pointer.
12970         (mono_metadata_generic_context_equal): Likewise.
12971         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
12972         Update to changes.
12973
12974 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
12975
12976         * verify.c improved the handling of brtrue/brfalse, factored out common code
12977
12978 2007-06-14  Raja R Harinath  <rharinath@novell.com>
12979
12980         Kill MonoGenericMethod.
12981         * class-internals.h (MonoGenericContext::method_inst): Rename from
12982         'gmethod' and convert to a MonoGenericInst.
12983         (MonoGenericMethod): Remove.
12984         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
12985         * loader.c (method_from_methodspec): Update to changes.  Use a
12986         MonoGenericContext as the key to the hashtable.
12987         * metadata.c (mono_metadata_generic_context_equal): Rename from 
12988         'mono_metadata_generic_method_equal' and take MonoGenericContext.
12989         (mono_metadata_generic_context_hash): Likewise from
12990         'mono_metadata_generic_method_hash'.  Change hash function.
12991         (mono_metadata_load_generic_params): Update to changes.
12992         (mono_get_shared_generic_method): Remove.
12993         * metadata-internals.h (mono_get_shared_generic_method): Remove.
12994         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
12995         (inflate_generic_context): Likewise.
12996         (mono_class_inflate_generic_method_full): Likewise.
12997         (setup_generic_array_ifaces): Likewise.
12998         (mono_class_create_from_typespec): Likewise.
12999         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
13000         (method_encode_methodspec): Update callsite.
13001         (reflection_methodbuilder_to_mono_method): Update to changes.
13002         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
13003         MonoGenericContext as the key to the hashtable.
13004         (inflate_mono_method): Update to changes.
13005
13006         * class-internals.h (MonoGenericMethod::container): Remove.
13007         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
13008
13009 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13010
13011         * profiler-private.h, profiler.c, profiler.h: added API to profile
13012         exception events.
13013
13014 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
13015
13016         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
13017
13018 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
13019
13020         * verify.c: method invocation is now validated, now we verify parameter types on stack.
13021         Fixed overflow and underflow not aborting the verification process.
13022
13023 2007-06-13  Mark Probst  <mark.probst@gmail.com>
13024
13025         * class-internals.h (MonoStats): Added stats entries for dynamic
13026         code allocations.
13027
13028 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
13029
13030         * loader.c (mono_free_method): Free header->locals and header->clauses.
13031
13032         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
13033         dynamic case.
13034
13035         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
13036
13037         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
13038
13039 2007-06-12  Raja R Harinath  <rharinath@novell.com>
13040
13041         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
13042         the tables.
13043
13044 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
13045
13046         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
13047
13048 2007-06-11  Raja R Harinath  <harinath@gmail.com>
13049
13050         MonoGenericMethod on a diet
13051         * class-internals.h (_MonoMethodInflated::reflection_info): Move
13052         here ...
13053         (_MonoGenericMethod::reflection_info): ... from here.
13054         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
13055         Update to changes.
13056         * reflection.c (inflate_mono_method): Likewise.
13057         (mono_reflection_bind_generic_method_parameters): Likewise.
13058
13059 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
13060
13061         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
13062         *verify.c: factored long ldarg forms to share code with short forms
13063
13064 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
13065
13066         *verify.c: fixed code formating factored some duplicate code
13067         into a new function
13068
13069         *verify.h: fixed binary incompatibility introduced earlier
13070
13071         *pedump.c: fixed formating
13072
13073 2007-06-11  Raja R Harinath  <harinath@gmail.com>
13074
13075         Fix assertion when disassembling Mono.C5.dll
13076         * loader.c (method_from_methodspec): Avoid inflating a method
13077         twice with the same context.  If the methodref is inflated, use
13078         the declaring method instead.
13079
13080         * class.c (mono_class_from_generic_parameter): Fix case similar to
13081         bug #81830 handled below, but for method containers.
13082
13083 2007-06-10  Raja R Harinath  <harinath@gmail.com>
13084
13085         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
13086         get_shared_generic_class.  Directly inflate the instance.
13087         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
13088         (inflate_generic_class): Delete.
13089         (get_shared_generic_class): Delete.  Move setting of
13090         'cached_class' and 'cached_context' ...
13091         * metadata.c (mono_metadata_lookup_generic_class): ... here.
13092
13093         * metadata.c (mono_metadata_lookup_generic_class): Change
13094         signature to take the components of a MonoGenericClass rather than
13095         an allocated MonoGenericClass.  Change semantics to be intern-like.
13096         * reflection.c (mono_class_bind_generic_parameters): Update to
13097         changes.  Make locking region tighter.
13098         * class.c (inflate_generic_class): Update to changes.
13099         (get_shared_generic_class): Likewise.
13100         * metadata-internals.h: Likewise.
13101
13102         * reflection.c (mono_class_bind_generic_parameters): Take and
13103         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
13104         (mono_reflection_bind_generic_parameters): Use
13105         'mono_class_bind_generic_parameters' rather than duplicate the code.
13106         * class.c (mono_bounded_array_class_get): Update to changes.
13107         * object-internals.h: Likewise.
13108
13109         * reflection.c (mono_class_bind_generic_parameters): Only support
13110         parameterizing generic type definitions.  Remove support for other
13111         open types.
13112
13113 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
13114
13115         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
13116
13117         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
13118         in the dynamic case.
13119
13120 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
13121
13122         * threads.c: When cleaning up thread, reset the Background bit.
13123         Fixes bug #81720.
13124
13125 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
13126
13127        * metadata.c: Move variable declarations to top of scope.
13128        * verify.c: Move variable declarations to top of scope.
13129
13130        Code is contributed under MIT/X11 license.
13131
13132 2007-06-08  Raja R Harinath  <rharinath@novell.com>
13133
13134         * reflection.c (mono_class_bind_generic_parameters): Replace
13135         open-coded loop with mono_metadata_inflate_generic_inst.
13136
13137         * class.c (get_shared_generic_class): Don't call
13138         mono_get_shared_generic_inst.  Use the container's own
13139         'class_inst'.
13140
13141         * metadata.c (mono_metadata_load_generic_params): Move
13142         initialization of 'context' field here from ...
13143         * class.c (mono_class_create_from_typedef): ... here, and ...
13144         * loader.c (mono_get_method_from_token): ... here.
13145
13146         * class.c (get_shared_generic_class): Rename from
13147         mono_get_shared_generic_class and make static.
13148         (mono_get_shared_generic_inst): Move to metadata.c.
13149         * loader.c (mono_get_shared_generic_method): Likewise.
13150         * class-internals.h, metadata-internals.h: Update to changes.
13151
13152         Fix #81830
13153         * class.c (mono_class_from_generic_parameter): Don't assume a
13154         generic container owner exists.  Generic containers from monodis
13155         don't have any.
13156
13157 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
13158
13159         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
13160         * verify.h: new typedefs to returns the non-verifiable status
13161         * verify.c: initial implementation of generics, stack merging and object compatibility check
13162
13163 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13164
13165         * class.c, image.c, class-internals.h (MonoImage): class_cache is
13166         a MonoInternalHashTable again (fixed bug in internal hash table
13167         code).
13168
13169 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13170
13171         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
13172         MonoInternalHashTable again (fixed bug in internal hash table
13173         code).
13174
13175 2007-06-06  Mark Probst  <mark.probst@gmail.com>
13176
13177         * class.c, image.c, class-internals.h, domain.c,
13178         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
13179         changes.  Have to figure out what makes them break the SWF
13180         regression.
13181
13182 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13183
13184         * class.c, image.c, class-internals.h (MonoImage): class_cache is
13185         a MonoInternalHashTable now.
13186
13187 2007-06-04  Mark Probst  <mark.probst@gmail.com>
13188
13189         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
13190         MonoInternalHashTable now.
13191
13192 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
13193
13194         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
13195         invoke_impl code.
13196
13197         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
13198
13199         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
13200         dependent trampoline.
13201
13202         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
13203
13204         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
13205
13206 2007-05-29  Robert Jordan  <robertj@gmx.net>
13207
13208         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
13209
13210 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
13211
13212         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
13213
13214 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
13215
13216        * marshal.c: Fix interface lookup loops for
13217        cominterop_get_com_slot_for_method and 
13218        cominterop_get_method_interface. Only need to lookup
13219        if type is a class, else use interface type method is on.
13220
13221        Code is contributed under MIT/X11 license.
13222
13223 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
13224
13225         * reflection.c: HasSecurity can be present even if no specially 
13226         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
13227         SecurityAttribute). Fix CAS regression tests on buildbot.
13228
13229 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
13230
13231        * appdomain.c: Add configure checks for header files.
13232        * image.c: Add configure checks for header files.
13233        * file-io.c: Add configure checks for header files.
13234        * debug-mono-symfile.c: Add configure checks for header files.
13235        * threadpool.c: Add configure checks for header files.
13236        * console-io.c: Add configure checks for header files.
13237        * profiler.c: Add configure checks for header files.
13238        * rawbuffer.c: Add configure checks for header files.
13239        * icall.c: Add configure checks for header files.
13240        * rand.c: Add configure checks for header files.
13241        * socket-io.c: Add configure checks for header files.
13242
13243        Code is contributed under MIT/X11 license.
13244
13245 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
13246
13247         * reflection.c (mono_custom_attrs_from_builders): Remove the 
13248         assertion as it breaks the build.
13249         
13250         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
13251
13252         * reflection.c (lookup_custom_attr): Make a copy here too.
13253
13254         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
13255         dynamic images.
13256
13257         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
13258         images.
13259
13260         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
13261         info.
13262
13263 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
13264
13265         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
13266         (load_cattr_value): Ditto.
13267
13268 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
13269
13270         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
13271
13272 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
13273
13274         * threads.c: In "start_wrapper", set apartment_state to MTA if
13275         apartment_state is Unknown and we're running on 2.0 profile or
13276         higher.
13277         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
13278         to main method, then set apartment_state to Unknown on 1.0 profile,
13279         and MTA on 2.0 profile.
13280
13281 2007-05-16  Jb Evain  <jb@nurv.fr>
13282
13283         * class-internals.h (MonoDefaults): Add an attribute_class and
13284           customattribute_data_class.
13285         * domain.c (mono_init_internal): Populate them.
13286         * reflection.c: Use them to remove duplicates. Make a vew
13287         MonoClass variables `static'.
13288
13289 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
13290
13291         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
13292         step in implementing IMT, so that all isinst checks now can go
13293         through the bitmap.
13294         This was needed because vtables for TransparentProxy need to look
13295         like the vtable of the "target" class, so they need to point to
13296         its interface bitmap directly.
13297
13298         * object.c: inside "mono_class_create_runtime_vtable" and
13299         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
13300
13301 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
13302
13303         * object-internals.h
13304           culture-info.h : added territory field in MonoCulture and
13305           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
13306         * locales.c : fill territory field above too.
13307         * culture-info-table.h : regenerated.
13308
13309 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
13310
13311         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
13312         Fixes #81599.
13313
13314 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
13315
13316         * object.c: Always initialize apartment, even if 
13317         there is no custom attributes on entry point.
13318         
13319         Code is contributed under MIT/X11 license.
13320
13321 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
13322
13323         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
13324         * metadata.c: If no encoding is set, check for unicode
13325         on class.
13326         
13327         Code is contributed under MIT/X11 license.
13328
13329 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
13330
13331         * threads.c: Handle if mono_thread_current returns NULL 
13332         
13333         Code is contributed under MIT/X11 license.
13334
13335 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
13336
13337         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
13338         in start_wrapper. Added mono_thread_init_apartment_state and
13339         mono_thread_cleanup_apartment_state.
13340         * object.c: Initialize thread apartment state on main thread
13341         by checking for STAThreadAttribute on entry point.
13342         * object-internals.h: Add apartment_state field to MonoThread.
13343         * threads-types.h: Add unmanaged definition of 
13344         System.Threading.ApartmentState, MonoThreadApartmentState.
13345         
13346         Code is contributed under MIT/X11 license.
13347         
13348 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
13349
13350         * class.c: Fix windows build.
13351         * class-internals.h: Fix windows build.
13352         
13353         Code is contributed under MIT/X11 license.
13354
13355 2007-05-08  Robert Jordan  <robertj@gmx.net>
13356
13357         * process.c (CreateProcess_internal):
13358         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
13359         .CreateNoWindow was specified. Fixes #81496.
13360
13361 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13362
13363         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
13364         step in implementing IMT, replaced it with two compact arrays
13365         (interfaces_packed and interface_offsets_packed) and a bitmap that
13366         is used for isinst checks (interface_bitmap).
13367
13368         * class.c: (compare_interface_ids): compare function to pass to
13369         bsearch when looking for an interface with a given id.
13370         (mono_class_interface_offset): reimplemented using bsearch on
13371         interfaces_packed, getting the offset from interface_offsets_packed.
13372         (print_implemented_interfaces): utility debugging function.
13373         (setup_interface_offsets): reworked to initialize interfaces_packed,
13374         interface_offsets_packed and interface_bitmap.
13375
13376         * object.c: replaced all accesses to "MonoClass.interface_offsets"
13377         with uses of interfaces_packed and interface_offsets_packed.
13378
13379 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
13380
13381         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
13382         mono_class_interface_offset prototype to wrap all accesses to
13383         "MonoClass.interface_offsets".
13384
13385         * class.c: Implemented mono_class_interface_offset, and wrapped all
13386         accesses to "MonoClass.interface_offsets".
13387
13388         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
13389         "MonoClass.interface_offsets".
13390
13391 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
13392
13393         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
13394         GetMethodFromHandle overloads (bug #78637).
13395
13396 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
13397
13398         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
13399         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
13400
13401 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
13402
13403         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
13404         #81498.
13405
13406         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
13407         gracefully.
13408         (mono_custom_attrs_from_index): Ditto.
13409
13410         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
13411         Fixes #81501.
13412
13413 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
13414
13415         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
13416         is now allocated from a mempool.
13417
13418 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
13419
13420         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
13421         caller holds threads_lock, leading to deadlocks. Fixes #81476.
13422
13423 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
13424
13425         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
13426         mono_loader_clear_error () too late. Fixes #81463.
13427
13428 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
13429
13430         * culture-info-table.h : regenerated.
13431
13432 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
13433
13434         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
13435         is missing.
13436
13437 2007-04-25  Dick Porter  <dick@ximian.com>
13438
13439         * Makefile.am: Put the mingw enforced-optimisation back into the
13440         PLATFORM_WIN32 section.
13441
13442 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
13443
13444         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
13445         patch.
13446
13447         * image.c (mono_image_load_module): New API function to load a module reference.
13448
13449         * image.c (load_modules): Load modules lazily. Fixes #80812.
13450
13451         * class.c (mono_class_from_typeref): Use mono_image_load_module.
13452         
13453         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
13454
13455         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
13456         to mono_image_load_module_dynamic.
13457
13458 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
13459
13460         * marshal.c: Fix calling convention for CCW on non-windows
13461         platforms. STDCALL on windows, CDECL everywhere else to work 
13462         with XPCOM and MainWin COM.
13463         
13464         Code is contributed under MIT/X11 license.
13465
13466 2007-04-23  Martin Baulig  <martin@ximian.com>
13467
13468         Fix #80969.
13469
13470         * loader.c
13471         (method_from_memberref): Added `gboolean *used_context' argument.
13472         (mono_get_method_from_token): Likewise.
13473         (mono_get_method_full): Don't insert the method in the cache when
13474         `used_context' is true.
13475
13476 2007-04-23  Raja R Harinath  <rharinath@novell.com>
13477
13478         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
13479
13480         * reflection.c (mono_reflection_bind_generic_parameters): Don't
13481         create new MonoTypes for returned types.
13482         * class.c (mono_generic_class_get_class): Export mono-internal.
13483         * class-internals.h: Update to changes.
13484
13485 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
13486
13487         * threadpool.c, threadpool.h, icall-def.h: patch from
13488         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
13489
13490 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
13491
13492         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
13493         
13494         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
13495
13496         * threads.c (mono_thread_get_stack_bounds): New helper function.
13497
13498         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
13499         Correctly compute stack bounds when attaching. Fixes #81394.
13500
13501 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
13502
13503         * reflection.c: fix handling of doubles in custom attributes
13504         for the arm-fpa format (bug #81368).
13505
13506 2007-04-18  Raja R Harinath  <rharinath@novell.com>
13507
13508         * reflection.c (assembly_add_win32_resources): Mildly relax an
13509         bounds check to let the end pointer point just past the end of the
13510         allocated buffer.  (may fix #81384)
13511
13512 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
13513
13514         * culture-info-table.h : regenerated.
13515
13516 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
13517
13518         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
13519         the thread is aborted early.
13520
13521 2007-04-05  Dick Porter  <dick@ximian.com>
13522
13523         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
13524         FindFirstFile()/FindNextFile() to find entries.  This lets the
13525         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
13526         81038.
13527
13528         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
13529         the parameters of
13530         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
13531
13532 2007-04-04  Martin Baulig  <martin@ximian.com>
13533
13534         * debug-helpers.c
13535         (mono_method_desc_full_match): Add support for nested classes.
13536
13537 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
13538
13539         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
13540
13541 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
13542
13543         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
13544         waiting for too many threads.
13545
13546 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
13547
13548         * environment.c: Fix return value check on uname so we can get the 
13549         executing version on Solaris operating systems.
13550
13551 2007-03-28  Jb Evain  <jbevain@gmail.com>
13552
13553         * class.c (mono_type_get_name_recurse): Complete the
13554         fix for the creation of assembly qualified names for
13555         pointer types. Fixes #81208.
13556
13557 2007-03-27  Dick Porter  <dick@ximian.com>
13558
13559         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
13560         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
13561         changed.
13562
13563         * threads.c
13564         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
13565         the value of ReleaseMutex().
13566
13567 2007-03-27  Dick Porter  <dick@ximian.com>
13568
13569         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
13570         in little-endian order, not network endian, so must be converted
13571         to host endian here.  Fixes bug 80593.
13572
13573 2007-03-22  Jb Evain  <jbevain@gmail.com>
13574
13575         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
13576         qualified names for pointer types. Fixes #81208.
13577
13578 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
13579
13580         * marshal.c: Add support for PreserveSigAttribute. 
13581         
13582         Code is contributed under MIT/X11 license.
13583
13584 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
13585
13586         * process.c: Fix endianness issues. Fixes #81126.
13587
13588         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
13589         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
13590
13591         * image.c (mono_image_lookup_resource): Make this work on big-endian
13592         machines.Change API contract so the caller needs to free the return value.
13593         
13594         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
13595         API change.
13596         
13597 2007-03-14  Martin Baulig  <martin@ximian.com>
13598
13599         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
13600         mono_type_get_desc() as well.
13601
13602 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
13603
13604         * icall.c:  Fix environ access in VS.  
13605         
13606 2007-03-13  Alp Toker  <alp@atoker.com>
13607
13608         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
13609         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
13610         #63841.
13611
13612 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
13613
13614         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
13615         circular references among dynamic methods. Fixes #81091.
13616
13617         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
13618
13619 2007-03-09  Martin Baulig  <martin@ximian.com>
13620
13621         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
13622
13623 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
13624
13625         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
13626         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
13627         
13628         Code is contributed under MIT/X11 license.
13629         
13630 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
13631
13632         * loader.c: Reapply patch for bug #79424.
13633
13634 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13635
13636         * metadata.c (mono_type_to_unmanaged): Only convert object to
13637         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
13638
13639 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
13640
13641         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
13642         (and incorrectly set) is_reference field from MonoGenericInst.
13643
13644 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
13645
13646         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
13647         a little earlier.
13648
13649         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
13650
13651         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
13652
13653 2007-03-05  Miguel de Icaza  <miguel@novell.com>
13654
13655         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
13656         FileOptions.1 value to mean "temporary", map that to
13657         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
13658
13659         Fixes 80688
13660
13661 2007-03-03  Marek Habersack  <mhabersack@novell.com>
13662
13663         * appdomain.c: implement MS .Net style shadow copying. Copies of
13664         the assemblies are made in a subdirectory of the dynamic base
13665         directory, the assembly names are preserved.
13666         Copy .mdb and .config files along with the assemblies being shadowed.
13667
13668 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
13669
13670         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
13671         (emit_marshal_handleref): Ditto.
13672
13673         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
13674         on Visual C++. Fixes #80671.
13675
13676 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
13677
13678         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
13679         for clone operations.
13680
13681 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
13682
13683         * marshal.c: Fix warnings.
13684
13685 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
13686
13687         * loader.c: allow case-insensitive matching of the dll name
13688         in dllmap handling when prefixed with "i:".
13689
13690 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
13691
13692         * threads.c: Fix #ifdef for dummy_apc function for VS.
13693
13694 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
13695
13696         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
13697
13698 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
13699         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
13700         giving precedence to the methods with a fully qualified name
13701         (InterfaceName.MethodName) when building the interface sections
13702         of the vtable.
13703
13704 2007-02-16  Dick Porter  <dick@ximian.com>
13705
13706         * threadpool.c (append_job): Fix fast-path array handling, so it's
13707         less likely the array will grow exponentially when the load is
13708         heavy.
13709
13710 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13711
13712         * metadata-internals.h, loader.c: fix dllmap lookup order
13713         for non-function maps, too, and prepare for fallback code.
13714
13715 2007-02-12  Robert Jordan  <robertj@gmx.net>
13716
13717         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
13718         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
13719         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
13720         GlobalFree. Fixes a part of bug #77075.
13721
13722 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
13723
13724         * loader.c: implemented typedef parent in field memberref.
13725
13726 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
13727
13728         * marshal.c: Fix warnings and remember to call Release on
13729         IUnknown of RCW.
13730         
13731         Code is contributed under MIT/X11 license.
13732
13733 2007-02-10  Miguel de Icaza  <miguel@novell.com>
13734
13735         * class-internals.h: Add MonoHandleRef definition, and
13736         handleref_class to mono_defaults. 
13737
13738         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
13739         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
13740
13741         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
13742         (do nothing on this stage)
13743         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
13744         (emit_marshal_handleref): New method, used for argument handling
13745         of HandleRefs. 
13746
13747 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
13748
13749         * class.c (mono_class_setup_parent): Lazily init com types.
13750         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
13751         init com types.
13752         * object.c (mono_remote_class_vtable): Lazily init com types.
13753         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
13754         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
13755         * domain-internals.h: Expose mono_init_com_types.
13756         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
13757         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
13758         Add support for COM Callable Wrapper marshalling.
13759         * marshal.h: Add icall definitions.
13760         * gc.c: Handle freeing of CCWs in finalizer code.
13761         
13762         Code is contributed under MIT/X11 license.
13763
13764 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
13765
13766         * reflection.c: changed all the signature encoding code to use
13767         a variable-sized buffer.
13768
13769 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13770
13771         * marshal.c: locking fixes: never take the loader lock
13772         or other runtime locks when holding the marshal lock
13773         (fixes bug#80664).
13774
13775 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
13776
13777         * marshal.c: make the delegate function pointer mapping
13778         work for the moving GC.
13779
13780 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
13781
13782         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
13783         for bug #80618.
13784
13785 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13786
13787         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
13788         gmodule.
13789
13790 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
13791
13792         * threadpool.c: made the code moving-GC safe.
13793
13794 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
13795
13796         * assembly.c, boehm-gc.c, class-internals.h, class.c,
13797         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
13798         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
13799         warning cleanup.
13800         * reflection.c: warning cleanup, some threading and moving GC fixes.
13801
13802 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
13803
13804         * class.c, loader.c: create the needed Set/Get/Address array methods
13805         as well as the .ctors in mono_class_init (), fixes bug #80567.
13806
13807 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
13808
13809         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
13810         we doesn't decrease its alignment. Should fix the sparc build.
13811
13812 2007-01-24  Dick Porter  <dick@ximian.com>
13813
13814         * socket-io.c
13815         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
13816         Create the returned object if we need to ignore an unsupported
13817         socket option.  Fixes a segfault reported by Atsushi.
13818
13819 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13820
13821         * class.c, object.c: restrict GC-tracked fields to
13822         UIntPtr fields used inside corlib, so we provide better
13823         type info to the GC and also allow broken packing as in
13824         bug #80580.
13825
13826 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
13827
13828         * sgen-gc.c: removed duplicated function.
13829
13830 2007-01-19  Miguel de Icaza  <miguel@novell.com>
13831
13832         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
13833         value that means that the value is not supported, but that we
13834         should not return a failure, but instead report this as a
13835         successful operation.
13836
13837 2007-01-19  Raja R Harinath  <rharinath@novell.com>
13838
13839         Fix tests/bug79956.2.il
13840         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
13841         (mono_generic_class_get_class): If the generic definition in an
13842         enum, copy over other fields related to it.
13843
13844 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
13845
13846         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
13847         genericinst enums (bug #79215).
13848
13849 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
13850         * class.c: Fix bug 80307.
13851
13852 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
13853
13854         * image.c: if the file table is not present, try to load
13855         all the modules, since we don't have info about them
13856         having or not metadata (bug #80517).
13857         * assembly.c: allow mono_assembly_load_references () to
13858         work for netmodules.
13859
13860 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13861
13862         * image.c, metadata-internals.h, object.c: execute module
13863         cctors when running on the 2 runtime if present (bug #80487).
13864
13865 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
13866
13867         * icall.c: optimized InitializeArray() on bigendian.
13868
13869 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
13870
13871         * icall.c: fix for the broken ARM FPA double format.
13872
13873 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
13874
13875         * icall.c: handle endian issues for r4 and r8 types, too, in
13876         the InitializeArray() icall.
13877
13878 2007-01-15  Miguel de Icaza  <miguel@novell.com>
13879
13880         * loader.c (mono_loader_error_prepare_exception): Clear the error
13881         once we have extracted the information from it, do this before we
13882         call into the JIT's class loading mechanisms.
13883
13884         * object.c (mono_class_create_runtime_vtable): Do not clear the
13885         loader error before calling mono_class_get_exception_for_failure
13886         as the loader error is needed inside
13887         mono_class_get_exception_for_failure to throw the error (thinko).
13888
13889         Fixes #80521
13890         
13891 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
13892
13893         * reflection.c: align fields rva data so it's faster to load at
13894         runtime.
13895
13896 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13897
13898         Prepare to simplify GenericMethod handling.
13899         * class-internals.h (mono_method_get_context): New accessor function.
13900         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
13901         rather than directly accessing '->context' field.
13902
13903         * class-internals.h (_MonoGenericParam.method): Move ...
13904         (_MonoGenericContainer): ... here.  Add into union with klass field.
13905         * class.c, icall.c, loader.c, metadata.c, reflection.c:
13906         Update to changes.
13907
13908 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
13909
13910         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
13911         the wrapper type enum and reduce relocations.
13912
13913 2007-01-12  Raja R Harinath  <rharinath@novell.com>
13914
13915         * reflection.c (inflate_mono_method): Reuse method instantiation
13916         from the generic method, if available.
13917
13918 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
13919
13920         * marshal.c (emit_marshal_variant): Fix conv_arg
13921         type in last commit, based on whether parameter is byref.
13922         
13923 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
13924
13925         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
13926         marshalling.
13927         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
13928         MONO_TYPE_OBJECT back for VARIANT support.
13929
13930 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
13931
13932         * marshal.c, marshal.h, icall-def.h: Implement 
13933         Marshal.ReAllocCoTaskMem.
13934
13935 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
13936
13937         * marshal.c: memory retention fixes: use the proper
13938         image cache for runtime_invoke method lookups.
13939
13940 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
13941
13942         * mempool.c: added code to help debug mempool allocations.
13943
13944 2007-01-11  Dick Porter  <dick@ximian.com>
13945
13946         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
13947         support (experimenting with faking it with IP_MTU_DISCOVER for
13948         systems that don't have IP_DONTFRAGMENT.)
13949         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
13950         icall.
13951
13952         * icall-def.h: new System.Net.Sockets.Disconnect icall.
13953
13954         * socket-io.h: Add new fields to MonoSocketAsyncResult
13955         corresponding to the new ones in Socket.cs.
13956
13957 2007-01-11  Raja R Harinath  <rharinath@novell.com>
13958
13959         Fix IronPython regression mentioned in #80249
13960         * metadata.c (do_mono_metadata_parse_generic_class): Clear
13961         'cached_context' field, since it may have been initialized as a
13962         side-effect of metadata parsing.
13963
13964         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
13965         (_MonoGenericClass.cached_class): Move here and rename from lone
13966         remaining field of ...
13967         (_MonoInflatedGenericClass): ... this.  Remove.
13968         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
13969         to changes.
13970
13971         Fix mcs/tests/test-128.cs regression.
13972         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
13973         2007-01-10 change below.
13974         [MONO_TYPE_OBJECT]: Recurse into array case.
13975
13976 2007-01-11  Raja R Harinath  <harinath@gmail.com>
13977
13978         * class-internals.h (mono_get_inflated_generic_class): Remove.
13979         * class.c (mono_get_inflated_generic_class): Remove.
13980         (mono_generic_class_get_class): Rename from
13981         mono_class_create_generic.
13982         (mono_class_from_mono_type) [GENERICINST]: Use it.
13983         * reflection.c, metadata.c: Update to changes.  Use
13984         'mono_class_from_mono_type'.
13985
13986 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
13987
13988         * reflection.c: use passed type when encoding an array element
13989         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
13990
13991 2007-01-09  Robert Jordan  <robertj@gmx.net>
13992
13993         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
13994         result arguments (someDelegate.EndInvoke (unrelatedAres)).
13995         Fixes bug #80392.
13996
13997 2007-01-09  Raja R Harinath  <rharinath@novell.com>
13998
13999         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
14000
14001         * object.c (set_value): Avoid aliasing between type->data.klass
14002         and type->data.generic_class.
14003
14004         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
14005
14006 2007-01-08  Raja R Harinath  <rharinath@novell.com>
14007
14008         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
14009         between type->data.klass and type->data.generic_class.
14010
14011 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
14012
14013         * marshal.c: In MS.NET, StringBuilder objects are not copied by
14014         value in out parameters.
14015
14016 2007-01-08  Raja R Harinath  <rharinath@novell.com>
14017
14018         Simplify invariant for MonoGenericClass::klass field.
14019         * class.c (mono_class_create_generic): Verify 'klass' is null.
14020         * metadata.c (do_mono_metadata_parse_generic_class): Don't
14021         initialize 'klass' field.
14022
14023 2007-01-05  Raja R Harinath  <rharinath@novell.com>
14024
14025         Ongoing work to avoid redundant data and simplify invariants.
14026         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
14027         'generic_class', and change type to a GenericInst.
14028         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
14029         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
14030
14031 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
14032
14033         * class.c : skip io-layer under PLATFORM_WIN32.
14034
14035 2007-01-03  Tor Lillqvist  <tml@novell.com>
14036
14037         Fix #80305: In a bundled executable, look in the bundled exe
14038         assembly to determine the runtime version. Add the possibility to
14039         bundle also the machine.config file.
14040         
14041         * assembly.c (mono_assembly_open_from_bundle): Make
14042         non-static. Allow being called even if we have no bundled
14043         assemblies, and return NULL right away in that case.
14044
14045         * domain-internals.h: Declare mono_assembly_open_from_bundle()
14046         here.
14047
14048         * domain.c (app_config_parse): Take an assembly exe file name as
14049         parameter instead of a config file name. Check for a bundled
14050         config file for that assembly by calling
14051         mono_config_string_for_assembly_file() (see below) before looking
14052         for one in the file system.
14053         (get_runtimes_from_exe): Corrsponding change to call of
14054         app_config_parse().
14055         (get_runtimes_from_exe): Check for bundled assembly exe file first
14056         by calling mono_assembly_open_from_bundle(). If no bundled
14057         assembly exe file is found, call mono_image_open() as before to
14058         look it up in the file system.
14059
14060         * mono-config.c: Add variable bundled_machinec_onfig.
14061         (mono_config_string_for_assembly_file): New function.
14062         (mono_config_for_assembly): Move code snippet that looks for a
14063         bundled assembly .config file into the above new function. Call
14064         it.
14065         (mono_register_machine_config, mono_get_machine_config): New
14066         functions to set and retrieve
14067
14068         * assembly.h: Declare mono_register_machine_config().
14069
14070         * mono-config.h: Declare mono_get_machine_config() and
14071         mono_config_string_for_assembly_file().
14072
14073         * icall.c: No declaration of environ necessary on Win32. It is
14074         declared (as a macro expanding to a function call) in stdlib.h.
14075         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
14076         New internal mono function. Returns the value of
14077         mono_get_machine_config() as a Mono string.
14078
14079         * icall-def.h: Add get_bundled_machine_config().
14080
14081 2007-01-04  Raja R Harinath  <rharinath@novell.com>
14082
14083         Remove redundant field
14084         * class-internals.h (_MonoGenericContext.container): Remove field.
14085         * loader.c (mono_method_get_signature_full): Don't parse a
14086         "container" for a signature parse when the signature is inflated
14087         immediately.
14088         (method_from_methodspec): Likewise, for a generic_inst.
14089         * class.c, metadata.c, reflection.c: Update to changes.
14090
14091 2006-01-04  Raja R Harinath  <rharinath@novell.com>
14092
14093         * class-internals.h (_MonoGenericClass): Rename 'context' field to
14094         'cached_context', and change semantics -- it starts off NULL, and
14095         is initialized on demand.
14096         * class.c (mono_generic_class_get_context): New accessor to
14097         replace 'context' field accesses.
14098         (mono_class_get_context): New helper.
14099         (*): Update to changes.
14100         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
14101
14102 2007-01-03  Miguel de Icaza  <miguel@novell.com>
14103
14104         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
14105         before the memcpy.   Fixes Marshal2 regression.
14106
14107 2007-01-02  Jb Evain  <jbevain@gmail.com>
14108
14109         * blob.h: add a MONO_TYPE_ENUM definition
14110         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
14111         fix the encoding of arrays of enums in custom attributes.
14112
14113         Fixes #79666.
14114
14115 2007-01-01  Miguel de Icaza  <miguel@novell.com>
14116
14117         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
14118         string is null terminated, but only cut the string short if it
14119         overflows the buffer.   
14120         
14121         (mono_string_to_byvalstr): Also fix this routine.   The code here
14122         was not properly terminating a string (it was only terminated
14123         because of the previous catch-all memset). 
14124
14125         I left the memset, because I do not know if applications expect
14126         the runtime to clear this region. 
14127
14128         Fixes #79944.
14129
14130         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
14131         Clear the error before returning to unmanaged code to prevent the
14132         runtime from being confused later on (fixes  80420).
14133         (ves_icall_type_from_name): Always call mono_loader_clear_error
14134         after parsing a type that could have failed.
14135         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
14136
14137         * loader.c (mono_loader_clear_error): Fix indentation.
14138
14139 2006-12-28  Martin Baulig  <martin@ximian.com>
14140
14141         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
14142
14143 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
14144
14145         * reflection.c: patch from Rolf Bjarne Kvinge to fix
14146         getting a token for an EnumBuilder.
14147
14148 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
14149
14150         * reflection.c: be more careful in case resource generation
14151         fails to create the data array.
14152
14153 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
14154
14155         * sgen-gc.c: write barrier for clone and fix unregister handles.
14156
14157 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
14158
14159         * reflection.c: some fixes needed in the generics code for the moving GC.
14160
14161 2006-12-22  Robert Jordan  <robertj@gmx.net>
14162
14163         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
14164         account. Fixes bug #80299.
14165
14166 2006-12-21  Raja R Harinath  <rharinath@novell.com>
14167
14168         Fix WaitHandle usage in delegates.
14169         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
14170         * object.c (mono_wait_handle_new): Use the property set method to
14171         initialize the handle.
14172         (mono_wait_handle_get_handle): New.
14173         * threadpool.c (mono_async_invoke): Use it.
14174         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
14175         Likewise.
14176         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
14177
14178 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
14179
14180         * marshal.c (emit_marshal): Call emit_marshal_variant and
14181         emit_marshal_com_interface when applicable.
14182         (emit_marshal_variant, emit_marshal_com_interface): Add
14183         methods for this case and remove if's from emit_marshal_object.
14184         
14185 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
14186
14187         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
14188
14189 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
14190
14191         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
14192         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
14193         and GlobalFree on Windows. Remove FIXME.
14194
14195 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
14196
14197         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
14198         implementation for managed objects.
14199
14200 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
14201
14202         * object.c: implemented code to be used for checking
14203         that no reference field overlaps with non-references.
14204
14205 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14206
14207         * threadpool.c: fix queue code to be compatible with the
14208         moving GC.
14209
14210 2006-12-18  Miguel de Icaza  <miguel@novell.com>
14211
14212         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
14213         in structures by throwing ArgumentNullException.
14214
14215         (emit_marshal_safehandle): Also when they are null parameters.
14216
14217         (emit_marshal_safehandle): Add support for ref
14218         SafeHandles parameters
14219
14220 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
14221
14222         * profiler.c: updated to use the mono-dl API instead of
14223         gmodule.
14224
14225 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14226
14227         * profiler.c: updated to use the mono-dl dynamic loading
14228         API instead of gmodule.
14229
14230 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
14231
14232         * profiler.c: use readlink, older versions of glib don't have
14233         g_file_read_link ().
14234
14235 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14236
14237         * profiler.c: try to detect the path to mono if libc fails to provide
14238         a useful name (bug #80286).
14239
14240 2006-12-16  Raja R Harinath  <rharinath@novell.com>
14241
14242         Fix #80242
14243         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
14244         instance, use the generic type definition instead.
14245         (ves_icall_Type_GetNestedTypes): Likewise.
14246         * class.c (mono_class_create_generic): Always set the
14247         nested_classes of a generic instance to NULL, even if the generic
14248         type definition has nested types.
14249
14250 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
14251
14252         * marshal.c (mono_string_from_bstr): Revert previous Windows change
14253         and fix on Linux.
14254         
14255 2006-12-15  Miguel de Icaza  <miguel@novell.com>
14256
14257         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
14258         my arguments were in the wrong order.   I also fixed the Windows
14259         version which seems to have had the same issue.
14260
14261         (mono_free_bstr): On Unix, this is g_free.
14262         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
14263         conversions (for the tests in corlib to pass).
14264
14265 2006-12-14  Miguel de Icaza  <miguel@novell.com>
14266
14267         * marshal.c (emit_ptr_to_object_conv): For now, ignore
14268         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
14269         exception if a ref SafeHandle in a struct has changed).
14270         
14271         (emit_struct_conv): Do not perform layout checks for classes
14272         derived from SafeHandle, as those are specially handled. 
14273
14274         (emit_object_to_ptr_conv): Add support for
14275         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
14276
14277         (emit_marshal_safehandle): Implement conversion of return values
14278         of safehandles (MARSHAL_ACTION_CONV_RESULT).
14279         
14280         * threads.c: WaitHandle now is compiled with two different handles
14281         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
14282         for 2.0.
14283         
14284         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
14285         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
14286         these routines to cope with both kinds of fields.
14287
14288 2006-12-12  Miguel de Icaza  <miguel@novell.com>
14289
14290         * metadata.c (mono_type_to_unmanaged): Handle the case where
14291         type->data.klass is a SafeHandle, and in that case, return the
14292         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
14293         MONO_MARSHAL_CONV_SAFEHANDLE. 
14294
14295 2006-12-11  Miguel de Icaza  <miguel@novell.com>
14296
14297         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
14298         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
14299         calling emit_marshal_object.
14300
14301         (emit_marshal_safehandle): Implement marshalling of
14302         SafeHandle parameters (no ref support yet).
14303
14304         (MarshalAction): Document the defines as I implement
14305         them for SafeHandle.
14306
14307         (emit_marshal_object): indentation police.
14308
14309         * class-internals.h: Define MonoSafeHandle.
14310         Add safehandle_class to MonoDefaults type.
14311
14312         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
14313         list of classes to check for fields. 
14314
14315         * domain.c (mono_init_internal): Add SafeHandle to the list of
14316         mono_defaults loaded.
14317
14318 2006-12-15  Raja R Harinath  <rharinath@novell.com>
14319
14320         Fix #80253
14321         * reflection.c (mono_reflection_bind_generic_parameters): If the
14322         generic type definition is a type builder, ensure that it is fully
14323         initialized before instantiating it.  Kill some dead code.
14324
14325 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
14326
14327         * object.c: clear the loader_error () before loading
14328         more metadata stuff (bug #80258).
14329
14330 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
14331
14332         * icall.c, icall-defs.h: type modifiers icalls for
14333         parameters and properties.
14334
14335 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
14336
14337         * object.c, icall.c: fixed warnings.
14338
14339 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
14340
14341         * marshal.c: fixed a couple of leaks and coding style in a few places.
14342
14343 2006-12-08  Dick Porter  <dick@ximian.com>
14344
14345         * process.c: Cope with NULL ProcessStartInfo arguments on windows
14346         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
14347         80173.
14348
14349 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
14350
14351         * process.c: ProcessStartInfo may have only filename set and
14352         arguments can be NULL.
14353
14354 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
14355
14356         * icall.c: fix leak found by Robert Jordan.
14357
14358 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
14359
14360         * marshal.c, marshal.h: generate managed method to access an element
14361         of a multi-dimensional array.
14362
14363 2006-11-30  Paolo Molaro (lupus@ximian.com)
14364
14365         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
14366
14367 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
14368
14369         * icall.c: back out GetFields () fix until the serialization code is
14370         fixed to not depend on the incorrect behaviour.
14371
14372 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
14373
14374         * profiler.c: provide defaults if none are set.
14375
14376 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
14377
14378         * Makefile.am, attrdefs.h: new public header file with
14379         constants for attributes for use by embedders.
14380
14381 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
14382
14383         * icall.c: GetFields () fix for bug #80064.
14384
14385 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
14386
14387         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
14388         removed long unused icalls.
14389
14390 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
14391   
14392         * marshal.c: 
14393                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
14394                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
14395                 can be generated without a delegate class.
14396                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
14397         
14398         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
14399
14400 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14401
14402         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
14403         #80069.
14404
14405 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
14406
14407         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
14408         icall-def.h: added icalls needed by System.GC.
14409
14410 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
14411
14412         * loader.c: ensure the class in catch clauses is handled
14413         correctly for generics methods (fixes bug#79980).
14414
14415 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
14416
14417         * monitor.h, monitor.c: added mono_locks_dump () function
14418         to help debug deadlocks involving managed locks.
14419
14420 2006-11-13  Dick Porter  <dick@ximian.com>
14421
14422         * file-io.c (get_file_attributes): If the file is a symlink try
14423         and get the stat data for the target, but also add the
14424         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
14425         the specs for the windows symlink support, but will probably have
14426         to be reworked when I have test data from a vista machine.  Fixes
14427         bug 79887.
14428
14429 2006-11-13  Dick Porter  <dick@ximian.com>
14430
14431         * gc.c (mono_domain_finalize): 
14432         * marshal.c (mono_delegate_begin_invoke): 
14433         * threadpool.c (socket_io_init, mono_thread_pool_init)
14434         (mono_thread_pool_finish): 
14435         * monitor.c (mono_monitor_try_enter_internal): 
14436         * threads.c (mono_thread_resume, mono_thread_init)
14437         (mono_thread_suspend_all_other_threads)
14438         (mono_thread_execute_interruption): 
14439         * appdomain.c (mono_domain_unload): Check for NULL error returns
14440         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
14441         75733.
14442
14443 2006-11-11  Miguel de Icaza  <miguel@novell.com>
14444
14445         * process.c
14446         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
14447         Only close the handle if the value of the handle is not
14448         INVALID_HANDLE_VALUE.  This just makes the process a bit more
14449         robust.
14450
14451         Improvement for #75733, so that we do not run into this problem. 
14452
14453         
14454         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
14455         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
14456         internal variables.  Fixes #79462 
14457         
14458
14459 2006-11-09  Dick Porter  <dick@ximian.com>
14460
14461         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
14462         Use poll() not select().  Fixes bug 79397.
14463
14464 2006-11-09  Raja R Harinath  <rharinath@novell.com>
14465
14466         Fix #79872
14467         * assembly.c (mono_assembly_load_from_full): Check that the given
14468         image has an assembly manifest.
14469
14470 2006-11-09  Ankit Jain  <jankit@novell.com>
14471
14472         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
14473         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
14474         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
14475
14476 2006-11-07  Dick Porter  <dick@ximian.com>
14477
14478         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
14479         Put the old resolver behaviour back for pre-2.0 profiles.
14480
14481 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
14482
14483         * threadpool.c: precise GC and locking fixes.
14484
14485 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
14486
14487         * class.c: don't load types that have an explicit unaligned
14488         managed reference. Provide better info in the TypeLoad exception.
14489         Part of the fix for bug #79744.
14490         * object.c: use the correct check for class type load issues.
14491
14492 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
14493
14494         * class.c: enforce alignment of fields with managed references
14495         even when Pack=1 is forced by the user (bug #77788).
14496
14497 2006-11-03  Dick Porter  <dick@ximian.com>
14498
14499         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
14500         If the address reverse lookup fails, return it as the hostname
14501         anyway.  Fixes bug 79721.
14502
14503 2006-11-03  Dick Porter  <dick@ximian.com>
14504
14505         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
14506         Fix build on Windows.
14507
14508 2006-11-02  Dick Porter  <dick@ximian.com>
14509
14510         * icall-def.h: 
14511         * object-internals.h: 
14512         * exception.c (mono_get_exception_thread_interrupted): 
14513         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
14514         Fixes bug 74525.
14515
14516         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
14517         Check for pending Thread.Interrupt.
14518
14519 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
14520         * loader.c: Fixed bug 79684.
14521
14522 2006-10-27  Dick Porter  <dick@ximian.com>
14523
14524         * file-io.c (get_file_attributes): Force symlinks to directories
14525         to be returned as a regular file.  Fixes bug 79733.
14526 2006-10-26  Dick Porter  <dick@ximian.com>
14527
14528         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
14529         CreateFile to open a directory then we need to set the
14530         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
14531
14532 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
14533
14534         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
14535         friends.
14536
14537 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
14538
14539         * sgengc.c: small cleanup of timer code.
14540
14541 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
14542
14543         * sgen-gc.c: fix some warnings and start adding support for
14544         complete object removal on domain unload.
14545
14546 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
14547
14548         * assembly.c: build_assembly_name should not consider a version
14549         number without build or revision number invalid. Fixes bug #79715.
14550
14551 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
14552
14553         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
14554         call kernel32 function OutputDebugString directly.
14555         
14556         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
14557         
14558 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
14559
14560         * reflection.c: small cleanup, using a function to insert a MonoString
14561         in the string heap.
14562
14563 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
14564
14565         * reflection.c: moving GC fixes.
14566
14567 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
14568
14569         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
14570         all the objects with finalizers belonging to an unloading appdomain.
14571
14572 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
14573
14574         * sgen-gc.c: added ability to allocate even when the nursery is fully
14575         pinned and fixed a couple of bugs.
14576
14577 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14578
14579         * threads.h: Revert the last change for now.
14580
14581         * threads.h (mono_thread_get_pending_exception): Rename this to
14582         mono_thread_get_undeniable_exception ().
14583
14584 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
14585
14586         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
14587         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
14588         when fname does not refer to valid assembly. This result in a more
14589         meaningful error message.
14590         * exception.c: added mono_get_exception_bad_image_format2 which 
14591         constructs a BadImageFormatException using the ctor taking a custom
14592         message and the file name. Passing in a NULL msg results in a default
14593         message.
14594         * exception.h: define mono_get_exception_bad_image_format2 function.
14595         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
14596         when file name pointed to an invalid IL image. Use 
14597         mono_get_exception_file_not_found2 to construct FileNotFoundException,
14598         as this results in a more meaningful error message.
14599
14600 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
14601
14602         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
14603         #79465.
14604
14605 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
14606
14607         * metadata.c (mono_type_size): Change the align parameter to guint32 for
14608         consistency with the other _size functions.
14609         (mono_type_stack_size): Ditto.
14610
14611         * class.c object.c icall.c: Fix warnings caused by the above change.
14612
14613         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
14614
14615         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
14616
14617         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
14618
14619 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
14620
14621         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
14622         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
14623         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
14624         threadpool.h, threads-types.h: mark more internal functions.
14625
14626 2006-10-11  Dick Porter  <dick@ximian.com>
14627
14628         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
14629         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
14630         reproduce the bug even before applying the fix.)
14631
14632 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
14633
14634         * reflection.c: allow retrieving attributes for arguments in generic
14635         methods (bug #79241).
14636
14637 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
14638
14639         * debug-mono-symfile.c: properly check fopen () result (found by
14640         coverity).
14641
14642 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
14643
14644         * reflection.c: make error message clearer and fixed two
14645         issuelets found by Coverity.
14646
14647 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
14648
14649         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
14650
14651 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
14652
14653         * object-internals.h, gc-internal.h, profiler-private.h:
14654         mark internal functions.
14655
14656 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
14657
14658         * reflection.c: put data in the text section.
14659         * icall.c: recognize more types in type_from_typename ().
14660         * process.c, marshal.c: added some GC FIXMEs.
14661
14662 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14663
14664         * loader.c: check for NULL before initializing.
14665
14666 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
14667
14668         * gc.c (finalizer_thread): Use a non-alertable wait here.
14669
14670         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
14671         until the correct solution is found.
14672
14673 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
14674
14675         * reflection.c (mono_module_get_object): Avoid an assert when operating on
14676         modules with no metadata. Fixes #79596.
14677
14678         * image.c (load_metadata_ptrs): Put back the error message when
14679         the #- heap is encountered since the support is not complete yet.
14680
14681 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
14682
14683         * gc.c: do not allow the user to SuppressFinalize () a
14684         delegate because it would leak the trampoline if present.
14685
14686 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
14687
14688         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
14689         PropertyPtr table.
14690
14691 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
14692
14693         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
14694
14695         * metadata.c (mono_metadata_get_param_attrs): Ditto.
14696
14697         * row-indexes.h: Add definitions for *Ptr tables.
14698
14699         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
14700
14701         * metadata.c (mono_metadata_translate_token_index): New helper function to
14702         translate table indexes used in uncompressed metadata.
14703         (mono_metadata_decode_table_row): Ditto.
14704         (mono_metadata_decode_table_row_col): Ditto.
14705
14706         * metadata.c: Add table schema for *Ptr tables.
14707
14708         * class.c loader.c: Use the new helper function to access the affected metadata
14709         tables.
14710         
14711         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
14712         #38532.
14713         
14714 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
14715
14716         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
14717         sequences which can be unbounded in size. Fixes #79583.
14718
14719 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
14720
14721         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
14722         static initialization.
14723
14724         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
14725
14726         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
14727
14728         * domain.c (mono_domain_free): Free up type_init_exception_hash.
14729
14730         * object.c (mono_runtime_class_init): Implement correct semantics when a static
14731         ctor fails, i.e. throw the same exception on subsequent accesses.
14732         
14733 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
14734
14735         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
14736         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
14737         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
14738         Handle marshalling of interfaces and VARIANTs contained in structs.
14739         
14740         Code is contributed under MIT/X11 license.
14741         
14742 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
14743
14744         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
14745         
14746         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
14747         mempool.
14748
14749 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14750
14751         * console-io.c: ignore previous SIGINT handler.
14752
14753 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
14754
14755         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
14756         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
14757         #79460, #79461, #79485.
14758
14759         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
14760
14761         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
14762         #79217.
14763
14764 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
14765
14766         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
14767         could be generated from it.
14768
14769 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
14770
14771         * rand.c: fix read loop to correctly handle EINTR.
14772
14773 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
14774
14775         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
14776         internal calls are defined to keep methods closer to the declaring
14777         type and allow a significant reduction in runtime relocations and
14778         memory usage.
14779
14780 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
14781
14782         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
14783         exception message to have FileNotFoundException use the default
14784         assembly load error message. Fixes bug #79426.
14785         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
14786
14787 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14788
14789         * threadpool.c: (start_thread_or_queue) use the root domain when
14790         creating the thread instead of the async object one.
14791
14792 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
14793
14794         * class.c, object.c, class-internals.h, reflection.c:
14795         for arrays, store element_size inside MonoClass (speedup
14796         for array object creation).
14797
14798 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
14799
14800         * icall.c: fixed CodeBase to use the file name and not the module
14801         name (bug #79365).
14802
14803 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
14804
14805         * mono-debug.c, mono-debug.h: export find_method as
14806         mono_debug_find_method ().
14807
14808 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
14809
14810         * debug-helpers.c, class-internals.h: added a few functions useful
14811         when debugging under gdb.
14812
14813 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14814
14815         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
14816         characters that need special handling.
14817
14818 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
14819
14820         * mono-config.c: make the os/cpu specification more flexible,
14821         allowing lists and negation.
14822
14823 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
14824
14825         * marshal.c: COM Interop fixes. Handle case where method->klass.
14826         is interface. Handle BSTR/MonoString when null. Use CDECL as 
14827         calling convention on non-windows platforms. This is for
14828         compatibility with XPCOM and MainWin COM.
14829         
14830         Code is contributed under MIT/X11 license.
14831         
14832
14833 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
14834
14835         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
14836         correctly. Fixes #79217.
14837
14838         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
14839
14840 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
14841
14842         * mono-config.c: allow both an os and cpu attribute for dllmap
14843         and dllentry elemnets to enable a single config file to be used
14844         for multiple architectures.
14845
14846 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
14847
14848         * loader.c: MonoLoaderError was cleared too soon on load failure.
14849         Fixes bug #79424.
14850
14851 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
14852
14853         * icall.c: use the defining class vtable when accessing a
14854         static field, not a pobblibly derived class.
14855
14856 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
14857
14858         * icall.c string-icalls.c: Remove references to unicode.h.
14859
14860         * unicode.h unicode.c Makefile.am: Remove these unused source files.
14861
14862         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
14863
14864         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
14865         indicating the image where custom marshaller types should be looked up.
14866         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
14867         custom marshallers, instead of corlib. Fixes #79425.
14868
14869 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
14870
14871         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
14872
14873 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
14874
14875         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
14876         Implement Environment.ProcessorCount.
14877         
14878         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
14879         Implement Environment.ProcessorCount.
14880         
14881         * icall.c: 
14882         Add Environment.ProcessorCount icall.
14883         
14884         Patch by Jason McFall.
14885
14886 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14887
14888         * assembly.c: don't append .exe/.dll when the filename already contains
14889         one of those extensions.
14890
14891 2006-09-12  Martin Baulig  <martin@ximian.com>
14892
14893         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
14894         to array interfaces.
14895
14896 2006-09-11  Martin Baulig  <martin@ximian.com>
14897
14898         * reflection.c (mono_image_build_metadata): Create the
14899         MethodImpl's after emitting all types and methods, so we don't
14900         need another fixup pass for them.
14901
14902 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
14903
14904         * class.c (mono_class_from_name_case): Fix regression introduced by the last
14905         change.
14906
14907 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
14908
14909         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
14910         unload.
14911
14912 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
14915         args is not set. Fixes #78926.
14916
14917 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
14918
14919         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
14920
14921         * image.c (load_class_names): Move this to class.c, and rename it to 
14922         'mono_image_init_name_cache'.
14923         (load_modules): Fix a warning.
14924
14925         * class.c icall.c image.c: Initialize image->name_cache lazily.
14926
14927         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
14928         on its name using information in the AOT file.
14929
14930         * class.c (mono_class_from_name): Use the new hook function.
14931
14932 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
14933
14934         * reflection.c (mono_param_get_objects): Handle enum default parameter values
14935         correctly.
14936
14937         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
14938         Fixes #79289.
14939         
14940 2006-09-06  Martin Baulig  <martin@ximian.com>
14941
14942         * icall.c (mono_lookup_internal_call): Small fix.
14943
14944 2006-09-05  Raja R Harinath  <rharinath@novell.com>
14945
14946         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
14947         double g_free.
14948
14949 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
14950
14951         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
14952         when --debug is specified.
14953
14954 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
14955
14956         * class.c (setup_generic_array_ifaces): Fix a warning.
14957
14958 2006-09-04  Miguel de Icaza  <miguel@novell.com>
14959
14960         * Temporarily remove the patch to assemly.c that checks the
14961         assembly versions as it breaks our gacutil.
14962
14963 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
14964
14965         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
14966
14967         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
14968         a net 1.0 runtime.
14969
14970         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
14971         created using the default ctor. Fixes #79152.
14972         (mono_string_builder_to_utf16): Ditto.
14973
14974 2006-09-01  Martin Baulig  <martin@ximian.com>
14975
14976         Fix handling of the generic array interfaces.
14977
14978         * class-internals.h
14979         (MonoDefaults): Removed `generic_array_class' and added
14980         `generic_ilist' class.
14981
14982         * class.c
14983         (mono_bounded_array_class_get): Add the new generic array interfaces.
14984         (setup_generic_array_ifaces): New static method; create vtable
14985         entries for each method in the generic array interfaces.
14986
14987         * metadata.c
14988         (select_container): Allow "parent-less" generic methods.
14989
14990         * marshal.c
14991         (mono_marshal_get_generic_array_helper): New public method.
14992
14993         * icall.c
14994         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
14995         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
14996         moved the interncall into System.Array.
14997
14998 2006-09-01  Raja R Harinath  <rharinath@novell.com>
14999
15000         A few more cases of avoiding work on types with ->byref set.
15001         Has the real fix for #79238
15002         * icall.c (is_generic_parameter): New helper.
15003         (ves_icall_Type_GetGenericParameterPosition): Use it.
15004         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
15005         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
15006         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
15007         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
15008         reference types.
15009         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
15010         reference types.
15011         (ves_icall_Type_get_IsGenericInstance): Likewise.
15012         (ves_icall_Type_get_IsGenericType): Likewise.
15013
15014 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
15015
15016         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
15017         class if possible.
15018
15019         * mempool.h (mono_mempool_get_allocated): New helper function.
15020
15021         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
15022         change.
15023
15024         * mempool.c: Fix warnings and the calculation of stats.
15025
15026         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
15027
15028         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
15029
15030         * loader.c (mono_get_method_from_token): Update method_count stat.
15031
15032         * class-internals.h (MonoStats): Add some stats.
15033
15034 2006-08-31 Robert Jordan  <robertj@gmx.net>
15035
15036         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
15037         with managed variants.
15038         All code is contributed under the MIT/X11 license.
15039         
15040 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
15041
15042         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
15043         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
15044
15045         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
15046
15047         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
15048         with cycles in classes.
15049
15050         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
15051
15052         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
15053         missing a [MarshalAs] directive. Fixes #79203.
15054
15055         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
15056         klass->marshal_info. Fixes #79217.
15057
15058 2006-08-30  Martin Baulig  <martin@ximian.com>
15059
15060         Committing a patch from Joachim Ante <joe@otee.dk>:
15061         Add support for binary data symbol stores.
15062
15063         * debug-mono-symfile.c
15064         (mono_debug_open_mono_symbol_file): Renamed into
15065         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
15066         arguments.
15067
15068         * mono-debug.c
15069         (mono_debug_open_image): Added `raw_contents' and `size' args.
15070         (mono_debug_init_2_memory): New public function.
15071
15072 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
15073
15074         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
15075
15076 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15077
15078         * appdomain.c: implement support for ShadowCopyFiles.
15079
15080 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
15081
15082         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
15083         when value is NULL (and should remove CID #51).
15084
15085 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15086
15087         * image.c: moved 2 functions to ../utils.
15088
15089 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
15090
15091         * gc.c: cope with the target object of a GC handle being NULL
15092         (bug #78877).
15093
15094 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
15095
15096         * class.c: recursively check parent's explicit implementations
15097         of interface methods (fixes bug #79125).
15098
15099 2006-08-19  Miguel de Icaza  <miguel@novell.com>
15100
15101         * filewatcher.c: Avoid warnings when building, do not redefine
15102         constants that are defined.
15103
15104         Remove warnings.
15105
15106 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15107
15108         * image.c: don't fail when the link points to an absolute path.
15109
15110 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
15111
15112         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
15113         Fix CID #3.
15114
15115 2006-08-17  Miguel de Icaza  <miguel@novell.com>
15116
15117         * image.c (full_path): A new method used to obtain the actual path
15118         of an assembly even in the presence of symbolic links.  
15119
15120         This is necessary for the case where we are running a binary that
15121         has been GACed, but we are using the "published" path name
15122         ($prefix/mono/1.0/blah.exe) which happens to point to the real
15123         file in the GAC.
15124
15125         This was the source of the failure for the `xsp' command with the
15126         recent AppDomain changes, as far as the runtime was concerned,
15127         there were two different assemblies: $prefix/mono/1.0/blah.exe and
15128         $prefix/mono/gac/blah/version/blah.exe.
15129
15130         (do_mono_image_open): use full path
15131
15132 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15133
15134         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
15135
15136 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
15137
15138         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
15139         domain_id is supplied. Fix CID #241 and corlib's unit tests.
15140
15141 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15142
15143         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
15144         small structures. Fixes #78990.
15145
15146 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
15147
15148         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
15149
15150         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
15151
15152 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15153
15154         * appdomain.c:
15155         * marshal.c: don't load all the assemblies from a domain into newly
15156         created ones. The new domains might have different rules and load
15157         assemblies from different locations. Fixes bug #76757.
15158
15159         Patch by Lluis. Conflicts resolved by Brian Crowell.
15160
15161 2006-08-16  Alp Toker  <alp@atoker.com>
15162
15163         * socket-io.c: First half of the fix for #79084.
15164         Set sa_size to the length of the content, not that of the struct.
15165         Don't add NULL suffix to the content, this should be done in
15166         managed code if needed.
15167
15168 2006-08-14  Raja R Harinath  <rharinath@novell.com>
15169
15170         Fix part of #79012
15171         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
15172         mono_metadata_parse_type returns NULL.
15173
15174 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
15175
15176         * normalization-tables.h : new file for string normalization data.
15177         * locales.c, locales.h, icall.c :
15178           added load_normalization_resource() for string normalization,
15179           and icall as well.
15180         * Makefile.am : added normalization-tables.h to the sources.
15181
15182 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
15183
15184         * marshal.c: Add more helper functions to reduce code duplication and use them
15185         everywhere.
15186
15187 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
15188
15189         * marshal.c: Fix non-x86 stdcall warnings.
15190         
15191         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
15192         them everywhere.
15193
15194 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
15195
15196         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
15197         type check on multi-dimensional arrays. Fixes #79000.
15198
15199 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
15200
15201         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
15202         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
15203         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
15204         * class-internals.h: add is_com_object to class structure.
15205         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
15206         null checks to COM object marshalling. Fix .ctor call on RCW.
15207         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
15208         
15209         All code is contributed under the MIT/X11 license.
15210
15211 2006-08-09  Dick Porter  <dick@ximian.com>
15212
15213         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
15214         racing mono_monitor_allocator_lock() somewhere, so don't delete
15215         the critical section for now.  Found by running and exiting
15216         monodevelop.
15217
15218 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
15219
15220         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
15221         (ves_icall_System_ComObject_FindInterface): Ditto.
15222         (ves_icall_System_ComObject_CacheInterface): Ditto.
15223
15224         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
15225         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
15226
15227 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15228
15229         * threadpool.c: treat pipes from process asynchronous reads as sockets
15230         when reading from them, so we get select/poll or epoll to wait for
15231         data.
15232
15233 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
15234
15235         * loader.c: Fix a typo (CID #233) in the null check.
15236
15237 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
15238
15239         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
15240         Hopefully fixes #78949.
15241         
15242         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
15243         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
15244         bytes. Fixes #78972.
15245
15246 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15247
15248         * filewatcher.c: we need to set errno here.
15249
15250 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15251
15252         * filewatcher.c: let Win32Exception get the error value.
15253
15254 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15255
15256         * filewatcher.c: translate errno into win32 errors for Win32Exception
15257         to know what happened.
15258
15259 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
15260
15261         * threadpool.c: Fix more warnings.
15262
15263         * assembly.c (search_loaded): Fix warnings.
15264
15265         * threadpool.c (mono_thread_pool_finish): Fix warnings.
15266         (mono_async_invoke): Ditto.
15267
15268 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
15269
15270         * object.c (mono_remote_class_vtable): Need to create proxy vtable
15271         entries for __ComObject type in addition to ComImport types.
15272         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
15273         about hash table.
15274         
15275         All code is contributed under the MIT/X11 license.
15276
15277 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
15278
15279         * image.c: avoid tentative loading of modulerefs that contain
15280         no metadata (P/Invoke library names).
15281
15282 2006-07-28  Dick Porter  <dick@ximian.com>
15283
15284         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
15285         mono_loader_lock() somewhere, so don't delete the critical section
15286         for now.  Found by running and exiting monodevelop.
15287
15288 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15289
15290         * filewatcher.c: define the inotify syscalls when we're building on
15291         linux and have sys/syscall.h. The build system might not have support
15292         for inotify but the target system might have it.
15293
15294 2006-07-26  Miguel de Icaza  <miguel@novell.com>
15295
15296         * domain.c: Documentation updates.
15297
15298         * loader.c (mono_free_method): Do not release the method
15299         information if we are being profiled, as profilers will use this
15300         information at shut down to present some data to the user.
15301
15302         This is needed so that the profiler does not crash, as the
15303         profiler tends to keep MonoMethods around, and they might become
15304         invalid if we free these.
15305
15306         (mono_get_method_constrained): Return the original CIL stream
15307         method as well, so verification can be performed against it.
15308
15309 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15310
15311         * filewatcher.[ch]: support for inotify file system watcher.
15312         * icall.c: add new internal calls for the inotify file system watcher.
15313
15314 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15315
15316         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
15317         #78888.
15318
15319 2006-07-20  Dick Porter  <dick@ximian.com>
15320
15321         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
15322         warning.
15323
15324 2006-07-20  Dick Porter  <dick@ximian.com>
15325
15326         * threads.c (start_wrapper): Do the thread cleanup while we still
15327         hold a reference to its object.  Fixes bug 78123.
15328
15329 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
15330
15331         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
15332         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
15333           "managed-to-managed".
15334         * icall.c: Redirect string constructors that take sbyte* to
15335           ves_icall_System_String_ctor_RedirectToCreateString.
15336         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
15337           to CreateString () methods with matching signature.
15338         * reflection.c: Use original security informations for
15339           MONO_WRAPPER_MANAGED_TO_MANAGED.
15340         * security-manager.c: Use original security informations for
15341           MONO_WRAPPER_MANAGED_TO_MANAGED.
15342         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
15343           that is a placeholder and only its address should be used.
15344         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
15345           that is a placeholder and only its address should be used.
15346
15347 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
15348
15349         Begin implementing COM Interop.
15350         * appdomain.c: Increment corlib version.
15351         * class.c: Set ComImport classes' parent to __ComObject.
15352         * loader.c: Mark cominterop methods as such.
15353         * domain.c: Add __ComObject class to MonoDefaults structure.
15354         * image.c: Add 2 hashtables to the image for COM Interop related methods
15355         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
15356         using the mempool allocator
15357         
15358         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
15359         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
15360         declaration for mono_metadata_type_dup_mp.
15361         
15362         * debug-helpers.c: Added strings for two additional wrapper types
15363         * object.c: Create proxy objects for ComImport classes
15364         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
15365         and added __ComObject class to MonoDefaults structure.
15366         
15367         * object-internals.h: Finish MonoRealProxy definition, and add definition of
15368         MonoComInteropProxy and MonoComObject.
15369         
15370         * marshal.c: Added support for COM Interop
15371         (signature_cominterop): Converts managed signature to corresponding
15372         unmanaged COM signature.
15373         (cominterop_get_function_pointer): gets unmanaged function pointer via
15374         COM object vtable
15375         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
15376         (cominterop_get_method_interface): returns interface type that method is defined on
15377         (mono_mb_emit_cominterop_call): emits native call to function pointer
15378         gotten from vtable
15379         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
15380         that matches signature of unmanaged function.
15381         (cominterop_get_native_wrapper): wrapper around adjusted method call.
15382         (cominterop_get_invoke): forwards call from proxy to __ComObject
15383         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
15384         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
15385         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
15386         
15387         * marshal.h: Added Marshal icall declarations.
15388         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
15389         so we can access them in finalizer
15390         
15391 2006-07-14  Dick Porter  <dick@ximian.com>
15392
15393         * object.c (mono_type_initialization_cleanup): Fix a race
15394         condition by temporarily commenting out the critical section
15395         deletion.
15396
15397 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
15398
15399         * reflection.c (create_custom_attr): Fix some warnings.
15400         (create_custom_attr_data): Ditto.
15401         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
15402         types. Fixes #78855.
15403
15404 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
15405
15406         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
15407
15408         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
15409
15410 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
15411
15412         * reflection.c (resolve_object): Add support for DynamicMethod.
15413
15414         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
15415         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
15416
15417 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
15418
15419         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
15420         don't leak GPtrArray's pdata has we have no use (nor free) for it.
15421
15422 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
15423
15424         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
15425         Fixes #77888.
15426
15427 2006-06-30  Raja R Harinath  <rharinath@novell.com>
15428
15429         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
15430         slightly: remove a shadow local variable.
15431
15432 2006-06-29  Raja R Harinath  <rharinath@novell.com>
15433
15434         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
15435         definition that introduces the virtual function slot.
15436         Also fix Coverity #105.
15437
15438 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
15439
15440         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
15441         for dynamic assemblies. Fixes #78724.
15442
15443 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
15444
15445         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
15446         Fixes #78722.
15447
15448 2006-06-21  Martin Baulig  <martin@ximian.com>
15449
15450         * reflection.c
15451         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
15452         fixes #76484.
15453
15454 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
15455
15456         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
15457
15458 2006-06-20  Raja R Harinath  <rharinath@novell.com>
15459
15460         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
15461         nor TYPEREFs.
15462         * class.c (mono_class_create_from_typespec): Add 'context' argument.
15463         Inflate result if necessary.
15464         (mono_class_get_full): Remove old version.  Rename from
15465         'mono_class_get' and add 'context' argument.  Pass it to
15466         ..._create_from_typespec.
15467         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
15468         (mono_ldtoken): Revert change below.
15469
15470 2006-06-20  Martin Baulig  <martin@ximian.com>
15471
15472         * class.c (mono_ldtoken): Don't pass the generic context to
15473         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
15474
15475 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
15476
15477         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
15478         and later freeing it. Fixes #78638.
15479
15480 2006-06-15  Miguel de Icaza  <miguel@novell.com>
15481
15482         * icall.c (mono_class_get_throw): Revert over-zealous error
15483         throwing, the caller for mono_class_get_throw will cope with
15484         errors when classes are not properly initialized already.
15485
15486         The code still copes with loader exceptions though.
15487
15488         Fixes the regression in reftype1 and reftype3 from the CAS tests.
15489         
15490 2006-06-14  Miguel de Icaza  <miguel@novell.com>
15491
15492         Fixes the `make run1' version of RuntimeAbort (to be commited,
15493         source is in Bugzilla).
15494         
15495         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
15496         FALSE on class loading failure instead of returning true.
15497
15498         * class.c (mono_class_create_from_typedef): It is possible for
15499         mono_metadata_interfaces_from_typedef_full to fail if a class is
15500         not found, cope with this.
15501         
15502
15503 2006-06-14  Dick Porter  <dick@ximian.com>
15504
15505         * socket-io.c: 
15506         * process.c: Fix a bunch of signed/unsigned warnings from gcc
15507         4.1.1
15508
15509 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
15510
15511         * culture-info-table.h : oops, forgot to make it nsync with r61548.
15512
15513 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15514
15515         * icall.c: Another fix for building mono in Visual Studio.
15516
15517 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
15518
15519         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
15520         
15521 2006-06-09  Martin Baulig  <martin@ximian.com>
15522
15523         * debug-mono-symfile.c: Put this back and really fix it this
15524         time. Sorry for all the trouble.
15525
15526 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
15527
15528         * icall.c (mono_class_get_throw): Fix a warning.
15529         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
15530         ReflectionTypeLoadException if needed. Fixes #78606.
15531
15532         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
15533         (mono_class_init): Ditto.
15534
15535         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
15536         ref_only exceptions.
15537         (mono_loader_clear_error): Make this work even if there is no error.
15538
15539 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
15540
15541         * object-internals.h marshal.c marshal.h icall.c: Implement method 
15542         Marshal.GetComSlotForMethodInfo using internal call.
15543
15544 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
15545
15546         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
15547         a function for signalling it.
15548
15549         * class.c (mono_class_from_typeref): Use the new kind of loader error when
15550         a referenced assembly is not found.
15551
15552         * loader.c (mono_loader_error_prepare_exception): Add support for 
15553         LOADER_ERROR_ASSEMBLY. Fix formatting.
15554
15555 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
15556
15557         * domain.c appdomain.c class-internals.h marshal.c: Add support 
15558         for VARIANT marshalling on windows and increment corlib version
15559         since Variant struct was added.
15560
15561 2006-06-03  Miguel de Icaza  <miguel@novell.com>
15562
15563         * debug-mono-symfile.c: Revert Martin's previous patch which broke
15564         stack trace line information:
15565
15566         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
15567         (Martin) when looking up B which is between A and C, return A not C.
15568
15569         Bug is #78573.
15570
15571         Thanks to Alexander Olk for tracking this down.
15572
15573 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
15574
15575         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
15576         
15577         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
15578         avoid clobbering its value.
15579         (mono_string_to_lpstr): Fix a warning on windows.
15580
15581 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
15582
15583         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
15584
15585         * reflection.c loader.c: Removed references to 'dummy' flag.
15586
15587         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
15588
15589         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
15590         it gets GC tracking.
15591
15592         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
15593         GC tracking.
15594         
15595         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
15596
15597         * marshal.c threadpool.c: Update callers of mono_async_result_new.
15598
15599         * appdomain.c: Bump corlib version.
15600
15601 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
15602
15603         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
15604         CEE_STIND_REF when working with object references.
15605
15606 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
15607
15608         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
15609         Fixes #78539.
15610
15611 2006-05-30  Miguel de Icaza  <miguel@novell.com>
15612
15613         * loader.c (method_from_memberref): Fix argument value for
15614         mono_loader_set_error_method_load (I was passing the MonoClass
15615         instead of the class name char *).
15616
15617 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
15618
15619         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
15620         CEE_STIND_REF when working with object references.
15621
15622 2006-05-30  Martin Baulig  <martin@ximian.com>
15623
15624         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
15625         mono_method_full_name() change and replace the ':' with a '.'
15626         here.
15627
15628 2006-05-30  Martin Baulig  <martin@ximian.com>
15629
15630         * debug-mono-symfile.c
15631         (mono_debug_symfile_lookup_location): Fix the algorithm:
15632         when looking up B which is between A and C, return A not C.
15633
15634 2006-05-29  Martin Baulig  <martin@ximian.com>
15635
15636         * mono-debug.h
15637         (MonoDebugMethodInfo): Make the typedef public.
15638         (MonoDebugSourceLocation): New public struct.
15639
15640         * mono-debug.c
15641         (mono_debug_source_location_from_address): Removed.
15642         (mono_debug_source_location_from_il_offset): Removed.
15643         (mono_debug_il_offset_from_address): Removed.
15644         (mono_debug_address_from_il_offset): Removed.
15645         (mono_debug_lookup_method): New public function.
15646         (mono_debug_lookup_source_location): New public function; replaces
15647         the old mono_debug_source_location_from_*() functions; see the
15648         inline documentation.
15649         (mono_debug_free_source_location): New public function.
15650         (mono_debug_print_stack_frame): New public function; see the
15651         inline documentation.
15652
15653         * debug-mono-symfile.c
15654         (mono_debug_find_source_location): Renamed into
15655         mono_debug_symfile_lookup_location(); only take a
15656         `MonoDebugMethodInfo *' and an `offset' argument; added inline
15657         documentation.
15658         (mono_debug_find_method): Renamed into
15659         mono_debug_symfile_lookup_method().
15660
15661 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
15662
15663         * assembly.c (mono_assembly_open_full): Dont overwrite the status
15664         returned by mono_image_open_full ().
15665
15666         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
15667         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
15668         #78517.
15669
15670         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
15671         #78518.
15672
15673 2006-05-27  Miguel de Icaza  <miguel@novell.com>
15674
15675         * class.c (mono_class_from_typeref): handle missing images
15676         earlier, deals with bug #78418.   Refactor code; 
15677
15678         Fix a warning introduced in my previous commit (some stale code
15679         from before I revisited my patch).
15680
15681         * class.c (mono_class_create_from_typedef): On failure, remove the
15682         class from the MonoImage->class_cache as the class is not
15683         initialized;   Fixes the leak pointed out by Paolo.
15684
15685 2006-05-25  Dick Porter  <dick@ximian.com>
15686
15687         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
15688         DeleteCriticalSections until I figure out which one may still be
15689         sometimes locked when mono_thread_cleanup is called.
15690
15691 2006-05-24  Dick Porter  <dick@ximian.com>
15692
15693         * threads.c (mono_thread_cleanup): Move the threading cleanup out
15694         of mono_thread_manage and back into its own function, so it can be
15695         called after the finalizer thread has finished.
15696
15697         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
15698
15699 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
15700
15701         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
15702         Fixes #78495.
15703
15704         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
15705         with non-blittable elements.
15706         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
15707
15708 2006-05-24  Martin Baulig  <martin@ximian.com>
15709
15710         * mono-debug-debugger.h (MonoDebuggerEvent): Added
15711         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
15712
15713         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
15714         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
15715         `mono_debugger_event_handler' to NULL.
15716
15717 2006-05-24  Martin Baulig  <martin@ximian.com>
15718
15719         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
15720
15721 2006-05-24  Martin Baulig  <martin@ximian.com>
15722
15723         * mono-debug-debugger.h
15724         (mono_debugger_create_notification_function): Added
15725         `MonoCodeManager *' argument.
15726
15727 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
15728
15729         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
15730
15731 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
15732
15733         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
15734         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
15735         implementation.
15736
15737 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
15738
15739         * icall.c: precise GC support: objects can't be stored in unmanaged
15740         memory anymore, even if they are kept alive by other references: since
15741         they can move the GC needs to be able to always find them.
15742
15743 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15744
15745         * object.c: precise GC support for static fields. Support
15746         for moving GCs: write barriers and pinned allocation for interned
15747         strings.
15748
15749 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
15750
15751         * domain.c, domain-internals.h: precise GC support for the MonoDomain
15752         structure.
15753
15754 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15755
15756         * class.c, gc.c: sgen and precise GC updates.
15757
15758 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15759
15760         * marshal.h, marshal.c: added write barrier wrapper and precise type
15761         fixes.
15762
15763 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
15764
15765         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
15766         support.
15767
15768 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
15769
15770         * reflection.c: precise and sgen GC updates.
15771
15772 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
15773
15774         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
15775
15776 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
15777
15778         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
15779
15780 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
15781
15782         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
15783         MONO_TYPE_OBJECT. Fixes #78462.
15784
15785 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
15786
15787         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
15788         and blittable types.
15789
15790 2006-05-17  Miguel de Icaza  <miguel@novell.com>
15791
15792         * class.c (mono_class_get_exception_for_failure): Implement parts
15793         of a TODO: if the loader error is set (instead of the class
15794         error), we return a Loader exception that can be properly thrown
15795         elsewhere.
15796
15797         This was exposed by some Winforms 2.0 code that I tried to run
15798         (Atsushi pointed me to it).
15799
15800 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
15801
15802         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
15803         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
15804         
15805         * marshal.c (emit_marshal_vtype): Add limited support for 
15806         UnmanagedType.LPStruct. Fixes #78427.
15807
15808         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
15809         Applied a patch from kangaroo to fix #77523.
15810
15811 2006-05-17  Martin Baulig  <martin@ximian.com>
15812
15813         * threads.c
15814         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
15815         (debugger_thread_created): Removed.
15816         (debugger_thread_exited): Removed.
15817
15818 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
15819
15820         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
15821
15822         * object-internals.h (MonoReflectionResource): Sync with managed version.
15823
15824 2006-05-12  Wade Berrier <wberrier@novell.com>
15825
15826         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
15827
15828 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
15829
15830         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
15831         functions try to allocate from the image mempool.
15832
15833 2006-05-12  Dick Porter  <dick@ximian.com>
15834
15835         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
15836
15837 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
15838
15839         * object.c: The FieldGetter and FieldSetter methods require the full
15840         name of the class, not only the name. Fixes bug #78277.
15841
15842 2006-05-11  Miguel de Icaza  <miguel@novell.com>
15843
15844         * loader.c (method_from_memberref): Do not pass the NULL klass to
15845         mono_loader_set_error_() methods.  Pass the non-NULL value
15846         (class). 
15847
15848 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
15849
15850         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
15851         (mono_assembly_close): Null out assembly->image->references after freeing it.
15852
15853         * image.c (mono_image_close): Free image->references.
15854         
15855         * reflection.c (mono_image_basic_init): Fix a small memory leak.
15856
15857 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
15858
15859         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
15860         before checking if it's NULL (g_assert).
15861
15862 2006-05-10  Martin Baulig  <martin@ximian.com>
15863
15864         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
15865         I thought I already killed that two months ago, but now it somehow reappeared.
15866
15867 2006-05-10  Martin Baulig  <martin@ximian.com>
15868
15869         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
15870
15871 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
15872
15873         * reflection.c: Allocate memory for dynamically created methods in the image
15874         mempools.
15875
15876 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
15877
15878         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
15879         don't use the ad pointer before checking if it's NULL (g_assert).
15880
15881 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
15882
15883         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
15884         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
15885
15886         * marshal.c: Allocate all signatures from mempools.
15887
15888         * marshal.c: Allocate some more signatures from mempools.
15889
15890 2006-05-09  Miguel de Icaza  <miguel@novell.com>
15891
15892         * object.c (mono_load_remote_field): The code used to provide a
15893         temporary variable for returning results if the user did not
15894         provide a result pointer.  But our temporary variable was allocted
15895         on the satck.
15896
15897         Fix calling code to always pass a result area.   Coverity ID 103.
15898
15899 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
15902         value, not the old. Fixes #78312.
15903         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
15904
15905         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
15906         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
15907         per-image cache.
15908
15909         * assembly.c (mono_assembly_close): Free image->references.
15910
15911         * assembly.c (mono_assembly_names_equal): Fix a warning.
15912         (mono_assemblies_cleanup): Cleanup more global data.
15913
15914         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
15915
15916         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
15917         ptr_cache and image->modules.
15918
15919         * image.c (mono_image_init): Allocate array_cache lazily.
15920         
15921 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15922
15923         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
15924         behavior was changed recently and has bad side effects.
15925
15926 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
15927
15928         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
15929         
15930         * assembly.c (mono_assembly_close): Remove a debug printf.
15931
15932         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
15933
15934         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
15935         to also allow for temporary references between mono_image_open ()/close ().
15936
15937         * domain.c (get_runtimes_from_exe): Add a FIXME.        
15938
15939 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
15940
15941         * marshal.c: Fix support for dynamic methods.
15942
15943         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
15944
15945         * marshal.c (mono_marshal_cleanup): New cleanup function.
15946
15947         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
15948         image mempools.
15949
15950         * class.c (mono_class_init): Fix leaking class->nested_classes.
15951
15952         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
15953
15954         * image.c (mono_image_init): Initialize the new cashes.
15955
15956         * image.c (mono_image_close): Destroy the new cashes.
15957
15958         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
15959
15960         * mempool.c (mono_mempool_strdup): New helper function.
15961
15962         * class-internals.h: Add prototype for mono_loader_unlock ().
15963
15964         * domain.c (mono_jit_info_table_find): Fix a warning.
15965         (mono_debugger_check_runtime_version): Ditto.
15966
15967         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
15968         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
15969         functions to these modules.
15970
15971         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
15972         metadata modules.
15973         
15974         * marshal.c (mono_free_bstr): Fix a warning.
15975
15976         * assembly.c (mono_assembly_open_full): Fix another small leak.
15977
15978         * object.c: Fix some unload leaks in the remoting code.
15979
15980         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
15981         function.
15982
15983         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
15984
15985         * reflection.c: Fix some unload leaks in dynamic assemblies.
15986
15987 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
15988
15989         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
15990         * marshal.h: Add BSTR support on Win32
15991         * icall.c: Add BSTR icalls
15992         * metadata.h: Add BSTR enums
15993
15994 2006-04-28  Miguel de Icaza  <miguel@novell.com>
15995
15996         Work to catch the crash from #76795 and turn it into an
15997         exception.   As I stubbed out pieces of the VisualBasic support,
15998         I found a number of places where the code was failing and I added
15999         checks to those places. 
16000         
16001         * metadata.c (do_mono_metadata_parse_generic_class): Make this
16002         function return a status code.  If we fail to parse the signature
16003         from mono_metadata_parse_generic_inst, return FALSE.
16004
16005         * loader.c (mono_get_method_from_token): If we fail to load the
16006         method (mono_class_get) return NULL.   
16007
16008         * (method_from_memberref): Return NULL if we are unable to parse
16009         the method signature
16010
16011         (mono_loader_error_prepare_exception): Since we now use the
16012         loader_error flag internally to stop processing, and obtaining
16013         exceptions that might be thrown will walk this code path the
16014         proper way of going from a MonoLoaderError into a
16015         MonoException was convoluted.   This new routine encapsulates the
16016         process of turning the error into an exception and *clearing* the
16017         error afterwards.
16018         
16019 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16020
16021         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
16022         with missing assemblies), and to cope with:
16023
16024                 * Missing fieldref from a non-existing assembly.
16025                 * Missing methodref from a non-existing assembly.
16026
16027         The first batch of work to address *some* of the issues from 76661.
16028         
16029         * object.c (mono_class_create_runtime_vtable): If we fail to
16030         initialize the class raise the exception here. 
16031
16032         * metadata.c (mono_class_get_overrides_full): If any methods fail
16033         to load return the failure to the caller.
16034
16035         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
16036         flagging assemblies that failed to load.   
16037
16038         Do not crash if we are unable to load the assembly.
16039
16040         (mono_assembly_close): Do nothing with REFERENCE_MISSING
16041         assemblies. 
16042
16043         * loader.c (mono_loader_set_error_type_load): Change the
16044         convention to always pass unallocated strings, so we make our own
16045         copies (I know our own code had duplicated strings before, but
16046         this keeps the normal conventions).
16047         (method_from_memberref): Call mono_loader_set_error_method_load
16048         for all possible failures of loading the class. 
16049         Remove assert, turn into a loader error.
16050
16051         (mono_loader_error_to_exception): Move this routine from mini
16052         (mini_loader_error_to_exception) there was no need to have that in
16053         mini. 
16054
16055         * class.c (mono_class_from_typeref): If we were not able to load
16056         the assembly with mono_assembly_load_reference, call the
16057         mono_loader_set_error_type_load to register the problem.
16058
16059         (mono_class_setup_fields): If we fail to load the type from
16060         mono_metadata_parse_type_full, call mono_class_set_failure and
16061         break from the loop.
16062
16063         If class->exception_type is set, we do not layout the fields as
16064         that might crash the runtime, and instead return (from breaking
16065         from the previous loop).
16066
16067         (mono_class_setup_vtable): This now returns a boolean indicating
16068         whether the table was properly setup.   The decision is driven by
16069         mono_class_get_overrides_full which might run into non-existing
16070         methods. 
16071         
16072         (mono_class_init): Returns TRUE on success or FALSE if there was a
16073         problem in loading the type (incorrect assemblies, missing
16074         assemblies, methods, etc).
16075
16076         When we call mono_class_setup_fields we also check for a potential
16077         error inside this call (either a class exception or a general
16078         loader exception).
16079
16080         (mono_class_create_from_typedef): If the parent fails to load
16081         (calling mono_class_get_full) return NULL.
16082         
16083         ** Important **
16084
16085         calls to mono_metadata_parse_type_full should be checked
16086         everywhere and set the mono_class_set_failure
16087         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
16088
16089         The current patch checks the places where my manually constructed
16090         tests show the errors are showing up, but we should do it
16091         everywhere. 
16092
16093         ** Important2 **
16094
16095         mono_class_init return values should be tested everywhere, like
16096         the previous case this is something that we should audit
16097         everywhere and not only on the cases exposed by the tests I
16098         created. 
16099
16100 2006-04-26  Miguel de Icaza  <miguel@novell.com>
16101
16102         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
16103         boolean parameter and instead pass the information on `options'
16104         parameter (FileOptions).
16105
16106         * icall.c: Register the new signature for MonoIO.Open.
16107
16108         * debug-helpers.c (dis_one): Trying to understand how coverity
16109         works.  Fix Run 5, item 78.
16110
16111 2006-04-26  Dick Porter  <dick@ximian.com>
16112
16113         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
16114         dereference.
16115
16116 2006-04-25  Martin Baulig  <martin@ximian.com>
16117
16118         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
16119
16120         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
16121         debugger_thread_created().
16122         (debugger_gc_push_all_stacks): Don't handle the main thread in any
16123         special way.
16124         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
16125         (mono_debugger_finalize_threads): New function; undo the effects
16126         of mono_debugger_init_threads().
16127         (mono_debugger_create_all_threads): Removed.
16128
16129 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16130
16131         * image.c (mono_image_close): Tidy up trace messages.
16132
16133         * assembly.c (mono_assembly_close): Ditto.
16134
16135         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
16136         no longer references an already freed assembly. Fixes #78168.
16137
16138 2006-04-21  Dick Porter  <dick@ximian.com>
16139
16140         * threads.c (mono_thread_detach): Fix reference counting when
16141         detaching threads.
16142
16143 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
16144
16145         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
16146         #78155.
16147
16148 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16149
16150         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
16151         (mono_type_to_stind): Ditto.
16152
16153         * marshal.c: Use the new helper functions to simplify code.
16154
16155         * image.c (mono_image_close): Add some code for help debug assembly unloading
16156         problems.
16157
16158         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
16159         image mempool.
16160
16161         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
16162         assembly was already loaded in another appdomain. Fixes #78083.
16163
16164 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
16167         referenced assemblies.
16168         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
16169
16170         * domain.c (mono_domain_free): Add a trace message.
16171
16172         * appdomain.c (add_assemblies_to_domain): Ditto.        
16173
16174         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
16175         field.  
16176
16177 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16178
16179         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
16180
16181 2006-04-12  Martin Baulig  <martin@ximian.com>
16182
16183         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
16184         `USE_INCLUDED_LIBGC'.   
16185
16186 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16187
16188         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
16189         the patch contains ../ and a small directory name later. Hopefully fixes
16190         #78035.
16191
16192 2006-04-10  Martin Baulig  <martin@ximian.com>
16193
16194         Clean up the debugger's thread-handling code.
16195
16196         The debugger's thread-handling code has been moved from
16197         ../mini/debug-debugger.c to threads.c.  We now iterate directly
16198         over the `threads' hash, keep track of exiting threads and also
16199         use proper locking.
16200
16201         We can now debug XSP and XSP based applications with the debugger.
16202
16203         * object-internals.h (MonoThread): Added `gpointer end_stack'.
16204
16205         * threads.h
16206         (MonoThreadCallbacks): Removed; this was only used by the debugger.
16207         (mono_install_thread_callbacks): Likewise.      
16208
16209         * threads.c (mono_thread_callbacks): Removed.
16210         (debugger_thread_created, debugger_thread_exited): New static functions.
16211         (start_wrapper): Call debugger_thread_created().
16212         (thread_cleanup): Call debugger_thread_exited().
16213         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
16214         (mono_debugger_init_threads): New public function.
16215         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
16216         iterate directly over the `threads' hash and also use proper locking.
16217
16218         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
16219
16220         * mono-debug-debugger.h
16221         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
16222
16223 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16224
16225         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
16226         argument type=array. Fixes #78057.
16227
16228 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
16229
16230         * culture-info-table.h : regenerated. Fixed bug #69652.
16231
16232 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16233
16234         * loader.c metadata.c: Reapply a variant r59116.
16235         
16236         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
16237
16238         * class.c (mono_class_setup_interface_offsets): New internal function.
16239
16240         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
16241         interfaces too. Fixes #77398.
16242
16243         * reflection.c (encode_cattr_value): Add support for 
16244         parameter type=object, argument type=array.
16245         (load_cattr_value): Ditto. Fixes #77916.
16246
16247         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
16248         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
16249
16250         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
16251         a byval char array and CharSet is Ansi.
16252
16253         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
16254
16255 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
16256
16257         * metadata.c: Add some locking comments.
16258         
16259         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
16260         mempool.
16261         (mono_metadata_free_method_signature): Don't free the signature itself.
16262
16263         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
16264
16265         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
16266         reference the same MonoImage.
16267         (mono_assembly_load_from_full): Add an assert.
16268
16269 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16270
16271         * image.c (mono_image_close): Don't put the image we are about to free into the
16272         loaded_images_guid_hash.
16273
16274         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
16275         to reduce code duplication.
16276
16277         * marshal.c: Register the native functions called by this module as icalls, to
16278         somewhat centralize the creation of MonoMethodSignature's.
16279
16280         * loader.c (mono_method_signature): Add a cache for method signatures.
16281
16282         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
16283         the parameter attributes of a method.
16284         (mono_metadata_parse_method_signature_full): Refactored the computation of
16285         parameter attributes into a separate function. Also avoid one allocation in
16286         most cases.
16287
16288         * assembly.c (mono_assembly_close): Ditto.
16289
16290         * image.c (mono_image_close): Log trace messages with INFO level.
16291
16292         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
16293
16294         * image.c reflection.c: Correct reference counting of image modules.
16295         
16296         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
16297         of this function from the image mempool.
16298         
16299         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
16300         to allow more cached types to be used.
16301
16302         * mono-debug.c (mono_debug_add_method): Appled patch from
16303         David S. Miller  <davem@sunset.davemloft.net>: Access 
16304         minfo->lexical_blocks[] entry elements using read32().
16305
16306 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16307
16308         * loader.c (mono_free_method): No longer free the method header for non-dynamic
16309         methods as it is allocated from the mempool.
16310
16311         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
16312         image mempool.
16313
16314         * metadata-internals.h: Add comments describing the reference counting scheme
16315         used for MonoImage and MonoAssembly.
16316
16317         * image.c assembly.c reflection.c: Rework reference counting of images and 
16318         assemblies so they are freed when the runtime is shut down. Free some 
16319         additional memory structures when an image is unloaded.
16320         
16321 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16322
16323         * class.c loader.c reflection.c: Allocate more data structures in
16324         the image mempool.
16325
16326 2006-03-31  Miguel de Icaza  <miguel@novell.com>
16327
16328         * icall.c
16329         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
16330         build on pre glib 2.4 systems.
16331
16332 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16333
16334         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
16335
16336         * icall.c: Fix some warnings.
16337
16338 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
16339
16340         * culture-info-table.h : regenerated.
16341
16342 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
16343
16344         * threads.c, object-internals.h, verify.c: changed the culture caching
16345         code to use a normal MonoArray for storage so the GC can keep track of
16346         them easily. Fixed bits of the cache logic, too and simplified the
16347         code.
16348
16349 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
16350
16351         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
16352         thread for non-Boehm GCs.
16353
16354 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
16355
16356         * domain.c, object.c, domain-internals.h: reduce the amount of memory
16357         needed to keep track of the data for static fields.
16358
16359 2006-03-29  Raja R Harinath  <rharinath@novell.com>
16360
16361         Fix #75172
16362         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
16363         for interface classes.  Use 'num_methods' instead.
16364         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
16365         before using '->vtable_size' field.
16366
16367 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16368
16369         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
16370         doesn't contain managed pointers, so use a normal hashtable.
16371
16372 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16373
16374         * reflection.c, class-internals.h, domain.c: fixed handling of types
16375         used as values for objects in custom attributes (bug #77915):
16376
16377 2006-03-24  Martin Baulig  <martin@ximian.com>
16378
16379         * class.c (mono_class_setup_fields): Added support for generic
16380         instances; fixes #77580.
16381
16382 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16383
16384         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
16385
16386 2006-03-24  Dick Porter  <dick@ximian.com>
16387
16388         * file-io.c (get_file_attributes): More stat macro breakage.
16389         Fixes bug 77759.
16390
16391 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
16392
16393         * profiler.c: added the file=filename option in the default profiler
16394         to output the profile data to filename.
16395
16396 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16397
16398         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
16399         bug #77877.
16400
16401 2006-03-22  Martin Baulig  <martin@ximian.com>
16402
16403         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
16404         allocated `MonoClassField *' in `fb->handle'.
16405
16406 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
16407
16408         * class.c, image.c, metadata-internals.h: implemented new mechanism to
16409         allocate interface ID to save memory and allow better ID reuse on
16410         appdomain unload. setup_generic_vtable () removal from Martin.
16411
16412 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
16413
16414         * object.h, appdomain.c, domain.c, exception.c, icall.c,
16415         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
16416         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
16417         write barriers for reference stores with managed objects accessed with
16418         C structures in the runtime and in embedding programs.
16419
16420 2006-03-20  Raja R Harinath  <rharinath@novell.com>
16421
16422         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
16423         'interface_id' and 'max_interface_id' fields of MonoClasses
16424         representing open generic types.
16425
16426 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
16427
16428         * object.h, object.c, icall.c: added functions to deal with
16429         storing valuetypes that contain references in managed objects.
16430         * reflection.c, string-icalls.c, threads.c, marshal.c: small
16431         fixes and comments around uses of mono_array_addr ().
16432
16433 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
16434
16435         * object.h, icall.c, monitor.c: object.GetHashCode ()
16436         implementation that supports the moving garbage collector.
16437
16438 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
16439
16440         * icall.c, threads-types.h, threads.c: implemented finalizer for
16441         LocalDataStoreSlot.
16442
16443 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16444
16445         * metadata.c (mono_type_size): Add a fixme.
16446         (mono_type_stack_size): Ditto.
16447
16448         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
16449         'type_forwarders' field.
16450
16451         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
16452         attribute from net 2.0.
16453
16454         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
16455         from class.c.
16456
16457         * class.c (mono_class_setup_fields): Fix a warning.
16458         
16459         * class.c (mono_class_from_name): Add support for assemblyref entries
16460         in the EXPORTEDTYPE table.
16461
16462         * reflection.c: Add support for handling type forwarders under net 2.0.
16463
16464         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
16465         
16466 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16467
16468         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
16469         overwriting entries in ModuleBuild->types, also clean up the code
16470         a little. Fixes #77774.
16471
16472 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16473
16474         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
16475         load friend assembly info when present.
16476
16477 2006-03-14  Raja R Harinath  <rharinath@novell.com>
16478
16479         Fix crasher on gtest-158.cs.
16480         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
16481         the return value if the MonoClass we want is yet in an
16482         inconsistent state.
16483         * class.c (mono_class_create_from_typedef): Add an comment
16484         explaining an order dependency between mono_class_setup_parent and
16485         mono_class_setup_mono_type.
16486
16487 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
16488
16489         * class.c: documentation updates and events bug fix.
16490
16491 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
16492
16493         * class.c: some cleanup, locking fixes.
16494
16495 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
16496
16497         * class.c: fix the generics code to setup nested
16498         type info to the instantiated type (bug #77770).
16499
16500 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
16501
16502         * marshal.c: fixed a few type correctness issues.
16503
16504 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16505
16506         * loader.c: the Set/Get/Addrtess array methods should be public.
16507
16508 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16509
16510         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
16511         
16512         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
16513         info->wrapper.
16514
16515 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
16516
16517         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
16518
16519         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
16520
16521         * mempool.c (mono_mempool_alloc): Speed this up a bit.
16522         (mono_mempool_alloc0): Ditto.
16523
16524 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16525
16526         * socket-io.c:
16527         (create_object_from_sockaddr): it was allocating 4 extra bytes
16528         for the AF_UNIX data. Fixes bug #77747.
16529
16530 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
16531
16532         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
16533
16534 2006-03-09  Dick Porter  <dick@ximian.com>
16535
16536         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
16537         Fixes bug 76966 again.
16538
16539 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
16540
16541         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
16542         names from r57532
16543         * appdomain.c: Bumped corlib version to 48 (due to r57532)
16544
16545 2006-03-07  Martin Baulig  <martin@ximian.com>
16546
16547         * object.c
16548         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
16549
16550 2006-03-07  Martin Baulig  <martin@ximian.com>
16551
16552         * class.c
16553         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
16554         regression introduced in r56970; see gtest-252.cs.
16555
16556         * loader.c (mono_get_method_constrained): Correctly handle generic
16557         methods; see gtest-253.cs.
16558
16559 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
16560
16561         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
16562
16563 2006-03-04  Martin Baulig  <martin@ximian.com>
16564
16565         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
16566         compute the parent type at runtime, just like we're already doing
16567         it for interfaces.
16568
16569         * reflection.c
16570         (mono_reflection_bind_generic_parameters): Don't compute the
16571         parent type anymore.
16572
16573         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
16574
16575 2006-03-04  Martin Baulig  <martin@ximian.com>
16576
16577         * mono-debug-debugger.h
16578         (mono_debugger_create_notification_function): Allocate memory at
16579         runtime and return a pointer to it.
16580
16581 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
16582
16583         * assembly.c: Fix windows build.
16584         
16585         * assembly.c: Fix build.
16586
16587         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
16588
16589         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
16590         
16591 2006-03-03  Dick Porter  <dick@ximian.com>
16592
16593         * process.c
16594         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
16595         Check parameters before dereferencing them.  Fixes Aaron's part of
16596         bug 77393.
16597
16598 2006-03-03  Raja R Harinath  <rharinath@novell.com>
16599
16600         Fix performance regression.
16601         * loader.c (find_method_in_class): Add 'from_class' argument.
16602         Rename 'klass' argument to 'in_class'.  The signature is compared
16603         against the method in 'in_class', and the corresponding method is
16604         returned from 'from_class'.
16605         (find_method): Walk both 'in_class' and 'from_class' in parallel.
16606         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
16607         type definition and generic instantiation in parallel.
16608         (mono_get_method_constrained): Update to changes.
16609
16610 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
16611
16612         * threads.c: make sure the domain is correct, too when doing
16613         mono_thread_attach ().
16614
16615 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
16616
16617         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
16618         windows. Fixes #77683.
16619
16620 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
16621
16622         * object.h, *: introduced specific way to set elements of an array
16623         of references to be used as write barrier. Still need to audit the
16624         uses of mono_array_addr.
16625
16626 2006-03-01  Miguel de Icaza  <miguel@novell.com>
16627
16628         * object-internals.h: New field to cache the assmebly name, patch
16629         from Tambet Ingo (tambet@ximian.com)
16630
16631 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
16632
16633         * decimal.h, class-internals.h, metadata-internals.h,
16634         file-io.h: mark a few function declarations as internal, to
16635         reduce the number of PLT entries.
16636
16637 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16638
16639         * file-io.c: fix typo in warning message.
16640
16641 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
16642
16643         * loader.c: on unix, lookup the "*A" version of a function
16644         if charset is auto as a second option before failing.
16645
16646 2006-02-28  Raja R Harinath  <rharinath@novell.com>
16647
16648         * class.h (mono_class_inflate_generic_method): Revert to two
16649         argument version.
16650         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
16651         (mono_class_inflate_generic_method_full): Add.
16652         * class.c (mono_class_inflate_generic_method_full): Rename from
16653         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
16654         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
16655         * loader.c, reflection.c: Update to changes.
16656
16657 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
16658
16659         * icall.c: const fixes and small improvements.
16660
16661 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16662
16663         * threadpool.c: for asynchronous connect(), enable the same workaround
16664         for BSD 6 as for the Mac. Fixes bug #77637.
16665
16666 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
16667
16668         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
16669         formatted classes. Fixes #77524.
16670
16671 2006-02-24  Raja R Harinath  <rharinath@novell.com>
16672
16673         * class.c (inflate_generic_type): Add a couple more
16674         micro-optimizations.
16675         (inflate_generic_context): Don't use the 'gmethod' from
16676         'inflate_with'.
16677         (mono_class_inflate_generic_method): If the method has generic
16678         parameters, but the passed-in context doesn't have a 'gmethod',
16679         create one.  Use the possibly simplified generic instantiation
16680         from the declaring class instead of the one passed in.
16681
16682 2006-02-24  Raja R Harinath  <harinath@gmail.com>
16683
16684         Make generic method signature and method header handling lazy.
16685         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
16686         (inflate_generic_header): Likewise.
16687         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
16688         parameter to avoid inflating types.
16689         (mono_get_inflated_method): Empty out.
16690         * class.h (mono_class_inflate_generic_method): Update to changes.
16691         * loader.c (mono_get_method_from_token): Don't parse signature for
16692         generic methods, nor methods of generic classes.
16693         (mono_method_signature): Rename from 'mono_method_signature'.
16694         Inflate signature on demand.
16695         (mono_method_get_header): Inflate method header on demand.
16696         * reflection.c: Update to changes.
16697
16698 2006-02-23  Raja R Harinath  <rharinath@novell.com>
16699
16700         * metadata.c (mono_metadata_inflate_generic_inst): If the
16701         instantiation is closed, don't bother expanding it in the new
16702         context.
16703         * class.c (inflate_generic_class): If the generic instantiation
16704         doesn't change after inflation, return the argument itself.
16705         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
16706         Add bounds checks.
16707         (inflate_generic_context): If neither the generic class nor the
16708         generic method instantiations change, return the original context.
16709         * reflection.c (mono_method_get_object): Do
16710         'mono_get_inflated_method' before accessing the ->klass field.
16711         (inflate_mono_method): Don't create a MonoGenericMethod unless
16712         necessary.
16713         (inflate_method): Don't pass a constructed type as the declaring
16714         type of a methodbuilder.
16715
16716 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
16717
16718         * object.c: fix memory overwrite.
16719
16720 2006-02-22  Dick Porter  <dick@ximian.com>
16721
16722         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
16723         it doesn't work any more.
16724         (mono_threads_request_thread_dump): Fix unused variable warnings.
16725
16726 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
16727
16728         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
16729         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
16730         the public header file.
16731
16732 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
16733
16734         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
16735
16736 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16737
16738         * class-internals.h, object.c: reduce the size of MonoVTable
16739         and store the interface_offsets array at negative offsets.
16740
16741 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
16742
16743         * metadata.c: tweak table descriptors data structures to reduce
16744         size and runtime relocations.
16745
16746 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16747
16748         * marshal.c: fix some types and opcodes to be type-safe
16749         in marshaling wrappers.
16750
16751 2006-02-21  Ankit Jain  <jankit@novell.com>
16752
16753         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
16754
16755 2006-02-21  Raja R Harinath  <rharinath@novell.com>
16756
16757         * metadata.c (get_constraints): Relax debugging checks for monodis.
16758
16759 2006-02-21  Ankit Jain  <jankit@novell.com>
16760
16761         * metadata.c (mono_metadata_load_generic_params): Move the code
16762         checking for ambiguous generic params from here to mono/dis/get.c
16763         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
16764
16765 2006-02-21  Raja R Harinath  <harinath@gmail.com>
16766
16767         Fix assertion triggered when compiling nemerle.
16768         * class.c (mono_get_shared_generic_inst): Rename from
16769         get_shared_inst and make non-static.
16770         * loader.c (mono_get_shared_generic_method): New.  Used to create
16771         the MonoGenericContext-equivalent of a MonoGenericContainer.
16772         (mono_get_method_from_token): Initialize the 'context' field of
16773         the created MonoGenericContainer.
16774         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
16775         * metadata.c (get_constraints): Add sanity check.
16776         * class-internals.h: Add new internal methods.
16777
16778         * reflection.c (verify_safe_for_managed_space): New sanity check.
16779         Currently checks that owner-less generic parameters aren't allowed
16780         in managed space.
16781         (mono_type_get_object): Use it.
16782         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
16783         that are now in mono_type_get_object.
16784         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
16785
16786 2006-02-19  Raja R Harinath  <harinath@gmail.com>
16787
16788         * metadata.c (mono_type_create_from_typespec): Rename from
16789         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
16790         argument and caching of types in the generic container.
16791         (unwrap_arrays, find_generic_param): Remove.
16792         * metadata-internals.h: Update.
16793         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
16794
16795 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
16796
16797         * class.c (mono_class_get_exception_for_failure): Fix a warning.
16798
16799         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
16800         return values. Fixes #77581.
16801
16802         * class.c (mono_fnptr_class_get): Switch name and name_space.
16803
16804         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
16805         classes and add support for [In, Out] attributes.
16806         (mono_marshal_free_asany): Ditto. Fixes #77524.
16807
16808 2006-02-18  Raja R Harinath  <harinath@gmail.com>
16809
16810         * class.c (mono_class_from_generic_parameter): Make more robust to
16811         incomplete MonoGenericContainers from monodis.
16812
16813 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
16814
16815         * class-internals.h: added some more exception types.
16816         * class.c, metadata.c: added a few checks to handle missing
16817         types.
16818
16819 2006-02-17  Raja R Harinath  <rharinath@novell.com>
16820
16821         Use owner-less generic-params some more.
16822         * class.c (my_mono_class_from_generic_parameter): Remove.
16823         (mono_class_from_generic_parameter): Handle null image,
16824         param->name and param->owner.
16825         (mono_class_from_mono_type): Update.
16826         (mono_class_create_from_typespec): Remove 'container' parameter.
16827         If that parameter is non-null, the result is always inflated by
16828         'mono_class_get_full' anyway.
16829         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
16830         parameter.
16831         (mono_class_get_full): Update.
16832
16833         * class.c (inflate_generic_type) [GENERICINST]: If the generic
16834         instance is not open, don't bother inflating.
16835         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
16836         parse metadata for inflated classes.
16837         (_mono_class_get): Change GenericContext* parameter to
16838         GenericContainer*.
16839         (mono_class_create_from_typespec): Likewise.  Simplify, and
16840         implement trivially.  All the cases are handled in
16841         mono_class_from_mono_type.  Don't inflate returned class.
16842         (mono_class_get_full): Delegate GENERICINST optimization to
16843         inflate_generic_type.
16844         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
16845
16846 2006-02-16  Dick Porter  <dick@ximian.com>
16847
16848         * socket-io.c (create_object_from_sockaddr): Fix typo.
16849         (create_sockaddr_from_object): Check array lengths before
16850         potentially accessing items off the end.
16851         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
16852         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
16853         (ves_icall_System_Net_Sockets_Socket_Send_internal)
16854         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
16855         length checks to avoid wraparound overflows.
16856         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
16857         contents of the array of sockets
16858         (hostent_to_IPHostEntry2)
16859         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
16860         Check return value of inet_ntop ().
16861         (addrinfo_to_IPHostEntry): Fix typo
16862
16863 2006-02-16  Raja R Harinath  <rharinath@novell.com>
16864
16865         Type metadata parsing doesn't use generic-instantiation information.
16866         * metadata.c (mono_metadata_parse_array_full): Change
16867         MonoGenericContext* parameter to MonoGenericContainer*.
16868         (mono_metadata_parse_type_full): Likewise.
16869         (mono_type_create_from_typespec_full): Likewise.
16870         (mono_metadata_parse_mh_full): Likewise.
16871         (mono_metadata_parse_generic_inst): Likewise.
16872         (do_mono_metadata_parse_generic_class): Likewise.
16873         (do_mono_metadata_parse_type): Likewise.
16874         * metadata-internals.h: Update to changes.
16875         * class.c (mono_class_find_enum_basetype): Likewise.
16876         (mono_class_setup_fields): Likewise.
16877         (mono_class_create_from_typespec): Likewise.
16878         * loader.c (method_from_methodspec): Likewise.
16879         (mono_get_method_from_token): Likewise.
16880         (mono_method_get_header): Likewise.
16881
16882 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
16883
16884         * marshal.c: handle additional GENERICINST case (patch from
16885         Thong Nguyen <tum@veridicus.com>).
16886         Fix a few cases where LDIND_I/STIND_I was used for references.
16887
16888 2006-02-16  Raja R Harinath  <rharinath@novell.com>
16889
16890         * reflection.c (mono_reflection_get_token): Remove unused variable.
16891
16892 2006-02-16  Martin Baulig  <martin@ximian.com>
16893
16894         * reflection.c (mono_reflection_get_token): Add support for fields
16895         in instantiated generic types.
16896
16897         * icall.c
16898         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
16899
16900 2006-02-15  Martin Baulig  <martin@ximian.com>
16901
16902         * icall.c
16903         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
16904         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
16905         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
16906         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
16907
16908 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
16909
16910         * class.c, metadata.c, metadata.h, object.c, icall.c,
16911         marshal.c: changed mono_type_get_underlying_type () to do
16912         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
16913         Fixed handling of instantiated generic valuetypes (bug #75479).
16914
16915 2006-02-15  Raja R Harinath  <rharinath@novell.com>
16916
16917         * metadata.c (mono_metadata_decode_signed_value): Simplify.
16918         Delegate to mono_metadata_decode_value, and work on the returned value.
16919
16920         * icall.c (ves_icall_MonoType_GetGenericArguments):
16921         Add consistency check here too.
16922         
16923 2006-02-15  Ankit Jain  <jankit@novell.com>
16924
16925         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
16926         char/short etc.
16927
16928 2006-02-15  Ankit Jain  <jankit@novell.com>
16929
16930         * metadata.c (mono_metadata_decode_signed_value): New function to decode
16931         signed values, used only for representing lower bounds of arrays.
16932         (mono_metadata_parse_array_full): Use new
16933         mono_metadata_decode_signed_value to decode lower bounds.
16934
16935 2006-02-14  Martin Baulig  <martin@ximian.com>
16936
16937         * reflection.c
16938         (mono_reflection_get_token): Support "MonoGenericMethod" and
16939         "MonoGenericCMethod" and allow generic instances / methods.
16940
16941 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
16942
16943         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
16944         to obtain the terminal size using an ioctl.
16945
16946         * object.c (mono_nullable_init): Revert this as nullable reference
16947         types are not valid.
16948         (mono_nullable_box): Ditto.
16949
16950 2006-02-09  Dick Porter  <dick@ximian.com>
16951
16952         * threads.c (mono_thread_detach): Drop a reference to the thread
16953         we're detaching.
16954
16955 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
16956
16957         * object.c (mono_nullable_init): Handle nullable reference types.
16958         (mono_nullable_box): Ditto. Fixes #77446.
16959
16960 2006-02-07  Martin Baulig  <martin@ximian.com>
16961
16962         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
16963
16964 2006-02-07  Ankit Jain  <jankit@novell.com>
16965
16966         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
16967         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
16968         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
16969         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
16970         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
16971         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
16972
16973 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
16974
16975         * class.c (mono_class_create_generic): Set type_token as well.
16976
16977         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
16978         compatible with MS.
16979
16980 2006-02-02  Martin Baulig  <martin@ximian.com>
16981
16982         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
16983         has never been used so far.
16984
16985 2006-02-02  Martin Baulig  <martin@ximian.com>
16986
16987         * mono-debug-debugger.h: Changed comment at the top of this file;
16988         the header is not installed, but it's safe to #include it from
16989         within the JIT.
16990
16991         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
16992         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
16993
16994 2006-02-02  Martin Baulig  <martin@ximian.com>
16995
16996         * mono-debug.h
16997         (MonoSymbolTable): Removed the `metadata_info' field.
16998
16999         * mono-debug.c
17000         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
17001
17002         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
17003         (mono_debugger_add_builtin_types): Removed.
17004         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
17005         (mono_debugger_create_notification_function): We now operate on a
17006         pre-allocated area; take a `gpointer' and return `void'.
17007
17008         * mono-debug-debugger.c
17009         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
17010         (mono_debugger_add_builtin_types): Removed.
17011
17012 2006-02-02  Martin Baulig  <martin@ximian.com>
17013
17014         * threads.c (mono_debugger_create_all_threads): New public method.
17015
17016 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
17017
17018         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
17019         breaks on several platforms.
17020
17021 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
17022
17023         * assembly.c: the VS.NET build doesn't supply default values for
17024         MONO_ASSEMBLIES and MONO_CFG_DIR.
17025
17026 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17027
17028         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
17029         helper function.
17030
17031         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
17032
17033         * loader.c (method_from_memberref): Fix a warning.
17034
17035         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
17036
17037         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
17038         with explicit layout. Fixes #77433.
17039
17040 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17041
17042         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
17043         max_interface_id is initialized before using it. Fixes #77398.
17044         (ves_icall_Type_GetInterfaces): Ditto.
17045
17046 2006-01-30  Raja R Harinath  <rharinath@novell.com>
17047
17048         * metadata.c (mono_metadata_parse_method_signature_full): Don't
17049         allocate memory for parameter attributes when parsing memberref
17050         signatures.
17051         * loader.c (mono_loader_set_error_method_load): Don't warn.
17052         (method_from_memberref): Ensure MissingMethodException gets thrown
17053         if method is not found.  Make warning more informative.
17054
17055 2006-01-29  Raja R Harinath  <harinath@gmail.com>
17056
17057         Fix #77397
17058         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
17059         return true if is byref.
17060         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
17061         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
17062         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
17063
17064 2006-01-27  Raja R Harinath  <rharinath@novell.com>
17065
17066         Fix tests/find-method.2.il
17067         * loader.c (find_method, find_method_in_class): Remove is_inflated
17068         argument.  Revert 2006-01-18 change.
17069         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
17070         is generic, search for method in its generic definition.
17071         * class.c (mono_class_setup_vtable_general): Print generic
17072         arguments of generic types in debugging printf.
17073
17074 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17075
17076         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
17077
17078         * threads.c (mono_threads_request_thread_dump): New helper function.
17079
17080 2006-01-25  Raja R Harinath  <rharinath@novell.com>
17081
17082         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
17083
17084 2006-01-25  Ankit Jain  <jankit@novell.com>
17085
17086         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
17087         move definition to ..
17088         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
17089         
17090 2006-01-25  Ankit Jain  <jankit@novell.com>
17091             Raja R Harinath  <rharinath@novell.com>
17092
17093         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
17094         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
17095         as necessary.
17096
17097 2006-01-25  Martin Baulig  <martin@ximian.com>
17098
17099         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
17100         `MonoDebuggerThread' into debug-debugger.c.
17101
17102 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17103
17104         * profiler.c: fix printing of data.
17105
17106 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
17107
17108         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
17109           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
17110
17111 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17112
17113         * object.c: fix deadlock related to string interning.
17114
17115 2006-01-23  Martin Baulig  <martin@ximian.com>
17116
17117         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
17118
17119         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
17120
17121 2006-01-23  Martin Baulig  <martin@ximian.com>
17122
17123         * mono-debug.h: Moved the prototypes of some functions which are
17124         used by the JIT here from mono-debug-debugger.h.
17125
17126 2006-01-21  Martin Baulig  <martin@ximian.com>
17127
17128         * Makefile.am: Don't install mono-debug-debugger.h.
17129
17130 2006-01-21  Martin Baulig  <martin@ximian.com>
17131
17132         * mono-debug-debugger.h: Enforce the private status of this header
17133         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
17134         Moved some stuff from mono-debugger-jit-wrapper.h here.
17135
17136 2006-01-20  Raja R Harinath  <rharinath@novell.com>
17137
17138         * class.c (mono_class_from_typeref): Add a sanity test to help
17139         catch lack of assembly load/search hooks.
17140
17141 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
17142
17143         * marshal.c (emit_struct_conv): Relax the fields with same offset
17144         check even more. Fixes #77230.
17145
17146 2006-01-18  Martin Baulig  <martin@ximian.com>
17147
17148         * loader.c (find_method_in_class): Added `gboolean is_inflated'
17149         argument; if false, we compare the uninstantiated signatures.
17150         (method_from_memberref): Compare the uninstantiated signatures;
17151         fixes #76417.
17152
17153 2006-01-18  Robert Jordan  <robertj@gmx.net>
17154
17155         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
17156         Clear the weak link. Fixes bug #77170.
17157
17158         * gc.c (mono_gchandle_free):
17159         Reflect *-gc.c changes (tiny optimization).
17160
17161 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
17162
17163         * metadata.c (mono_metadata_signature_dup): Applied patch from
17164         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
17165         Fixes #77288.
17166
17167 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17168
17169         * marshal.c (emit_struct_conv): Allow fields with the same offset when
17170         marshalling from native to managed code. Fixes #77230.
17171
17172 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17173
17174         * threadpool.c: fix problem (Mac only) when more than one asynchronous
17175         connect. Fixes bug #77020.
17176
17177 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
17178
17179         * class.c: fixed id assignement for nested interfaces (bug #77275).
17180         Added also better info for --print-vtable debugging.
17181
17182 2006-01-12  Martin Baulig  <martin@ximian.com>
17183
17184         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
17185         interfaces on-the-fly; fixes #76625.
17186
17187         * class-internals.h
17188         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
17189         don't need that anymore.
17190
17191 2006-01-12  Miguel de Icaza  <miguel@novell.com>
17192
17193         * socket-io.c
17194         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
17195         To avoid initing the nested_classes when not needed I turned the
17196         PeerCredData as a toplevel internal class, as it has to be shared
17197         anyways. 
17198
17199         Fixes the CASA issue.
17200
17201 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17202
17203         * domain.c: Accessors for MonoJitInfo
17204
17205         * profiler-private.h: Add jitinfo to the end jit hook
17206
17207         * profiler.[ch]: Define new hooks, called after jitting which give
17208         the MonoJitInfo that was compiled
17209
17210 2006-01-10  Martin Baulig  <martin@ximian.com>
17211
17212         * class.c (mono_class_setup_events): Add support for generic
17213         classes; fixes #76440.
17214
17215 2006-01-06  Raja R Harinath  <rharinath@novell.com>
17216
17217         Fix #77160.
17218         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
17219         on passed-in method.
17220
17221 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17222
17223         * object.c (mono_runtime_invoke_array): Add Nullable support.
17224
17225         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
17226
17227 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
17228
17229         * file-io.c: Don't consider sockets as directory and avoid an endless
17230         loop. Fix bug #76966.
17231
17232 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17233
17234         * object.c (mono_nullable_init): New helper function.
17235         (mono_nullable_box): Ditto.
17236
17237         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
17238
17239         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
17240
17241         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
17242         
17243 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
17244
17245         * class.c (mono_class_is_assignable_from): Make T assignable to 
17246         Nullable<T>.
17247
17248 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
17249
17250         * appdomain.c: Bump corlib version to 46.
17251         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
17252         serialization purpose) and changed ves_icall_System_Reflection_
17253         Assembly_get_code_base signature to accept a boolean (to escape, or 
17254         not, the assembly code base).
17255
17256 2005-12-23  Dick Porter  <dick@ximian.com>
17257
17258         * icall.c: 
17259         * threads-types.h: 
17260         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
17261         CreateEvent icall now returns "created" boolean parameter.
17262
17263 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17264
17265         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
17266         #76967.
17267
17268         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
17269         when attr_klass is an interface. Fixes #77045.
17270
17271 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
17272
17273         * marshal.c (emit_struct_conv): Fix previous patch.
17274         
17275         * marshal.c (emit_struct_conv): Add a check for fields with the same
17276         offset.
17277
17278 2005-12-20  Raja R Harinath  <rharinath@novell.com>
17279
17280         Fix regression in Mono.C5.
17281         * class.c (mono_class_create_generic): If 'klass' is an interface
17282         set up the interface offsets.
17283         (mono_class_is_assignable_from): Don't throw away generic arguments.
17284
17285 2005-12-19  Raja R Harinath  <rharinath@novell.com>
17286
17287         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
17288         type parameters.
17289
17290 2005-12-15  Raja R Harinath  <rharinath@novell.com>
17291
17292         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
17293         dead store.
17294         (do_mono_metadata_parse_generic_class): Don't pass the current
17295         generic context when parsing the type being instantiated: it
17296         cannot use it, anyway.
17297
17298         * loader.c (method_from_memberref): Don't inflate a signature if
17299         it doesn't contain any type parameters.
17300
17301 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17302
17303         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
17304
17305 2005-12-14  Martin Baulig  <martin@ximian.com>
17306
17307         * class.c
17308         (mono_type_get_name_recurse): Don't return null for type
17309         parameters and open generic classes.
17310         (mono_class_setup_methods): Don't exclude generic instances.
17311         (mono_get_unique_iid): Use different IDs for different
17312         instantiations of the same generic type.
17313         (mono_class_setup_vtable): Only use setup_generic_vtable() for
17314         open generic instances; create a normal vtable for closed generic
17315         instances.
17316         (mono_class_setup_vtable_general): We're now also called for
17317         closed generic instances.
17318
17319         * reflection.c
17320         (mono_reflection_bind_generic_parameters): Correctly use
17321         mono_metadata_lookup_generic_inst() everywhere.
17322
17323 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
17324
17325         * object.c (mono_class_create_runtime_vtable): Call 
17326         mono_class_setup_vtable ().
17327
17328         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
17329         function.
17330         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
17331         #76959.
17332
17333         * loader.c (mono_loader_set_error_type_load): Print the type load
17334         warnings to the console so they are more visible to the user.
17335         (mono_loader_set_error_method_load): Ditto.
17336
17337         * reflection.c (ensure_runtime_vtable): Revert the last change as it
17338         is still broken.
17339         
17340         * reflection.c (ensure_runtime_vtable): Fix build.
17341
17342         * reflection.c (ensure_runtime_vtable): Disable an optimization which
17343         doesn't work in all cases.
17344
17345 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
17346
17347         * object.c (mono_array_new_full): Treat a single dimensional array
17348         with 0 lower bounds as an szarray. Fixes #76973.
17349
17350         * reflection.c (custom_attr_visible): Really fix this.
17351
17352 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
17353
17354         * reflection.c (custom_attr_visible): Allow nested public attributes
17355         as well.
17356
17357         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
17358         interface check.
17359
17360 2005-12-12  Raja R Harinath  <harinath@gmail.com>
17361
17362         * class.c (set_generic_param_owner): Delete.
17363         (mono_class_create_from_typedef): Don't set ->owner field of
17364         generic parameters to "param containers" of enclosing classes.
17365         * reflection.c (mono_reflection_initialize_generic_parameter):
17366         Likewise.
17367
17368 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
17369
17370         * reflection.c (custom_attr_visible): Fix build.
17371
17372 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
17373
17374         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
17375         private attributes.
17376         
17377         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
17378         handling of null parameter defaults.
17379
17380 2005-12-09  Raja R Harinath  <rharinath@novell.com>
17381
17382         * class.c (mono_class_from_generic_parameter): Don't set
17383         klass->generic_container.
17384         (my_mono_class_from_generic_parameter): Likewise.
17385
17386 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17387
17388         * reflection.c (load_public_key): Fix a warning.
17389         (method_encode_code): Fix unaligned accesses.
17390
17391 2005-12-07  Martin Baulig  <martin@ximian.com>
17392
17393         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
17394
17395         * reflection.c
17396         (write_generic_param_entry): Encode our custom attrs.
17397
17398         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
17399
17400 2005-12-07  Martin Baulig  <martin@ximian.com>
17401
17402         * reflection.c (encode_new_constraint): Removed; we don't use the
17403         `NewConstraintAttribute' anymore.
17404
17405 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17406
17407         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
17408         not fire a TypeResolve event when Assembly.GetType () is called.
17409
17410 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17411
17412         Beginning of support for nullable types in the runtime. Parts of
17413         this patch are from Martin.
17414
17415         * appdomain.c (MONO_CORLIB_VERSION): Bump
17416
17417         * domain.c (mono_init_internal): get the nullable type
17418
17419         * class.c (mono_class_is_nullable): New method
17420         (mono_class_get_nullable_param): New mehod
17421         (mono_class_create_generic): In types T? set cast_class to T
17422
17423         * class-internals.h (MonoDefaults): new nullable default class
17424         (mono_class_get_nullable_param, mono_class_get_nullable_param):
17425         new methods.
17426
17427 2005-12-05  Raja R Harinath  <rharinath@novell.com>
17428
17429         * metadata.c (select_container): New.  Refactor code to select the
17430         appropriate GenericContainer given the type of generic parameter
17431         we are looking for.
17432         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
17433         not a MonoGenericContext.  Use select_container.  Update parameters.
17434         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
17435         and MONO_TYPE_MVAR.
17436         (unwrap_arrays): Remove duplicate tests.
17437         (find_generic_param): Rename from 'has_same_context'.  Now walks a
17438         generic instantiated class to find any arguments that are generic
17439         parameters.
17440         (mono_type_create_from_typespec_full): Use find_generic_param to
17441         avoid evicting some generic instantiations from the typespec
17442         cache.
17443
17444 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
17445
17446         * reflection.c: fixed writing of doubles on ARM FPA.
17447
17448 2005-12-02  Robert Jordan  <robertj@gmx.net>
17449
17450         * icall.c: Fixed EventInfo.ReflectedType (#76829).
17451
17452 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17453
17454         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
17455         least on SUSE 10 they are not the same (on debian, they are just the
17456         same thing).
17457
17458 2005-12-01  Raja R Harinath  <rharinath@novell.com>
17459
17460         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
17461         DeclaringType for VARs and MVARs.
17462         * class.c (set_generic_param_owner): Fix initialization of owner
17463         fields.
17464
17465 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
17466
17467         * icall.c: fixed Enum.ToObject() to correctly convert the values.
17468
17469 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17470
17471         * threadpool.c: workaround for a bug that shows up on the Mac:
17472         select()+connect() on a blocking socket is not like it should
17473         be, so we proceed to connect() in that case, wasting the I/O
17474         threadpool thread until connect succeedes. Fixes bug #75436.
17475
17476 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17477
17478         * threadpool.c: fix typo when setting file descriptor states.
17479
17480 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17481
17482         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
17483         * metadata.c (mono_metadata_parse_method_signature_full): Don't
17484         create a temporary signature container.
17485         (mono_metadata_parse_generic_param): Update to changes.
17486         (mono_type_create_from_typespec_full): Update to changes.
17487         * loader.c (method_from_memberref): Don't use a
17488         MonoGenericContainer while parsing a memberref signature.
17489         (method_from_methodspec): Remove dead-store of the 'container'
17490         variable.  It's overwritten before use.
17491
17492         * metadata.c (mono_type_create_from_typespec_full): Make debugging
17493         checks tighter.
17494         (mono_metadata_parse_generic_param): Likewise.
17495         * loader.c (find_method_in_class): Does not need a
17496         MonoGenericContainer.  Use 'mono_method_signature' rather than
17497         'mono_method_signature_full'.
17498         (find_method, mono_get_method_constrained, method_from_memberref):
17499         Update to changes.
17500
17501         * metadata.c (mono_type_create_from_typespec_full): Ensure that
17502         owner-less generic-parameters are never evicted from the typespec
17503         cache.
17504
17505         * loader.c (method_from_memberref): Don't use the current context
17506         when parsing signatures.
17507         (method_from_methodspec, mono_get_method_from_token): Update to changes.
17508
17509         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
17510         side-effects in g_assert.
17511         * loader.c (mono_get_method_from_token): Resolve klass earlier so
17512         that we don't potentially lose information.
17513
17514 2005-11-26  Dick Porter  <dick@ximian.com>
17515
17516         * icall.c:
17517         * threads.c: icalls to implement basic (ie, not named)
17518         System.Threading.Semaphore.
17519
17520 2005-11-24  Dick Porter  <dick@ximian.com>
17521
17522         * process.c
17523         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
17524         Use GetProcessId() if it's available.
17525
17526 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
17527
17528         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
17529
17530 2005-11-23  Raja R Harinath  <rharinath@novell.com>
17531             Ankit Jain  <jankit@novell.com>
17532
17533         * loader.c (mono_get_method_from_token): Initialize 'method' field
17534         of all generic parameters before parsing the signature.  Remove
17535         code that "fixed"-up MVAR references.
17536
17537 2005-11-23  Ankit Jain  <jankit@novell.com>
17538
17539         * metadata.c (mono_metadata_has_generic_params):
17540         (mono_metadata_load_generic_param_constraints):
17541         (mono_metadata_load_generic_params): Move duplicate code ...
17542         (mono_metadata_get_generic_param_row): ... here. Returns the
17543         first row-id in GenericParam table for a given owner (token).
17544         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
17545         prototype.
17546
17547 2005-11-23  Raja R Harinath  <rharinath@novell.com>
17548             Ankit Jain  <jankit@novell.com>
17549
17550         * metadata.c (mono_metadata_class_equal): Pass signature_only when
17551         comparing VARs too.
17552         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
17553         type->data.generic_param only if the type is an MVAR.
17554         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
17555         leak owner-less VARs and MVARs into managed space.
17556
17557 2005-11-21  Martin Baulig  <martin@ximian.com>
17558
17559         * class-internals.h
17560         (MonoMethod): Moved the `generic_container' here from
17561         `MonoMethodNormal' since we now also need it for
17562         `MonoMethodPInvoke';
17563         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
17564         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
17565         an union containing both `MonoMethodNormal' and
17566         `MonoMethodPInvoke'.
17567
17568         * loader.c
17569         (mono_get_method_from_token): Allow implementing generic methods
17570         as interncalls.
17571
17572         * threads.c
17573         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
17574         icall.
17575
17576 2005-11-17  Dick Porter  <dick@ximian.com>
17577
17578         * icall.c: 
17579         * process.h: 
17580         * process.c: Split the Process Start_internal icall into
17581         ShellExecuteEx_internal and CreateProcess_internal, which are
17582         called depending on whether UseShellExecute is true.  Fixes bug
17583         76670.
17584
17585         * appdomain.c (MONO_CORLIB_VERSION): Incremented
17586
17587 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17588
17589         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
17590         'msize' parameters, use the information in 'mspec' instead.
17591         (emit_object_to_ptr_conv): Ditto.
17592
17593         * marshal.c (emit_struct_conv): Handle explicit layout structs with
17594         fields out of order. Fixes #76733.
17595
17596 2005-11-17  Ankit Jain  <jankit@novell.com>
17597
17598         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
17599
17600 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
17601
17602         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
17603           bug #76575.
17604
17605 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
17606
17607         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
17608         for types with non-auto layout. Fixes #76717.
17609
17610 2005-11-16  Ankit Jain  <jankit@novell.com>
17611
17612         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
17613         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
17614         if generic_context is null.
17615           (mono_metadata_generic_param_equal): param->owner can be null.
17616           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
17617         null.
17618
17619 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
17620
17621         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
17622         the correct value.
17623
17624 2005-11-15  Martin Baulig  <martin@ximian.com>
17625
17626         * object.c (set_value): Use mono_class_from_mono_type() instead of
17627         the hack for generic instances; fixes #76136.
17628
17629 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
17630
17631         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
17632         fields.
17633
17634         * image.c (load_metadata_ptrs): Initialize the new fields.
17635
17636         * reflection.c (create_dynamic_mono_image): Ditto.
17637
17638         * reflection.c (build_compressed_metadata): Use the new fields.
17639
17640         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
17641         icall.
17642
17643         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
17644         icall.
17645         
17646 2005-11-15  Ankit Jain  <jankit@novell.com>
17647             Raja R Harinath  <harinath@gmail.com>
17648
17649         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
17650         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
17651         new per-generic_container cache if the cached MonoType's context matches
17652         the current context.
17653           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
17654         to the expected context.
17655           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
17656
17657 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17658
17659         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
17660         we changed the signature of an icall.
17661         * icall.c: Modify to mono_double_ParseImpl return true/false 
17662         depending on the success, instead of throwing the exception. This will
17663         help us in Double.TryParse methods.
17664         
17665 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
17666
17667         * marshal.c (emit_marshal_object): Throw an exception when
17668         marshalling 'object' instead of crashing. Fixes #76696.
17669
17670 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17671
17672         * class-internals.h: Add prototype for mono_type_get_full_name ().
17673
17674 2005-11-11  Dick Porter  <dick@ximian.com>
17675
17676         * threads.c (mono_thread_manage): Make sure the main thread has
17677         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
17678
17679 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17680
17681         * loader.c (mono_loader_set_error_type_load): Log a warning to the
17682         console about the missing type.
17683         (mono_loader_set_error_method_load): Ditto.
17684
17685 2005-11-09  Miguel de Icaza  <miguel@novell.com>
17686
17687         * mono-config.c (mono_get_config_dir): Set the system defaults if
17688         none is specified.
17689
17690         * assembly.c (mono_set_dirs): New API entry point to set the
17691         assembly and the config directory in one call
17692
17693 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
17694
17695         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
17696         the ftnptr was created from a delegate in a domain other than the
17697         current domain. Fixes #75377.
17698
17699         * exception.h exception.c: Add mono_get_exception_not_supported ().
17700
17701 2005-11-08  Martin Baulig  <martin@ximian.com>
17702
17703         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
17704
17705 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
17706
17707         * security-manager.h: Added definitions to deal with strongname key 
17708         pairs bigger (and smaller) than 1024 bits.
17709         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
17710         adjust wrt the public key length being used.
17711
17712 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
17713
17714         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
17715           Windows build (r51396-51397).
17716
17717 2005-11-03  Martin Baulig  <martin@ximian.com>
17718
17719         * class.c (mono_class_setup_vtable_general): Also add generic
17720         methods to the vtable; fixes #76581.
17721
17722 2005-11-01  Miguel de Icaza  <miguel@novell.com>
17723
17724         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
17725         sure that we lookup GetString method from the System.Text.Encoding
17726         class, not the derived class or we get an empty method.
17727
17728         Fixed class #76612.
17729
17730 2005-10-25  Miguel de Icaza  <miguel@novell.com>
17731
17732         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
17733         if it has been previously set (embedders). 
17734
17735         Make mono_set_rootdir available also on Unix.
17736
17737 005-10-24  Robert Jordan  <robertj@gmx.net>
17738
17739         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
17740
17741 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17742
17743         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
17744         only calls which are made to native code use this flag.
17745
17746         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
17747
17748 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17749
17750         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
17751         Add support for FieldBuilders.
17752
17753 2005-10-29  Martin Baulig  <martin@ximian.com>
17754
17755         * mono-debug.c
17756         (mono_debug_using_mono_debugger): New public method; returns
17757         whether we're running inside the debugger.
17758
17759 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
17760
17761         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
17762         for Method/Constructor/FieldBuilders.
17763
17764 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17765
17766         * reflection.c (module_add_cattrs): Save custom attributes for global methods
17767         and fields as well.
17768
17769 2005-10-26  Martin Baulig  <martin@ximian.com>
17770
17771         * mono-debug-debugger.c
17772         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
17773
17774 2005-10-24  Raja R Harinath  <harinath@gmail.com>
17775
17776         * icall.c (base64_to_byte_array): Don't pass an out-of-range
17777         integer to isspace.
17778
17779 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17780
17781         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
17782         when passing valuetypes byref. Fixes #76502.
17783
17784 2005-10-19  Jackson Harper  <jackson@ximian.com>
17785
17786         * profiler.c: Don't put a . in front of types that are not in a
17787         namespace.
17788
17789 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17790
17791         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
17792
17793 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
17794
17795         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
17796         #76436.
17797         (mono_marshal_get_ldflda_wrapper): Fix a warning.
17798
17799 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
17800
17801         * assembly.c metadata-internals.h icall.c: Define an additional
17802         parameter for mono_assembly_name_parse_full, so we can avoid creating
17803         S.R.AssemblyName.Version when no version info wasn't passed.
17804         
17805 2005-10-09  Miguel de Icaza  <miguel@novell.com>
17806
17807         * class.c (mono_type_get_full_name): Reimplement method that was
17808         removed. 
17809
17810         * image.c: Some docs
17811
17812 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17813
17814         * profiler.c (output_newobj_profile): Fix printing of Total memory
17815         on x86.
17816
17817 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17818
17819         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
17820
17821 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
17822
17823         * threads.c: remove debug output.
17824
17825 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17826
17827         * threads.c (mono_thread_manage): Fix crashes if more than 64
17828         threads need to be aborted. Hopefully fixes #75899.
17829
17830         * assembly.c (mono_stringify_assembly_name): New helper function.
17831
17832         * class.c: Use mono_stringify_assembly_name instead of the similar
17833         static function.
17834
17835         * assembly.h assembly.c: Add support for calling a postload search 
17836         hook if an assembly cannot be loaded.
17837
17838         * appdomain.c: Register new search hooks which call the AssemblyResolve
17839         events in AppDomain. Fixes #75231
17840
17841 2005-10-07  Martin Baulig  <martin@ximian.com>
17842
17843         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
17844         methods without debug info.
17845
17846 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17847
17848         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
17849         wrappers.
17850
17851 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17852
17853         * file-io.c: now that we return symlinks, use lstat and, when the file
17854         is a symbolic link, stat, to get the file attributes. Also avoid the
17855         conversion to/from utf16/external.
17856
17857 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
17858
17859         * class.c (mono_class_layout_fields): Compute klass->has_references
17860         correctly if an embedded valuetype is not yet initialized. Fixes
17861         #76331.
17862
17863 2005-10-04  Martin Baulig  <martin@ximian.com>
17864
17865         * metadata.c
17866         (mono_metadata_load_generic_param_constraints): New public
17867         function; splitted the constraints loading out from
17868         mono_metadata_load_generic_params().
17869
17870         * class.c (mono_class_create_from_typedef): Call
17871         mono_metadata_load_generic_param_constraints() after setting up
17872         the type and creating our parent; fixes #75329.
17873
17874 2005-10-04  Martin Baulig  <martin@ximian.com>
17875
17876         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
17877         non-dynamic parent classes.
17878
17879 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
17880
17881         * file-io.c : win32 build fix (ETXTBSY seems not found).
17882
17883 2005-10-04  Martin Baulig  <martin@ximian.com>
17884
17885         * reflection.c
17886         (mono_image_get_methodspec_token): Make the cache actually work;
17887         fixes #75974.
17888
17889 2005-10-04  Martin Baulig  <martin@ximian.com>
17890
17891         * class.c (mono_class_name_from_token): Removed the unneccessary
17892         `MonoGenericContext *' argument.
17893
17894 2005-10-04  Martin Baulig  <martin@ximian.com>
17895
17896         * loader.c
17897         (method_from_methodspec): Make the caching work again; fixes the
17898         performance regression from #76262.
17899
17900 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17901
17902         * file-io.c:
17903         * file-io.h:
17904         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
17905         GetFileSystemEntries that performs the same work but without going
17906         into io-layer, locking, etc.
17907
17908 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17909
17910         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
17911         ThreadState_Stopped as well. Fixes #76047.
17912
17913 2005-09-29  Martin Baulig  <martin@ximian.com>
17914
17915         * class.c
17916         (inflate_generic_context): If the new context has a `gmethod', set
17917         its `container' that that gmethod's `container'.
17918
17919         * metadata.c
17920         (mono_metadata_parse_generic_param): Simplify things;
17921         `generic_container = generic_context->container;' is just fine.
17922
17923         * loader.c (method_from_methodspec): Code cleanups.
17924
17925 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
17926
17927         * decimal.c: fix warning (and let gcc generate correct
17928         code on ARM with optimizations).
17929
17930 2005-09-28  Martin Baulig  <martin@ximian.com>
17931
17932         * loader.c
17933         (method_from_memberref): Added `MonoGenericContext *class_context'
17934         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
17935         (method_from_methodspec): If we're a memberref, use the enclosing
17936         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
17937
17938 2005-09-28  Martin Baulig  <martin@ximian.com>
17939
17940         * object.c (mono_runtime_invoke_array): Added support for
17941         MONO_TYPE_GENERICINST; fixes #75917.
17942
17943 2005-09-27  Martin Baulig  <martin@ximian.com>
17944
17945         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
17946         `k->byval_arg.type' to determine the actual type.
17947
17948         * loader.c (method_from_methodspec): Removed some hacks.
17949
17950 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17951
17952         * class-internals.h (mono_field_is_deleted): Do the test for
17953         rtspecialname before we check the actual name of the field. This
17954         prevents us from dereferencing a pointer into the string table,
17955         saving us from accessing a few pages
17956
17957         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17958         macros. This will allow a deadlock debugger to easily be plugged
17959         in.
17960
17961 2005-09-27  Martin Baulig  <martin@ximian.com>
17962
17963         * loader.c (method_from_methodspec): Create a "signature"
17964         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
17965
17966 2005-09-27  Martin Baulig  <martin@ximian.com>
17967
17968         * class.c
17969         (inflate_generic_class): Correctly set the new context's
17970         container.
17971
17972         * loader.c
17973         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
17974         instead of a `MonoGenericContext *'.
17975         (mono_method_signature_full): Take a `MonoGenericContainer *'
17976         instead of a `MonoGenericContext *'.
17977
17978         * metadata.c
17979         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
17980         instead of a `MonoGenericContext *'.
17981         (mono_metadata_parse_method_signature_full): Likewise.
17982
17983 2005-09-26  Martin Baulig  <martin@ximian.com>
17984
17985         * class.c
17986         (mono_class_from_generic_parameter): Set `klass->generic_container'
17987         (mono_class_from_generic_parameter): Likewise.
17988         (mono_bounded_array_class_get): We inherit the generic container
17989         from the element class.
17990
17991         * loader.c
17992         (find_method, find_method_in_class): Take a `MonoGenericContext *'
17993         argument rather than computing it here.
17994         (method_from_memberref): Correctly set the generic context before
17995         parsing the signature.  Fixes #75681.
17996
17997 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17998
17999         * object.c (mono_class_has_special_static_fields): Fix warnings.
18000
18001 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18002
18003         * assembly.c: Add parse_public_key function, to
18004         par the public keys. Also added mono_assembly_name_parse_full,
18005         to define it the parsed key should be freed or not.
18006         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
18007         to parse a long format assembly name.
18008         * metadata-internals.h: Keep mono_assembly_name_parse_full as
18009         private, since calling it to preserve the key requires
18010         freeing it manually.
18011         
18012 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
18013
18014         * locales.c : removed HAVE_ICU part.
18015
18016 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18017
18018         * object.c (mono_class_create_runtime_vtable): Avoid calling 
18019         field_is_special_static if the klass has no special static fields.
18020
18021         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
18022         (MonoCachedClassInfo): Likewise.
18023
18024         * object.c (mono_class_has_special_static_fields): New helper function.
18025
18026 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18027
18028         * class.c (mono_class_create_from_typedef): Don't call 
18029         interfaces_from_typedef_full for enums.
18030         (mono_class_create_from_typedef): Compute the base types of enums directly
18031         without calling mono_class_setup_fields ().
18032         (mono_class_find_enum_basetype): New helper function.
18033
18034         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
18035         one place inside the string heap.
18036         
18037 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
18038
18039         * class.c: locking fixes, code cleanups, some docs added.
18040         Allocate some data structures in the image mempool.
18041
18042 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18043
18044         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
18045         the example code.
18046         
18047 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
18048
18049         * class-internals.h, class.c, reflection.c: reduce memory taken by
18050         MonoClass.
18051
18052 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
18053
18054         * metadata.c, metadata.h, loader.h: documentation updates, code and
18055         API cleanups.
18056
18057 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18058
18059         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
18060         the example code.
18061
18062         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
18063         page faults caused by the runtime while reading metadata.
18064
18065 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18066
18067         * socket-io.c: the field names were changed 3 months ago and no one
18068         realized until bug #76077 got filed!
18069
18070 2005-09-20  Martin Baulig  <martin@ximian.com>
18071
18072         * icall.c (assembly_icalls): Removed some unused debugger icalls.
18073
18074 2005-09-20  Martin Baulig  <martin@ximian.com>
18075
18076         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
18077         write the rank into the class entry.
18078
18079 2005-09-20  Martin Baulig  <martin@ximian.com>
18080
18081         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
18082
18083 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
18084
18085         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18086
18087         * icall.c (custom_attrs_defined_internal): New icall.
18088
18089         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
18090         function.
18091         (mono_custom_attrs_construct_by_type): New helper function.
18092
18093 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
18094
18095         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
18096         terminate the resulting string. Fixes #76123.
18097
18098 2005-09-16  Martin Baulig  <martin@ximian.com>
18099
18100         * mono-debug.c
18101         (mono_debug_add_method): Ignore inflated methods for the moment.
18102
18103 2005-09-14  Martin Baulig  <martin@ximian.com>
18104
18105         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
18106
18107 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
18108
18109         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
18110         return a success/failure indication.
18111         (mono_metadata_interfaces_from_typedef_full): Ditto.
18112         (get_constraints): Ditto.
18113
18114 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18115
18116         * marshal.c (emit_marshal_array): Fix handling of null arrays.
18117         
18118         * marshal.c (emit_marshal_array): Add support for returning string
18119         arrays from delegates. Fixes #76063.
18120
18121         * marshal.c: Use the emit_ldloc/stloc macros where possible.
18122
18123 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18124
18125         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
18126         icall.
18127
18128 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18129
18130         * reflection.c icall.c: Fix after mono_get_exception_type_load
18131         signature change.
18132
18133         * assembly.c (mono_assembly_get_assemblyref): New helper function.
18134         (mono_assembly_load_reference): Use the new helper.
18135
18136         * class-internals.h (MonoLoaderError): New structure containing 
18137         information about type loading errors.
18138
18139         * class-internals.h loader.c: Add APIs to store per-thread loader
18140         error information.
18141
18142         * loader.c class.c: Set the loader error if needed.
18143
18144         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
18145
18146 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
18147
18148         * decimal.c: fixed to handle the broken ARM fp format.
18149
18150 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
18151
18152         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
18153         broken.
18154
18155 2005-09-06  Martin Baulig  <martin@ximian.com>
18156
18157         * domain.c (supported_runtimes): Added v2.0.50727.
18158
18159 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
18160
18161         * culture-info.h: reduce the size of some structures.
18162
18163 2005-09-05  Martin Baulig  <martin@ximian.com>
18164
18165         Reflect latest API changes in the August CTP.
18166
18167         * icall.c
18168         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
18169         ("MonoType.HasGenericArguments"): Removed.
18170         ("MonoMethod.BindGenericParameters"): Renamed to
18171         "MakeGenericMethod".
18172         ("MethodBuilder.BindGenericParameters"): Renamed to
18173         "MakeGenericMethod".    
18174
18175 2005-09-05  Martin Baulig  <martin@ximian.com>
18176
18177         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
18178
18179 2005-09-05  Martin Baulig  <martin@ximian.com>
18180
18181         Applying a patch from Michal Moskal <malekith@nemerle.org>.
18182
18183         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
18184         generic_container is non-NULL.
18185
18186 2005-09-05  Martin Baulig  <martin@ximian.com>
18187
18188         Applying a patch from Michal Moskal <malekith@nemerle.org>.
18189
18190         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
18191
18192 2005-08-29  Michal Moskal  <malekith@nemerle.org>
18193
18194         * reflection.c (encode_locals,
18195         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
18196         for large generic types.
18197
18198 2005-09-05  Martin Baulig  <martin@ximian.com>
18199
18200         Applying a patch from Michal Moskal <malekith@nemerle.org>.
18201
18202         * class.c (mono_dup_array_type): New public method.
18203         (mono_metadata_signature_deep_dup): New public method.
18204         (dup_type): Correctly duplicate array and function types.
18205
18206 2005-09-05  Martin Baulig  <martin@ximian.com>
18207
18208         Applying a patch from Michal Moskal <malekith@nemerle.org>.
18209
18210         * reflection.c (get_default_param_value_blobs): Handle generic types
18211         and generic methods.
18212
18213 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
18214
18215         * class.c: Fixed error reporting (method/class were inversed) for 
18216         inheritance demands.
18217         * security-manager.c|h: Added the AppDomain when calling the managed
18218         System.Security.SecurityManager.InheritanceDemand method.
18219
18220 2005-09-01  Raja R Harinath  <rharinath@novell.com>
18221
18222         * reflection.c (encode_marshal_blob): 'marshaltype' and
18223         'marshaltyperef' are alternate sources for the custom marshaler
18224         name.
18225
18226 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
18227
18228         * class.c: fix creation of array classes with rank == 1
18229         (patch by Ankit Jain <jankit@novell.com>).
18230
18231 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
18232
18233         * object.c: fix check for creating the bound data for arrays vs
18234         szarrays.
18235
18236 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18237
18238         * object.c: configuration file name is now based on the executable name,
18239         not the image name. Fixes bug #75931.
18240
18241 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18242
18243         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
18244         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
18245
18246 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18247
18248         * rand.c: Use wincrypt.h instead of WinCrypt.h.
18249
18250 2005-08-24  Ankit Jain  <jankit@novell.com>
18251             Raja R Harinath  <rharinath@novell.com>
18252
18253         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
18254           called by it recursively.
18255           (mono_class_init): Remove special case in pending_init handling, since it's
18256           superseded by the fix to mono_class_from_typeref.
18257
18258 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18259
18260         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
18261         BROKEN_THREAD_START stuff.
18262
18263 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18264
18265         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
18266         trampoline.
18267
18268         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
18269         
18270         * object.c (mono_delegate_ctor): Replace the original function address with
18271         a delegate trampoline.
18272
18273 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
18274
18275         * icall.c: add boolean argument to base64_to_byte_array and 
18276         InternalFromBase64String to control whether a whitespace-only string
18277         is allowed (or should casue a FormatException to be thrown). We need
18278         this as the behavior has changed between MS.NET 1.x and 2.0, and we
18279         to match the MS behaviour in both profiles.
18280         * appdomain.c: Bump corlib version.
18281
18282 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18283
18284         This patch implements a big portion of publisher policy
18285         support, used to bind assembly versions and redirect
18286         one assembly from version A to version B.
18287
18288         * assembly.c:
18289         New GSList loaded_assembly_bindings, for storing the cached
18290         assembly bindings.
18291         (assembly_binding_maps_name): New static function for checking if a 
18292         assembly binding information maps an assembly name.
18293         (mono_assembly_binding_info_free): New function for freeing
18294         assembly binding information resources.
18295         (get_publisher_policy_info): New static function for retrieving 
18296         assembly binding information from a MonoImage.
18297         (compare_versions): New static function for comparing an assembly
18298         binding information data and the version of an assembly name.
18299         (check_policy_versions): New static function for checking if an
18300         assembly binding info mapping an assembly name is valid for it.
18301         (mono_assembly_load_publisher_policy): New static function for
18302         loading the 'policy.major.minor.MyAssembly' image for an assembly
18303         with an assembly name 'aname'.
18304         (mono_assembly_bind_version): New static function for updating
18305         assembly redirection.
18306         (mono_assembly_apply_binding): New static function for applying
18307         assembly binding.
18308         (search_binding_loaded): New static function for searching 
18309         loaded assembly binding infos in the cache domain.
18310         (mono_assembly_load_full): Don't apply assembly binding for
18311         reflection only assemblies.
18312
18313         * metadata-internals.h: Add MonoAssemblyBindingInfo,
18314         which contains information about assembly binding. Also
18315         declare signature for mono_config_parse_publisher_policy ()
18316         function, used to retrieve pub policy info.
18317         
18318         * mono-config.c:
18319         (publisher_policy_start): New static function used to parse publisher 
18320         policy config files.
18321         (publisher_policy_parser): New static MonoParseHandler containing 
18322         the functions used when parsing config files.
18323         (mono_config_parse_publisher_policy): New function for parsing
18324         publisher policy files.
18325         
18326 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18327
18328         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
18329
18330         * marshal.c (mono_delegate_free_ftnptr): Ditto.
18331
18332         * object.c (mono_get_addr_from_ftnptr): New helper function.
18333
18334         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
18335
18336         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
18337
18338 2005-08-19  Dick Porter  <dick@ximian.com>
18339
18340         * threads.c, threads.h, appdomain.c, appdomain.h,
18341         profiler-private.h, monitor.c, object.c, object-internals.h,
18342         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
18343         store the thread ID, so it can hold a 64 bit value if needed.
18344
18345 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18346
18347         * reflection.c (mono_reflection_create_dynamic_method): Store the
18348         handle class into the method references as well so ldtoken works in
18349         dynamic methods.
18350
18351         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
18352         types.
18353
18354 2005-08-19  Ankit Jain <jankit@novell.com>
18355
18356         Fix #75847.
18357         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
18358           here rather than using the method signature of a arbitrary function
18359           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
18360           two arguments.
18361           Hack done with Harinath.
18362
18363 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18364
18365         * threadpool.c: disable printing stack traces when we get a exception
18366         in a threadpool thread. I need to do more testing to figure out which
18367         cases actually print this. Fixes bug #75828.
18368
18369 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18370
18371         * icall.c: there might be ignored whitespace after the last '='. This
18372         fixes length computation and bug #75840.
18373
18374 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
18375
18376         * assembly.c (mono_assembly_load_full): Consider .exe extension as
18377         well. Fixes #75809.
18378
18379         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
18380         #75784.
18381         
18382         * reflection.c (create_custom_attr_data): Ditto.
18383
18384 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
18385
18386         * locales.c, culture-info.h : removed RegionLCIDMap.
18387         * culture-info-tables.h : regenerated.
18388
18389 2005-08-16  Martin Baulig  <martin@ximian.com>
18390
18391         * class.c (mono_type_get_name_recurse): Small fix.
18392
18393 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
18394
18395         * locales.c : indentation fixie.
18396
18397 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
18398
18399         * object-internals.h,
18400           locales.h,
18401           locales.c,
18402           culture-info.h,
18403           icall.c : added RegionInfo table support.
18404         * culture-info-table.h : regenerated for region support.
18405
18406 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
18407
18408         * reflection.c (resolve_object): handle all kinds of MonoMethod
18409         including generic ones
18410
18411 2005-08-12  Ankit Jain <jankit@novell.com>
18412
18413         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
18414           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
18415
18416 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
18417
18418         * process.c: Don't close a thread handle when it's NULL. This is a
18419         workaround for bug #75733.
18420
18421 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18422
18423         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
18424
18425 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
18426
18427         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
18428
18429 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18430
18431         * threadpool.c: if a work item in the thread pool has a callback that
18432         catches a exception, don't propagate it after invoking the callback.
18433         Fixes bug #75336.
18434
18435 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18436
18437         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
18438
18439         * class-internals.h (MonoCachedClassInfo): Add some new fields.
18440
18441         * class.c (mono_class_init): Load field info lazily in the AOT case.    
18442
18443         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
18444
18445 2005-08-03  Ankit Jain  <jankit@novell.com>
18446
18447         Fix #75683.
18448         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
18449           PInvoke calling convention is 0.
18450
18451 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
18452
18453         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
18454         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
18455
18456 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
18457
18458         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
18459         to handle threads not started by the GC (patch by Michael Meeks
18460         <michael.meeks@novell.com>).
18461
18462 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
18463
18464         * reflection.c: Make buffer used in emitting types larger for some
18465         big generic types (patch by Michal Moskal).
18466
18467 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18468
18469         * mono-debug.c: Fix some (not all) alignment problems.
18470
18471 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18472
18473         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
18474         Invoke mono_image_load_from_data_full passing the refonly
18475         parameter.
18476
18477         * assembly.c
18478         (mono_assembly_open_from_bundle): Add the refonly argument, 
18479         in order to pass it to other methods it calls to.
18480         (do_mono_assembly_open): Add the refonly argument, in order 
18481         to pass it to other methods it calls to.
18482         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
18483         the refonly parameter to it.
18484
18485         * image.c: Add loaded_images_refonly_hash and
18486         loaded_images_refonly_guid_hash to cache the reflection
18487         only loaded images.
18488         (mono_images_init): Initialize the hash tables used for
18489         caching the reflection only images.
18490         (load_modules): Invoke mono_image_open_full passing the refonly
18491         parameter to load the modules the correct way.
18492         (build_guid_table): Add the refonly argument, to re-build the 
18493         correct hash table.
18494         (do_mono_image_open): Added the refonly argument, in order to
18495         define it for the loaded image.
18496         (mono_image_loaded_full): New function, which receives an
18497         additional parameter to look for the image in the refonly or
18498         non-refonly section.
18499         (mono_image_loaded): Updated, using mono_image_loaded_full.
18500         (mono_image_loaded_by_guid_full): The same case that happens
18501         with mono_image_loaded_full.
18502         (mono_image_loaded_by_guid): Likewise.
18503         (register_image): Use the ref_only variable inside MonoImage
18504         to decide in which hash table store the current image.
18505         (mono_image_open_from_data_full): Rename
18506         mono_image_open_from_data to mono_image_open_from_data_full,
18507         adding the refonly argument, to define the ref_only variable 
18508         inside MonoImage.
18509         (mono_image_open_from_data): Return 
18510         mono_image_open_from_data_full.
18511         (mono_image_open_full): Rename mono_image_open to
18512         mono_image_open_full, receiving the new refonly argument,
18513         to pass it to inner methods.
18514         (mono_pe_file_open): Update this function, to open
18515         a MonoImage as a non-refonly image.
18516         (mono_image_close): Use the refonly variable inside
18517         MonoImage to remove the image from the correct caches.
18518
18519         * image.h: Add the signatures of mono_image_open_full,
18520         mono_image_open_from_data_full, mono_image_loaded_full,
18521         mono_image_loaded_by_guid_full.
18522
18523         * metadata-internals.h: Add the ref_only field to 
18524         MonoImage.
18525         
18526 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
18527
18528         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
18529         Fix the last behavior, which used to load the assemblies and
18530         extract MonoReflectionAssemblyName information, instead of
18531         extract it from the metadata tables. Needed for Reflection
18532         Only assemblies.
18533         
18534 2005-07-29  Martin Baulig  <martin@ximian.com>
18535
18536         * mono-debug-debugger.c
18537         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
18538         not initialized.
18539
18540         * mono-debug.c
18541         (mono_debug_address_from_il_offset): Check whether we have
18542         debugging support before attempting to take the lock.
18543         (mono_debug_source_location_from_address): Likewise.
18544         (mono_debug_source_location_from_il_offset): Likewise.
18545         (mono_debug_il_offset_from_address): Likewise.
18546         (mono_debug_address_from_il_offset): Likewise.
18547
18548 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
18549
18550         * class.c (mono_class_from_name_case): Add support for dynamic images.
18551         Fixes #75650.
18552
18553         * object.c (mono_class_compute_gc_descriptor): Add a workaround
18554         for #75479.
18555
18556 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18557         
18558         * reflection.c (mono_method_get_object): Fix warning.
18559
18560 2005-07-28  Martin Baulig  <martin@ximian.com>
18561
18562         * mono-debug.c
18563         (mono_debug_add_wrapper): Also write the wrapper type.
18564
18565 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18566
18567         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
18568         
18569         * class.c (mono_class_init): Avoid reading nested classes if the AOT
18570         data indicates the class has none.
18571
18572 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
18573
18574         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
18575         loader lock with the debugger lock. Prevents deadlocks for beagle.
18576
18577         Beagle can now run on an smp box for a weekend without any
18578         issues. Woohoo!
18579
18580 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
18581
18582         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
18583         in a module. Fixes #75629.
18584
18585 2005-07-26  Martin Baulig  <martin@ximian.com>
18586
18587         * mono-debug.c (mono_debug_add_wrapper): New static method.
18588         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
18589         interncall or a wrapper.
18590
18591         * mono-debug.h (MonoDebugWrapperData): New public typedef.
18592         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
18593         (MONO_DEBUGGER_VERSION): Bump to 51.
18594
18595         * mono-debug-debugger.c
18596         (mono_debugger_add_type): Removed this empty function.
18597         (mono_debugger_add_method): Likewise.
18598
18599 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18600
18601         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
18602         before accessing method->slot.
18603
18604 2005-07-21  Jb Evain  <jbevain@gmail.com>
18605
18606         * reflection.c (method_encode_clauses/class): Handle filters clauses.
18607         Fixes #75010.
18608
18609 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18610
18611         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
18612         #75587.
18613
18614 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18615
18616         * image.h image.c: Add mono_image_get_guid () API function.
18617
18618 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
18619
18620         There were issues when multiple threads tried to load
18621         assemblies. A deadlock was created between assemblies_mutex and
18622         mono_domain_assemblies_lock. This fixes the issue by making the
18623         assembly ref counting be lock free. See bug 75586.
18624         
18625         * image.c (mono_image_close): The add ref function here was using
18626         Interlocked operations while the unref was using a mutex and a
18627         --. I don't think this was ever a bug that would be exposed in a
18628         non-pendantic way (ie, by an embedder doing a ref on one thread
18629         and an unref on another), but for the sake of correctness, this is
18630         now Interlocked.
18631
18632         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
18633         (mono_assembly_load_reference): Call mono_assembly_addref rather
18634         than touching the refcount ourselves.
18635         (mono_assembly_close): Use InterlockedDecrement to unref the
18636         assembly. Don't acquire the lock unless it is actually needed.
18637
18638 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
18639
18640         * class.c (mono_class_layout_fields): Fix calculation of has_references
18641         for generic types.
18642
18643 2005-07-12  Martin Baulig  <martin@ximian.com>
18644
18645         Applying a patch from Michal Moskal <malekith@nemerle.org>.
18646
18647         * metadata.c
18648         (mono_type_hash): Provide better hashing for generic instances.
18649         (mono_generic_inst_hash): Improve hashing.
18650         (mono_generic_class_hash): Likewise.
18651
18652         * reflection.c (mymono_metadata_type_hash): Improve hashing for
18653         generic instances.
18654
18655 2005-07-12  Martin Baulig  <martin@ximian.com>
18656
18657         * reflection.c (mono_reflection_create_runtime_class): Remove the
18658         hack for generic type definitions and non-`Run' assemblies.
18659         (mono_reflection_bind_generic_parameters): Also use
18660         `klass->wastypebuilder' to check for TypeBuilders.
18661
18662 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
18663
18664         * class.c (mono_class_layout_fields): Fix calculation of has_references
18665         for generic types.
18666
18667         * class.c (inflate_generic_class): Fix a leak.
18668         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
18669         for generic types.
18670
18671 2005-07-11  Martin Baulig  <martin@ximian.com>
18672
18673         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
18674         on error.
18675
18676 2005-07-11  Martin Baulig  <martin@ximian.com>
18677
18678         * loader.c (find_method): Also lookup in
18679         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
18680
18681 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18682
18683         * appdomain.c (mono_domain_unload): Don't free the error message
18684         before passing it to mono_get_exception_...
18685
18686         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
18687         
18688 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
18689
18690         * threads.c: try to better guess an available RT signal (bug #75387).
18691
18692 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18693
18694         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
18695         and CACHE_OBJECT.
18696
18697 2005-07-07  Martin Baulig  <martin@ximian.com>
18698
18699         * class.c (mono_type_get_name_full): Return NULL for
18700         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
18701         fixes #75408.
18702
18703 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18704
18705         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
18706         exit the appdomain as well being aborted.
18707
18708         * threadpool.c: Create all threadpool threads inside the root appdomain, and
18709         change back to the root domain after calling managed code. This enables
18710         appdomains using threadpools to be unloaded.
18711
18712 2005-07-07  Martin Baulig  <martin@ximian.com>
18713
18714         * class-internals.h
18715         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
18716         into `MonoDynamicGenericClass' since we only need it for dynamic
18717         types.
18718
18719         * reflection.c (mono_class_bind_generic_parameters): We don't need
18720         to compute the `parent' here.
18721
18722 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
18723
18724         * culture-info-table.h : regenerated.
18725
18726 2005-07-06  Martin Baulig  <martin@ximian.com>
18727
18728         * icall.c
18729         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
18730
18731         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
18732
18733 2005-07-06  Martin Baulig  <martin@ximian.com>
18734
18735         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
18736         we're doing a signature-only comparision; fixes #74945.
18737
18738 2005-07-06  Martin Baulig  <martin@ximian.com>
18739
18740         * class-internals.h (MonoGenericClass): Moved some things out into
18741         a new `MonoInflatedGenericClass' type.  
18742         (MonoInflatedGenericClass): New type; the `klass' of a
18743         `MonoGenericClass' is now computed lazyly in
18744         mono_get_inflated_generic_class().      
18745
18746         * class.c (mono_get_inflated_generic_class): New public function.
18747         (mono_class_inflate_generic_method): Removed the unused
18748         `MonoClass *' argument.
18749         (setup_generic_vtable): Don't call mono_get_inflated_method() on
18750         all the methods.
18751         (mono_class_create_generic): Make this static and merge it with
18752         mono_class_create_generic_2(); we're now called automatically from
18753         mono_get_inflated_generic_class().
18754
18755         * loader.c (mono_method_signature): Call
18756         mono_get_inflated_method() here.
18757
18758 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
18761         type of fields with RVA.
18762
18763         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
18764         for this pseudo class.
18765         (my_mono_class_from_generic_parameter): Likewise.
18766         (mono_class_init): Allow interfaces to have cctors.
18767
18768 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18769
18770         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
18771         lazily for AOT methods.
18772
18773 2005-07-05  Martin Baulig  <martin@ximian.com>
18774
18775         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
18776         returns FALSE for a successful match, not TRUE.
18777
18778 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18779
18780         * loader.c (mono_method_get_index): Optimize this a bit.
18781
18782 2005-07-04  Martin Baulig  <martin@ximian.com>
18783
18784         * class.c
18785         (class_compute_field_layout): Move the check for generic type
18786         definitions into mono_class_layout_fields().  Fixes #74684.
18787         (mono_class_from_generic_parameter): Correctly compute
18788         `klass->parent'; fixes #75457.
18789
18790         * reflection.c (register_assembly, register_module): Make sure
18791         `domain->rejobject_hash' is already created.
18792
18793 2005-07-02  Martin Baulig  <martin@ximian.com>
18794
18795         * class-internals.h
18796         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
18797         `MonoDynamicGenericClass'.      
18798
18799 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
18800
18801         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
18802         returned by a field getter is null, since null is a valid value.
18803
18804 2005-07-01  Martin Baulig  <martin@ximian.com>
18805
18806         * reflection.c (mono_reflection_generic_class_initialize): Update
18807         the `dgclass->fields [i].parent' to the correct class.
18808         (mono_image_get_fieldref_token): Use the declaring type, not the
18809         reflected type.
18810
18811 2005-07-01  Martin Baulig  <martin@ximian.com>
18812
18813         * loader.c (find_method): Also look in the interfaces; fixes #75429.
18814
18815 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
18816
18817         * threads.c (thread_cleanup): assert that thread != NULL
18818         (wait_for_tids_or_state_change): We were using the wrong variable
18819         when accessing wait->threads. `i' was always out of the bounds of
18820         the array.
18821
18822 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18823
18824         * loader.c: map user32 and kernel32 to libMonoSupportW
18825
18826 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18827
18828         * appdomain.c (unload_thread_main): Mark this as WINAPI.
18829
18830 2005-06-28  Martin Baulig  <martin@ximian.com>
18831
18832         * loader.c (method_from_methodspec): Fix #75334.
18833
18834 2005-06-28  Martin Baulig  <martin@ximian.com>
18835
18836         Fix #74953 - Arrays now implement the generic IList<T> interface
18837         on the 2.0 platform.
18838
18839         * class-internals.h (MonoDefaults): Added `generic_array_class'.
18840
18841         * reflection.c (mono_class_bind_generic_parameters): New public
18842         function; similar to mono_reflection_bind_generic_parameters(),
18843         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
18844
18845         * domain.c (mono_init_internal): Try to initialize.
18846         `mono_defaults.generic_array_class' here; this'll only succeed if
18847         we're using the 2.0 corlib.
18848
18849         * icall.c
18850         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
18851         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
18852         (mono_lookup_internal_call): Added support for nested classes.
18853
18854         * loader.c
18855         (mono_get_method_from_token): Set `result->signature->pinvoke' if
18856         we're an interncall and have generic arguments.
18857
18858         * class.c
18859         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
18860         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
18861         instance of System.Array.InternalArray<T> for arrays, so they
18862         implement the generic IList<T> interface.
18863
18864 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
18865
18866         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
18867         (chastamar@yahoo.com). Fixes #75374.    
18868
18869 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
18870
18871         * culture-info-table.h: regenerated.
18872
18873 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18874
18875         * icall.c: handle spaces correctly for base64 strings.
18876
18877 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18878
18879         * *.c: Kill some warnings.
18880
18881 2005-06-23  Duncan Mak  <duncan@novell.com>
18882
18883         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
18884         that this builds on Solaris 10 (x86).
18885
18886 2005-06-23  Martin Baulig  <martin@ximian.com>
18887
18888         * class.c
18889         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
18890         generic type definitions.
18891
18892 2005-06-23  Martin Baulig  <martin@ximian.com>
18893
18894         Fix #75331.
18895
18896         * metadata.c (mono_class_get_overrides): Renamed to
18897         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
18898         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
18899         pass it to mono_get_method_full().
18900
18901 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
18902
18903         * reflection.c (mono_reflection_create_runtime_class): take the
18904         mono_domain_lock in this method. Prevents deadlocks
18905
18906 2005-06-22  Martin Baulig  <martin@ximian.com>
18907
18908         * loader.c (method_from_methodspec): Fix #75330.
18909
18910 2005-06-22  Martin Baulig  <martin@ximian.com>
18911
18912         * reflection.c (type_get_qualified_name): Use
18913         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
18914         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
18915         argument; use it if we don't have an assembly name.
18916
18917 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
18918
18919         * object.c: In mono_message_init, set "copy out" flag for in
18920         parameters with the [Out] flag.
18921
18922 2005-06-21  Martin Baulig  <martin@ximian.com>
18923
18924         * class.c
18925         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
18926         and MONO_TYPE_PTR.
18927
18928 2005-06-21  Martin Baulig  <martin@ximian.com>
18929
18930         * class.c (mono_class_init): Don't initialize `class->fields' for
18931         generic instances since they're initialized again in
18932         compute_field_layout(). 
18933         (compute_field_layout): Set the field's `generic_info' here; fix
18934         #75320. 
18935
18936 2005-06-21  Martin Baulig  <martin@ximian.com>
18937
18938         * class-internals.h
18939         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
18940
18941         * metadata.c (mono_metadata_generic_method_equal): Also
18942         distinguish the `generic_class'; fixes #75334.
18943
18944 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18945
18946         * domain.c:
18947         * appdomain.c:
18948         * domain-internals.h:
18949         * reflection.c: 'domain_assemblies' field is now protected by its own
18950         lock. Don't call into managed code to run the AssemblyLoad event if we
18951         now there are no registered delegates for it.
18952
18953 2005-06-20  Martin Baulig  <martin@ximian.com>
18954
18955         * class.c (mono_class_is_assignable_from): Use a custom version of
18956         mono_class_has_parent() to make things work for generic instances;
18957         fix #75300.
18958
18959 2005-06-20  Martin Baulig  <martin@ximian.com>
18960
18961         * loader.c (method_from_methodspec): Apply a patch from
18962         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
18963
18964 2005-06-20  Martin Baulig  <martin@ximian.com>
18965
18966         * class.c (mono_class_init): Reverted Zoltan's last change; it
18967         breaks generics.
18968
18969 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18970
18971         * threads.c (wait_for_tids_or_state_change): Add missing locking.
18972
18973 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18974
18975         * socket-io.c: fix the index in the socket array for writable/error
18976         sockets. Fixes bug #75306.
18977
18978 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18979
18980         * class.c (mono_class_init): Allow interfaces to have static ctors.
18981
18982 2005-06-17  Martin Baulig  <martin@ximian.com>
18983
18984         * loader.c (method_from_methodspec): Use `context->container' when
18985         parsing the `gmethod->inst'.
18986
18987 2005-06-17  Martin Baulig  <martin@ximian.com>
18988
18989         * class.c (mono_type_get_name_recurse): Don't add the assembly
18990         name for type arguments.
18991
18992 2005-06-15  Martin Baulig  <martin@ximian.com>
18993
18994         * reflection.c (mono_image_get_inflated_method_token): Encode
18995         correct klass; fixes #75260.
18996
18997 2005-06-13 Michal Moskal <malekith@nemerle.org>
18998
18999         * icall.c: Make GetCorrespondingMethod/Constructor take
19000         MonoReflectionMethod method not MonoMethod. Removed
19001         MonoType.GetCorrespondingField, and make
19002         MonoGenericType.GetCorrespondingField take name not
19003         MonoClassField.
19004
19005 2005-06-13  Michal Moskal <malekith@nemerle.org>
19006
19007         * reflection.c (field_encode_signature, encode_locals):
19008          Make sizes of buffers for types larger (for big generic types).
19009          (create_generic_typespec,
19010          mono_reflection_sighelper_get_signature_local,
19011          mono_reflection_sighelper_get_signature_field):
19012          Add asserts for too small buffers.
19013
19014 2005-06-15  Martin Baulig  <martin@ximian.com>
19015
19016         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
19017         if our parent is not a dynamic type.
19018
19019 2005-06-15  Martin Baulig  <martin@ximian.com>
19020
19021         * class-internals.h (MonoTypeNameFormat): New enum.
19022
19023         * class.c
19024         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
19025         (mono_type_get_full_name): Removed.
19026         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
19027         argument instead of the boolean's.
19028
19029         * icall.c (ves_icall_System_MonoType_getFullName):
19030         Added `gboolean assembly_qualified'.    
19031
19032         * reflection.h
19033         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
19034
19035         * reflection.c (mono_reflection_parse_type): Parse the new type
19036         name format.
19037
19038 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19039
19040         * icall.c: no need to convert from utf16 to utf8 and then back again
19041         after the call to GetLogicalDrives.
19042
19043 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19044
19045         * icall.c: frombase64. Fix problems exposed by new tests.
19046
19047 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19048
19049         * icall.c: added internal calls for converting char [] and strings in
19050         base64 into byte [].
19051
19052 2005-06-10  Martin Baulig  <martin@ximian.com>
19053
19054         * class.c (mono_class_create_generic_2): Read the nested classes
19055         from the metadata rather than from `gklass->nested_classes' since
19056         `gklass' might not be initialized yet.
19057
19058 2005-06-09  Duncan Mak  <duncan@novell.com>
19059
19060         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
19061         all public headers. Fixes #74919.
19062
19063 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
19064
19065         * domain.c: The key for proxy_vtable_hash is now a pointer
19066         array. Added new GHashFunc and GCompareFunc functions for this.
19067
19068         * class.h: The list of interfaces in MonoRemoteClass is known in
19069         advance and can't grow (we create a new MonoRemoteClass if needed),
19070         so now the interface array can be allocated together with
19071         MonoRemoteClass.
19072         
19073         * object.c: Added a new method create_remote_class_key.
19074         Fixed mono_remote_class so it does not depend on
19075         mono_upgrade_remote_class.
19076         Removed extend_interface_array.
19077         Added new method clone_remote_class(), which makes a copy of a remote
19078         class and adds a new interface or class to it.
19079         mono_upgrade_remote_class() now creates a new remote class (or gets
19080         it from the cache) if an vtable upgrade is needed. In this way
19081         we make sure that other objects sharing the same remote class
19082         don't get the new vtable with unwanted interfaces.
19083         
19084         * object-internals.h:
19085         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
19086         
19087         * marshal.c: Track changes in mono_upgrade_remote_class().
19088
19089 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
19090         * icall.c: Add runtime methods for obtaining members of inflated
19091         class, which were created from supplied non-inflated members. It
19092         is used in internal Get{Method,Constructor,Field} methods in
19093         System.Type
19094
19095 2005-06-09  Martin Baulig  <martin@ximian.com>
19096
19097         * reflection.c
19098         (mono_reflection_bind_generic_method_parameters): Fix #75169.
19099
19100 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19101         * reflection.c (mono_image_basic_init): Define
19102         Version in MonoDynamicAssembly. 
19103         
19104 2005-06-08  Martin Baulig  <martin@ximian.com>
19105
19106         Fix #75136.
19107
19108         * loader.c
19109         (mono_method_signature_full): New public method; takes a
19110         `MonoGenericContext *'.
19111         (find_method): Use mono_method_signature_full() and pass the
19112         klass'es context to it.
19113
19114         * class.c (mono_class_is_inflated_method): Use
19115         mono_method_signature_full() and pass the context to it.
19116
19117 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
19118
19119         * object.c: add proper locking in mono_remote_class_vtable(),
19120         fixes possible memory corruption.
19121
19122 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
19123
19124         * marshal.c (mono_remoting_marshal_init): set
19125         initialized after initialization.
19126
19127 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
19128
19129         * locales.c : hush.
19130
19131 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
19132
19133         * object.c (extend_interface_array): fix really silly
19134         memory corrupting / comparison bug.
19135
19136 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19137
19138         * reflection.c: Functions added to support the creation
19139         of CustomAttributeData, which includes Attribute data
19140         used by ReflectionOnly methods.
19141
19142         * reflection.h:  mono_reflection_get_custom_attrs_data and
19143          mono_custom_attrs_data_construct added (functions exposed).
19144
19145          * icall.c: Added mono_reflection_get_custom_attrs_data
19146          as icall.
19147         
19148 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19149
19150         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
19151         lupus's request.
19152
19153 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
19154
19155         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
19156
19157         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
19158         dynamic DllImportAttribute.
19159
19160         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
19161         dynamic DllImportAttribute.
19162
19163         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
19164         Fixes #75162.
19165
19166 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19167
19168         * threads.c: avoid segfault when an unstarted thread is aborted.
19169
19170 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
19171
19172         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
19173         Returns the name and version of the runtime for reporting.
19174
19175 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19176
19177         * appdomain.c: bump corlib version.
19178         * object-internals.h: new field in MonoReflectionAssembly.
19179
19180 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19181
19182         * object-internals.h: Carlos forgot to add this field.
19183
19184 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
19185
19186         * icall.c: Added create_version to create instances
19187         of Version of MonoReflectionAssemblyName. This change helps
19188         the AssemblyName tests to keep running fine.
19189         
19190 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
19191   
19192         * object.c (mono_method_return_message_restore): A somehow less
19193         intrusive fix for #75138.
19194
19195 2005-06-03  Raja R Harinath  <rharinath@novell.com>
19196
19197         * object.c (mono_method_return_message_restore): Fix computation
19198         of expected number of out args.
19199
19200 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * reflection.c (mono_image_get_method_info): Fix the case when the
19203         charset is empty.
19204
19205 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
19206
19207         * object.c: Added missing null check in
19208           mono_method_return_message_restore.
19209
19210 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
19211
19212         * reflection.c (mono_image_get_method_info): Handle the case when
19213         dllentry is empty.
19214
19215 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
19216
19217         * object.c: When creating the vtable for a proxy, take into account
19218         all inherited interfaces, not only the ones registered in
19219         iclass->interfaces. This fixs bug #74996.
19220         Also, in mono_method_return_message_restore, verify that the array
19221         of out args has the expected lengh.
19222
19223 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19224
19225         * socket-io.c: update the timeout in Poll when the call is interrupte.
19226
19227 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19228
19229         * socket-io.c: support abort/suspend in Select_internal after last
19230         change.
19231
19232 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19233
19234         * threadpool.c: remove warning.
19235
19236 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19237
19238         * icall.c:
19239         * socket-io.[ch]: Select_internal uses poll() now when available, thus
19240         removing the 1024 limit from select(). Runtime part of the fix for
19241         bug #71203.
19242
19243 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19244
19245         * socket-io.c: when resolving the addresses for the same
19246         host returned by gethostname(), get the local IPs from the interface
19247         list. Loopback addresses are discarded if the are interfaces up with
19248         non-loopback ones. Fixes bug #63265.
19249
19250 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
19251
19252         * appdomain.c, verify.c, object-internals.h, reflection.c:
19253         bumped corlib number to 36, and added new extra_flags field
19254         to ReflectionMethodBuilder and friends.  Fixes #75060.
19255
19256 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
19257
19258         * gc.c: register a new weak link only if the object is non-null
19259         (fixes bug#75047).
19260
19261 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
19262
19263         * culture-info.h : short time pattern too.
19264
19265 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
19266
19267         * culture-info.h : expand long time pattern string length.
19268
19269 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
19270
19271         * culture-info-table.h : update (more French date format; #72788).
19272
19273 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
19274
19275         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
19276         the method is static. Fixes #75029.
19277
19278 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
19279
19280         * reflection.c: Update the table_idx field of method builders after
19281         saving the module, since it can change. This is a workaround for
19282         bug #74914. 
19283
19284 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
19285
19286         * culture-info-table.h : update (additional French date format).
19287
19288 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19289
19290         * icall.c (ves_icall_type_Equals): Revert last change.
19291         
19292         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
19293
19294         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
19295
19296 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
19297
19298         * class-internals.h: Added executioncontext_class field to 
19299         MonoDefaults structure.
19300         * domain.c: Cache System.Threading.ExecutionContext class in 
19301         mono_defaults.
19302         * object.c: Capture the ExecutionContext for asynchroneous calls in
19303          mono_async_result_new.
19304         * object-internals.h: Added execution_context and original_context 
19305         fields to MonoAsyncResult. Added execution_context to MonoThread.
19306         * security-manager.c|.h: Added mono_get_context_capture_method to 
19307         return the capture method (if required by the security manager or by
19308         the framework version used).
19309         * threadpool.c: Apply capture (if present) ExecutionContext in 
19310         mono_async_invoke and revert to original context after it completes.
19311
19312 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
19313
19314         * culture-info-table.h : updated (real hacky solution for zh-CHT).
19315
19316 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
19317
19318         * culture-info-table.h : zh-CHT related workaround.
19319
19320 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
19321
19322         * marshal.c (emit_marshal_custom): Add some error checking and call the
19323         methods in the ICustomMarshaler interface. Fixes #74875.
19324         
19325         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
19326         native->managed wrappers.
19327
19328 2005-05-12  Martin Baulig  <martin@ximian.com>
19329
19330         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
19331         here and use the loader lock.
19332
19333         * mono-debug.c: Properly lock when the debugger is not attached.
19334         (mono_debug_init): Release the initial lock if we're not running
19335         in the debugger.
19336
19337 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
19338
19339         * marshal.c (emit_marshal_custom): Pass through NULL values without
19340         calling the custom marshalling routines.
19341
19342         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
19343         conversion in structures. Fixes #74882.
19344
19345 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
19346
19347         * culture-info-table.h : zh-* cultures were missing.
19348
19349 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
19350
19351         * threads.c: Added a new event background_change_event which is signaled
19352         when a thread changes its background mode.
19353         Moved here several checks previously done in managed code. The checks
19354         require the thread lock, and using the thread lock in managed code
19355         can result in deadlocks.
19356         Merged Start_internal and Thread_internal into a single method. Now 
19357         Thread_internal does all work of creating and starting a thread.
19358         Added icalls for setting and getting the state of the object. Moved from
19359         managed code to avoid locking there.
19360         Added wait_for_tids_or_state_change() which is called instad of
19361         wait_for_tids when waiting for non-backround threads to end. This method
19362         will return if one of the threads ends or the background_change_event
19363         is signaled.
19364         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
19365         the background mode. This method signals the background_change_event
19366         event.
19367         * icall.c:
19368         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
19369         removed Start_internal.
19370         
19371 2005-05-11  Martin Baulig  <martin@ximian.com>
19372
19373         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
19374         to order of some fields to get proper alignment on 64-bit machines.
19375
19376 2005-05-11  Martin Baulig  <martin@ximian.com>
19377
19378         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
19379         changes as they're broken and completely fuck up the debugger.
19380
19381         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
19382
19383 2005-05-10  Martin Baulig  <martin@ximian.com>
19384
19385         * reflection.c (mono_reflection_generic_class_initialize): Don't
19386         call mono_class_setup_parent() here.
19387
19388 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19389
19390         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
19391         send/receive timeout use an integer in milliseconds. We were using a
19392         struct timeval.
19393
19394 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19395
19396         * locales.c:
19397         (internal_get_cultures): reserve the first slot of the array for the
19398         InvariantCulture, which will be filled in managed code.
19399
19400 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
19401
19402         * reflection.c (mono_image_fill_module_table): Initialize the
19403         GENERATION field as well.
19404
19405 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19406
19407         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
19408         Monitor.Enter on the object.
19409
19410 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19411
19412         * threads.c: Enable the wait for running threads when exiting.
19413         * icall.c: Suspend all threads before exiting.
19414
19415 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * assembly.c (mono_assembly_load_reference): Fix warning.
19418
19419 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19420
19421         * threadpool.c: changed the default number of threads per cpu. From now
19422         on, the default will be 20 + (5 * number of cpus) instead of 50.
19423
19424 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
19425
19426         * loader.c (mono_method_get_signature_full): Add locking here.
19427
19428 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
19429
19430         * appdomain.c: Moved methods for parsing and freeing assembly
19431         names to assembly.c.
19432         * assembly.c, domain-internals.h: Created public methods for parsing
19433         assembly names. Fixed mono_assembly_load_with_partial_name:
19434         it now finds the best match, taking into account the version,
19435         token and culture specified in the partial name. Also return
19436         the latest version if no version information is specified.
19437
19438 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
19439
19440         * threadpool.c: replace check for SocketAsyncCall class.
19441
19442 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19443
19444         * threadpool-internals.h:
19445         * Makefile.am: added threadpool-internals.h
19446
19447         * threadpool.c: call mono_unhandled_exception on exceptions not handled
19448         that happen in threadpool threads (tested on MS).
19449         (mono_thread_pool_remove_socket): new function that dispatch any pending
19450         AIO call on a socket that is closing. By now only epoll really needs it,
19451         as select/poll wake up when the socket closes.
19452
19453
19454         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
19455
19456 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
19457
19458         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
19459
19460 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
19461
19462         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
19463
19464 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
19465
19466         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
19467         has an abort request, convert it into a suspend request.
19468
19469 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
19470
19471         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
19472         warning for the usage of `UnmanagedFunctionPointerAttribute' which
19473         is not supported yet.
19474
19475 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19476
19477         * image.c: register assemblies loaded from data (bundles) in the loaded
19478         assemblies hash. Fixes bug #74772.
19479
19480 2005-04-29  Martin Baulig  <martin@ximian.com>
19481
19482         * class.c (mono_type_get_name_recurse): Update to the new naming
19483         schema from the latest .NET 2.x beta2.
19484         (mono_class_setup_vtable_general): If we're a generic instance,
19485         copy the vtable from our generic type definition and inflate all
19486         the methods in it.
19487
19488         * loader.c (find_method): Update to the new naming schema from the
19489         latest .NET 2.x beta2.
19490
19491 2005-04-29  Raja R Harinath  <harinath@gmail.com>
19492
19493         * class.c (mono_class_init): Add a mono_loader_unlock to the
19494         #74734 fix.
19495
19496 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * icall.c (ves_icall_System_Environment_Exit): Remove the 
19499         suspend_all_other_threads () call for the time being, since it can hang.
19500
19501         * threads.c (mono_thread_manage): Similarly, disable the waiting for
19502         the background threads to exit, since it can also hang.
19503
19504         * class.c (mono_class_init): Applied patch from Ankit Jain 
19505         (radical@gmail.com). Avoid pending init errors when a field refers
19506         to a nested class using a typeref. Fixes #74734.
19507
19508         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
19509         this for dynamic modules.
19510
19511 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19512
19513         * threads.c: don't wait for threads that are in the process of aborting
19514         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
19515         and waiting for background threads to finish. This makes xsp and
19516         mod-mono-server exit without random length delays and/or hangs.
19517
19518 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19519
19520         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
19521
19522 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
19525         dynamic types to prevent infinite loops. Fixes #74727.
19526
19527         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
19528         ..._is_assignable_to.
19529
19530 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
19531
19532         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
19533
19534 2005-04-25  Martin Baulig  <martin@ximian.com>
19535
19536         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
19537
19538         * domain.c
19539         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
19540
19541         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
19542
19543         * reflection.c (build_compressed_metadata): Set metadata header
19544         version to 2.0.
19545
19546 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19547
19548         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
19549         number into an integral and a decimal part. Fixes #70473.
19550
19551         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
19552
19553 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
19554
19555         * culture-info-table.h : reflected the latest locale-builder output.
19556
19557 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19558
19559         * threadpool.c: check for SuspendRequested too when deciding if
19560         mono_thread_interruption_checkpoint should be called.
19561
19562 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19563
19564         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
19565         * threads.c: remove interruption_mutex and use Interlocked instead. When
19566         suspending all the threads, wait for all the suspended events at once.
19567         If we're shutting down and get an APC that is going to be queued,
19568         call mono_thread_execute_interruption immediately, as the thread might
19569         be sleeping on a pthread condition or mutex.
19570
19571         * icall.c: call mono_runtime_set_shutting_down before suspending the
19572         threads.
19573
19574         Fixes bug #74693. And now xsp is happier when exiting.
19575
19576 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19577
19578         * loader.c (mono_stack_walk): Fix #74690.
19579
19580 2005-04-22  Martin Baulig  <martin@ximian.com>
19581
19582         * mono-debug.h (MonoDebugMethodJitInfo): Added
19583         `MonoDebugMethodJitInfo *jit'.
19584
19585         * mono-debug.c (mono_debug_read_method): Cache the
19586         MonoDebugMethodJitInfo in `address->jit'.
19587         (mono_debug_free_method_jit_info): New public method.
19588
19589 2005-04-22  Martin Baulig  <martin@ximian.com>
19590
19591         * class.c (mono_class_is_assignable_from): Disallow
19592         type parameter -> interface.
19593
19594 2005-04-21  Dick Porter  <dick@ximian.com>
19595
19596         * threads.c (mono_thread_create): Turn an assertion into an error.
19597
19598 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19599
19600         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
19601         
19602         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
19603         Fix some gcc 4.0 warnings.
19604
19605 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
19606
19607         * file-io.c: fix alt dir separator char on unix systems
19608         and cleanup (fixes bug #71214).
19609
19610 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
19611
19612         * marshal.c: Use CALLVIRT instead of CALL when dispatching
19613         a call to a remote domain, since the method may be an
19614         interface method in the client domain. This fixes bug #74192.
19615
19616 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19617
19618         * threadpool.c: recv/send are now performed before going back to managed
19619         code to save one transition.
19620
19621 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19622
19623         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
19624
19625         * metadata/threadpool.c: removed hack to workaround the bug above.
19626
19627         Fixes bug #74618.
19628
19629 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19630
19631         * reflection.c reflection.h: Fix handling of parameter defaults in
19632         dynamic methods. Also fixes handling of parameter attributes.
19633         Fixes #74609.
19634
19635         * mono-debug.c (mono_debug_close_image): Fix warning.
19636
19637 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19638
19639         * socket-io.h: replaced old unused field with new 'blocking'.
19640         * threadpool.c: restore socket blocking state on windows(tm).
19641
19642 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
19643
19644         * icall.c: don't return the codebase in the AssemblyName[] returned by
19645         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
19646         * object-internals.h: Removed FIXME (fields were presents) and fixed
19647         versioncompat declaration.
19648
19649 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19650
19651         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
19652         not closed, so don't cleanup when it happens.
19653
19654 2005-04-13  Chris Toshok  <toshok@ximian.com>
19655
19656         * mono-debug-debugger.h: change prototype for
19657         mono_debugger_lookup_type.
19658
19659         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
19660         this function, although it should probably be named
19661         mono_debugger_init_type.
19662
19663 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19664
19665         * threadpool.c: fix non-AIO case.
19666
19667 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
19670         the built-in profiler to measure just JIT compilation times.
19671
19672 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19673
19674         * threadpool.c: the epollfd might be closed by another thread at
19675         any time, so ignore EBADF at treat it as a "we're closing" sign.
19676
19677 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19678
19679         * threadpool.c: release the semaphores with a count equals to the number
19680         of working threads in both IO and regular pools. Fixed typo that messed
19681         up the count of IO pool threads. Don't initialize the pipe handles if
19682         we're using epoll.
19683
19684 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19685
19686         * threadpool.c: some systems don't like a NULL when deleting the socket
19687         from epoll.
19688
19689 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19690
19691         * threadpool.c: fix semaphore allocation.
19692
19693 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19694
19695         * threadpool.c: added epoll() based implementation for asynchronous IO
19696         that is used instead of the default poll() when available.
19697         It can be disabled by setting MONO_DISABLE_AIO.
19698
19699 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19700
19701         * threadpool.c: windows needs 'closesocket' and instead of returning
19702         0 when the stream is closed while in select, it returns -1. Fixes bug
19703         #74573.
19704
19705 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
19706
19707         * class.c (class_compute_field_layout): Fix the regression caused by
19708         the previous try.
19709
19710 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19711
19712         * threadpool.c: separate pool for socket async. IO.
19713         * threadpool.h: mono_max_worker_threads is not a global any more.
19714
19715 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19716
19717         * class.c (class_compute_field_layout): Fix #74549.
19718
19719 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19720
19721         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
19722         use 2 connected sockets instead.
19723
19724 2005-04-08  Miguel de Icaza  <miguel@novell.com>
19725
19726         * mono-config.c: Add new entry point for mkbundle
19727         mono_config_parse_memory. 
19728
19729 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19730
19731         * threadpool.c: removed another unused function.
19732
19733 2005-04-08  Ankit Jain  <radical@corewars.org>
19734
19735         * reflection.c (get_default_param_value_blobs): Add 'types'
19736         parameter to get the types encoded in the constant table.
19737         (mono_param_get_objects): Use the type from the constant table,
19738         not the type of the parameter, when creating default values.
19739         Handle null default values correctly.
19740
19741 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19742
19743         * file-io.c:
19744         * file-io.h:
19745         * threadpool.c:
19746         * threadpool.h:
19747         * icall.c:
19748         * socket-io.c: removed dead code for async IO.
19749
19750 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19751
19752         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
19753
19754         * threadpool.c: intercept socket async. calls and pass them to a thread
19755         that is polling and dispatching the job items to the threadpool as
19756         socket become ready. Fixes bugs #71217, #71933.
19757
19758         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
19759         between char and short/ushort arrays.
19760
19761         * socket-io.c: remove dead code.
19762
19763 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
19764
19765         * locales.c,
19766           icall.c : removed InternalToUpper_Comp() and
19767           InternalToLower_Comp().
19768
19769 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
19770
19771         * char-conversions.h : The tables were incorrectly generated. Should
19772           be generated against invariant culture.
19773
19774 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19775
19776         * object.c (mono_runtime_invoke_array): Fix return value when 
19777         passing pre-created valuetype objects to ctors.
19778
19779         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
19780         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
19781         Fixes #74338.
19782
19783 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
19784
19785         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
19786         only used with --security and hides the wrong corlib version error.
19787
19788 2005-03-30  Joshua Tauberer  <tauberer@for.net>
19789
19790         * class.c: Changed mono_class_name_from_token so that types
19791         outside of a namespace don't have an initial period.  Improved
19792         the g_warning message used in _mono_class_get when loading
19793         fails.
19794         * assembly.c: In mono_assembly_load_reference, when an assembly
19795         can't be found, "No such file or directory" is misleading and
19796         unhelpful because a few paths were checked for the presence of
19797         the assembly.  When that happens (ENOENT), display a nicer
19798         message indicating the directories that were searched.  In all
19799         cases, the warning is made easier to read for non-hackers.
19800
19801 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19802
19803         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
19804         project/solution.
19805         * appdomain.h|domain.c: Removed inline from functions.
19806         * appdomain.c: Reduced warnings when compiling on windows.
19807         * icall.c: Fixed output_debug declaration to gunichar2*.
19808         * mono-config.c: Reduced warnings when compiling on windows.
19809         * rand.c: Added missing "windows.h". Added missing return value.
19810         * rawbuffer.c: Added missing winsock2.h for windows.
19811         * sysmath.h: Added mono-compiler.h header to allow/ease 
19812         compilation with non-GCC compilers.
19813         * threads.c: Fixed declarations to compile with VS.NET C compiler.
19814         Removed cast warnings.
19815
19816         Adapted from the work of J Lothian (for VC6).
19817
19818 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19819
19820         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
19821         from default_path.
19822
19823 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19824
19825         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
19826         the 2.0 profile.
19827
19828 2005-03-27  Raja R Harinath  <harinath@gmail.com>
19829
19830         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
19831         has to be in $(exec_prefix).  $(prefix) is for arch-independent
19832         stuff, and it would probably use $(prefix)/share rather than
19833         $(prefix)/lib.
19834
19835 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19836
19837         * console-io.c: added 2 includes that might be missing.
19838
19839 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19840
19841         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
19842         profile.
19843
19844         * reflection.c (create_custom_attr): Allocate the params array using
19845         alloca so it gets GC tracking.
19846
19847 2005-03-23  Chris Toshok  <toshok@ximian.com>
19848
19849         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
19850         out some spew.
19851
19852 2005-03-24  Raja R Harinath  <rharinath@novell.com>
19853
19854         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
19855         changes to pick up any changes in prefix, etc.
19856
19857 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
19860         
19861         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
19862         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
19863
19864 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19865
19866         * class-internals.h object-internals.h class.c reflection.c: Extend the
19867         mono_lookup_dynamic_token () function to return the class of the
19868         token as well. 
19869
19870         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
19871         well. Fixes #73848.
19872
19873 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19874
19875         * security-manager.c: Skip inheritance checks for intra-corlib
19876         class inheritance and method overrides. This skips a lot of checks
19877         and (anyway) permissions cannot work until corlib is loaded.
19878
19879 2005-03-23  Martin Baulig  <martin@ximian.com>
19880
19881         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
19882         MONO_TYPE_GENERICINST.  
19883
19884 2005-03-23  Martin Baulig  <martin@ximian.com>
19885
19886         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
19887
19888 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19889
19890         * class.c: added locking comments to some functions.
19891         Cache the interface offsets arrays (saves about 20 KB
19892         of runtime memory in a typical app).
19893         Reduce the time overhead in mono_class_setup_supertypes ().
19894
19895 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
19896
19897         * icall.c: speedup and fix leaks in GetMethodsByName and
19898         GetPropertiesByName.
19899
19900 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
19901
19902         * reflection.c: some locking fixes.
19903
19904 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
19905
19906         * metadata.c: added missing break in case statement.
19907
19908 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
19911         typedbyref return values. Fixes #73941.
19912
19913 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19914
19915         * security-manager.c|h: Added demandunmanaged method and 
19916         suppressunmanagedcodesecurity class to MonoSecurityManager.
19917         Renamed aptc class to allowpartiallytrustedcallers.
19918
19919 2005-03-17  Martin Baulig  <martin@ximian.com>
19920
19921         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
19922
19923 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19924
19925         * file-io.c: disabled file async. IO using aio_*. It uses the
19926         threadpool now. Workaround for bug #73718.
19927
19928 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
19929
19930         * assembly.h, mono-config.c: added code to deal with bundled configs
19931         for bundled assemblies.
19932
19933 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
19934
19935         * *.c, private.h: cleanup, removing old private.h header file.
19936
19937 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19938
19939         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
19940         and throw_on_unmappable_char attributes.
19941
19942 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
19943
19944         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
19945         _ProcessName_internal.
19946
19947 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19948
19949         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
19950         #73631.
19951
19952         * icall.c threads.c threads-types.h: Remove slothash icalls as they
19953         are no longer used.
19954
19955 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * object.c (compute_class_bitmap): Add support for generics. Fixes
19958         #73527.
19959
19960 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
19961
19962         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
19963
19964 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19965
19966         * filewatcher.c: commented out the code for windows watcher, as we don't
19967         use it (we use the managed implementation instead).
19968
19969 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * object-internals.h (MonoThread): Remove 'unused1' field.
19972
19973         * appdomain.c: Bump corlib version.
19974
19975         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
19976
19977         * reflection.c (mono_reflection_create_runtime_class): Remove the
19978         AssemblyBuilder.Save optimization since it causes too many problems.
19979
19980 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
19981
19982         * exception.c|h: Added mono_get_exception_reflection_type_load to
19983         create a ReflectionTypeLoadException object.
19984         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
19985         to return NULL is a InheritanceDemand fails during reflection. Updated
19986         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
19987         ReflectionTypeLoadException if an InheritanceDemand fails during 
19988         reflection. Added icall mapping for GetLinkDemandSecurity.
19989         * security-manager.c|h: Added ves_icall_System_Security_
19990         SecurityManager_GetLinkDemandSecurity internal call to return the
19991         class and methods permissions set for a LinkDemand. Removed unused
19992         fields in MonoSecurityManager.
19993
19994 2005-03-10  Martin Baulig  <martin@ximian.com>
19995
19996         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
19997         it's a generic instance.
19998
19999 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
20000
20001         * reflection.c (mono_get_object_from_blob): Applied patch from
20002         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
20003
20004         * class.c (mono_class_is_assignable_from): Another try at fixing 
20005         #73469 without breaking anything.
20006
20007 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * class.c: (mono_class_is_assignable_from): Revert the last changes
20010         since they don't work with generics.
20011         
20012         * class.c (mono_class_is_assignable_from): Fix build bustage.
20013
20014         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
20015         the managed IsAssignableFrom method. Fixes #73469.
20016
20017         * reflection.c (mono_reflection_call_is_assignable_from): New helper
20018         function.
20019
20020 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
20021
20022         * object.c (mono_load_remote_field_new): Fix returning uninitialized
20023         memory when the remoting callback does not sets the out arguments.
20024         Fixes #73007.
20025
20026         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
20027         by mistake.
20028
20029         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
20030
20031         * object-internals.h (MonoStackFrame): Sync with managed object layout.
20032
20033         * appdomain.c: Bump corlib version.
20034
20035 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
20036
20037         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
20038         function.
20039
20040         * threads.c (mono_thread_attach): Detect threads which are not started
20041         by the GC pthread wrappers.
20042
20043 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
20044
20045         * icall.c: Added new icall for RNG.
20046         * rand.c|h: Added new icall to open the RNG. This allows to share a 
20047         single handle on Linux to access /dev/urandom and fix #73183.
20048
20049 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
20050
20051         * object.c: setting the new vtable in a transparent proxy object must
20052         not change the GC descriptor.
20053
20054 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
20055
20056         * object.c: fixed compilation without GCJ support.
20057         * reflection.c: for runtime-created types ensure klass->has_references
20058         is correct (bug #73215).
20059
20060 2005-03-02  Martin Baulig  <martin@ximian.com>
20061
20062         * class.c (mono_class_is_assignable_from): Make this work if
20063         `oklass' is a generic instance; fixes #72831.
20064
20065 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
20066
20067         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
20068         with hasthis set.
20069         
20070         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
20071
20072         * marshal.c: Reorganize native->managed marshalling code to also use
20073         the emit_marshal_... functions.
20074
20075 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
20076
20077         * object.c: typed allocs have issues with bitmap sizes > 30,
20078         so check for max_set >= 30.
20079
20080 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
20081
20082         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
20083         managed code. Fixes #73012.
20084
20085         * metadata.h (MonoMarshalSpec): Add elem_mult field.
20086
20087         * metadata.c reflection.c: Load/Emit elem_mult as well.
20088         
20089         * metadata.h (MonoMarshalSpec): Add comment.
20090
20091         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
20092
20093         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
20094         num_elem to -1 if not given.
20095
20096         * object-internals.h (MonoReflectionMarshal): Add has_size field.
20097
20098         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
20099         given values.
20100
20101 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
20102
20103         * null-gc.c (mono_gc_free_fixed): Was not compilable.
20104
20105 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * reflection.c (encode_marshal_blob): Encode param_num field as well.
20108
20109         * object-internals.h (MonoReflectionMarshal): Add param_num field.
20110
20111 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
20112
20113         * object.c: generalized the reference bitmap creation
20114         and added hooks for the new GC.
20115         * class-internals.c: removed the gc_bitmap field from MonoClass.
20116
20117 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20118
20119         * domain.c: help the compiler to produce better code
20120         in mono_jit_info_table_find ().
20121
20122 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
20123
20124         * object.c: make all allocations look typed.
20125
20126 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20127
20128         * socket-io.c: load Mono.Posix if it's not loaded already
20129         (fixes bug#73033).
20130
20131 2005-02-24  Martin Baulig  <martin@ximian.com>
20132
20133         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
20134         * reflection.c (dup_type): Likewise.
20135
20136 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
20137
20138         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
20139         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
20140
20141 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20142
20143         * domain.c, threads.c, object-internals.h: make the critical thread
20144         local vars use the fast access mode (even when we're compiled in
20145         a lib). Provide accessors to be used by the jit during codegen.
20146
20147 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
20148
20149         * appdomain.c: Changed hook functios behavior to include
20150         support for the reflection only assemblies. Some icalls were changed
20151         to support the mentioned assemblies too. Signatures of static methods
20152         try_assembly_resolve and real_load now have an additional parameter:
20153         refonly.
20154
20155         * assembly.c: General changes to mono_assembly_ methods to support
20156         reflection only api. Functions mono_assembly_open, mono_assembly_load,
20157         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
20158         suffix, to support an additional gbool parameter to specify whether
20159         the assembli is reflection only or not. Created some new hook functions 
20160         to add support for reflection only assemblies. Signatures of static 
20161         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
20162         have now an additional parameter: refonly.
20163
20164         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
20165         indicating whether the assembly is reflection only or not.
20166
20167         * exception.c: Add mono_get_exception_invalid_operation.
20168
20169         * icall.c: Throw an InvalidOperationException when trying to invoke
20170         a property/method/event, or trying to set/get the value of a field.
20171         Also add an icall to retrieve the ref_only flag to the
20172         MonoReflectionAssembly.
20173
20174 2005-02-23  Chris Toshok  <toshok@ximian.com>
20175
20176         Part of fix for #72827.
20177         * mono-debug.c (mono_debug_add_method): add lexical block data to
20178         the info we write.  Kind of a hack at the moment - we copy the
20179         lexical block info from the MonoDebugMethodInfo to the
20180         MonoDebugMethodJitInfo here, before writing it.
20181         (mono_debug_read_method): read the lexical block info.
20182
20183         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
20184
20185         * debug-mono-symfile.h: add lexical block support.
20186
20187         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
20188         support.
20189
20190 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20191
20192         * loader.c (mono_lookup_pinvoke_call): Fix warning.
20193
20194         * object.c (mono_runtime_free_method): Call mono_free_method () and
20195         put the TODOs there.
20196
20197         * loader.c (mono_free_method): Free up most memory allocated for 
20198         dynamic methods.
20199
20200 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20201
20202         * reflection.c: properly flag a Type argument to a
20203         named custom attr value (bug #72248).
20204
20205 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20206
20207         * reflection.c: reduce code duplication in named custom
20208         attribute encoding.
20209
20210 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
20211
20212         * reflection.c: properly encode custom attrs of type object
20213         (bug #72649).
20214
20215 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
20216
20217         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
20218
20219 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
20220
20221         * socket-io.c: load System.dll if it's not loaded already
20222         (bug #72850 and #70477).
20223
20224 2005-02-21  Martin Baulig  <martin@ximian.com>
20225
20226         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
20227         generic instances.
20228
20229 2005-02-21  Martin Baulig  <martin@ximian.com>
20230
20231         * reflection.c (mono_image_build_metadata): We also need to
20232         "fixup" the MethodImpl table after we computed the final method
20233         indices.  Call fixup_methodimpl() to do that.
20234         (fixup_methodimpl): New private method.
20235
20236 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
20237
20238         * assembly.c: special case mscorlib.dll (bug#72536),
20239         patch from Carlos Alberto Cortez.
20240
20241 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
20242
20243         * threads-types.h threads.c: Fix build bustage.
20244
20245         * threads.c: Use a union for long<->double conversions.
20246
20247         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
20248         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
20249
20250         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
20251         containing the checkpoint call with NOT_TAKEN.
20252         
20253         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
20254         checkpoint before pushing the arguments, so they won't have to be
20255         spilled to stack.
20256
20257 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
20258
20259         * domain.c, assembly.c, domain-internals.h: make some data
20260         const and relocation-free.
20261
20262 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20263
20264         * object.c, appdomain.c, class-internals.h: introduce the
20265         MonoClassRuntimeInfo structure to hold the info needed to
20266         use a class at runtime. Made mono_class_vtable() lock-free
20267         for all the appdomains.
20268
20269 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
20270
20271         * metadata-internals.h, image.c: introduce a per-image mempool to
20272         be used for memory that has the same lifetime as the image.
20273
20274 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
20275
20276         * domain.c: In mono_init_internal(), instead of selecting the first
20277         runtime version supported by an executable, get a list of all
20278         supported versions and select the one for which an mscorlib exists
20279         (since even if the runtime supports a given version, it doesn't mean
20280         that the framework for that version is installed).
20281         Modified get_runtimes_from_exe to support this behavior.
20282         In supported_runtimes, added information about additional system
20283         assembly versions.
20284         
20285         * assembly.c: Added support for more than one system assembly version
20286         per runtime version. Updated the assembly list.
20287         In mono_assembly_remap_version, removed the initial version check,
20288         since we don't know to which version we need to compare until we
20289         get the version set on which the assembly is based.
20290         Moved the code for loading corlib into the new method
20291         mono_assembly_load_corlib(), so it can be used by the initialization
20292         code.
20293         
20294         * domain-internals.h: Updated data structures and added declaration
20295         for mono_assembly_load_corlib.
20296
20297 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20298
20299         * reflection.c (resolve_object): Fix the creation of the signature in 
20300         the SignatureHelper case.
20301
20302         * assembly.c (mono_assembly_remap_version): Fix binary search.
20303         
20304 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
20305  
20306         * class.c: Added inheritance check when a method is overloaded (from a
20307         virtual method or when implementing an interface) and when a class is
20308         inherited. Added functions to set a failure for a class and to 
20309         retreive the exception from a failure.
20310         * class-internals.h: Added fields to MonoClass to keep the exception
20311         information status for inheritance (or other exceptions) to be thrown
20312         later (i.e. not at load time).
20313         * object.c: Throw the inheritance SecurityException when a type is to 
20314         be created with either class or method inheritance violations.
20315         * reflection.c|h: Fix when getting declsec from a class. Removed 
20316         unrequired code for class. Improved sanity in parameter naming.
20317         * security-manager.c|h: Added functions to check for class and method
20318         inheritance.
20319
20320 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
20321
20322         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
20323         and has_finalize in dynamic types as well.
20324
20325 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
20326
20327         * culture-info-table.h : fixed currency format for en-GB (and so on).
20328
20329 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
20330
20331         * gc.c: ensure the GC handles never have 0 as a value.
20332
20333 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
20334
20335         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
20336         a pointer to a struct to unmanaged code. Fixes #72625.
20337
20338 2005-02-16  Martin Baulig  <martin@ximian.com>
20339
20340         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
20341
20342 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
20343
20344         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
20345
20346 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
20349
20350         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
20351         UnmanagedFunctionPointerAttribute, use it for determining calling convention
20352         etc. Fixes #71471.
20353
20354         * reflection.c (mono_custom_attrs_get_attr): New helper function.
20355
20356         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
20357
20358 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
20359
20360         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
20361         changes to make the current context a field in MonoThread.
20362
20363 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
20364
20365         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
20366         the last change.
20367         
20368         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
20369         extracted from mono_marshal_get_native_wrapper.
20370
20371         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
20372         to create wrappers around native functions.
20373
20374         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
20375         delegates for arbitrary function pointers. Fixes #71472.
20376
20377 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
20378
20379         * threads.c: cleaned up the code a little.
20380
20381 2005-02-15  Martin Baulig  <martin@ximian.com>
20382
20383         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
20384         the data table.
20385
20386         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
20387         allocate larger chunks if needed.
20388
20389 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20390
20391         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
20392         in by mistake.
20393
20394 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
20395
20396         * domain.c: keep the domains in an array and ensure the domain ids
20397         are kept small, so they can be used as indexes to domain-specific data
20398         with a small memory overhead.
20399
20400 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
20401
20402         * icall.c: Handle byref types in Type icalls. Fixes #72544.
20403
20404 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
20405
20406         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
20407
20408 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
20409
20410         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
20411
20412         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
20413         values.
20414
20415         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
20416         
20417 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
20418
20419         * domain-internals.h: add the hashtable here.
20420
20421         * class-internals.h: Remove `info' from MonoMethod
20422
20423         * domain.c: Add a new hashtable, jit_trampoline_hash
20424
20425 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
20426
20427         * object.c: don't set the value of static fields
20428         (fixes bug#72494).
20429
20430 2005-02-11  Martin Baulig  <martin@ximian.com>
20431
20432         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
20433         (mono_debug_add_method): Silently ignore the method if it's too big.
20434         (mono_debug_add_type): Likewise.
20435
20436 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
20437
20438         * threads.c, appdomain.c: remove #ifdefs from the code.
20439
20440 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
20441
20442         * metadata-internals.h: Added flags to MonoAssembly to cache the most
20443         common security informations. This allows us to stay in unmanaged code
20444         when doing LinkDemand and it's special cases (except for the first 
20445         time for initialization). The flags a very much used with --security.
20446         * reflection.c|h: Added code to get declarative security attributes 
20447         for LinkDemand and InheritanceDemand. This required to refactor the
20448         existing code for Demand.
20449         * security-manager.c|h: Added new method fields for the special cases
20450         of LinkDemand.
20451
20452 2005-02-10  Martin Baulig  <martin@ximian.com>
20453
20454         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
20455         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
20456
20457 2005-02-10  Martin Baulig  <martin@ximian.com>
20458
20459         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
20460         debugging code; this is almost a complete rewrite.
20461
20462         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
20463
20464 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20465
20466         * domain.c, object.h: expose mono_string_equal () and 
20467         mono_string_hash ().
20468         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
20469         it's implemented in managed code.
20470
20471 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
20472
20473         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
20474         lo leak objects between appdomains.
20475
20476 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
20477
20478         * assembly.c: old compilers compilation fix from 
20479         robertj@gmx.net (Robert Jordan).
20480
20481 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
20482
20483         * class-internals.h: Little reminder for the future.
20484
20485         * debug-helpers.c: Fix up wrapper_type_names
20486
20487 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
20488
20489         * image.c, metadata-internals.h: when loading an image from a file,
20490         mmap all of it and use the same codepaths as when using a
20491         in-memory image: the code is simpler and we use less memory
20492         (both writable and readonly).
20493
20494 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
20495
20496         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
20497         API to alloc runtime data structures that need to be tracked by the
20498         GC and contain pointers.
20499         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
20500         make the code more readable and eventually use a different GC.
20501
20502 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
20503
20504         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
20505         for out arguments.
20506         
20507 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
20508
20509         * object.c: In release_type_locks(), don't release the cctor lock
20510         if it has already been released. This fixes a crash in the
20511         thread5 test.
20512
20513 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
20514
20515         * gc.c, marshal.c, icall.c: register a delegate for finalization
20516         only when the native function pointer has been allocated for it.
20517
20518 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20519
20520         * object.c: cleaned up some code, allocate objects that are
20521         pointer free with the atomic malloc variant. Allocate memory
20522         for static data from the mempool if it's pointer-free.
20523         Allocate the bounds array at the end of the array data, when needed.
20524         * object-internals.h, object.h: move a private function in a private
20525         header.
20526         * class.c: handle missing case in tracking references in fields.
20527
20528 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
20529
20530         * class.c, class-internals.h: keep track if a type has
20531         reference fields in either the instance or static fields.
20532
20533 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
20534
20535         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
20536         and renamed to MonoRuntimeInfo. Added fields to store the expected
20537         framework assembly version. Changed mono_get_framework_version and
20538         mono_get_runtime_version for a single mono_get_runtime_info method.
20539         
20540         * assembly.c: Added method to remap system assembly versions to the
20541         current executing runtime version. Removed old mapping code.
20542         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
20543         
20544         * icall.c, reflection.c: Track api changes.
20545
20546 2005-02-06  Miguel de Icaza  <miguel@novell.com>
20547
20548         * loader.c (method_from_memberref): Improve error reporting,
20549         produce the class name instead of the typeref/typedef index. 
20550
20551 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
20552
20553         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
20554
20555 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20556
20557         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
20558         stdcall and charset name mangling.  Reorganize the code and add
20559         some tracing stuff.
20560
20561 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
20562
20563         * monodiet.c: More iters!
20564
20565         * marshal.c: Iter usage.
20566
20567         * icall.c: Iter usage.
20568
20569         * object.c: Use iters.
20570
20571         * debug-helpers.c: More iters
20572
20573 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20574
20575         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
20576         under win32.
20577
20578 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
20579
20580         * mono-debug-debugger.c: use iters
20581
20582         * class.c, class-internals.h: mono_class_setup_events is static
20583         now
20584
20585         * All callers: use iters
20586
20587 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
20588
20589         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
20590         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
20591
20592 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20593
20594         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
20595
20596         * marshal.h: Add prototypes for ldfld/stfld_remote.
20597
20598         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
20599         this is called during startup.
20600         
20601 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
20602
20603         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
20604         MonoThreadsSync struct private in monitor.c. Changed the way
20605         MonoThreadsSync is allocated so it's faster and there is no
20606         need to keep track of it with a finalizer and it uses less memory.
20607         This also finally allows us to allocate mono objects as ptrfree when
20608         there are no reference fields.
20609
20610 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
20611
20612         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
20613         disappearing link to the GC interface and use them to simplify
20614         the gchandles code.
20615
20616 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
20617
20618         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
20619         stfld_remote which call mono_load/store_field_new. This allows methods
20620         calling ldfld/stfld wrappers to be AOTed.
20621
20622         * console-io.c: Include sys/filio.h under solaris.
20623         
20624         * console-io.c: Include curses.h if needed correctly.
20625
20626 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20627         
20628         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
20629         method->klass as well.
20630
20631         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
20632
20633         * class.c (mono_class_init): Switch on lazy initialization of 
20634         methods.
20635
20636         * class.c (mono_class_get_finalizer): Handle the case when the 
20637         finalizer is inherited.
20638
20639 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20640
20641         * console-io.c: <curses.h> is needed by term.h on solaris.
20642
20643 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
20644
20645         * icall.c, class-internals.h, monodiet.c, class.c: Remove
20646         mono_class_setup_properties where possible. Remove this ftn from
20647         the header file, and make it static.
20648
20649 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
20650
20651         * loader.c: Add missing setup_... call.
20652
20653         * class.c: Add missing setup_... calls.
20654
20655         * class.c (mono_class_init): Switch on lazy initialization of 
20656         the generic vtable.
20657         
20658         * class.c (mono_class_init): Fix generics broken by the recent changes.
20659
20660         * monodiet.c (handle_type): Add missing setup_... calls.
20661
20662         * class.c: Back out garbage in previous patch.
20663         
20664         * class.c: Add missing setup_... calls.
20665
20666         * class.c (mono_class_get_method_from_name_flags): Avoid calling
20667         mono_class_setup_methods () if possible.
20668
20669         * class-internals.h (MonoClass): Add 'has_cctor' flag.
20670
20671         * class-internals.h (MonoCachedClassInfo): New structure.
20672
20673         * class.c: Initialize properties and events fields of MonoClass lazily.
20674
20675         * class.c: Add infrastructure for lazily initializing the methods and
20676         vtable fields of MonoClass. Not yet used.
20677
20678         * class.c (mono_class_get_finalizer): New helper function.
20679
20680         * class.c: Add infrastructure for loading some class related data from
20681         an AOT file.
20682
20683         * object.c: Add infrastructure for initializing the vtable from data
20684         in the AOT file.
20685
20686         * gc.c (run_finalize): Use mono_class_get_finalizer ().
20687
20688         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
20689         appropriate initialization function before accessing parts of the
20690         MonoClass structure.
20691
20692         * marshal.c: Fix warnings.
20693         
20694         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
20695
20696         * mono-debug-debugger.c (get_exception_message): Use 
20697         mono_class_get_method_from_name_flags ().
20698
20699 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
20700
20701         * reflection.c, appdomain.c: Replace a few manual searches that
20702         Zoltan missed. (Paolo approved this part of my initial patch).
20703
20704 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
20705
20706         * profiler.c: disable recording statistical events at report time.
20707
20708 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
20709
20710         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
20711         to byteswap arrays of enum values, too (bug #72080).
20712
20713 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
20714
20715         * appdomain.c (set_domain_search_path): Allow this to be called if
20716         domain->setup is not yet set.
20717
20718         * loader.c (mono_method_get_index): New helper function.
20719
20720         * loader.c reflection.c: Use mono_method_get_index ().
20721
20722         * class.c (mono_class_get_method_from_name_flags): New helper method.
20723
20724         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
20725         this.
20726
20727         * class.c (mono_class_get_cctor): New helper method.
20728
20729         * string-icalls.c object.c class.c marshal.c reflection.c: Use
20730         mono_class_get_method () to look up methods.
20731
20732 2005-02-01  Miguel de Icaza  <miguel@novell.com>
20733
20734         * console-io.c: Fix the build, this should work on Windows.
20735
20736 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
20737
20738         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
20739         be set to null to keep things valid
20740
20741 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20742
20743         * icall.c: added Console 2.0 icalls.
20744         * Makefile.am: added console-io.[ch]
20745         * console-io.[ch]: internal calls for Console 2.0 API.
20746
20747 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
20748
20749         * class.c: make sure we consider all the interfaces
20750         when calculating max_interface_id (bug found by
20751         Jeroen Frijters running ikvm).
20752
20753 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
20754
20755         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
20756         valuetype fields to null.
20757
20758         * object.c (set_value): Ditto. Fixes #71669.    
20759
20760 2005-01-31  Martin Baulig  <martin@ximian.com>
20761
20762         * metadata.c (mono_metadata_has_generic_params): New public
20763         function; checks whether something is a generic method.
20764
20765 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20766
20767         * appdomain.c: fix infinite recursion when adding assemblies.
20768
20769 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
20770
20771         * object.c: Fix small typo to return all items for Environment.
20772         GetCommandLineArgs.
20773
20774 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
20775
20776         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
20777         reflection.c: more domain and assembly-unload related fixes
20778         and memory leaks plugs.
20779
20780 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
20781
20782         * 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.
20783
20784 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
20785
20786         * loader.c (mono_method_signature): Make this method lazy
20787         (mono_get_method_from_token): Don't computate the signature here.
20788
20789         Doing this saves quite a bit of memory. I got 90 kb on starting up
20790         monodoc. It should also save some disk reads on startup.
20791
20792         * *: MonoMethod->signature might be NULL now. You *MUST* use
20793         mono_method_signature.
20794
20795 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
20796
20797         * object.c (mono_runtime_get_main_args): Return an array from the
20798         current domain here. Fixes #71938.
20799
20800 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20801
20802         * monitor.c: formatting changes to comply with the
20803         mono coding style and remove #ifdefs from the code.
20804
20805 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
20806
20807         * metadata.c, private.h: remove some unneeded data
20808         and use a more compact representation for table schemas.
20809
20810 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
20811
20812         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
20813         to get a better distribution in hash tables.
20814         * *.c: use mono_aligned_addr_hash() where appropriate.
20815         * assembly.c: make var static.
20816
20817 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20818
20819         * domain-internals.h: Put MonoJitInfo on a diet.
20820
20821         * domain.c: Fix a warning.
20822
20823 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
20824
20825         * gc.c: rework the gc handles code to reuse handles
20826         when freed.
20827
20828 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
20829
20830         * domain.c: fixed long standing bug in mono_string_equal() which
20831         was brought to light with the ldstr changes.
20832
20833 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20834
20835         * reflection.c: Remove warning by adding missing include for marshal.h
20836
20837 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
20838
20839         * domain.c, object.c: change the ldstr_table to hold
20840         MonoString* as keys: makes the runtime isinterned lookup
20841         faster and simplifies memory management.
20842
20843 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
20844  
20845         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
20846         possible to add imperative security checks before calling the icall.
20847         * reflection.c: Return security attributes on the original MonoMethod
20848         (and not the wrapped one). This fix permissions on icalls.
20849
20850 2005-01-25  Dick Porter  <dick@ximian.com>
20851
20852         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
20853         the check for mktime() support actually test the mktime() return
20854         value.  "Fixes" bug 71682, though the output is still different to
20855         MS.
20856
20857 2005-01-25  Martin Baulig  <martin@ximian.com>
20858
20859         * class.c (mono_class_is_assignable_from): Make this work for
20860         generic instances.
20861
20862 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
20863
20864         * marshal.c (mono_string_utf8_to_builder)
20865         (mono_string_builder_to_utf16): We might not have ownership of the
20866         string. In thise case, we need to create a new buffer.
20867
20868         * object-internals.h (mono_stringbuilder_capacity): sb->str might
20869         be null, in which case, use the default capacity.
20870
20871 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
20872
20873         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
20874         GC events to the profiler.
20875
20876 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
20877
20878         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
20879         if you don't want the GC to run.
20880
20881 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
20882
20883         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
20884         start providing a GC API and keeping different implementations in
20885         their own file.
20886         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
20887
20888 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20889
20890         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
20891         mmap rather than allocating a huge buffer.
20892         (mono_debug_close_mono_symbol_file): Free the buffer allocated
20893         above.
20894
20895 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20896
20897         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
20898         and CheckExecutionRights.
20899         * reflection.c|h: Keep the index of the declarative security to be 
20900         used, instead of the pointer, when AOT compiler is used. Also add 
20901         class initialization when requesting demands.
20902         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
20903         CheckExecutionRights. Both properties are now FALSE by default, and
20904         unmodifiable, unless the --security option is used.
20905
20906 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
20907
20908         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
20909         reflection.c: properly refcount images and assemblies, many leaks fixed.
20910
20911 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20912
20913         * threadpool.c: increase the timeout for threads in the thread pool to
20914         10s.  Fixes bug #67159.
20915
20916 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
20917
20918         * class-internals.h: Sun's compiler insists on explicit
20919         signed on bit fields to handle then correctly.
20920
20921 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
20922
20923         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
20924         Make the size of the array fit only the number of invalid path
20925         chars that we have.
20926
20927         * class.c (_mono_class_get): Improve the error reporting when a
20928         class referenced is not found, to assist debugging. 
20929
20930 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
20931
20932         * threads.c: fix off-by-one error.
20933         * domain.c: free data allocated in the domain.
20934
20935 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
20936
20937         * reflection.c (mono_method_body_get_object): Fill out exception info
20938         as well.
20939
20940         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
20941         structure.
20942         
20943 2005-01-19  Martin Baulig  <martin@ximian.com>
20944
20945         * loader.c (mono_get_method_constrained): Make this work again.
20946
20947 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
20948
20949         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
20950         guint16 to match the managed side.
20951
20952         * reflection.c (mono_reflection_body_get_object): Fill out local
20953         variables array.
20954
20955         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
20956         as well.
20957
20958         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
20959         'local_var_sig_token'.
20960
20961 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20962
20963         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
20964         System.Drawing.
20965
20966         * reflection.c (mono_method_body_get_object): Handle abstract and
20967         runtime methods.
20968
20969 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
20970
20971         * marshal.c, loader.c, class-internals.h, reflection.c:
20972         store the emthod data for a wrapper in an array instead of a list.
20973
20974 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
20975
20976         * marshal.c: change the code to allocate memory more
20977         conservatively for method wrappers.
20978
20979 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
20980
20981         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
20982         fields from MonoClass to the marshal info structure where they belong.
20983
20984 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
20985
20986         * class.c, object.c, class-internals.h, marshal.c: rearrange
20987         some fields and tweak some types to lower memory usage.
20988
20989 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20990
20991         * threads.c (signal_thread_state_change): Handle the case when the
20992         target thread is the current thread.
20993
20994         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
20995
20996         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
20997         emit_ptr_to_object_conv. 
20998
20999         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
21000         marshalling. Fixes #71352.
21001
21002 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
21003
21004         * metadata.h, blob.h: move table enum to blob.h so it can be included
21005         in any header.
21006         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
21007         cut the size of MonoImage/MonoDynamicImage.
21008
21009 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
21010
21011         * profiler.c (mono_profiler_install_simple): Fix default arguments.
21012
21013 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
21014
21015         * reflection.c, reflection.h, icall.c: add a function to check
21016         if an attribute type is defined for a metadata object.
21017
21018 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
21019
21020         * object-internals.h: Added some needed fields from StringBuilder class.
21021         * marshal.c: Set the maxCapacity when creating a StringBuilder.
21022
21023 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
21024
21025         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
21026         threads before shutting down the runtime.
21027
21028         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
21029
21030 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
21031
21032         * object-internal.h, threads.c: implement stacksize and 
21033         parameterized thread start functionality (requires
21034         matching corlib). Marked broken code for later removal.
21035
21036 2005-01-12  Martin Baulig  <martin@ximian.com>
21037
21038         * class-internals.h (MonoGenericClass): Moved the `initialized'
21039         flag to MonoDynamicGenericClass, removed `init_pending'.
21040         (MonoGenericInst): Added `is_reference' flag.
21041
21042 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
21043
21044         * reflection.c (mono_image_create_pefile): Only set the pe_offset
21045         inside the MSDOS header. Fixes #71201.
21046
21047         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
21048         gc thread.
21049         (mono_domain_finalize): Ditto.
21050
21051 2005-01-12  Martin Baulig  <martin@ximian.com>
21052
21053         * class.c (mono_get_shared_generic_class): Use the cache for
21054         non-dynamic generic classes.
21055
21056         * class-internals.h (mono_class_create_generic_2): Removed
21057         function prototype, this function is now static inside class.c.
21058
21059         * class.c (mono_class_create_generic_2): Made this static, only
21060         call it from mono_class_init() and mono_class_setup_parent().
21061         (collect_implemented_interfaces_aux): Call mono_class_init() on
21062         the interfaces we collect.
21063         (mono_class_setup_vtable): Call mono_class_init (class->parent).
21064
21065 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
21066
21067         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
21068         it a real thread handle.
21069
21070         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
21071         MonoJitExceptionInfo, since each catch clause needs its own variable.
21072         
21073 2005-01-11  Dick Porter  <dick@ximian.com>
21074
21075         * image.c (mono_pe_file_open): New variant on mono_image_open()
21076         that does not set up the CLI metadata; used for FileVersionInfo so
21077         it can get the data for windows binaries too.
21078         
21079         * process.c (process_read_string_block): Don't read off the end of
21080         the StringTable block.
21081
21082         These both fix bug 70766.
21083
21084 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
21085
21086         * gc.c: set some fields to NULL at GC cleanup time.
21087         * threads.c: if we quit the main thread, call exit ().
21088
21089 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
21090
21091         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
21092
21093 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
21094
21095         * threads.h, threads.c, object.c: added accessor and settor for
21096         main_thread. Handle it specially when exiting from it: wait
21097         for other foreground threads to exit.
21098
21099 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
21100
21101         * process.c, verify.c: remove some bloat.
21102
21103 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
21104
21105         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
21106         the calling convention to cdecl under win32.
21107
21108 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
21109
21110         * object.c (mono_object_get_size): New function to get the size of
21111         an object instance.
21112
21113         * profiler.c (simple_allocation): Use above.
21114
21115 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
21116
21117         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
21118         ves_icall_System_AppDomain_getRootDomain (as it's not required to
21119         get an appdomain by it's id and we can't assume the root's id is 0).
21120         * domain-internals.h: Change the function prototype to match.
21121         * icall.c: Change the icall table for AppDomain.
21122
21123 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
21124
21125         * locales.c (string_invariant_compare_char): Only compute
21126         GUnicodeTypes in the case where we need them.  Test for ordinality
21127         first and return if so.
21128
21129         From the commit:
21130
21131                 /*
21132                  * FIXME: here we must use the information from c1type and c2type
21133                  * to find out the proper collation, even on the InvariantCulture, the
21134                  * sorting is not done by computing the unicode values, but their
21135                  * actual sort order.
21136                  */
21137
21138 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
21139
21140         * loader.c: for P/Invoke methods, allow the "Internal" shared
21141         library name to refer to the calling process symbol namespace.
21142
21143 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
21144
21145         * Makefile.am: Add the security manager to the build.
21146         * security-manager.c|h: New. Initialization of the security manager.
21147
21148 2005-01-07  Dick Porter  <dick@ximian.com>
21149
21150         * threads.c: 
21151         * monitor.c: Update thread state during Monitor and WaitHandle
21152         waits.  Fixes bug 71031.
21153
21154 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
21155
21156         * reflection.c (property_encode_signature): Correctly handle when the
21157         property has no methods.
21158
21159 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
21160
21161         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
21162         
21163         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
21164         fields from mb, not rmb. Fixes #71017.
21165
21166         * marshal.c (emit_ptr_to_str_conv): Add support for 
21167         ByValTStr -> string conversion. Fixes #71015.
21168
21169         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
21170
21171         * mempool.c (mono_mempool_contains_addr): New helper function.
21172
21173 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21174
21175         * metadata.c (mono_metadata_compute_size): Fix size calculation of
21176         HasSematics encoded fields.
21177         
21178         * metadata.c (mono_type_to_unmanaged): Improve error message for 
21179         invalid string marshalling.
21180
21181         * metadata.c: Fix warnings.
21182         
21183 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
21184
21185         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
21186         profiler support.
21187
21188 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
21189
21190         * domain.c object.c domain-internals.h: Revert part of r38077 since the
21191         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
21192         tests.
21193
21194 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
21195
21196         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
21197         so methods containing these can be AOTed.
21198
21199 2005-01-03  Martin Baulig  <martin@ximian.com>
21200
21201         * loader.c (find_method): Removed the hack for generic instances.
21202         (method_from_memberref): If our parent is a generic instance, pass
21203         its generic type definition to find_method() and then inflate the
21204         method.
21205         (mono_get_method_constrained): Pass the generic type definition to
21206         find_method() and inflate the method later.
21207
21208         * class-internals.h (MonoStats): Added `generic_class_count'.
21209
21210         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
21211         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
21212
21213         * reflection.c (mono_custom_attrs_from_params): Don't ignore
21214         generic type definitions.
21215
21216 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
21217
21218         * loader.c icall.c: Fix warnings.
21219
21220 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
21221
21222         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
21223         blittable types. Fixes #70864.
21224
21225 2004-12-29  Martin Baulig  <martin@ximian.com>
21226
21227         * icall.c
21228         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
21229
21230         * reflection.c (mono_method_get_object): Create a
21231         "System.Reflection.MonoGenericMethod" for inflated methods; don't
21232         call mono_get_inflated_method().
21233
21234         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
21235
21236 2004-12-27  Martin Baulig  <martin@ximian.com>
21237
21238         * class-internals.h (MonoMethod): Added `is_inflated' flag.
21239         (MonoMethodInflated): Added `inflated' field.
21240
21241         * class.c (mono_class_inflate_generic_method): Don't really
21242         inflate the method here; just set the `is_inflated' flag in the
21243         MonoMethod.
21244         (mono_class_get_inflated_method): Actually inflate the method here
21245         if it's not already inflated; we use the MonoMethodInflated's new
21246         `inflated' field as a cache.
21247
21248 2004-12-26  Martin Baulig  <martin@ximian.com>
21249
21250         * class.c
21251         (inflate_generic_class): Moved some code out of inflate_generic_type().
21252         (mono_class_inflate_generic_method): If we're already inflated,
21253         inflate the context and use the declaring method; ie. make sure
21254         the declaring method of an inflated method is always the generic
21255         method definition.
21256         (mono_class_create_from_typedef): Create
21257         `class->generic_container->context->gclass'.
21258
21259 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
21260
21261         * metadata-internals.h, marshal.c, reflection.c: More
21262         MonoGHashTable->GHashTable.
21263
21264         * domain-internals.h, class.c: Change MonoGHashTable's into
21265         GHashTables for some cases where no gc stuff is used
21266
21267         All users: update apis
21268
21269 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
21270
21271         * metadata.c (builtin_types): Make this `const'. Makes this get
21272         put into the shareable section.
21273         (mono_metadata_init): Casts to make gcc happy.
21274
21275 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
21276
21277         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
21278
21279 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
21280
21281         * icall.c: Added an internal call to retrieve the position and length
21282         of assembly-level declarative security attributes (RequestMinimum, 
21283         RequestOptional and RequestRefuse). This is used by the Assembly class
21284         to re-create the corresponding permission sets.
21285
21286 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
21287
21288         * marshal.c: fix the stelemref wrapper to be type correct
21289         (and faster).
21290
21291 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
21292
21293         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
21294         to do key & 0x7fffffff. Hashtable already does this. It just
21295         results in longer code.
21296
21297 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
21298
21299         * appdomain.c: Bump corlib version.
21300         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
21301         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
21302         * reflection.c|h: Add functions to get declarative security infos
21303         (blob position and length) for assemblies, classes and methods.
21304
21305 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
21306
21307         * reflection.c: sort the constant table (bug #70693).
21308
21309 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
21310
21311         * object-internals.h, threads.c, domain.c: add accessors for
21312         the MonoThread and MonoDomain tls keys.
21313
21314 2004-12-18  Martin Baulig  <martin@ximian.com>
21315
21316         * class.c (inflate_generic_type): If we're inflating a generic
21317         instance, set `ngclass->context->container = context->container';
21318         ie. the container we inflated into.
21319
21320         * metadata.c (mono_metadata_parse_generic_param): Reflect above
21321         inflate_generic_type() changes.
21322
21323 2004-12-17  Martin Baulig  <martin@ximian.com>
21324
21325         * class-internals.h
21326         (MonoGenericClass): Replaced `MonoType *generic_type' with
21327         `MonoClass *generic_class'.  Removed `dynamic_info'; if
21328         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
21329         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
21330
21331 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
21332
21333         * exception.c (mono_exception_from_token): New helper function.
21334
21335 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
21336
21337         * assembly.c (mono_assembly_load_with_partial_name): Call 
21338         mono_assembly_loaded before invoking the preload hooks. Fixes
21339         #70564.
21340
21341         * object-internals.h (MonoThread): Change culture_info and 
21342         ui_culture_info into an array.
21343
21344         * threads.c: Cache culture info objects from more than one appdomain.
21345
21346         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
21347         current UI culture.
21348
21349 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
21350
21351         * threads.h threads.c appdomain.c: Clear the culture_info field of
21352         all threads during unloading if they point to an object in the dying
21353         appdomain.
21354
21355 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
21356
21357         * culture-info.h (TextInfoEntry): New struct
21358         * object-internals.h: sync with managed
21359         * locales.c: fill the `text_info_data' field
21360         * culture-info-tables.h: update
21361
21362 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
21363
21364         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
21365         collector.
21366
21367 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
21368
21369         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
21370         (ves_icall_ModuleBuilder_getMethodToken): Ditto
21371
21372 2004-12-12  Martin Baulig  <martin@ximian.com>
21373
21374         * mono-debug-debugger.c (write_type): If we're an enum and the
21375         builtin types have already been initialized, call mono_class_init().
21376
21377 2004-12-11  Martin Baulig  <martin@ximian.com>
21378
21379         * metadata.c (mono_metadata_load_generic_params): Added
21380         `MonoGenericContainer *parent_container' argument; automatically
21381         compute `container->is_method'; pass the correct owner to
21382         get_constraints().      
21383
21384         * reflection.c (compare_genericparam): Sort the GenericParam table
21385         according to increasing owners. 
21386
21387 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21388
21389         * profiler.c: allow disabling the default profiler.
21390
21391 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
21392
21393         * decimal.c, icall.c: allow disabling System.Decimal support.
21394
21395 2004-12-09  Marek Safar <marek.safar@seznam.cz>
21396
21397         * reflection.c: Add support for null attribute arguments.
21398
21399 2004-12-09  Martin Baulig  <martin@ximian.com>
21400
21401         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
21402         names to get rid of compiler warnings.
21403
21404 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21405
21406         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
21407         mono_marshal_load_type_info (). Fixes #69625.
21408         (mono_marshal_get_ptr_to_struct): Likewise.
21409
21410 2004-12-08  Martin Baulig  <martin@ximian.com>
21411
21412         * mono-debug.h: Bumped version number to 47.
21413
21414         * mono-debug-debugger.c
21415         (mono_debugger_event_handler, mono_debugger_event): Take two
21416         guint64 arguments insteed of a gpointer and a guint32.  
21417
21418 2004-12-08  Martin Baulig  <martin@ximian.com>
21419
21420         * debug-mono-symfile.h
21421         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
21422         `address' to `native_offset'.
21423
21424 2004-12-08  Martin Baulig  <martin@ximian.com>
21425
21426         * class.c (mono_class_create_from_typespec): Only inflate if we
21427         either have `context->gclass' or `context->gmethod'.
21428
21429 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
21430
21431         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
21432
21433         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
21434
21435         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
21436
21437         * reflection.c (mono_assembly_get_object): Remove the workaround put
21438         in for the release.
21439         
21440         * appdomain.c: Use the corlib_internal field from MonoAssembly.
21441
21442         * appdomain.c: Bump corlib version.
21443
21444         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
21445         be visible in other appdomains.
21446
21447 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
21448
21449         * threads.c: Interlocked inc and dec for longs were messed up,
21450         use a KISS based impl for this. Fixes 70234
21451
21452 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
21453
21454         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
21455
21456 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
21457
21458         * icall.c: fix to follow policy not to allow struct
21459         arguments in icalls.
21460
21461 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21462
21463         * process.c: make the patch that handles spaces in file paths work
21464         on mono/windows too.
21465
21466 2004-12-06  Martin Baulig  <martin@ximian.com>
21467
21468         * class.c (mono_class_create_generic): Call
21469         mono_class_setup_supertypes() if we're dynamic.
21470         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
21471
21472 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
21473
21474         * object-internals.h: Add new fields to MonoThread.
21475
21476         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
21477
21478         * icall.c threads-types.h threads.c: Add new icalls.
21479
21480         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
21481
21482         * object-internals.h (MonoReflectionAssembly): Sync object layout with
21483         managed side.
21484
21485         * appdomain.c: Bump corlib version.
21486
21487         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
21488         internal assemblies. Fixes #69181.
21489
21490 2004-12-05  Martin Baulig  <martin@ximian.com>
21491
21492         * class.c (mono_class_inflate_generic_signature): Make this a
21493         no-op if `context' is NULL or we don't have any type parameters;
21494         also copy `sentinelpos'.        
21495
21496 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
21497
21498         * image.c: Add unbox_wrapper_cache.
21499
21500         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
21501
21502         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
21503         function generator.
21504         
21505         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
21506         Fixes #70173.
21507
21508         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
21509         
21510 2004-12-04  Martin Baulig  <martin@ximian.com>
21511
21512         * loader.c (mono_method_get_signature_full): New public function;
21513         like mono_method_get_signature(), but with an additional
21514         `MonoGenericContext *' argument.
21515
21516         * class.c (mono_class_inflate_generic_signature): Formerly known
21517         as inflate_generic_signature(); make this public.
21518
21519 2004-12-04  Martin Baulig  <martin@ximian.com>
21520
21521         * metadata.c
21522         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
21523         instead of a `MonoGenericContainer *'.  
21524         (mono_metadata_parse_array_full): Likewise.
21525         (mono_metadata_parse_signature_full): Likewise.
21526         (mono_metadata_parse_method_signature_full): Likewise.
21527         (mono_metadata_parse_generic_inst): Likewise.
21528         (mono_metadata_parse_generic_param): Likewise.
21529         (mono_metadata_parse_mh_full): Likewise.
21530         (mono_type_create_from_typespec_full): Likewise.
21531
21532 2004-12-03  Martin Baulig  <martin@ximian.com>
21533
21534         * class-internals.h (MonoGenericContainer): Replaced the
21535         `MonoGenericContext * pointer with a `MonoGenericContext'
21536         structure and made it the first element.
21537
21538 2004-12-03  Martin Baulig  <martin@ximian.com>
21539
21540         * class.c
21541         (inflate_generic_type): Set the `context->container' when creating
21542         a new MonoGenericContext.
21543         (mono_class_inflate_generic_method): Likewise.
21544         (mono_class_create_from_typespec): Just use `context->container'
21545         to get the container.
21546
21547         * loader.c (method_from_methodspec): Set `context->parent' from
21548         `context->container' - and if that's a method container, use its
21549         parent.  Also set the `context->container' when creating a new
21550         MonoGenericContext.
21551         (mono_get_method_from_token): Use just `context->container' to get
21552         the container.
21553
21554         * metadata.c (do_mono_metadata_parse_generic_class): Also set
21555         `gclass->context->container'.
21556
21557         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
21558         the `context->container' when creating a new MonoGenericContext.
21559
21560 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
21561
21562         * reflection.c (compare_genericparam): Sort params with identical
21563         owner by their number. Fixes gen-111 on sparc.
21564
21565 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21566
21567         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
21568         around the domain changes.
21569
21570         * appdomain.c (mono_domain_unload): Handle the case when the thread
21571         calling Unload is itself being aborted during unloading. Fixes #70022.
21572
21573         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
21574
21575         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
21576         checkpoint_func as an icall so it gets a wrapper.
21577         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
21578         in the cross-appdomain wrappers too.
21579
21580         * threads.c (mono_thread_has_appdomain_ref): Make this public.
21581
21582         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
21583
21584         * reflection.c: Fix some memory leaks.
21585         
21586 2004-12-02  Martin Baulig  <martin@ximian.com>
21587
21588         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
21589
21590         * metadata.c (generic_class_cache): New static hashtable.
21591         (mono_metadata_lookup_generic_class): New public method.
21592
21593 2004-12-02  Martin Baulig  <martin@ximian.com>
21594
21595         * class.c (mono_class_create_from_typedef): Call
21596         mono_class_setup_parent() and mono_class_create_mono_type() before
21597         parsing the interfaces.
21598
21599 2004-12-02  Martin Baulig  <martin@ximian.com>
21600
21601         * metadata.c (generic_inst_cache): New static hashtable.
21602         (mono_metadata_lookup_generic_inst): New public function.
21603         (mono_metadata_inflate_generic_inst): New public function.
21604         (mono_metadata_parse_generic_inst): New public function.
21605         (do_mono_metadata_parse_generic_class): Use the new
21606         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
21607         since this'll also use the cache.
21608
21609         * reflection.c (mono_reflection_bind_generic_method_parameters):
21610         Use mono_metadata_lookup_generic_inst() to use the new cache.
21611
21612         * class.c (inflate_mono_type): Use
21613         mono_metadata_inflate_generic_inst() to inflate a generic
21614         instance; this'll also use the new cache.
21615
21616         * loader.c (method_from_methodspec): Use
21617         mono_metadata_parse_generic_inst() and
21618         mono_metadata_inflate_generic_inst() rather than parsing it
21619         manually, so we can use the new cache.
21620
21621 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
21622
21623         * threads.c (wait_for_tids): Do not incorrectly free threads when 
21624         the wait times out.
21625
21626 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21627
21628         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
21629         iter->args based on whether parameters are passed in registers (i.e.
21630         MONO_ARCH_REGPARMS is defined)
21631
21632 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
21633
21634         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
21635         the exception message. Fixes #70070.
21636         (method_from_methodspec): Fix warnings.
21637
21638 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21639
21640         * process.c: (complete_path) return the path quoted
21641
21642 2004-12-01  Martin Baulig  <martin@ximian.com>
21643
21644         * class-internals.h (MonoGenericInst): New structure.
21645         (MonoGenericClass): Replaced `type_argc', `type_argv' and
21646         `is_open' with `MonoGenericInst *inst'.
21647         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
21648         `is_open' with `MonoGenericInst *inst'.
21649
21650 2004-11-30  Martin Baulig  <martin@ximian.com>
21651
21652         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
21653
21654         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
21655         to `generic_class_cache'.
21656
21657         * metadata.c
21658         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
21659         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
21660         (mono_generic_inst_is_valuetype): Renamed to
21661         mono_generic_class_is_valuetype().
21662
21663         * class-internals.h
21664         (MonoGenericInst): Renamed to MonoGenericClass.
21665         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
21666         (MonoClass): Renamed `generic_inst' to `generic_class'.
21667         (MonoGenericContext): Renamed `ginst' to `gclass'.
21668
21669         * object-internals.h
21670         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
21671
21672         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
21673         mono_reflection_generic_class_initialize().
21674
21675         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
21676         now known as "System.Reflection.MonoGenericClass".
21677         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
21678
21679 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
21680
21681         * class-internals.h: Added a flag field to MonoClass to cache the
21682         declarative security attributes actions associated with the class.
21683         * domain-internals.h: Added booleans to MonoJitInfo to cache the
21684         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
21685         applicable to the JITted method.
21686         * reflection.c|h: Added functions to extract (as flags) which security
21687         actions are available (declaratively) for a method, class or assembly.
21688         * metadata.c|h: Added functions to search the declarative security
21689         table in the metadata.
21690         
21691 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
21692
21693         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
21694         EXPORTEDTYPES are already in the class name cache, so there is no
21695         need to add extra code here to look at them. Just removes a bit of
21696         cruft.
21697
21698         (ves_icall_System_Environment_get_TickCount): No need for #if
21699         WINDOWS. We already have the code in io-layer.
21700
21701 2004-11-28  Martin Baulig  <martin@ximian.com>
21702
21703         * loader.c
21704         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
21705         Fixes gen-112.cs.
21706
21707 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
21708
21709         * assembly.c (do_mono_assembly_open): Instead of having a
21710         conditional WITH_BUNDLE, incorporate support for bundles here, by
21711         having a global `bundles' variable holding a pointer to the actual
21712         bundles. 
21713
21714         (mono_register_bundled_assemblies): New API call used by the
21715         bundle code. 
21716
21717         See mkbundle.1 for details.
21718         
21719 2004-11-27  Martin Baulig  <martin@ximian.com>
21720
21721         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
21722         the vtable for generic methods.
21723
21724 2004-11-26  Martin Baulig  <martin@ximian.com>
21725
21726         * metadata.c
21727         (mono_metadata_generic_method_hash): New public function.
21728         (mono_metadata_generic_method_equal): Likewise.
21729
21730         * class-internals.h
21731         (MonoGenericContainer): Added `GHashTable *method_hash'.
21732
21733         * reflection.c (ReflectionMethodBuilder): Added
21734         `MonoGenericContainer *generic_container'.
21735         (reflection_methodbuilder_to_mono_method): Don't create a new
21736         MonoGenericContainer each time we're called.
21737         (mono_reflection_bind_generic_method_parameters): Use
21738         `container->method_hash' to cache the results so we don't create a
21739         different method if we're called several times with the same
21740         arguments.
21741
21742         * loader.c (method_from_methodspec): Use the new
21743         `container->method_hash' here, too.
21744
21745 2004-11-26  Martin Baulig  <martin@ximian.com>
21746
21747         * class.c (inflate_generic_signature): Correctly compute
21748         `res->has_type_parameters'.
21749         (mono_class_vtable): Use the `has_type_parameters' flag to
21750         determine whether we're a generic method.
21751
21752         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
21753
21754 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
21755
21756         * object.c (mono_runtime_run_main): Fix a small memory leak.
21757
21758 2004-11-25  Martin Baulig  <martin@ximian.com>
21759
21760         * class.c (set_generic_param_owner): Fixed the loop.
21761
21762 2004-11-25  Martin Baulig  <martin@ximian.com>
21763
21764         * object.c (mono_class_vtable): Don't create any JIT wrappers for
21765         generic methods.
21766
21767 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
21768
21769         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
21770         names. Fixes #69787.
21771
21772 2004-11-24  Martin Baulig  <martin@ximian.com>
21773
21774         * class.c (mono_class_create_generic_2): If we don't have a
21775         `ginst->parent', inflate `gklass->parent' to get our parent.
21776
21777 2004-11-24  Martin Baulig  <martin@ximian.com>
21778
21779         * reflection.c (compare_genericparam): Correctly sort the
21780         GenericParam table; fixes #69779.
21781
21782 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
21783
21784         * reflection.c: When writing a PE file, don't create a huge
21785         buffer in memory. Just write the arrays we have to the file.
21786         This reduces memory usage.
21787
21788         * metadata-internals.h: MonoDynamicStream pefile is no longer used
21789         globally.
21790
21791 2004-11-17  Martin Baulig  <martin@ximian.com>
21792
21793         * class.c (mono_class_init): Don't setup `class->parent' for
21794         dynamic instances; moved this to mono_class_generic_2().
21795         (mono_class_create_generic): Also set `klass->inited' for dynamic
21796         generic instances.
21797         (mono_class_create_generic_2): Don't do anything for dynamic
21798         generic instances.  Set `klass->parent' here and also call
21799         mono_class_setup_parent() here. 
21800
21801         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
21802         `MonoType *parent' argument; set `ginst->parent' before calling
21803         mono_class_create_generic_2(), so we set the correct parent.
21804
21805 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
21806
21807         * reflection.c: allow getting attributes from ModuleBuilder
21808         (used by ikvm).
21809
21810 2004-11-17  Martin Baulig  <martin@ximian.com>
21811
21812         * class.c (mono_class_create_from_typedef): If a type parameter is
21813         inherited from an outer class, set its owner to that class.
21814
21815 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
21816
21817         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
21818           for (int*) written size. This fixes bug #69592.
21819
21820 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21821
21822         * icall.c: Added IsAuthenticodePresnet internal call.
21823         * image.c|h: New function that check a MonoImage for an Authenticode
21824         signature in the certificate PE data directory.
21825         * security.c|h: New internal call to ask the runtime if an 
21826         Authenticode signature seems referenced in the PE header.
21827
21828 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
21829
21830         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
21831
21832         * reflection.c (mono_image_create_pefile): Free the assembly streams
21833         after writing out the assembly file.
21834
21835         * object.c (mono_runtime_run_main): Fix small memory leak.
21836
21837         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
21838         property access modifiers. Fixes #69389.
21839
21840 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
21841
21842         * domain.c, object.c, object-internals.h, domain-internals.h,
21843         object.h, marshal.c: keep dynamic code info per domain.
21844
21845 2004-11-15  Martin Baulig  <martin@ximian.com>
21846
21847         * class.c (mono_type_get_name_recurse): Put type arguments in
21848         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
21849         see bug #68387.
21850
21851 2004-11-15  Martin Baulig  <martin@ximian.com>
21852
21853         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
21854         (mono_class_setup_vtable): When computing `the_cname' for a
21855         generic instance, don't include the namespace since we'd otherwise
21856         add it twice.
21857
21858 2004-11-15  Martin Baulig  <martin@ximian.com>
21859
21860         * class.c (mono_class_create_generic): Changed return type to void.
21861         (mono_class_create_generic_2): New public function; setup
21862         `class->method', `class->field' and `class->interfaces' here
21863         instead of in mono_class_init().
21864
21865         * class.h (mono_class_create_generic): Moved to class-internals.h.
21866
21867 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
21868
21869         * reflection.c (mono_image_create_pefile): take a file HANDLE.
21870         rather than writing to memory, write to this file. Right now,
21871         we are just writting into a buffer, and copying that. However
21872         we can avoid the buffer later.
21873
21874         (mono_dynamic_stream_reset): new function
21875
21876         * icall.c, object-internals.h: update for the above.
21877
21878 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
21879
21880         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
21881         have been using gc'd memory. First it is slower, unlikely
21882         the comment in the source code said, secondly, it increases
21883         our footprint to do it in the gc.
21884
21885         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
21886         the method so that it does not have to copy to managed code.
21887
21888 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21889
21890         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
21891
21892 2004-11-12  Martin Baulig  <martin@localhost>
21893
21894         * reflection.c (mono_image_create_token): Allow generic method
21895         definitions here, since they may appear in an `.override'; see
21896         gen-98/gen-99 for an example.
21897
21898 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
21899
21900         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
21901         #69365.
21902
21903         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
21904         descriptive.
21905
21906 2004-11-11  Martin Baulig  <martin@ximian.com>
21907
21908         * class.c (mono_class_setup_vtable): In an explicit interface
21909         implementation, the method name now includes the arity.
21910
21911 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
21912
21913         * object.c (mono_array_full_copy): Fix warning.
21914
21915 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
21916
21917         * appdomain.c: Removed look_for_method_by_name(). Use the new method
21918         mono_class_get_method_from_name() instead.
21919         
21920         * class-internals.h: Added two new types of wrappers. 
21921         Added MonoRemotingTarget enum. Added new trampoline function type, which
21922         takes an additional MonoRemotingTarget value as parameter, so it is
21923         possible to request a trampoline for a specific target.
21924         
21925         * class.c: Added new mono_class_get_method_from_name() method.
21926         
21927         * class.h: In MonoRemoteClass, we can have now to vtables, one for
21928         general remoting sinks and one specific for cross domain calls.
21929         
21930         * debug-helpers.c: Added new wrapper names.
21931         
21932         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
21933         of a remote class.
21934         
21935         * image.c: Porperly delete value objects form the remoting invoke hashtable.
21936         
21937         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
21938         with several other methods (mono_marshal_get_xappdomain_dispatch,
21939         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
21940         and others) can generate a fast remoting wrapper for cross domain calls.
21941         More information can be found in docs/remoting.
21942         Other changes: Removed mono_find_method_by_name, and used
21943         mono_class_get_method_from_name instead.
21944         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
21945         is stored in the remoting invoke hashtable.
21946         
21947         * marshal.h: published the new method for getting the xdomain wrapper,
21948         and also added a method for getting the adequate wrapper for a given
21949         method and target.
21950         
21951         * object-internals.h, object.c: Added a couple of methods for capying and
21952         cloning arrays.
21953         Modified mono_install_remoting_trampoline, which takes the new remoting
21954         trampoline that has a remoting target as parameter.
21955         mono_class_proxy_vtable now also takes a remoting target as parameter, and
21956         will return the most suitable vtable for the target.
21957         Added mono_remote_class_vtable, which returns the vtable of a remote class
21958         (which can be the normal remoting vtable or the xdomain vtable).
21959         
21960         * threads.c: the xdomain invoke and dispatch wrappers must also be
21961         protected against interruptions.
21962
21963 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21964
21965         * icall.c: use memmove in BlockCopyInternal when the source and
21966         destination arrays are the same.
21967
21968 2004-11-09  Martin Baulig  <martin@ximian.com>
21969
21970         * class-internals.h (MonoGenericContainer): Removed `method' and
21971         `signature', replaced them with `is_method' and `is_signature'
21972         flags.  Added `context'.
21973
21974         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
21975         instead of a `MonoGenericContainer *'.
21976
21977         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
21978         for dynamic type parameters.
21979         (mono_metadata_load_generic_params): Setup `container->context'.
21980
21981         * reflection.c (mono_reflection_setup_generic_class): Setup
21982         `tb->generic_container->context'.
21983         (do_mono_reflection_bind_generic_parameters): Use
21984         mono_class_inflate_generic_type() to correctly inflate types,
21985         rather than using our own hack just for MONO_TYPE_VAR.
21986
21987 2004-11-09  Martin Baulig  <martin@ximian.com>
21988
21989         * class.c (mono_class_inflate_generic_method): Small fix; don't
21990         crash here.
21991
21992         * icall.c
21993         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
21994         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
21995         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
21996         (ves_icall_Type_BindGenericParameters): Likewise.
21997         (ves_icall_Type_get_IsGenericInstance): Likewise.
21998         (ves_icall_Type_GetGenericParameterPosition): Likewise.
21999         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
22000         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
22001         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
22002
22003 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
22004
22005         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
22006         assembly versions and public key tokens. Fixes #69113.
22007
22008 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
22009
22010         * metadata.c: fix bug introduced with the type cache changes
22011         on 2004-11-06.
22012
22013 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
22014
22015         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
22016         the MonoClass pointer instead of the token in exception clauses.
22017         * reflection.c: updates for the above and make the code not depend
22018         on the structure of MonoExceptionClause.
22019
22020 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
22021
22022         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
22023         Add support for dynamic assemblies. Fixes #69114.
22024
22025         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
22026
22027 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
22028
22029         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
22030         since most only those methods use it. the code member of
22031         MonoMethodPInvoke was dead, so that can be removed too. Also,
22032         remove inline_count (again, not used), and move slot so that it
22033         can share bits with some other flags. This saves 8 bytes in the
22034         structure and gives us about 50 kb back for mcs helloworld.cs
22035
22036         * *.[ch]: Do naming changes for the above.
22037
22038         * loader.c (mono_method_get_header): Lazily init the header
22039         on first access.
22040         (mono_get_method_from_token): don't init the header here
22041         (mono_free_method): the header may never be allocated
22042
22043         Overall, this saves 150 kb of unmanaged allocations
22044         for mcs helloworld.cs. That accounts for 10% of the unmanaged
22045         memory at runtime.
22046         
22047         * loader.c, loader.h (mono_method_get_header): new accessor.
22048
22049         * *.[ch]: use the above method. Prepares us to lazily load
22050         the header.
22051
22052         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
22053         three warnings, which are actual bugs (see 69206).
22054
22055         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
22056         unused. Saves a cool 4 bytes / method.
22057
22058 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
22059
22060         * metadata.c (builtin_types): Add types for System.Object here.
22061         (mono_metadata_parse_type_full): Cache MonoType*'s that are
22062         for a class or valuetype from klass->this_arg or klass->byval_arg.
22063
22064         On mcs for a hello world, this gets us down from 21836 MonoType's
22065         to 14560.
22066
22067         (mono_metadata_free_type): Account for the above change.
22068
22069 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
22070
22071         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
22072         exception instead of asserting if name is null.
22073         (ves_icall_System_AppDomain_GetData): Ditto.
22074
22075 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
22076
22077         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
22078         EnumBuilder.
22079
22080         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
22081         Return NULL when the domain does not have entry_assembly set.
22082
22083         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
22084         Add a 'resource_modules' argument.
22085         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
22086
22087         * reflection.c (mono_reflection_create_runtime_class): Move setting
22088         of wastypebuilder here, so mono_get_type_object () returns a MonoType
22089         for enums too.
22090
22091         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
22092         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
22093         Throw an ArgumentNullException if 'ptr' is null.
22094
22095         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
22096         assemblies here. Fixes #69020.
22097
22098 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
22099
22100         * reflection.c (build_compressed_metadata): Fix the previous patch for
22101         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
22102         the stack.
22103
22104 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
22105
22106         * assembly.c (mono_assembly_names_equal): Allow a match if one of
22107         the cultures is false. Fixes #69090.
22108
22109         * reflection.c (build_compressed_metadata): Fix invalid memory read 
22110         detected by valgrind.
22111         
22112         * reflection.c (mono_reflection_get_type): Avoid triggering a 
22113         TypeResolve multiple times for the same type. Fixes #65577.
22114
22115 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
22116
22117         * marshal.c: Avoid using ldftn to call managed functions. It is
22118         much slower than just a call.
22119
22120         * reflection.c (mono_module_get_object): free the basename we
22121         allocate here from glib.
22122         
22123         * reflection.c (ensure_runtime_vtable): make sure to free
22124         overrides.  Also, we were allocating an array of MonoMethod not an
22125         array of MonoMethod*.
22126
22127         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
22128
22129         * image.c (mono_image_close): free image->guid here.
22130
22131 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
22132
22133         * reflection.c: Fix some spec conformance issues with the PE file
22134         structures so mcs compiled apps run on the Net 2.0 beta.
22135
22136 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
22137
22138         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
22139         Implement this. Fixes #67264.
22140
22141         * debug-helpers.h debug-helpers.c marshal.c: Move 
22142         mono_find_method_by_name to debug-helpers.c.
22143
22144 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
22145
22146         * object.c (mono_release_type_locks): type_initialization_hash is
22147         a GHashTable.
22148
22149         * reflection.c object.c object-internals.h: Fix warnings.
22150
22151         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
22152         without accessors. Fixes #61561.
22153
22154         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
22155         application base from the root domain if not set. Fixes #65641.
22156         (mono_runtime_init): Fix warning.
22157
22158 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22159
22160         * appdomain.c: call mono_thread_pool_init.
22161         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
22162         of worker threads based on the number of CPUs and the environment
22163         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
22164         for non-windows (windows) systems.
22165
22166 2004-10-27  Chris Toshok  <toshok@ximian.com>
22167
22168         * mono-debug-debugger.c (write_class): don't call mono_class_init
22169         here, as even with the check for (!klass->init_pending), we get
22170         into a situation where we're hitting cycles in class
22171         initialization.  Fixes #68816.
22172
22173 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * image.c: Avoid overwriting values in the loaded_images_hash when an
22176         assembly is loaded multiple times. Fixes #61152.
22177
22178         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
22179         so multiple satellite assemblies for the same name can be loaded.
22180         Fixes #68259.
22181
22182         * mono_domain_assembly_preload: Actually return the loaded assembly, 
22183         not NULL.
22184
22185         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
22186         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
22187
22188         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
22189         pending finalizers are not invoked after the appdomain has been 
22190         unloaded. Fixes #67862.
22191
22192 2004-10-22  Martin Baulig  <martin@ximian.com>
22193
22194         * mono-debug-debugger.c
22195         (mono_debugger_runtime_invoke): Don't box valuetypes.
22196
22197 2004-10-22  Chris Toshok  <toshok@ximian.com>
22198
22199         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
22200         don't hide private methods.
22201
22202 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
22203
22204         * icall.c: Allows the runtime to "share" (when known) the public key
22205         token of an assembly. This avoid the need to recalculate the token 
22206         (from the public key) in managed code.
22207
22208 2004-10-21  Chris Toshok  <toshok@ximian.com>
22209
22210         * debug-helpers.c (append_class_name): argh, revert last patch.
22211         
22212 2004-10-21  Chris Toshok  <toshok@ximian.com>
22213
22214         * debug-helpers.c (append_class_name): use '+' as the delimiter,
22215         not '/', so that it matches what the debugger uses to look up
22216         methods.
22217
22218 2004-10-21  Martin Baulig  <martin@ximian.com>
22219
22220         * mono-debug-debugger.c (mono_debugger_throw_exception): New
22221         public method; this is called each time an exception is thrown and
22222         allows the debugger to use exception catch points.
22223
22224 2004-10-21  Martin Baulig  <martin@ximian.com>
22225
22226         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
22227         the stack pointer and the exception object in some struct and pass
22228         that to the debugger.
22229
22230 2004-10-21  Chris Toshok  <toshok@ximian.com>
22231
22232         * mono-debug-debugger.c (do_write_class): add instance/static
22233         event support.  We don't expose "raise" or "other" yet.
22234         (event_is_static): new method.
22235
22236 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
22237
22238         * mono-debug-debugger.c
22239         (mono_debugger_handle_exception): Remove
22240         bogus return value for fussy compilers.
22241
22242 2004-10-20  Martin Baulig  <martin@ximian.com>
22243
22244         * mono-debug-debugger.c
22245         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
22246         (mono_debugger_handled_exception): Likewise.
22247
22248 2004-10-20  Martin Baulig  <martin@ximian.com>
22249
22250         * mono-debug-debugger.h (MonoDebuggerEvent): Added
22251         MONO_DEBUGGER_EVENT_EXCEPTION.
22252
22253         * mono-debug-debugger.c (mono_debugger_handle_exception): New
22254         public function to send the debugger a notification for an
22255         exception and inform it about a catch/finally clause.
22256
22257 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
22258
22259         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
22260         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
22261         fix 2.95 build. 
22262
22263         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
22264
22265 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
22266
22267         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
22268         marshalled as [In,Out]. Fixes #58325.
22269
22270 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
22271
22272         * reflection.c (mono_method_body_get_object): Implement some fields.
22273
22274 2004-10-12  Martin Baulig  <martin@ximian.com>
22275
22276         * reflection.c (mono_reflection_bind_generic_parameters): Small
22277         fix, correctly retrieve our parent from a generic instance.
22278
22279 2004-10-12  Martin Baulig  <martin@ximian.com>
22280
22281         * metadata.c (mono_metadata_generic_param_equal): We always have
22282         an owner.
22283
22284         * class.c
22285         (mono_class_from_generic_parameter): We need to have an owner.
22286         (my_mono_class_from_generic_parameter): Likewise.
22287
22288         * reflection.c (mono_reflection_setup_generic_class): Renamed to
22289         mono_reflection_create_generic_class() and added a new
22290         mono_reflection_setup_generic_class().  
22291         (mono_reflection_initialize_generic_param): If we're a nested
22292         generic type and inherited from the containing class, set our
22293         owner to the outer class.
22294
22295 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
22296
22297         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
22298
22299         * reflection.c (mono_method_body_get_object): New function to create
22300         a MethodBody object.
22301
22302         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
22303
22304 2004-10-11  Martin Baulig  <martin@ximian.com>
22305
22306         * metadata.c (_mono_metadata_type_equal): Renamed to
22307         do_mono_metadata_type_equal() and made static.
22308
22309 2004-10-11  Martin Baulig  <martin@ximian.com>
22310
22311         * appdomain.c: Bump corlib version number to 28.
22312
22313 2004-10-10  Martin Baulig  <martin@ximian.com>
22314
22315         * class-internals.h
22316         (MonoGenericInst): Added `MonoGenericContainer *container'.
22317         (MonoGenericMethod): Likewise.
22318         (MonoGenericContext): Likewise.
22319         (MonoGenericParam): Added `MonoGenericContainer *owner'.
22320
22321         * metadata.c
22322         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
22323         (do_mono_metadata_parse_generic_inst): Likewise.
22324         (mono_metadata_parse_type_full): New public method.  This is the actual
22325         mono_metadata_parse_type() implementation - with an additional
22326         `MonoGenericContainer *' argument.
22327         (mono_metadata_parse_array_full): Likewise.
22328         (mono_metadata_parse_signature_full): Likewise.
22329         (mono_metadata_parse_method_signature_full): Likewise.
22330         (mono_metadata_parse_mh_full): Likewise.
22331         (mono_type_create_from_typespec): Likewise.
22332         (mono_metadata_interfaces_from_typedef_full): New public method;
22333         this is similar to the other _full() methods, but we take a
22334         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
22335         (mono_metadata_parse_generic_param): Take an additional
22336         `MonoGenericContainer *' argument and lookup the MonoGenericParam
22337         from that container.
22338         (mono_metadata_generic_param_equal): New static method to compare
22339         two type parameters.
22340         (_mono_metadata_type_equal): New static method; takes an
22341         additional `gboolean signature_only' argument - if true, we don't
22342         compare the owners of generic parameters.
22343         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
22344         with a TRUE argument - do a signature-only comparision.
22345
22346         * loader.c: Use the new _full() methods and pass the
22347         MonoGenericContainer to them.
22348
22349         * object-internals.h (MonoReflectionTypeBuilder): Added
22350         `MonoGenericContainer *generic_container' field.
22351         (MonoReflectionMethodBuilder): Likewise.
22352
22353 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
22354
22355         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
22356         case initial images of dynamic assemblies.
22357
22358         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
22359
22360         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
22361
22362         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
22363         length of event->other array.
22364         (typebuilder_setup_events): Ditto.
22365
22366         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
22367         'assembly_by_name' and add an 'assemblies' list.
22368
22369         * assembly.h assembly.c: Add a new search hook for determining whenever
22370         an assembly is already loaded. Use this instead of searching in the
22371         loaded_assemblies list.
22372
22373         * domain.c appdomain.c: Implement the new search hook so loaded 
22374         assemblies are now scoped by appdomain. Fixes #67727.
22375
22376 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
22377
22378         * threads.c (mono_thread_attach): Initialize synch_lock field so
22379         mono_thread_detach works again.
22380
22381         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
22382         'lib' too. Fixes #63130.
22383
22384 2004-10-06  Jackson Harper  <jackson@ximian.com>
22385
22386         * culture-info-tables.h: regenerated.
22387
22388 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
22389
22390         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
22391         implemented by other interfaces in the result. Fixes #65764.
22392         
22393         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
22394         Handle unloadable modules without crashing.
22395
22396         * image.c (load_modules): Revert the previous patch since modules must
22397         have a fixed index inside the array.
22398         
22399         * image.c (load_modules): Don't include native modules in the modules
22400         array.
22401
22402 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
22403
22404         * reflection.h: Add param_defaults field.
22405
22406         * reflection.c: Add support for parameter defaults in dynamic methods.
22407         Fixes #64595.
22408
22409         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
22410         an empty string when a type has no namespace. Fixes #64230.
22411
22412 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
22413
22414         * tabledefs.h: Added "internal" security actions to support non-CAS
22415         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
22416         Note: they do not seems to be used anymore in 2.0 (new metadata format)
22417
22418 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
22419
22420         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
22421         constructor of abstract class. Fixes #61689.
22422
22423 2004-10-04  Martin Baulig  <martin@ximian.com>
22424
22425         * class-internals.h (MonoGenericContainer): New type.
22426         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
22427         `MonoGenericContainer *generic_container'.
22428         (MonoClass): Replaced `gen_params' and `num_gen_params' with
22429         `MonoGenericContainer *generic_container'.
22430
22431         * metadata.c (mono_metadata_load_generic_params): Return a
22432         `MonoGenericContainer *' instead of a `MonoGenericParam *';
22433         removed the `num' argument.
22434
22435 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
22436
22437         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
22438         for dynamic images.
22439
22440         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
22441         machine fields.
22442
22443         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
22444
22445         * reflection.c: Save pe_kind and machine values into the generated
22446         image file.
22447
22448         * appdomain.c: Bump corlib version number.
22449
22450         * object-internals.h: Reorganize layout of LocalBuilder.
22451
22452         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
22453         New helper function.
22454
22455         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
22456         created MonoType for dynamic types. Fixes #66180.
22457
22458 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
22459
22460         * threadpool.c: the ares hashtable needs a critical section around it.
22461         this prevents some nasty segfaults
22462
22463 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
22464
22465         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
22466         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
22467         bug 67324).
22468         
22469 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
22470
22471         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
22472         
22473 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
22474
22475         * image.c: Always canonicalize image file names, to avoid loading
22476         the same assembly twice when referenced using a relative path.
22477
22478 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
22479
22480         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
22481
22482         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
22483
22484         * marshal.c: Fix warnings.
22485
22486 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
22487
22488         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
22489         attempting to marshal the delegate_trampoline as the method_addr.
22490         This patch has a static hashtable of marshalled delegates so that 
22491         we can map delegate_trampoline addresses back to delegates.  This
22492         allows a delegate passed to managed code to be passed back into native
22493         code.  Fixes #67039
22494
22495 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22496
22497         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
22498
22499         * reflection.c (method_encode_code): Align method headers properly.
22500         Fixes #66025.
22501
22502 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22503
22504         * marshal.c: In the runtime invoke wrapper, reset the abort
22505         exception if it is cached. This avoids the automatic rethrowal of 
22506         the exception after the catch of the wrapper. Also check for pending
22507         interruptions before calling the managed method. This is done using
22508         the new method emit_thread_force_interrupt_checkpoint, since the
22509         normal checkpoint method is ignored when running the invoke wrapper.
22510         * object.c: If the abort exception is rethrown, set the abort_exc
22511         field of the thread, so it will be rethrown aftere every catch.
22512         * threadpool.c: Only run an interruption checkpoint if what has been
22513         requested is a stop of the thread (aborts will be ignored).
22514         * threads.c: By default, a thread will now never be interrumped while
22515         running the runtime invoke wrapper (this ensures that runtime_invoke
22516         will always return to the caller if an exception pointer is provided).
22517         There is a new special method mono_thread_force_interruption_checkpoint()
22518         to force an interruption checkpoint even if running a protected
22519         wrapper, which is used by the same runtime invoke wrapper to do a check
22520         at a safe point.
22521
22522 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
22523
22524         * object.c, object-internals.h: Implemented mono_release_type_locks,
22525         which releases the cctor locks held by a thread.
22526         * threads.c, threads.h: In thread_cleanup, release cctor locks held
22527         by a thread. Added mono_thread_exit() method to be used to safely stop
22528         a thread.
22529
22530 2004-09-28  Raja R Harinath  <rharinath@novell.com>
22531
22532         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
22533         Move null check before dereference.  Avoid indexing beyond the end
22534         of the 'modules' array.
22535
22536 2004-09-28  Raja R Harinath  <rharinath@novell.com>
22537
22538         * metadata-internals.h (MonoImage): Add module_count field.
22539         * image.c (load_modules): Set image->module_count.
22540         (mono_image_load_file_for_image): Use image->module_count.
22541         * reflection.c (mono_image_load_module): Append to image->modules array 
22542         of dynamic assembly.
22543         (mono_module_get_object): Fix loop to actually increment index.
22544         Use image->module_count.
22545         * assembly.c (mono_assembly_load_references): Use image->module_count.
22546         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
22547         Likewise.
22548
22549 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
22550
22551         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
22552         Avoid assert on generic types.
22553
22554 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
22555
22556         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
22557
22558         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
22559
22560         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
22561         function to convert a MarshalSpec structure to its managed counterpart.
22562
22563         * reflection.c: Fix warnings.
22564         
22565         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
22566         field.
22567
22568         * icall.c (mono_create_icall_signature): Fix build.
22569
22570 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
22571
22572         * icall.c: Add MakePointType icall.
22573
22574         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
22575         warnings.
22576
22577 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22578
22579         * threadpool.c: reuse allocated slots in the queue.
22580
22581 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
22582
22583         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
22584
22585         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
22586
22587         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
22588         previous change.
22589
22590         * tabledefs.h: Add constants for pinvoke attributes BestFit and
22591         ThrowOnUnmappableChar.
22592
22593         * icall.c (ves_icall_Type_GetPacking): New icall.
22594
22595 2004-09-24  Martin Baulig  <martin@ximian.com>
22596
22597         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
22598
22599 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22600
22601         * appdomain.c:
22602         (mono_domain_set): allow setting a domain that is being unloaded.
22603         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
22604         being unloaded.
22605
22606 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22607
22608         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
22609         the GetCustomAttributes icall.
22610
22611 2004-09-23  Martin Baulig  <martin@ximian.com>
22612
22613         * object-internals.h (MonoReflectionGenericParam): Replaced
22614         'has_ctor_constraint', `has_reference_type' and `has_value_type'
22615         with `guint32 attrs'.
22616
22617 2004-09-23  Martin Baulig  <martin@ximian.com>
22618
22619         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
22620
22621 2004-09-23  Martin Baulig  <martin@ximian.com>
22622
22623         * object-internals.h (GenericParameterAttributes): New enum.
22624
22625 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
22626
22627         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
22628         
22629         * class.c (init_events): Fill out event->other field.
22630
22631         * class.c: Fix warnings.
22632
22633         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
22634
22635 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22636
22637         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
22638         walk which doesn't supply the IL offset.
22639
22640 2004-09-22  Martin Baulig  <martin@ximian.com>
22641
22642         * reflection.c (mono_reflection_setup_internal_class): If we're
22643         System.ValueType, System.Object or System.Enum, set
22644         `klass->instance_size' and create the vtable.
22645         (mono_reflection_create_internal_class): If we're an enum type,
22646         get the base class from our current corlib.
22647
22648 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
22649
22650         * reflection.h (MonoResolveTokenError): New type.
22651
22652         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
22653         icall.
22654
22655         * icall.c: Add an 'error' argument to the ResolveToken icalls.
22656
22657 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
22658
22659         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
22660         Support also calling constructors, but only for already allocated objects.
22661
22662 2004-09-17  Geoff Norton <gnorton@customerdna.com>
22663
22664         * reflection.c (type_get_qualified_name): If the klass is null
22665         return the typename to avoid a NullRefEx.
22666         (encode_cattr_value): Get the qualified name of the boxed type,
22667         not the underlying enumtype.  Fixes #62984.
22668
22669 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
22670
22671         * marshal.c: Fix problems with previous checkin.
22672
22673 2004-09-21    <vargaz@freemail.hu>
22674
22675         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
22676         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
22677
22678         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
22679
22680 2004-09-21  Geoff Norton <gnorton@customerdna.com>
22681
22682         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
22683         should only return a type for pointers, arrays, and passbyref types.
22684         Fixes bug #63841.
22685
22686 2004-09-21  Martin Baulig  <martin@ximian.com>
22687
22688         * domain.c (mono_debugger_check_runtime_version): New public
22689         function.
22690
22691         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
22692
22693 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
22694
22695         * reflection.c: Added missing sort to the declarative security 
22696         attributes table. MS implementation stops seeing the attributes if the
22697         token number regress in the table (as shown by ildasm and permview).
22698
22699 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
22700
22701         * object-internals.h (MonoReflectionModule): Add 'token' field.
22702         
22703         * reflection.c (mono_reflection_get_token): Add support for Module
22704         and Assembly.
22705         (mono_module_get_object): Set 'token' field.
22706         (mono_module_file_get_object): Set 'token' field.
22707
22708         * icall.c: Add new Assembly and Module icalls.
22709
22710         * appdomain.c: Bump corlib version.
22711
22712 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
22713
22714         * loader.h loader.c class.h class.c: Add helper functions for obtaining
22715         tokens of metadata objects.
22716
22717         * reflection.h reflection.c (mono_reflection_get_token): New function
22718         to obtain the token of a metadata object.
22719
22720         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
22721
22722 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
22723
22724         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
22725         
22726         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
22727
22728 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
22729
22730         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
22731         * object-internals.h: Added 3 MonoArray* members to MonoReflection
22732         AssemblyBuilder to access the permissions set in the class lib.
22733         * reflection.c: Added security attributes encoding step in 
22734         mono_image_build_metadata.
22735         * tabledefs.h: Added new security actions defined in 2.0:
22736         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
22737
22738 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
22739
22740         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
22741         macro parameter.
22742
22743 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
22744  
22745         * locales.c: nullify the ICU_collator member of CompareInfo when it is
22746           finalized. There where random SIGSEVs at program termination, when
22747           an object being finalized was trying to do a string comparison and
22748           the current culture was already finalized.
22749  
22750 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22751
22752         * threads.c: call thread_cleanup before finishing the thread if we get
22753         there.
22754
22755 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
22756
22757         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
22758         assemblies from the parent. Fixes #65665.
22759
22760 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
22761
22762         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
22763         modifiers.
22764
22765 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
22766
22767         * reflection.h: add prototype for mono_get_dbnull_object
22768         * reflection.c: add prototypes for get_default_param_value_blobs 
22769         and mono_get_object_from_blob for fussier compilers
22770
22771 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
22772  
22773         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
22774         false deadlock checks in class initialization.
22775  
22776 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
22777
22778         * image.c (mono_image_addref): Fix comment.
22779
22780         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
22781         possible.
22782
22783 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
22784
22785         * reflection.c (mono_param_get_objects): Modified to return
22786         ParameterInfo.DefaultValue object.
22787
22788         (get_default_param_value_blobs):
22789         (mono_get_object_from_blob):
22790         (mono_get_dbnull_object): New helper routines. 
22791
22792         * object.c (mono_get_constant_value_from_blob): New helper routine
22793         carved out from get_default_field_value ()
22794
22795         * object-internals.h (mono_get_constant_value_from_blob): Added
22796         function declaration.
22797
22798 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
22799
22800         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
22801         referenced assemblies. Fixes #62135.
22802
22803         * exception.h exception.c (mono_get_exception_file_not_found2): New
22804         helper function.
22805
22806 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
22807
22808         * class.h class.c: Add mono_type_get_underlying_type ().
22809
22810 2004-09-09  Geoff Norton <gnorton@customerndna.com>
22811
22812         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
22813         Fix GetTypes() to support dynamically created assemblies.
22814
22815 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
22816
22817         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
22818         
22819         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
22820         previous patch.
22821
22822         * reflection.h reflection.c loader.c: Allow dynamic construction of
22823         pinvoke methods. Fixes #65571.
22824         
22825         * reflection.c (mono_reflection_get_type): Revert previous change since
22826         it causes regressions.
22827
22828 2004-09-08  Martin Baulig  <martin@ximian.com>
22829
22830         * class.c (class_compute_field_layout): Don't call
22831         mono_class_layout_fields() for open generic instances.
22832
22833 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
22834         * threads.c appdomain.c: fix typo in GC macro
22835
22836 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22837
22838         * threads.c: don't call mono_thread_detach() in start_wrapper(),
22839         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
22840
22841 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
22842
22843         * image.c (mono_image_close): Applied patch from 
22844         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
22845         assembly is loaded multiple times from data.
22846         
22847         * image.c (mono_image_open): Fix warning.
22848
22849 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22850
22851         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
22852         once. Fixes #58334.
22853         
22854         * reflection.c (mono_reflection_create_runtime_class): Initialize
22855         klass->nested_classes. Fixes #61224.
22856
22857 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
22858
22859         * threads.c: sched_yield() on exit, to allow threads to quit.
22860
22861 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22862
22863         * object.c (mono_unhandled_exception): Remove leftover debug code.
22864
22865 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
22866
22867         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
22868
22869 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
22870
22871         * marshal.c (emit_marshal_array): Really null terminate string arrays.
22872         
22873         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
22874
22875 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22876
22877         * marshal.c (emit_marshal_array): Null terminate string arrays.
22878         
22879         * marshal.c (raise_auto_layout_exception): Fix warning.
22880
22881         * reflection.c (mono_param_get_objects): Initialize the default value
22882         with DBNull.Value, not null. Fixes #62123.
22883
22884 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
22885
22886         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
22887         throw an exception with a cute explanation.
22888
22889 2004-09-06  Dick Porter  <dick@ximian.com>
22890
22891         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
22892         Close the new process's thread handle, as we don't use it.  The
22893         handle stays around forever otherwise.
22894
22895 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22896
22897         * object.c (arith_overflow): Fix warning.
22898
22899         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
22900         calling conventions in method refs. Fixes #65352.
22901
22902         * reflection.c: Fix warnings.
22903
22904 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
22905
22906         * icall.c: Add a new icall for Array.Clear
22907
22908 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
22909
22910         * object.c: When allocating an array, we have to throw
22911         an overflow exception if any of the lengths are < 0.
22912
22913 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
22914
22915         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
22916         properly. Also move implementation of string array marshalling to 
22917         managed code. Fixes #42316.
22918
22919 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22920
22921         * assembly.c: provide more information when loading an assembly fails.
22922
22923 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22924
22925         * filewatcher.c: don't expect the development fam package to be
22926         installed.
22927
22928 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
22929
22930         * marshal.c: Make a copy of the signature cookie since it will be
22931         freed by the caller.
22932         
22933         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
22934
22935         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
22936
22937         * metadata.c (mono_metadata_free_marshal_spec): New function to free
22938         marshal specs.
22939
22940         * marshal.c: More refactoring.
22941         
22942         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
22943         smaller functions.
22944
22945 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
22946
22947         * object.c: In mono_message_invoke, fill the output parameter array after
22948           calling the managed method (it was done before the call). This fixes
22949           bug #59299.
22950
22951 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22952
22953         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
22954         as well.
22955
22956 2004-09-02  Martin Baulig  <martin@ximian.com>
22957
22958         * class.c (mono_class_instance_size): Don't allow generic type
22959         definitions or open generic instances.
22960         (mono_class_array_element_size): If we're a value type, call
22961         mono_class_instance_size() on the original class.
22962
22963         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
22964         handle generic instances.
22965
22966         * mono-debug-debugger.c (write_type): Handle generic instances
22967         like classes.
22968
22969 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
22970
22971         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
22972         the allocation request fails. Fixes #65089.
22973
22974         * object.c (mono_runtime_free_method): Do not call mono_free_method.
22975         
22976         * object.c (mono_runtime_free_method): New function to free a dynamic
22977         method.
22978
22979         * marshal.c (mono_delegate_free_ftnptr): New function to free the
22980         delegate trampoline.
22981
22982         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
22983         with hasthis as dynamic,
22984
22985         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
22986
22987         * domain.c (mono_jit_info_table_remove): New function to remove an
22988         entry from the jit info table.
22989
22990         * class-internals.h (MonoMethod): Add 'dynamic' field.
22991
22992         * loader.c: Fix warnings.
22993
22994 2004-09-01  Martin Baulig  <martin@ximian.com>
22995
22996         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
22997         instead of mono_debugger_lock() because the latter one is a no-op
22998         unless running in the debugger.
22999
23000 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
23001
23002         * class.c (class_compute_field_layout): Classes with auto-layout or
23003         reference fields are not blittable.
23004         
23005 2004-09-01  Dick Porter  <dick@ximian.com>
23006
23007         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
23008         mono_image_get_filename() to get the assembly location.
23009
23010         * icall.c:
23011         * metadata.h: Fix compile warnings
23012
23013 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
23014
23015         * class.c (class_compute_field_layout): System.Object is blittable.
23016
23017         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
23018         as in/out. Fixes #59909.
23019
23020 2004-09-01  Martin Baulig  <martin@ximian.com>
23021
23022         * metadata.h (MONO_TYPE_ISREFERENCE): Call
23023         mono_metadata_generic_inst_is_valuetype() if we're a generic
23024         instance to check whether our underlying type is a reference type.
23025
23026 2004-09-01  Martin Baulig  <martin@ximian.com>
23027
23028         * metadata.c (mono_type_size): If we're a generic instance, call
23029         mono_class_value_size() for value types.
23030
23031 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
23032
23033         * marshal.c: Implement more custom marshalling functionality. Fixes
23034         #64915.
23035
23036 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23037
23038         * mono-debug.c, debug-mono-symfile.c: add some locking love.
23039
23040 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
23041
23042         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
23043
23044         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
23045
23046         * icall.c: Fix some warnings.
23047
23048         * threads.c (abort_appdomain_thread): Fix unref errors.
23049         (mono_thread_current): Fix THREAD_DEBUG define.
23050
23051 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
23052
23053         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
23054
23055         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
23056
23057 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
23058
23059         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
23060         string arrays.
23061
23062 2004-08-28  Martin Baulig  <martin@ximian.com>
23063
23064         * metadata.c
23065         (mono_metadata_generic_inst_is_valuetype): New public function.
23066
23067         * metadata.h (MONO_TYPE_ISSTRUCT): Call
23068         mono_metadata_generic_inst_is_valuetype() if we're a generic
23069         instance to check whether our underlying type is a valuetype.
23070
23071 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
23072
23073         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
23074         #63768.
23075
23076 2004-08-25  Martin Baulig  <martin@ximian.com>
23077
23078         * loader.c (mono_get_method_from_token): Abstract methods can also
23079         be generic and thus have type parameters.
23080
23081         * metadata-internals.h
23082         (MonoDynamicImage): Added `GPtrArray *gen_params'.
23083
23084         * reflection.c (mono_image_get_generic_param_info): Don't create a
23085         metadata row, just add an entry to the `gen_params' array.
23086         (build_compressed_metadata): Sort the `gen_params' array and then
23087         actually create the metadata.
23088
23089 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23090
23091         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
23092
23093 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
23094
23095         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
23096
23097 2004-08-24  Martin Baulig  <martin@ximian.com>
23098
23099         * class.cs (mono_class_is_subclass_of): Like an interface, a
23100         generic instance also derives from System.Object.
23101
23102 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
23103
23104         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
23105         custom modifiers to be in any order. Fixes #61990.
23106
23107 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
23108
23109         * object.c: Register mono_object_new_fast icall.
23110         
23111         * object.c (mono_class_get_allocation_ftn): Return to calling
23112         mono_object_new_fast, since it seems faster to compute the object 
23113         size in unmanaged code than passing it as a parameter.
23114
23115         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
23116
23117         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
23118         this function with Boehm as the oom handler, so we don't have to check
23119         the result of GC_malloc.
23120
23121         * object.c: Remove checks for oom.
23122
23123         * object.h object.c (mono_class_get_allocation_ftn): New function to
23124         return the icall which can be used to allocate an instance of a given
23125         class. 
23126
23127         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
23128
23129         * class-internals.h: Add 'enabled' field.
23130
23131 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
23132
23133         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
23134
23135 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
23136         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
23137         value 0x0010.
23138
23139 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
23140
23141         * appdomain.c: use the Tls function for appdomain too,
23142         at Zoltan's request. Actually return in mono_context_get
23143
23144         * appdomain.c, profiler.c, threads.c: use __thread
23145
23146 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
23147
23148         * appdomain.c threads.c: Call GC_CreateThread on windows.
23149
23150         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
23151         multiple libraries since this don't work on windows.
23152
23153 2004-08-18  Martin Baulig  <martin@ximian.com>
23154
23155         * class-internals.h
23156         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
23157         MonoMethodHeader.
23158
23159         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
23160         MonoMethodNormal since we also need it for abstract and interface
23161         methods.
23162
23163         * reflection.c
23164         (build_compressed_metadata): Sort the GenericParam table.
23165         (mono_image_create_token): Added `gboolean create_methodspec'
23166         argument; this is false when generating a MethodImpl token.
23167         (reflection_methodbuilder_to_mono_method): Abstract and interface
23168         methods may also have generic parameters.
23169
23170 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
23171
23172         * appdomain.c: thread local alloc
23173
23174 2004-08-17  Martin Baulig  <martin@ximian.com>
23175
23176         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
23177
23178         * icall.c
23179         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
23180         argument.
23181
23182         * class.c (mono_type_get_full_name): New public function.
23183         (mono_type_get_name): Don't include the type arguments.
23184
23185 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
23186
23187         * Makefile.am: Build static versions of libmetadata and libmonoruntime
23188         for inclusion into the mono executable.
23189
23190 2004-08-16  Martin Baulig  <martin@ximian.com>
23191
23192         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
23193         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
23194
23195 2004-08-14  Martin Baulig  <martin@ximian.com>
23196
23197         * class.c (dup_type): Also copy the `byref' field.
23198
23199 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
23200
23201         * reflection.c (create_dynamic_mono_image): Revert the last change 
23202         since it breaks bootstrap.
23203
23204 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
23205
23206         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
23207
23208         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
23209         not free them with g_free.
23210
23211 2004-08-11  Martin Baulig  <martin@ximian.com>
23212
23213         * reflection.c (mono_reflection_setup_internal_class): Also call
23214         mono_class_setup_mono_type() if we already have a `tb->type.type'.
23215
23216 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
23217
23218         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
23219         called during default (first) AppDomain creation. Keep track of
23220         Evidence when loading assemblies.
23221
23222 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23223
23224         * opcodes.c, opcodes.h: reduce runtime relocations.
23225
23226 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
23227
23228         * culture-info.h, locales.c: fixes and chages to sue the new
23229         optimized format of the locale data.
23230         * culture-info-tables.h: regenerated.
23231
23232 2004-08-06  Geoff Norton <gnorton@customerdna.com>
23233         
23234         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
23235
23236 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
23237
23238         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
23239         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
23240         * domain-internals.h: icall declaration.
23241         * icall.c: icall registration.
23242         * object-internals.h: New fields in MonoAssembly for CAS.
23243
23244 2004-08-05  Duncan Mak  <duncan@ximian.com>
23245
23246         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
23247         CEE_LDELEM_ANY.
23248
23249 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
23250
23251         * reflection.c: fix to deal with object[] arrays in custom ctors
23252         (bug #62550).
23253
23254 2004-08-05  Martin Baulig  <martin@ximian.com>
23255
23256         * class.c (mono_class_array_element_size): Added support for
23257         generic instances and correctly handle "recursive" types.
23258
23259 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
23260
23261         * assembly.c: Fix warnings.
23262
23263 2004-08-04  Martin Baulig  <martin@ximian.com>
23264
23265         * class.c
23266         (mono_type_get_name_recurse): Added `gboolean include_arity'
23267         argument specifying whether or not we should include the generic
23268         arity in the type name.
23269         (_mono_type_get_name): New static function.
23270         (mono_class_setup_vtable): If we're a generic instance, don't
23271         include the generic arity in the names of explicit method
23272         implementations.        
23273
23274 2004-08-03  Martin Baulig  <martin@ximian.com>
23275
23276         * class.c (mono_type_get_name_recurse): Enclose the generic type
23277         arguments in `<', '>'.
23278
23279 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
23280
23281         * gc.c: make GC warning messages use the trace API, they are just
23282         noise to most of the users.
23283
23284 2004-08-03  Martin Baulig  <martin@ximian.com>
23285
23286         * debug-mono-symfile.c (read_string): Correctly read the string.
23287
23288 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
23289
23290         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
23291         
23292         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
23293         icalls.
23294         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
23295
23296 2004-07-30  Martin Baulig  <martin@ximian.com>
23297
23298         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
23299         Reflect latest symbol writer changes.   
23300
23301 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
23302
23303         * object.c: always create an object if null is passed
23304         to Invoke() where a valuetype is expected.
23305
23306 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
23307
23308         * marshal.c (mono_marshal_init): make managed
23309         signatures match native ones better for 64bits.
23310
23311 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23312
23313         * appdomain.c: hack to build correctly the private bin path on windows.
23314         Fixes bug #61991.
23315
23316 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
23317
23318         * assembly.c: Load mscorlib from the correct framework directory
23319           (mono/<version>/mscorlib.dll).
23320         * appdomain.h: Added prototypes for new functions.
23321         * internals.h: Added some prototypes.
23322         * domain.c: When initializing the runtime, get from the executable and
23323           the configuration files the runtime version that the app supports.
23324           Added support methods for reading app.exe.config. Added list of versions
23325           supported by the JIT. Added two new methods: mono_init_from_assembly,
23326           which initializes the runtime and determines the required version from
23327           the provided exe file, and mono_init_version, which initializes
23328           the runtime using the provided version.
23329         * icall.c: Get machine.config from version-specific directory.
23330         * reflection.c: When generating an image, embed the version number
23331           of the current runtime.
23332
23333 2004-07-28  Dick Porter  <dick@ximian.com>
23334
23335         * socket-io.c
23336         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
23337         returned sockaddr size before creating the remote address object.
23338         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
23339         61608.
23340
23341 2004-07-28  Dick Porter  <dick@ximian.com>
23342
23343         * locales.c (string_invariant_compare_char): Fix invariant char
23344         compares between upper and lower cases.  Fixes bug 61458.
23345
23346 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
23347         
23348         * marshal.c: actually cache stelem.ref wrappers.
23349         
23350 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
23351
23352         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
23353         sections and remove the mono_cli_rva_map () function.
23354
23355 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
23356
23357         * debug-mono-symfile.c: fix one more endianess issue, from a patch
23358         by Geoff Norton (<gnorton@customerdna.com>).
23359
23360 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
23361
23362         * class.c: fix class loads for pointer types (typeof(int) !=
23363         typeof(int*)).
23364
23365 2004-07-27  Martin Baulig  <martin@ximian.com>
23366
23367         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
23368         reading the debugging information from an external ".mdb" file.
23369
23370 2004-07-24  Martin Baulig  <martin@ximian.com>
23371
23372         * reflection.c (mono_image_get_type_info): Only write a class
23373         layout entry if we actually have a size or a packing size.
23374
23375 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
23376
23377         * reflection.c (type_get_fully_qualified_name): 
23378         insert cast to get type checking of ?: with non-gcc compilers
23379
23380 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
23381
23382         * rand.c: use g_getenv for both lookups of
23383         MONO_EGD_SOCKET
23384
23385 2004-07-17  Martin Baulig  <martin@ximian.com>
23386
23387         * reflection.c (mono_reflection_bind_generic_method_parameters):
23388         Set `gmethod->reflection_info'.
23389
23390 2004-07-17  Martin Baulig  <martin@ximian.com>
23391
23392         * class.c (mono_class_create_from_typedef): Insert the newly
23393         created class into the hash table before computing the interfaces
23394         since we could be called recursively.
23395
23396 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
23397
23398         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
23399         function to implement stelem.ref in managed code
23400         * class-internals.h, debug-helpers.c: a new wrapper type
23401         for the above.
23402
23403 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
23404
23405         * gc.c: allow GC handles to work even when no GC is compiled in.
23406         Fix part of bug #61134 (GetAddrOfPinnedObject).
23407
23408 2004-07-13  Peter Williams  <peter@newton.cx>
23409  
23410         * process.c (complete_path): Make sure we don't attempt to execute
23411         directories.
23412  
23413 2004-07-12  Geoff Norton <gnorton@customerdna.com>
23414
23415         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
23416           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
23417           and will add/subtract the hour if needed
23418
23419 2004-07-12  Martin Baulig  <martin@ximian.com>
23420
23421         * reflection.c (mono_field_get_object): If we have
23422         `field->generic_info', take the attributes from
23423         `field->generic_info->generic_type'.    
23424
23425 2004-07-12  Martin Baulig  <martin@ximian.com>
23426
23427         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
23428         This function must be called before initializing the runtime.
23429         (mono_debug_init_1): New function; call this after initializing
23430         the runtime, but before loading the assembly.  It tells the
23431         debugger to load corlib and the builtin types.
23432
23433         * mono-debug-debugger.c: Did some larger changes in the debugging
23434         code; support recursive class declarations, make sure we actually
23435         add all classes.
23436
23437 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23438
23439         * debug-helpers.c: undo my previous patch and fixed the real issue in
23440         ../mini/exceptions-x86.c
23441
23442 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23443
23444         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
23445         when no HOME env. variable was set and a NullRef was thrown in a .cctor
23446         called from other .cctors.
23447
23448 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
23449
23450         * loader.c: Removed the mono_loader_wine_init hack now that we are
23451         doing a managed version of Windows.Forms.
23452
23453 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
23454
23455         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
23456         threadpool.c, threads.c: remove static data from rootset.
23457
23458 2004-07-09  Dick Porter  <dick@ximian.com>
23459
23460         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
23461         Don't do any more processing if the matched length was 0.  It was
23462         increasing the size of the string before.  Fixes bug 61167.
23463
23464 2004-07-09  Dick Porter  <dick@ximian.com>
23465
23466         * socket-io.h:
23467         * socket-io.c
23468         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
23469         Add support for SO_PEERCRED if its available.
23470
23471 2004-07-09  Peter Bartok <pbartok@novell.com>
23472         * loader.c: winelib.exe.so error message is now only displayed if
23473         MONO_DEBUG is set. To help us avoid questions when people are trying
23474         out the new Managed.Windows.Forms.
23475
23476 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
23477
23478         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
23479         for isinst and castclass wrappers.
23480
23481         * class-internals.h icall.c: Move registration and lookup of JIT icalls
23482         to libmetadata from the JIT, so they could be used by the marshalling
23483         code and the interpreter.
23484
23485         * marshal.c: Register marshalling related JIT icalls here instead of
23486         in mini.c. Use CEE_MONO_ICALL instead of the family of 
23487         CEE_MONO_PROC<x> opcodes to call marshalling functions.
23488
23489         * metadata.h: Remove unneeded marshalling conversions.
23490
23491         * opcodes.c: Update for new opcodes.
23492         
23493 2004-07-08  Martin Baulig  <martin@ximian.com>
23494
23495         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
23496         (mono_debug_get_domain_data): Make this function static.
23497
23498 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
23499
23500         * gc.c, object.h: add nice GC handle API for embedders.
23501
23502 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
23503
23504         * reflection.c: more changes for the new api
23505
23506         * object.c: When we reflect on a field w/ a constant value, it
23507         will not have a memory location, so we must access metadata. Also,
23508         allow easier reading of strings so that we can read them from
23509         the constant data.
23510
23511         * class.c (mono_class_layout_fields): no need for literal fields here.
23512
23513         * class-internals.h: api changes for const fields
23514
23515         * icall.c (ves_icall_get_enum_info): use new apis for const fields
23516
23517 2004-07-06  Martin Baulig  <martin@ximian.com>
23518
23519         * mono-debug.h: Increment version number to 44.
23520
23521         * mono-debug.c (mono_debug_add_wrapper): The second argument is
23522         now a gpointer, rewrote this whole method.
23523
23524         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
23525         function.  Add information about the wrapper in a new "misc table".
23526
23527         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
23528         for the new misc table.
23529
23530 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
23531
23532         * metadata-internals.h image.c: Add a cache for helper signatures.
23533
23534         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
23535
23536 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
23537
23538         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
23539         delegates from a delegate. Fixes #61033.
23540         
23541         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
23542         marshalling of stringbuilder arrays. Fixes #59900.
23543
23544 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
23545
23546         * icall.c: Add EnumBuilder:setup_enum_type icall.
23547
23548 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
23549
23550         * icall.c: Added a new icall for the property version of
23551         OffsetOfStringData.
23552
23553 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
23554
23555         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
23556         it has a constant size across platforms.
23557
23558         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
23559         stack trace.
23560
23561 2004-06-29  Martin Baulig  <martin@ximian.com>
23562
23563         * mono-debug.c (mono_debug_add_method): Protect the whole function
23564         in mono_debugger_lock(), not just parts of it.
23565
23566 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
23567
23568         * reflection.c: make sure padding bytes in heaps are zeroed.
23569
23570 2004-06-24  David Waite  <mass@akuma.org>
23571
23572         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
23573         image.c, loader.c, locales.c, marshal.c, metadata.c,
23574         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
23575         string-icalls.c, threads.c: change to C90-style comments from C99 /
23576         C++ -style
23577
23578 2004-06-24  Dick Porter  <dick@ximian.com>
23579
23580         * threads.c
23581         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
23582         return createdNew.  Fixes bug 60412.
23583
23584         * threads-types.h: 
23585         * icall.c: Add createdNew parameter to CreateMutex icall
23586
23587 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23588
23589         * reflection.c, object-internals.h: save default value in params.
23590
23591 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23592
23593         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
23594         no need to build a new path combining that with the application base.
23595         Fixes bug #60442.
23596
23597 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
23598
23599         * reflection.c: fixed minor standard compliance issues.
23600
23601 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
23602
23603         * reflection.c: fixed issue with encoding some custom attributes
23604         (arrays in properties and fields, bug #60411).
23605
23606 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23607
23608         * reflection.c: fix start address when copying the public key token.
23609
23610 2004-06-23  Martin Baulig  <martin@ximian.com>
23611
23612         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
23613         the `exc' object in a static object to put it into the GC's root set.
23614
23615 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
23616
23617         * reflection.c: make mono_reflection_setup_internal_class ()
23618         callable a second time to setup a new parent class.
23619
23620 2004-06-23  Dick Porter  <dick@ximian.com>
23621
23622         * threads.c: Check for WAIT_IO_COMPLETION return values.
23623
23624 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
23625
23626         * appdomain.c: Removed the g_free on the public key token. Now copy 
23627         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
23628         * assembly.c: Added public key token string value when loading 
23629         assemblies. Fix bug #60439.
23630         * icall.c: Added missing informations (like public key) in 
23631         GetReferencedAssemblies. Fix #60519.
23632         * image.h: Changed definition for public key token from const char*
23633         public_tok_value to guchar public_key_token [17];
23634         * reflection.c: Updated for changes to public key token.
23635
23636 2004-06-22  Lluis Sanchez Gual
23637
23638         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
23639         for the field in base classes.
23640
23641 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
23642
23643         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
23644         mark headers as not supported, they are installed only for use by the
23645         debugger.
23646
23647 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
23648
23649         * *.c, *.h: avoid namespace pollution in public headers.
23650
23651 2004-06-21  Martin Baulig  <martin@ximian.com>
23652
23653         * exception.c (mono_get_exception_security): It's in
23654         "System.Security", not in "System".
23655
23656         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
23657         the exception classes.
23658
23659 2004-06-21  Martin Baulig  <martin@ximian.com>
23660
23661         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
23662         Protect the exception object from being finalized.
23663
23664 2004-06-21  Martin Baulig  <martin@ximian.com>
23665
23666         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
23667         public function.
23668
23669 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
23670
23671         * reflection.c: Load the assembly in mono_reflection_type_from_name,
23672         if it was not loaded before. Fix parts of #60439.
23673
23674 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
23675
23676         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
23677         code that was broken since Ben's change: wrappers are now
23678         dependent on the method signature only again.
23679
23680 2004-06-21  Martin Baulig  <martin@ximian.com>
23681
23682         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
23683         added interface support.
23684
23685 2004-06-21  Martin Baulig  <martin@ximian.com>
23686
23687         * class.c (mono_vtable_get_static_field_data): New public method.
23688
23689 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
23690
23691         * filewatcher.c : Windows build fix to be compliant with API changes.
23692
23693 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23694
23695         * class.h, class.c: more accessors.
23696         * metadata.h, metadata.c: prepare for hiding MonoType and
23697         MonoMethodSignature: people should use the accessors from now on
23698         outside of the tree.
23699
23700 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
23701
23702         * *.c, *.h: more API cleanups.
23703
23704 2004-06-18  Jackson Harper  <jackson@ximian.com>
23705
23706         * assembly.c: Trace loading assemblies.
23707         * loader.c: Trace loading native libraries.
23708         * mono-config.c: Trace loading config files.
23709         
23710 2004-06-18  Dick Porter  <dick@ximian.com>
23711
23712         * locales.c: Tell ICU the lengths of strings, it can cope with
23713         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
23714
23715 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
23716
23717         * image.c: swapped name/filename;
23718
23719 2004-06-18  Martin Baulig  <martin@ximian.com>
23720
23721         * mono-debug-debugger.c (write_class): Write the parent class at
23722         the end of the header.
23723
23724 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
23725
23726         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
23727
23728 2004-06-17  Raja R Harinath  <rharinath@novell.com>
23729
23730         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
23731         (bundle_obj): New conditional define.
23732         (BUILT_SOURCES): Remove.
23733         ($(bundle_srcs)): Make parallel-make safe.
23734         (libmonoruntime_la_LIBADD): Make unconditional.
23735         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
23736         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
23737
23738 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
23739
23740         * culture-info-tables.h: It was inconsistent with the latest
23741           supp info files.
23742
23743 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
23744
23745         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
23746         be loaded.
23747
23748         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
23749         with gcc 2.95.
23750
23751 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
23752
23753         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
23754         cleaned up public header threads.h.
23755
23756 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
23757
23758         * Makefile.am, *.c, *.h: more API cleanups.
23759
23760 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
23761
23762         * Makefile.am: removed monosn from compilation.
23763         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
23764         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
23765         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
23766         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
23767         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
23768         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
23769
23770 2004-06-15  Jackson Harper  <jackson@ximian.com>
23771
23772         * assembly.c: Make locales lower case when searching the GAC for
23773         assemblies. gacutil will always make locales lowercase when
23774         installing so this effectively makes them case insensitive.
23775         
23776 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
23777
23778         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
23779         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
23780           parameter which allows to choose whether the wait can be interrupted or 
23781           not. Also added the method mono_monitor_enter(), which locks the monitor
23782           using an infinite wait and without allowing interruption.
23783           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
23784           interrupted.
23785         * object.h: Added new fields in MonoThread. suspend_event holds the event
23786           used to susped/resume the thread. synch_lock is the lock object to use for
23787           modifying the thread state.
23788         * threads.c: Use the new synch_lock object for locking, instead of "this",
23789           which can generate deadlocks.
23790           Moved thread state change in Thread.Sleep and Thread.Join from managed
23791           to unmanaged code. This avoids a deadlock when the thread was suspended
23792           just after acquiring the thread lock.
23793           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
23794           Implemented Thread.Suspend using an event instead of ThreadSuspend,
23795           which is not fully implemented in the io-layer.
23796         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
23797
23798 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
23799
23800         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
23801         threads-types.h: more API cleanups.
23802
23803 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
23804
23805         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
23806         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
23807         threadpool.c, threads.c: first pass at the exported API cleanup.
23808
23809 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
23810
23811         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
23812
23813 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
23814
23815         * icall.c: added internalGetHome.
23816
23817 2004-06-14  Dick Porter  <dick@ximian.com>
23818
23819         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
23820         possible to return successfully when '.' or '..' were the only
23821         entries in a directory, but were skipped.  The MonoIOStat was not
23822         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
23823         Fixes bug 59574.
23824
23825 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
23826
23827         * reflection.c: make binaries run on .Net 1.1 by default.
23828
23829 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
23830
23831         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
23832
23833 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
23834
23835         * marshal.c: keep track of struct size with explicit layout
23836         (bug #59979).
23837
23838 2004-06-12  Martin Baulig  <martin@ximian.com>
23839
23840         * mono-debug-debugger.c: Comment out a debugging g_message().
23841
23842 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
23843
23844         * reflection.c, reflection.h: do not free custom attrs that are cached.
23845         * icall.c: use braces to make code clearer.
23846
23847 2004-06-11  Martin Baulig  <martin@ximian.com>
23848
23849         * class.h (MonoInflatedField): New type.
23850         (MonoClassField): Replaced `MonoType *generic_type' with
23851         `MonoInflatedField *generic_info'.
23852
23853         * icall.c
23854         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
23855
23856 2004-06-11  Martin Baulig  <martin@ximian.com>
23857
23858         * reflection.c (mono_image_create_method_token): Correctly encode
23859         varargs methods.
23860
23861 2004-06-11  Martin Baulig  <martin@ximian.com>
23862
23863         * metadata.c (mono_metadata_parse_method_signature): When parsing
23864         a MethodDef which has VarArgs, also set sentinelpos if we don't
23865         have any parameters.
23866
23867 2004-06-11  Martin Baulig  <martin@ximian.com>
23868
23869         * verify.c (mono_method_verify): In CEE_CALL, use
23870         mono_method_get_signature() to get the method's signature, unless
23871         we're a PInvoke method.
23872
23873 2004-06-10  Jackson Harper  <jackson@ximian.com>
23874
23875         * assembly.c: Use <path>/lib/mono/gac for the extra paths
23876         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
23877         logical name as the supplied path is just a prefix to the gac not
23878         the direct path to it.
23879         
23880 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
23881
23882         * reflection.c: make the token for a created method match
23883         the token of the MethodBuilder it was created from
23884         (IKVM requires this behaviour now).
23885
23886 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
23887
23888         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
23889         reflection.c, socket-io.c: leak fixes.
23890
23891 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
23892
23893         * icall.c: handle sentinel pos in vararg methods in position different
23894         from 0.
23895
23896 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23897
23898         * culture-info-tables.h: freshly generated.
23899
23900 2004-06-09  Martin Baulig  <martin@ximian.com>
23901
23902         * loader.c (mono_get_method_constrained): Call `mono_class_init
23903         (constrained_class)'.   
23904
23905 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
23906
23907         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
23908         any methods. Fixes #59629.
23909
23910 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
23911
23912         * culture-info-tables.h: reflecting locale-builder updates.
23913
23914 2004-06-08  Dick Porter  <dick@ximian.com>
23915
23916         * object.h:
23917         * locales.c: Fixed compile warnings, including a real bug in
23918         CompareInfo_internal_compare.
23919         
23920 2004-06-08  Dick Porter  <dick@ximian.com>
23921
23922         * locales.c
23923         (ves_icall_System_Globalization_CompareInfo_internal_index):
23924         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
23925         Double-check the resuls of usearches, because ICU currently
23926         ignores most of the collator settings here.  Fixes bug 59720.
23927         
23928 2004-06-08  Dick Porter  <dick@ximian.com>
23929
23930         * locales.c
23931         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
23932         Fix memory leak and segfault-causing typo.  No idea how this one
23933         lasted so long without being noticed.
23934
23935 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
23936
23937         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
23938         any methods. Fixes #59629.
23939
23940 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23941
23942         * assembly.c:
23943         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
23944         own the critical section before). Removed dead code (that's done
23945         in the preload hook).
23946
23947         (mono_assembly_load_with_partial_name): call the preload hook.
23948
23949 2004-06-08  Martin Baulig  <martin@ximian.com>
23950
23951         * metadata.c (mono_metadata_signature_alloc): Default
23952         `sentinelpos' to -1.
23953
23954         * reflection.c (mono_image_get_array_token): Likewise.
23955
23956 2004-06-08  Martin Baulig  <martin@ximian.com>
23957
23958         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
23959
23960         * metadata.c (mono_metadata_parse_method_signature): When parsing
23961         a MethodDef which has VarArgs, set sentinelpos.
23962
23963         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
23964         `gint16' since we're using -1 for non-varargs methods.
23965
23966         * reflection.c
23967         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
23968         (method_encode_signature): Added varargs support.
23969         (method_builder_encode_signature): Likewise.
23970         (mono_image_get_varargs_method_token): New static method.
23971         (mono_image_create_method_token): New public method; this is
23972         called via an icall instead of mono_image_create_token() when
23973         calling a varargs method.       
23974
23975 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
23976
23977         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
23978
23979 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
23980
23981         * culture-info-tables.h : Reflecting the latest locale-builder that
23982           fixed empty array representation ({} to {0}).
23983
23984 2004-06-07  Jackson Harper  <jackson@ximian.com>
23985
23986         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
23987         looking up extra gac paths. This allows MONO_GAC_PATH to act
23988         exactly like a prefix.
23989         
23990 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
23991
23992         * reflection.c (mono_reflection_type_from_name): Make a copy of the
23993         type name before modifying it. Fixes #59405.
23994
23995 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
23996
23997         * culture-info.h: added fields for "all datetime patterns".
23998         * locales.c: (  ves_icall_System_Globalization_CultureInfo
23999           _construct_datetime_format ()): fill xxx_patterns fields.
24000         * object.h: added fields for "all datetime patterns" to
24001           MonoDateTimeFormatInfo.
24002         * culture-info-tables.h: reflecting locale-builder updates.
24003
24004 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
24005
24006         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
24007         the event has no add and remove methods. Fixes #59629.
24008
24009 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
24010
24011         * object.c: Fixed possible integer overflow when allocating large
24012         strings.
24013
24014 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
24015
24016         * culture-info-tables.h: reflecting locale-builder updates.
24017
24018 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
24019
24020         * culture-info-tables.h: reflecting locale-builder updates.
24021
24022 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
24023
24024         * culture-info-tables.h: reflecting locale-builder updates.
24025
24026 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
24027
24028         * threads.c: Made Thread.Sleep abortable.
24029
24030 2004-06-02  Martin Baulig  <martin@ximian.com>
24031
24032         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
24033
24034         * debug-mono-symfile.h: Bumped symbol file version number to 37.
24035
24036 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
24037
24038         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
24039
24040 2004-05-30  Jackson Harper  <jackson@ximian.com>
24041
24042         * reflection.c: Do not hardcode assembly versions or public key
24043         tokens anymore. All of this except the corlib section was dead
24044         code anyways.
24045         
24046 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
24047
24048         * object.c (mono_runtime_invoke_array): Automatically create boxed
24049         objects for byref valuetypes if needed. Fixes #59300.
24050         
24051         * object.c (mono_method_return_message_restore): Handle 
24052         MONO_TYPE_OBJECT as well.
24053
24054 2004-05-28  Jackson Harper  <jackson@ximian.com>
24055
24056         * reflection.c: The modified type encoding was causing build
24057         problems. Reverted for now.
24058         
24059 2004-05-28  Jackson Harper  <jackson@ximian.com>
24060
24061         * reflection.c/h: Take an assembly ref so that we dont create
24062         fully qualified names when encoding types in the same assembly as
24063         the custom attribute being emitted.
24064         * appdomain.c: Increment version number.
24065         
24066 2004-05-26  Duncan Mak  <duncan@ximian.com>
24067
24068         * icall.c
24069         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
24070         Set the full version number (major, minor, build, revision).
24071
24072 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
24073
24074         * marshal.c (emit_struct_conv): increment src/dst after blit
24075         (mono_marshal_get_managed_wrapper,
24076         mono_marshal_get_native_wrapper): make sure we have marshalling
24077         info before marshalling params (info computation affects
24078         blittable)
24079
24080         * class.c (class_compute_field_layout): correctly deal with
24081         blittable
24082         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
24083         value types (as per what windows dows by default)
24084         (mono_class_setup_mono_type): System.ValueType is blittable
24085         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
24086         blittable
24087
24088         * marshal.c (mono_marshal_load_type_info): flag types  as
24089         non-blittable if the native layout doesn't match the managed
24090         layout
24091
24092 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24093
24094         * appdomain.c: don't add stuff in the private search path that is
24095         above the application base. If application base is not set, there's
24096         no private search path.
24097
24098 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
24099
24100         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
24101         byref struct arguments in native->managed marshalling.
24102
24103 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
24104
24105         * marshal.c (mono_marshal_get_runtime_invoke): correctly
24106         cache methods using signature (special case for methods
24107         that are value type or string class)
24108         
24109         * image.c (mono_image_close): clean up allocated GSList's
24110         in runtime_invoke_cache.
24111
24112 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24113
24114         * mono-config.c: set the correct path for mono_cfg_dir on windows when
24115         there's no MONO_CFG_DIR environment variable defined.
24116
24117 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24118
24119         * threads.c: windows version must be >= 0x0500 to include OpenThread.
24120
24121 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
24122
24123         * threadpool.c: Really wait for 500ms after the async call, even if the wait
24124           is interrumped.
24125         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
24126           before waiting for it, and call CloseHandle after the wait to unref it.
24127           This will make sure that handles are not disposed too early.
24128
24129 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24130
24131         * appdomain.c:
24132         * appdomain.h:
24133         * icall.c: removed
24134         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
24135         needed now.
24136
24137         * object.c: se the application_base only for the domain that runs
24138         Main. Fixes bug #59216,
24139
24140 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24141
24142         * appdomain.c:
24143         * object.c: only the domain in which Main is run have
24144         SetupInformation.ConfigurationFile set, so moved a few lines from
24145         appdomain.c to object.c.
24146
24147 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24148
24149         * appdomain.c: we tried to load [name].(dll|exe), but according
24150         to bug #57710, we must also try [culture]/[name].(dll|exe) and
24151         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
24152         There's a test case attached to bug #58922.
24153
24154 2004-05-27  Dick Porter  <dick@ximian.com>
24155
24156         * icall.c:
24157         * file-io.c: Implemented icalls for locking and unlocking regions
24158         in a file.
24159         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
24160         FALSE on error (fixes both compiler warning and real bug.)
24161
24162 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
24163
24164         * culture-info-tables.h: reflecting locale-builder updates.
24165
24166           (Added missing ChangeLog entry for 05/26)
24167
24168 2004-05-27  Jackson Harper  <jackson@ximian.com>
24169
24170         * locales.c: Fix some cut and paste errors.
24171         
24172 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24173
24174         * mono-config.c: set the correct path for config. directory on windows.
24175
24176 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
24177
24178         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
24179           on win32.
24180
24181 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
24182
24183         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
24184         from pinvoke functions.
24185         
24186         * marshal.c (mono_ftnptr_to_delegate): Implement this.
24187
24188 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
24189
24190         * culture-info-tables.h: reflecting locale-builder updates.
24191
24192 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
24193
24194         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
24195         #59086.
24196
24197 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
24198
24199         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
24200         * icall.c: Modified icalls for RNG.
24201         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
24202         Windows (CryptoAPI).
24203
24204 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
24205
24206         * locales.c: Fix build.
24207
24208 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
24209
24210         * culture-info-tables.h: reflecting locale-builder updates.
24211
24212 2004-05-25  Jackson Harper  <jackson@ximian.com>
24213
24214         * locales.c: When creating the current culture use the $LANGs
24215         specific culture. So DateTimeFormat and NumberFormat entries are created.
24216         
24217 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
24218
24219         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
24220         a char array as parameter.
24221
24222 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
24223
24224         * image.c: In mono_image_open(), always use an absolute path name to
24225           look for already loaded images.
24226
24227 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
24228
24229         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
24230         missing in the windows build (like older cygwin include files).
24231
24232 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
24233
24234         * icall.c: Fixed check for possible integer overflow in Buffer_
24235         BlockCopy icall. Replaced comments style // by /* */.
24236
24237 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
24238
24239         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
24240         
24241         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
24242         check after MONO_VTADDR. Fixes pinvoke2.exe.
24243
24244         * marshal.h marshal.c metadata.h: Add beginnings of support for
24245         ftnptr -> delegate marshalling.
24246
24247 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
24248
24249         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
24250         * threads.c: Fix warnings.
24251
24252 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
24253
24254         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
24255         * icall.c: Registered icalls for Suspend and Resume.
24256         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
24257           Thread.Abort.
24258         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
24259         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
24260         * process.c: Use WaitForSingleObjectEx.
24261         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
24262           checkpoints.
24263         * threads.c, threads.h: Make use of new Ex wait methods. Improved
24264           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
24265           for Suspend and Resume. Added new mono_thread_stop, used for stoping
24266           background threads. Added basic support for Abort in Windows.
24267           Start new threads using a managed delegate invoke wrapper. This wrapper
24268           has an interruption checkpoint that is needed since an interruption
24269           can be requested before the thread leaves the unmanaged code that starts 
24270           the thread.
24271         * marshal.c: Added interruption checkpoint after every native call, and
24272           also before managed calls for wrappers called from unmanaged code to
24273           go into managed code.
24274         * object.h: Added new field in MonoThread to keep track of interruption
24275           requests.
24276
24277 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
24278
24279         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
24280         calls.
24281
24282 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24283
24284         * appdomain.c:
24285         * assembly.c:
24286         * gc.c:
24287         * locales.c:
24288         * mono-config.c:
24289         * rand.c: getenv -> g_getenv (windows!)
24290
24291         * process.c: complete_path is also used on non-windows platforms.
24292
24293 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24294
24295         * icall.c: new signature for Process_Start.
24296
24297         * process.[ch]: new signature for Process_Start. If we're on windows
24298         and UseShellExecute is false, we have to search for the program by
24299         ourselves if we don't get a full path.
24300
24301 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
24302
24303         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
24304         marshalling and call CleanUpNativeData if needed. Fixes #58646.
24305
24306 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24307
24308         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
24309         Fixes bug #58373.
24310
24311 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24312
24313         * process.c: use double quotes to quote program name and arguments on
24314         windows. Fixes bug #58575.
24315
24316 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24317
24318         * file-io.c: don't return "." and ".." when using windows Find*File.
24319
24320 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
24321
24322         * marshal.c: Don't pass wrappers to message init because method 
24323         addressed used to lookup metadata. part of remoting[2|3] fix.
24324
24325 2004-05-15  Jackson Harper  <jackson@ximian.com>
24326
24327         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
24328         path is essentially the same as MONO_PATH except that it points to
24329         GACs instead of lib directories.
24330         * loader.h: The user gac is gone so we dont need function to
24331         enable/disable it.
24332         * mono-config.c: user gac option is now gone.
24333         
24334 2004-05-15  Jackson Harper  <jackson@ximian.com>
24335
24336         * culture-info.h: Make defines more consistent, add calendar data
24337         to the culture info table.
24338         * culture-info-tables.h: Add basic calendar data. Basically
24339         everyone gets default gregorian until all the data is
24340         updated.
24341         * locales.c: Use the new consistent defines. Set calendar data for
24342         culture info objects.
24343         * object.h: add a field for calendar data to CultureInfo
24344         
24345 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
24346
24347         * image.c: image->runtime_invoke_cache is keyed on signatures now.
24348         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
24349         a signature.
24350         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
24351         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
24352         an extra param that is the pointer of the method to invoke. The IL for
24353         the invoke method is no longer specific to the method, but to the
24354         signature of the method. Thus, we can share the same code for multiple
24355         methods. This reduces the number of methods that have to be compiled.
24356
24357 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
24358
24359         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
24360
24361         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
24362
24363         * icall.c: Optimize Buffer.BlockCopy.
24364
24365 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24366
24367         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
24368         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
24369         quote). Changed them to "MMMM yyyy".
24370
24371 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
24372
24373         * rand.c
24374         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
24375
24376 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
24377
24378         * reflection.h: Updated after changes to managed structures.
24379
24380         * appdomain.c: Bump corlib version.
24381
24382 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24383
24384         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
24385         windows.
24386
24387 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24388
24389         * Makefile.am: link to ../os/libmonoos.la on windows.
24390
24391         * assembly.c:
24392                 -If MONO_DEBUG, warn about non-existing directories in
24393                 MONO_PATH.
24394                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
24395                 compile time variable.
24396                 -Removed init_default_path and call mono_set_rootdir from
24397                 libmonoos.a instead (windows only).
24398
24399         * assembly.h: declare mono_assembly_getrootdir().
24400
24401         * domain.c:
24402         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
24403
24404         * loader.c: s/getenv/g_getenv/
24405
24406 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
24407
24408         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
24409
24410         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
24411
24412         * metadata.h: Add new marshalling conversions.
24413
24414         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
24415         function.
24416
24417         * reflection.c (mono_reflection_get_type): Lookup the type in all
24418         modules of a multi-module assembly. Fixes #58291.
24419
24420 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
24421
24422         * threads.c: Before aborting a background, set the StopRequested
24423         state.  This avoids throwing the Abort exception.
24424         In mono_thread_manage, don't continue with the shutdown until all
24425         aborted threads have actually stopped.
24426
24427 2004-05-10  Jackson Harper  <jackson@ximian.com>
24428
24429         * locales.c: Remove the modifier from culture names.
24430         
24431 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24432
24433         * Makefile.am: monosn is not installed any more. It has been deprecated
24434         in favor of sn.
24435
24436 2004-05-07  Jackson Harper  <jackson@ximian.com>
24437
24438         * locales.c
24439         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
24440         Fix array construction, add bailout if the length is 0.
24441
24442 2004-05-07  Dick Porter  <dick@ximian.com>
24443
24444         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
24445         machine doesn't have a DNS entry.  Patch by Urs Muff
24446         (umuff@quark.com), fixes bug 57928.
24447
24448 2004-05-06  Jackson Harper  <jackson@ximian.com>
24449
24450         * reflection.c: Handle null PublicTokens properly. alloc mem for
24451         assembly names culture so we dont crash when freeing it.
24452         
24453 2004-05-06  Jackson Harper  <jackson@ximian.com>
24454
24455         * assembly.c: Check the usergac when loading with partial names.
24456         
24457 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
24458
24459         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
24460         does nothing for now (not required for Linux/Windows) but the class
24461         library can call it (and a newer or modified runtime could need it).
24462         * icall.c: Registred icall.
24463
24464 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24465
24466         * loader.c: prints a message on module loading error we set MONO_DEBUG
24467         environment variable.
24468
24469 2004-05-05  Jackson Harper  <jackson@ximian.com>
24470
24471         * appdomain.c: Handle PublicKeyToken=null properly.
24472         
24473 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
24474
24475         * environment.c|h: Added icall ves_icall_System_Environment_
24476         GetOSVersionString to get the current OS version as a string.
24477         * icall.c: Registred icall.
24478
24479 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
24480
24481         * object.c: in mono_object_get_virtual_method(), take into account that
24482         non-virtual methods don't have a slot in the vtable. Check needed when
24483         the object is a proxy.
24484
24485 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
24486
24487         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
24488         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
24489
24490         * object.c (mono_class_compute_gc_descriptor): Fix warning.
24491
24492         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
24493         passed when a valuetype is expected.
24494
24495         * object.c (mono_unhandled_exception): Only set the exit code if the
24496         exception happens in the main thread. Fixes thread5.exe.
24497
24498         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
24499         invalid names. Fixes #58047.
24500
24501 2004-05-03  Jackson Harper  <jackson@ximian.com>
24502
24503         * assembly.c: This line was committed accidently and is unneeded.
24504         
24505 2004-05-03  Jackson Harper  <jackson@ximian.com>
24506
24507         * icall.c: Add new icall for Assembly::LoadWithPartialName
24508         * assembly.c/.h: new function that probes the GAC to load partial
24509         assembly names by Paolo Molaro.
24510         
24511 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24512
24513         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
24514         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
24515         (type_get_fully_qualified_name): Added PublicKeyToken when building a
24516         full type name.
24517
24518 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24519
24520         * appdomain.c: fixed check for 'neutral' culture and removed warning.
24521         * reflection.c: fix bug when parsing a full type name and Version is not
24522         the last thing in the string.
24523
24524 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
24525
24526         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
24527         crashes when it is freed.
24528
24529 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24530
24531         * assembly.c: print the compat warning to stderr.
24532
24533 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
24534
24535         * assembly.c (mono_assembly_load_references): Add a compatibility
24536         hack to run old applications that might be still referencing the
24537         3300-based assemblies, only do this for System.xxx.
24538
24539 2004-05-01  Jackson Harper  <jackson@ximian.com>
24540
24541         * appdomain.c: If the culture is neutral we set it to "".
24542         
24543 2004-04-29  Jackson Harper  <jackson@ximian.com>
24544
24545         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
24546
24547 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
24548  
24549         * string-icalls.c: added low overhead function for copying chars
24550         * icall.c: added needed icall for the above function
24551  
24552 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24553
24554         * icall.c: fix return value of get_global_assembly_cache.  Implemented
24555         Environment.GetLogicalDrives.
24556
24557 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
24558
24559         * rand.c: try and talk to egd or prngd
24560         for random bytes if opening devices fail.
24561
24562 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
24563
24564         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
24565         alignment for the type using the native alignment of its members 
24566         instead of using klass->min_align.
24567
24568         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
24569
24570 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24571
24572         * file-io.c:
24573         * socket-io.c: added check for sys/aio.h.
24574
24575 2004-04-28  Dick Porter  <dick@ximian.com>
24576
24577         * threads.c: Don't abort a thread thats already aborting, when
24578         terminating everything.
24579
24580 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24581
24582         * icall.c: added 2 new async calls for Socket.
24583
24584         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
24585         IO on *nix systems.
24586
24587         * threadpool.c: removed unused variable.
24588
24589 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
24590
24591         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
24592
24593 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
24594
24595         * locales.c: put back string_invariant_tolower () and
24596         string_invariant_toupper ().
24597
24598 2004-04-26 David Waite <mass@akuma.org>
24599
24600         * file-io.h:
24601         * socket-io.h:
24602         * threads.h:
24603         * unicode.h: remove comma from end of enumeration declarations
24604
24605 2004-04-26 David Waite <mass@akuma.org>
24606
24607         * debug-mono-symfile.h:
24608         * decimal.c:
24609         * mono_debug.h:
24610         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
24611
24612
24613 2004-04-26  Jackson Harper  <jackson@ximian.com>
24614
24615         * appdomain.c: Increment version number.
24616         
24617 2004-04-26  Jackson Harper  <jackson@ximian.com>
24618
24619         * appdomain.c: Set assembly references public token value when
24620         PublicKeyToken is specified, not the hash_value. Free public token
24621         values when free assembly name data. Previously the public key
24622         token was hex decoded, however we are using hex encoded public key
24623         tokens, so this is not neccasary.
24624         * assembly.c: Lookup assemblies in the gac if their public token
24625         value is set. Add function to allow enabling user gac
24626         lookups. Specify whether or not the assembly was loaded from the
24627         GAC. Compare full assembly names when checking the cache for
24628         assemblies (Temporarily disabled see comment in code). Remove
24629         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
24630         specifies trace-loader they get extra info to stdout on the
24631         loading of assemblies.
24632         * image.h: Add a field for an assembly references public token
24633         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
24634         whether an assembly has been loaded from the GAC.
24635         * image.c: Remove a corlib -> mscorlib name mapping.
24636         * loader.h: Add function to enable/disable the user gac.
24637         * mono-config.c: Check if the usergac is enabled in the config
24638         file.
24639         * icall.c: New icall to determine whether or not an assembly has
24640         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
24641         * tabldefs.h: Add constant for assemblyref flag that specifies a
24642         full public key is used instead of a public token.
24643         * reflection.c: Remove mscorlib -> corlib mappings. Set
24644         PublicTokenValue instead of hash value. This value is a hex
24645         string so it does not need to be expanded.
24646
24647 2004-04-26  Martin Baulig  <martin@ximian.com>
24648
24649         * mono-debug-debugger.c (mono_debugger_initialize): Set
24650         `mono_debugger_initialized' before calling mono_debug_lock().
24651
24652 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
24653
24654         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
24655           InternalToUpper/InternalToLower.
24656         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
24657           removed invariant culture shortcut.  This is now done in managed code.
24658         * locales.c: (string_invariant_toupper/tolower) removed.
24659
24660 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24661
24662         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
24663         Added Poll internal call.
24664
24665         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
24666         call for Poll. Select was too heavy for polling a single socket.
24667
24668         * threadpool.[ch]: added mono_threadpool_cleanup.
24669         * threads.c: use it. Don't use Thread_Abort on windows.
24670
24671 2004-04-23  Martin Baulig  <martin@ximian.com>
24672
24673         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
24674
24675 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
24676
24677         * icall.c: Registred new icalls for key pair protection and added an
24678         icall for Environment.GetFolderPath on Windows.
24679         * security.c|h: Added new icalls for key pair protection.
24680
24681 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24682
24683         * socket-io.c: don't display the non-supported family warning for known
24684         families. Now this is not displayed on windows when checking support
24685         for IPv4/IPv6.
24686
24687 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24688
24689         * class.c: don't display the layout warning for static fields.
24690
24691 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
24692
24693         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
24694         * locales.c, locales.h: Added new icalls for culture-specific
24695         Char.ToLower and Char.ToUpper.
24696
24697 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24698
24699         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
24700         by David Waite.
24701
24702 2004-04-20  Martin Baulig  <martin@ximian.com>
24703
24704         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
24705         of the type name before passing it to mono_reflection_type_from_name().
24706
24707 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
24708
24709         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
24710         encodings here. Fixes #56965.
24711
24712 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
24713
24714         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
24715         fix test on strstr result not that I can see anything that
24716         relies on the result.
24717
24718 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
24719
24720         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
24721         Fixes #57081.
24722
24723         * marshal.c (mono_marshal_get_string_encoding): New helper function.
24724
24725         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
24726         function to determine which marshalling to use for strings. Fixes
24727         #56965.
24728
24729         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
24730
24731         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
24732
24733 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
24734
24735         * icall.c: #include mono-config.h
24736
24737 2004-04-15  Jackson Harper  <jackson@ximian.com>
24738
24739         * culture-info-tables.h: Fix date formats for en-US culture.
24740         
24741 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
24742
24743         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
24744         ThreadPool.SetMinThreads.
24745         * threadpool.c: Implemented ThreadPool.GetMinThreads and
24746         ThreadPool.SetMinThreads.
24747
24748 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
24749
24750         * mono-config.c: also load the .config file in the directory
24751         where the assembly was found.
24752
24753 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
24754
24755         * assembly.c: load per-assembly config files.
24756         * icall.c: decrapified code to get the config dir and moved to
24757         mono-config.c.
24758         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
24759         per-assembly config files. When doing a dll map lookup give precedence
24760         to the per-assembly data.
24761
24762 2004-04-14  Martin Baulig  <martin@ximian.com>
24763
24764         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
24765         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
24766         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
24767
24768         * mono-debugger-debugger.c: While the debugger is locked, remember
24769         whether the symbol tables have changes and send one single
24770         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
24771
24772 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
24773
24774         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
24775
24776         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
24777         function.
24778
24779         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
24780         account when marshalling string arrays. Fixes #56965.
24781
24782 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
24783
24784         * icall.c: Add new icalls mapping for security.
24785         * security.c|h: Add internal calls for WindowsIdentity,
24786         WindowsImpersonationContext and WindowsPrincipal.
24787
24788 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
24789
24790         * class.c: Added comment to ensure the System.MonoDummy class
24791         is removed when no longer necessary
24792
24793 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
24794
24795         * appdomain.c: Pass arguments to the bootstraping exceptions to
24796         minimize JITed methods at boot
24797
24798         * metadata.c (mono_exception_from_name_two_strings): Allow for the
24799         second string to be null.
24800
24801         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
24802         Change the protocol to minimize the JIT methods at startup.  Now
24803         it Returns the internal codepage, if the value of "int_code_page"
24804         is 1 at entry, and we can not compute a suitable code page
24805         number, returns the code page as a string.
24806
24807 2004-04-13  Jackson Harper  <jackson@ximian.com>
24808
24809         * culture-info-tables.h: Fix number of decimal digits for all
24810         english locales.
24811
24812 2004-04-13  Jackson Harper  <jackson@ximian.com>
24813
24814         * icall.c: Clairfy out of sync error message. It is not always
24815         your corlib that is out of sync.
24816
24817 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
24818
24819         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
24820         properties when only the set accessor is overriden. Fixes #55874.
24821
24822 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
24823
24824         * assembly.c (mono_assembly_load_references): Make this thread safe.
24825         Fixes #56327.
24826
24827 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
24828
24829         * monosn.c: Add missing initialization calls.
24830
24831 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
24832
24833         * locales.c:
24834         ves_icall_System_Globalization_CultureInfo_construct_number_format
24835         Fix g_assert so it compiles on fussier compilers re int/ptr
24836         mismatch
24837
24838 2004-04-08  Dick Porter  <dick@ximian.com>
24839
24840         * socket-io.h:
24841         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
24842         53992.  Also rearrange the code so that the internal calls return
24843         an error value and exceptions are thrown from managed code.
24844
24845         * icall.c: Add type info to the socket icalls.
24846
24847 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24848
24849         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
24850         owes me a beer.
24851
24852 2004-04-07  Martin Baulig  <martin@ximian.com>
24853
24854         * class.c (mono_class_from_generic_parameter): Don't default
24855         `klass->parent' to `mono_defaults.object_type'.
24856
24857 2004-04-07  Martin Baulig  <martin@ximian.com>
24858
24859         * reflection.c (mono_reflection_initialize_generic_parameter): Set
24860         `param->pklass->reflection_info'.       
24861
24862 2004-04-07  Jackson Harper  <jackson@ximian.com>
24863
24864         * culture-info-tables.h: Fix date separator symbol.
24865         
24866 2004-04-07  Martin Baulig  <martin@ximian.com>
24867
24868         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
24869         from System.Type to System.MonoType.
24870
24871 2004-04-07  Martin Baulig  <martin@ximian.com>
24872
24873         * reflection.h
24874         (MonoReflectionGenericParam): Added `has_reference_type' and
24875         `has_value_type' fields.
24876
24877         * reflection.c (mono_image_get_generic_param_info): Encode the
24878         correct flags if we have the `class' or `struct' constraint.
24879
24880 2004-04-07  Martin Baulig  <martin@ximian.com>
24881
24882         * reflection.h
24883         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
24884
24885 2004-04-07  Jackson Harper  <jackson@ximian.com>
24886
24887         * appdomain.c: Revert extra patches, just wanted to bump the
24888         version number.
24889         
24890 2004-04-07  Jackson Harper  <jackson@ximian.com>
24891
24892         * Makefile.am: Add culture-info private headers.
24893         * icall.c: Add new icalls for contructing locales.
24894         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
24895         * locales.h: Declare new culture info construction methods.
24896         * object.h: Add new fields used to avoid the CultureMap to
24897         MonoCultureInfo.
24898         * culture-info.h: Definition of structs used in the culture info
24899         tables.
24900         * culture-info-tables.h: Autogenerated tables that contain culture
24901         info data. This file was generated with the locale-builder tool.
24902         * appdomain.c: Incement corlib version number.
24903         
24904 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
24905
24906         * appdomain.c: (mono_runtime_init) move mono_thread_init
24907         to before mono_object_new calls so critical sections
24908         are initialized before use.
24909
24910 2004-04-07  Martin Baulig  <martin@ximian.com>
24911
24912         * icall.c
24913         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
24914         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
24915         (ves_icall_MonoGenericParam_initialize): Removed.
24916         (monogenericparam_icalls): Removed.
24917         (generictypeparambuilder_icalls): Added new table for
24918         System.Reflection.Emit.GenericTypeParameterBuilder.
24919
24920         * reflection.c
24921         (mono_reflection_define_generic_parameter): Removed.
24922         (mono_reflection_initialize_generic_parameter): This is now called
24923         from GenericTypeParameterBuilder's .ctor.
24924
24925 2004-04-06  Martin Baulig  <martin@ximian.com>
24926
24927         * class.c (mono_class_init): Don't inflate nested classes in a
24928         generic instance.
24929         (mono_type_get_name_recurse): Include the generic arguments for
24930         generic instances and generic type declarations.
24931         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
24932         (_mono_class_get_instantiation_name): Removed.
24933         (mono_class_create_generic): Always use `gklass->name' as our name.
24934
24935         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
24936
24937         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
24938         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
24939         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
24940         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
24941         closed generic methods here.
24942
24943         * reflection.c
24944         (mono_reflection_generic_inst_get_nested_types): Removed.
24945         (inflate_mono_method): Copy the generic parameters from the
24946         MonoMethodHeader into out MonoGenericMethod.
24947
24948 2004-04-06  Martin Baulig  <martin@ximian.com>
24949
24950         * row-indexes.h
24951         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
24952
24953         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
24954
24955         * reflection.c (build_compressed_metadata): If we have any entries
24956         in the GenericParam, MethodSpec or GenericParamConstraint tables,
24957         set the header version to 1.1.
24958
24959 2004-04-06  Martin Baulig  <martin@ximian.com>
24960
24961         * class.c (mono_class_init): If we're a generic instance,
24962         initialize our nested classes, too.
24963         (_mono_class_get_instantiation_name): Deal with the new `!%d'
24964         suffix. 
24965
24966 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24967
24968         * process.c: quote the argument passed to the shell on windows.
24969
24970 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
24971
24972         * threads.c (mono_alloc_special_static_data): Allow this to be
24973         called during startup.
24974
24975 2004-04-02  Martin Baulig  <martin@ximian.com>
24976
24977         * icall.c
24978         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
24979
24980 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
24981
24982         * icall.c: Fix build.
24983
24984 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
24985
24986         * Makefile.am: Added security.c|h.
24987         * icall.c: Added icall for get_UserName;
24988         * security.c: New file for security related icalls. Added function
24989         get_UserName for System.Environment (fix #56144).
24990         * security.h: New. Header file for security.c
24991
24992 2004-04-02  Dick Porter  <dick@ximian.com>
24993
24994         * icall.c: Deleted the icalls that were obsoleted some time ago
24995         by the ICU string code, and which were mixed into the icall
24996         rearranging.  Fixes bug 55969.
24997
24998         * string-icalls.h: 
24999         * string-icalls.c: Deleted the code that those icalls reference.
25000
25001 2004-04-01  Martin Baulig  <martin@ximian.com>
25002
25003         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
25004
25005         * class.c (mono_class_from_generic_parameter): Don't set 
25006         TYPE_ATTRIBUTE_INTERFACE.
25007         (my_mono_class_from_generic_parameter): Likewise.
25008
25009 2004-04-01  Martin Baulig  <martin@ximian.com>
25010
25011         * loader.c (find_method): Added an optional `MonoClass *ic'
25012         argument to search in a specific interface.
25013         (mono_get_method_constrained): New public function.
25014
25015 2004-04-01  Martin Baulig  <martin@ximian.com>
25016
25017         * reflection.c (mono_image_get_generic_field_token): Use the
25018         `handleref' cache here.
25019
25020 2004-04-01  Martin Baulig  <martin@ximian.com>
25021
25022         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
25023
25024         * reflection.c (create_generic_typespec): Use the `typespec' hash
25025         here, not the `typeref' one.    
25026
25027 2004-04-01  Martin Baulig  <martin@ximian.com>
25028
25029         * class.c (mono_class_inflate_generic_type): Moved the
25030         functionality into a new static inflate_generic_type() which
25031         returns NULL if it didn't do anything.  Only increment the
25032         `mono_stats.inflated_type_count' if we actually inflated
25033         something.
25034         (mono_class_get_full): Check the classes type to see whether we
25035         need to inflate it; also inflate MONO_TYPE_(M)VAR.
25036
25037 2004-04-01  Jackson Harper  <jackson@ximian.com>
25038
25039         * reflection.c: Set culture for assembly references.
25040         
25041 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
25042
25043         * reflection.[ch], icall.[ch], Fix support for pinning variables.
25044
25045 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25046
25047         * assembly.c:
25048         (do_mono_assembly_open): the critical section also covers
25049         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
25050
25051 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25052
25053         * threads.c:
25054         (mono_manage_threads): abort the background threads when finishing.
25055         Fixes bug #47232.
25056
25057 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25058
25059         * gc.c: only close the done_event handle if there was no timeout.
25060         C-ified comments.
25061
25062 2004-03-30  Martin Baulig  <martin@ximian.com>
25063
25064         * icall.c (icall_entries): It's called "System.Activator", not
25065         "System.Activation".    
25066
25067 2004-03-30  Martin Baulig  <martin@ximian.com>
25068
25069         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
25070         (mono_class_create_from_typespec): Likewise.
25071
25072 2004-03-30  Martin Baulig  <martin@ximian.com>
25073
25074         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
25075         `has_ctor_constraint' and `initialized'.
25076
25077 2004-03-30  Martin Baulig  <martin@ximian.com>
25078
25079         * reflection.c (encode_new_constraint): New static function to add
25080         the constructor constraint attribute to a type parameter.
25081         (encode_constraints): Call encode_new_constraint() if necessary.
25082
25083         * reflection.h
25084         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
25085
25086         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
25087         
25088 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
25089
25090         * reflection.c, icall.c: add support for pinning variables. 
25091
25092 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
25093
25094         * marshal.c (mono_marshal_get_managed_wrapper):
25095         init bool local with zero rather than null.
25096
25097 2004-03-29  Martin Baulig  <martin@ximian.com>
25098
25099         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
25100         the "official" behavior here.
25101         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
25102
25103 2004-03-29  Martin Baulig  <martin@ximian.com>
25104
25105         * icall.c: Reflect latest API changes.
25106
25107 2004-03-29  Martin Baulig  <martin@ximian.com>
25108
25109         * loader.c (mono_get_method_from_token): Also call
25110         mono_metadata_load_generic_params () for abstract and interface
25111         methods; replace the type arguments in the method signature with
25112         the ones which are loaded from the metadata.
25113
25114 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
25115
25116         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
25117         of the lock is not the current thread. MS.NET don't do it, in spite of
25118         what the documentation says. See bug #56157.
25119
25120 2004-03-28  Martin Baulig  <martin@ximian.com>
25121
25122         * class.c (mono_class_init): Don't call init_properties() and
25123         init_events() for generic instances; set `prop->parent' when
25124         inflating properties.
25125
25126         * reflection.c (mono_generic_inst_get_object): Call
25127         `mono_class_init (ginst->klass)'.
25128         (mono_type_get_object): Only create a MonoGenericInst if your
25129         generic type is a TypeBuilder.
25130         (do_mono_reflection_bind_generic_parameters): Only set
25131         `ginst->is_dynamic' if our generic type is a TypeBuilder.
25132
25133 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
25134
25135         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
25136         Fixes #56091.
25137
25138 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25139
25140         * icall.c: added Kill_internal icall.
25141         * process.[ch]: added Kill_internal icall.
25142
25143 2004-03-25  Martin Baulig  <martin@ximian.com>
25144
25145         * class.h (MonoStats): Added `generic_instance_count',
25146         `inflated_method_count', `inflated_type_count' and
25147         `generics_metadata_size'.       
25148
25149 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25150
25151         * reflection.c: no warnings now.
25152
25153 2004-03-25  Martin Baulig  <martin@ximian.com>
25154
25155         * class.c (mono_class_get_full): New public function; does a
25156         mono_class_get(), but also takes a `MonoGenericContext *'.
25157
25158         * loader.c (mono_field_from_memberref): Renamed to
25159         `field_from_memberref', made static and added `MonoGenericContext *'
25160         argument.
25161         (mono_field_from_token): Added `MonoGenericInst *' argument.
25162         (method_from_memberef): Likewise.
25163         (mono_get_method_from_token): Likewise.
25164         (mono_get_method_full): New public function; does a
25165         mono_get_method(), but also takes a `MonoGenericContext *'.
25166
25167         * verify.c (mono_method_verify): Get the method's generic context
25168         and pass it to mono_field_from_token(), mono_get_method_full() and
25169         mono_class_get_full().
25170
25171 2004-03-25  Martin Baulig  <martin@ximian.com>
25172
25173         * class.c (mono_class_inflate_generic_type): Take a
25174         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
25175         `MonoGenericMethod *'.
25176
25177 2004-03-25  Martin Baulig  <martin@ximian.com>
25178
25179         * loader.h (MonoMethodInflated): Store the MonoGenericContext
25180         instead of the MonoGenericMethod here.
25181
25182 2004-03-25  Martin Baulig  <martin@ximian.com>
25183
25184         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
25185         each time we create a new MonoGenericInst, we also create a new
25186         context which points back to us.
25187
25188         * class.c (inflate_method): Use `ginst->context' instead of
25189         creating a new context.
25190
25191         * loader.c (method_from_memberref): Use
25192         `klass->generic_inst->context' instead of creating a new context.
25193
25194 2004-03-25  Martin Baulig  <martin@ximian.com>
25195
25196         * class.h (MonoGenericContext): New struct.
25197         (MonoGenericMethod): Removed `generic_inst'.
25198
25199         * class.c (mono_class_inflate_generic_method): Take a
25200         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
25201
25202 2004-03-25  Martin Baulig  <martin@ximian.com>
25203
25204         * loader.h (MonoMethodInflated): New typedef.
25205
25206         * metadata.h (MonoMethodSignature): Removed `gen_method', make
25207         `generic_param_count' consume just 30 bits, added `is_inflated'
25208         and `has_type_parameters' flags (one bit each).
25209
25210         * class.c (mono_class_inflate_generic_method): Create a
25211         MonoMethodInflated instead of a MonoMethodNormal and set
25212         `is_inflated' in the method signature.
25213
25214         * class.h (MonoGenericMethod): Removed `generic_method'.
25215
25216 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
25217
25218         * image.c: Make sure the name of a MonoImage is always an absolute path.
25219           This fixes bug #54415.
25220
25221 2004-03-24  Martin Baulig  <martin@ximian.com>
25222
25223         * class.c (mono_class_setup_vtable): If we're a generic instance,
25224         use our generic type's vtable size.
25225
25226 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
25227
25228         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
25229         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
25230         problems.
25231
25232 2004-03-23  Martin Baulig  <martin@ximian.com>
25233
25234         * class.h (MonoDynamicGenericInst): Added `int count_events' and
25235         `MonoEvent *events'.
25236
25237         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
25238         (typebuilder_icalls): Added "get_event_info"; calls
25239         mono_reflection_event_builder_get_event_info(). 
25240
25241         * reflection.c (mono_reflection_generic_inst_initialize): Added
25242         `MonoArray *events'.
25243         (mono_reflection_event_builder_get_event_info): New function.
25244
25245 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
25246
25247         * object.h: add mono_type_initialization_init
25248
25249         * object.c (mono_runtime_class_init): 
25250         implement class constructor synchronization rules
25251         to cope with threading issues.  
25252         add mono_type_initialization_init
25253
25254         * appdomain.c (mono_runtime_init): call 
25255         mono_type_initialization_init
25256
25257         * class.h: removing initializing field from MonoVTable
25258
25259 2004-03-23  Martin Baulig  <martin@ximian.com>
25260
25261         * class.c (my_mono_class_from_generic_parameter): Use
25262         `param->name' if it's not NULL. 
25263
25264 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
25265
25266         * class.c: do not insert non-virtual methods in the vtable.
25267         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
25268         that means the method is non-virtual. This never would have
25269         happened before.
25270
25271 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
25272
25273         * profiler.c: Added lock for accessing coverage_hash.
25274
25275 2004-03-22  Martin Baulig  <martin@ximian.com>
25276
25277         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
25278         `method->method->signature->generic_param_count != 0' to make it
25279         work for interface methods.
25280
25281 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25282
25283         * process.c: quote the string passed to the shell using g_shell_quote.
25284
25285 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25286
25287         * threads.c:
25288         (mono_threads_manage): don't remove the finalizer thread and self
25289         from the threads hash table so that mono_thread_manage can be called
25290         more than once.
25291
25292 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25293
25294         * process.c: quote the arguments when UseShellExecute is true. Fixes
25295         bug #55790.
25296
25297 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25298
25299         * threads.c: set mono_thread_detach as a cleanup routine for every
25300         thread. This way it's always executed upon thread termination, either
25301         aborted or finished normally. No more xsp hangs!
25302
25303 2004-03-17  Martin Baulig  <martin@ximian.com>
25304
25305         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
25306         `int count_nested' and a `MonoType **nested'.
25307
25308         * reflection.c (mono_reflection_bind_generic_parameters): Moved
25309         most of the functionality into a new static
25310         do_mono_reflection_bind_generic_parameters() and don't take a
25311         `MonoType *nested_in' argument any more.  Don't compute nested
25312         types here.
25313         (mono_reflection_generic_inst_get_nested_types): New public method
25314         to get nested types.
25315
25316         * class.c (mono_class_create_generic): Set `klass->nested_in' if
25317         we're a nested class.
25318
25319         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
25320         mono_reflection_generic_inst_get_nested_types() to compute the
25321         nested types.
25322
25323 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
25324
25325         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
25326         descriptive error message under windows.
25327         
25328 2004-03-17  Martin Baulig  <martin@ximian.com>
25329
25330         * class.c (dup_type): Added `const MonoType *original' argument;
25331         copy the attrs from the original type.
25332
25333 2004-03-17  Martin Baulig  <martin@ximian.com>
25334
25335         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
25336         `m->generic_inst_cache' here.
25337
25338 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
25339
25340         * exception.h exception.c: Add stack_overflow_exception.
25341
25342 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25343
25344         * threadpool.c:
25345         (overlapped_callback): call SetEvent *after* invoking the callback.
25346         No need to call CloseHandle.
25347
25348 2004-03-16  Martin Baulig  <martin@ximian.com>
25349
25350         * reflection.c (mono_image_get_fieldref_token): Take a
25351         `MonoReflectionField *' instead of a `MonoClassField *' and a
25352         `MonoClass *'; store the `MonoReflectionField *' in the hash.
25353
25354 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25355
25356         * appdomain.c: don't add the culture to the filename we're looking for
25357         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
25358
25359 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25360
25361         * locales.c: don't ignore symbols when doing case insensitive compares.
25362         Thanks Dick! Fixes bug #54046.
25363
25364         * threads.c: surround 'threads' usage with enter/leave in
25365         mono_thread_manage.
25366
25367 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
25368
25369         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
25370         implicitly marshalled as [Out]. Fixes #55450.
25371
25372         (mono_marshal_get_runtime_invoke): Zero out the result if there is
25373         an exception.
25374
25375 2004-03-16  Martin Baulig  <martin@ximian.com>
25376
25377         * class.c (mono_class_from_generic_parameter): Use the actual
25378         parameter name. 
25379
25380 2004-03-16  Martin Baulig  <martin@ximian.com>
25381
25382         * reflection.c (type_get_signature_size): New static function.
25383         Compues the size of the type in a method signature.
25384         (method_get_signature_size): New static function; calls
25385         type_get_signature_size() to compute the actual size of the
25386         method's signature.
25387         (method_encode_signature): Use method_get_signature_size() to get
25388         the signature's size rather than using `nparams * 10'.
25389
25390 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25391
25392         * file-io.h: define here WapiOverlapped on windows. I don't want the
25393         regular OVERLAPPED one.
25394
25395         * file-io.c:
25396         * threadpool.c: somehow, BindIoCompletionCallback is not found.
25397         Disabling AIO on windows.
25398
25399 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25400
25401         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
25402         bug #55385.
25403
25404 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25405
25406         * appdomain.c: upgraded corlib version.
25407
25408         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
25409         and BeginWrite. Allow opening files for asynchrnous operations.
25410
25411         * file-io.h: new struct that maps FileStreamAsyncResult.
25412         * icall.c: added new icalls.
25413         * process.[ch]: support setting child process environment variables
25414         and use the SHELL or COMSPEC when UseShellExecute is true.
25415
25416         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
25417         callback for async. IO is here and also BindHandle.
25418
25419         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
25420         from here.
25421
25422 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
25423
25424         * reflection.c (create_custom_attr): Allow len == 0.
25425
25426         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
25427         computation on big-endian machines.
25428
25429 2004-03-13  Martin Baulig  <martin@ximian.com>
25430
25431         * class.h (MonoGenericInst): Added `int count_ifaces'.
25432
25433         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
25434         `ginst->count_ifaces' instead `klass->interface_count' since we
25435         may get called before the vtable is created.
25436
25437         * loader.c (mono_method_get_param_names): If we're a generic
25438         instance, return and don't initialize the class.
25439
25440         * reflection.c (mono_reflection_setup_generic_class): Don't call
25441         ensure_runtime_vtable().
25442         (mono_reflection_bind_generic_parameters): Set
25443         `ginst->count_ifaces'.
25444
25445 2004-03-11  Jackson Harper <jackson@ximian.com>
25446
25447         * icall.c:
25448         * unicode.c:
25449         * unicode.h: Remove unused System.Char icalls.
25450         
25451 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
25452
25453         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
25454         code when we P/Invoke the first library in Windows.Forms, instead
25455         of when we first open the assembly.
25456
25457         * assembly.c: Drop the lookup from here.
25458
25459 2004-03-10  Martin Baulig  <martin@ximian.com>
25460
25461         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
25462         class for properties, fields and events.  Finally fixes #54945.
25463
25464 2004-03-10  Martin Baulig  <martin@ximian.com>
25465
25466         * metadata.c (mono_metadata_class_equal): New static function;
25467         checks whether two generic instances or two generic parameters are
25468         equal.
25469         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
25470         compare classes.        
25471
25472 2004-03-10  Martin Baulig  <martin@ximian.com>
25473
25474         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
25475
25476         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
25477         argument and write it into the `reflection_info' field.
25478
25479         * icall.c
25480         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
25481         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
25482
25483 2004-03-09  Jackson Harper  <jackson@ximian.com>
25484
25485         * char-conversions.h: use 8 bits for numeric data its all we need
25486         * icall.c: numeric data is only 8 bits now.
25487
25488 2004-03-09  Martin Baulig  <martin@ximian.com>
25489
25490         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
25491
25492         * class.c (init_properties, init_events): Initialize the new
25493         `parent' field.
25494
25495         * reflection.c (typebuilder_setup_properties): Likewise.
25496         (typebuilder_setup_events): Likewise.
25497
25498         * reflection.h (MonoEventInfo): Replaced `parent with
25499         `declaring_type' and `reflected_type'.
25500
25501         * icall.c (ves_icall_get_property_info): Distinguish between
25502         declaring and reflected type.
25503         (ves_icall_get_event_info): Likewise.
25504
25505 2004-03-09  Martin Baulig  <martin@ximian.com>
25506
25507         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
25508         (ves_icall_Type_GetField): Correctly set field->klass.
25509
25510 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
25511
25512         * loader.h: Fix warning.
25513
25514 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
25515
25516         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
25517         library routine if present.  Notice that it will still continue
25518         executing even if its missing, for those working on the Gtk#
25519         edition of Windows.Forms.
25520
25521         * assembly.c (do_mono_assembly_open): If loading the
25522         System.Windows.Forms call mono_loader_wini_init.
25523
25524 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
25525
25526         * class.h: Added MonoRemoteClass struct.
25527         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
25528         function for MonoStrings.
25529         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
25530         Added internal call for getting the proxy type.
25531         * marshal.c: Get the type of transparent proxies from its remote_class.
25532         Added methods that generate the IL for type checks and casts:
25533         mono_marshal_get_isinst, mono_marshal_get_castclass, 
25534         mono_marshal_get_proxy_cancast.
25535         * marshal.h: Declaration of the previous new methods.
25536         * object.c: Added new moethods for creating and updating MonoRemoteClass
25537         instances: mono_remote_class, mono_upgrade_remote_class, 
25538         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
25539         * verify.c: FIx transparent_proxy_fields layout.
25540         * appdomain.c: Bump corlib version.
25541
25542 2004-03-04  Jackson Harper  <jackson@ximian.com>
25543
25544         * icall.c: Add icall to access char conversion tables.
25545         * char-conversions.h: Character conversion tables.
25546         * Makefile.am: Add char-conversions.h private header file.
25547         
25548 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
25549
25550         * appdomain.c (unload_thread_main): Increase unloading timeout to
25551         10 sec as a temporary workaround for Nant problems.
25552
25553 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
25554
25555         * gc.c: Add checks for GC_enable and GC_disable.
25556
25557         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
25558         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
25559         (bug #54988).
25560         
25561 2004-02-27  Martin Baulig  <martin@ximian.com>
25562
25563         * reflection.c (mono_reflection_bind_generic_parameters): Take a
25564         `MonoReflectionType *' instead of a `MonoType *'.
25565
25566 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
25567
25568         * gc.c (run_finalize): Avoid finalizing the object representing the
25569         finalizer thread.
25570         (finalizer_thread): Fix warning.
25571
25572 2004-02-25  Martin Baulig  <martin@ximian.com>
25573
25574         * class.c (_mono_class_get_instantiation_name): Added `int offset'
25575         argument for nested types.
25576         (mono_class_create_generic): Added support for nested generictypes.
25577
25578         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
25579         `GList *nested'.
25580
25581         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
25582
25583         * reflection.c (method_encode_signature): Increase the minimum
25584         value of `size' from 10 to 11.
25585         (mono_reflection_bind_generic_parameters): Take `int type_argc'
25586         and `MonoType **types' arguments instead of the `MonoArray
25587         *types'; added `MonoType *nested_in'.  Recursively instantiate
25588         nested classes. 
25589
25590 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
25591
25592         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
25593         stack_overflow_ex members which are used by exception handling.
25594
25595         * appdomain.c (mono_runtime_init): Initialize the new members.
25596
25597         * gc.c (mono_gc_enable): New helper function.
25598         * gc.c (mono_gc_disable): New helper function.
25599
25600 2004-02-23  Martin Baulig  <martin@ximian.com>
25601
25602         * icall.c: I must have been really stupid - make it actually work
25603         this time ;-)
25604
25605 2004-02-23  Martin Baulig  <martin@ximian.com>
25606
25607         * loader.c (method_from_memberref): Only inflate the method if
25608         it's in another klass.
25609
25610 2004-02-23  Martin Baulig  <martin@ximian.com>
25611
25612         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
25613         (mono_class_init): If we're a generic instance and an interface,
25614         compute `class->interface_id'; also create `class->interfaces'
25615         here and inflate them.
25616
25617         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
25618         `ginst->is_open'.
25619         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
25620
25621         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
25622
25623 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
25624
25625         * reflection.c (method_encode_code): Improved the error message
25626         generated by the exception.
25627
25628 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25629
25630         * icall.c: Martin did not do what he said in the ChangeLog for
25631         2004-02-18, but put back the changes for properties and events.
25632         Commenting those changes out again and adding comment to bug #54518.
25633         
25634         * process.c: removed warning.
25635
25636 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
25637
25638         * marshal.c (emit_struct_conv): Print an error message instead of
25639         asserting when a type does not have the StructLayout attribute.
25640
25641 2004-02-20  Martin Baulig  <martin@ximian.com>
25642
25643         * reflection.c (mono_type_get_object): Also use the cache for
25644         generic instances.
25645         (mono_reflection_bind_generic_parameters): Always compute
25646         `ginst->ifaces'.        
25647
25648 2004-02-20  Martin Baulig  <martin@ximian.com>
25649
25650         * class.h (MonoGenericMethod): Removed `klass'.
25651
25652         * class.c (mono_class_inflate_generic_method): Added `MonoClass
25653         *klass' argument.
25654
25655 2004-02-20  Martin Baulig  <martin@ximian.com>
25656
25657         * reflection.c (method_encode_methodspec): Actually use the
25658         uninflated signature for the memberref.
25659
25660 2004-02-20  Martin Baulig  <martin@ximian.com>
25661
25662         * class.h (MonoGenericMethod): Removed `declaring'.
25663
25664         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
25665         is NULL, compute it here.
25666
25667 2004-02-20  Martin Baulig  <martin@ximian.com>
25668
25669         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
25670
25671         * metadata.c (mono_metadata_generic_inst_hash): New method.
25672         (mono_metadata_generic_inst_equal): New method.
25673
25674         * reflection.c (mono_reflection_bind_generic_parameters): Use the
25675         `klass->image->generic_inst_cache' cache to avoid creating
25676         duplicate MonoGenericInst's.
25677
25678         * class.c (mono_class_inflate_generic_type): Use the cache.
25679
25680 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
25681
25682         * object.c: fixed gc descriptor calculation for embedded valuetypes.
25683
25684 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25685
25686         * icall.c: added Socket.WSAIoctl icall.
25687
25688         * socket-io.[ch]: implemented
25689         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
25690
25691 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
25692
25693         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
25694
25695 2004-02-18  Urs C Muff  <umuff@quark.com>
25696
25697         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
25698         this work on PPC and other big-endian architectures.
25699
25700         * debug-mono-symfile.h: Prepended the names of all the `guint32'
25701         fields with an underscore to make sure they're only accessed by
25702         the read32() macro.
25703
25704 2004-02-18  Martin Baulig  <martin@ximian.com>
25705
25706         * icall.c: Put the klass->refclass changes back for methods and
25707         fields, but not for properties and events.  We're currently not
25708         distinguishing between DeclaringType and ReflectedType for
25709         properties and events, that's what caused the regressions.
25710
25711 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25712
25713         * object.c:
25714         (mono_async_result_new): the handle can be NULL.
25715
25716         * threadpool.c: Use an event instead of a semaphore, don't initialize
25717         it until needed. This saves quite a few semaphores from being created
25718         when using the threadpool.
25719
25720 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
25721
25722         * object.c (mono_string_is_interned_lookup): Fix interning of long
25723         strings. Fixes #54473.
25724
25725         * domain.c (ldstr_equal): Optimize if the two strings are equal.
25726
25727         * icall.c: Revert the klass->refclass changes since they introduce
25728         regressions (bug #54518).
25729
25730 2004-02-18  Martin Baulig  <martin@ximian.com>
25731
25732         * class.c (mono_class_init): If we're a generic instance and don't
25733         come from a TypeBuilder, inflate our members here.
25734         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
25735         (mono_class_create_generic): New public method.
25736         (mono_class_initialize_generic): Removed.
25737         (get_instantiation_name): Renamed to
25738         _mono_class_get_instantiation_name() and made it public.
25739
25740 2004-02-18  Martin Baulig  <martin@ximian.com>
25741
25742         * class.c (mono_class_inflate_generic_type): Clear the new
25743         instance's `nginst->klass' when inflating a generic instance.
25744         (mono_class_is_subclass_of): Added (basic) support for generic
25745         instances.
25746
25747 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
25748
25749         * appdomain.h, domain.c: use a MonoCodeManager instead of a
25750         MonoMempool to hold compiled native code.
25751
25752 2004-02-17  Martin Baulig  <martin@ximian.com>
25753
25754         * class.h (MonoDynamicGenericInst): Added `count_properties' and
25755         `properties'.
25756
25757         * reflection.c (mono_reflection_generic_inst_initialize): Added
25758         `MonoArray *properties' argument.
25759
25760         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
25761
25762 2004-02-17  Martin Baulig  <martin@ximian.com>
25763
25764         * icall.c (ves_icall_Type_GetFields): Renamed to
25765         ves_icall_Type_GetFields_internal() and added a
25766         `MonoReflectionType *rtype' argument; pass it to
25767         mono_field_get_object() to set the field's "reflected" type.
25768         (ves_icall_Type_GetConstructors): Likewise.
25769         (ves_icall_Type_GetEvents): Likewise.
25770         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
25771         argument; pass it to mono_method_get_object() to set the method's
25772         "reflected" type.       
25773
25774 2004-02-17  Martin Baulig  <martin@ximian.com>
25775
25776         * class.h (MonoDynamicGenericInst): New type.
25777         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
25778
25779         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
25780         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
25781         (ves_icall_MonoGenericInst_GetFields): New interncall.
25782
25783         * class.c (mono_class_from_generic): Don't call
25784         mono_class_initialize_generic() if this is a dynamic instance;
25785         ie. it's being created from a TypeBuilder.
25786         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
25787         `class->byval_arg.type'.
25788
25789         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
25790         to `inflate_method' and made static.
25791         (mono_reflection_inflate_field): Removed.
25792         (mono_reflection_generic_inst_initialize): New public method.
25793
25794         * reflection.h (MonoReflectionGenericInst): Removed `methods',
25795         `ctors' and `fields'; added `initialized'.
25796
25797 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
25798
25799         * debug-helpers.c (mono_method_full_name): Fix output for empty
25800         namespaces.
25801
25802 2004-02-12  Martin Baulig  <martin@ximian.com>
25803
25804         * class.h (MonoClassField): Added `MonoType *generic_type'.
25805
25806         * reflection.c (mono_image_get_fieldref_token): Added support for
25807         instantiated generic types.
25808         (field_encode_inflated_field): Removed.
25809         (mono_image_get_inflated_field_token): Removed.
25810         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
25811
25812         * reflection.h (MonoReflectionInflatedField): Removed.
25813
25814 2004-02-12  Martin Baulig  <martin@ximian.com>
25815
25816         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
25817         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
25818
25819         * reflection.c (mono_image_get_methodspec_token): Take a
25820         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
25821         (mono_image_create_token): Check whether we have a
25822         `method->signature->gen_method' and call
25823         mono_image_get_methodspec_token() if appropriate.
25824         (inflated_method_get_object): Removed.
25825         (mono_reflection_bind_generic_method_parameters): Return a
25826         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
25827         (mono_reflection_inflate_method_or_ctor): Likewise.
25828
25829         * reflection.h (MonoReflectionInflatedMethod): Removed.
25830
25831 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
25832
25833         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
25834         for custom valuetype marshalling.
25835
25836         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
25837
25838 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25839
25840         * icall.c: fixed WSAGetLastError_internal name.
25841
25842 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
25843
25844         * threads.c (mono_thread_attach): Allow this to be called multiple
25845         times for a thread.
25846         
25847         * threads.c (build_wait_tids): Do not wait for ourselves.
25848
25849         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
25850         appdomain list is empty.
25851
25852         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
25853         memory returned by mono_string_builder_to_utf16, since it points into
25854         managed memory. Thanks to Bernie Solomon for noticing this.
25855
25856         * icall.c: Add AppDomainSetup icalls.
25857
25858         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
25859
25860         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
25861         types.
25862
25863         * reflection.c (reflection_methodbuilder_to_mono_method): Save
25864         custom attributes to the method_aux struct. Also fix array indexes etc.
25865
25866         * loader.c (mono_method_get_param_names): Make dynamic case work again.
25867         
25868 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
25869
25870         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
25871         (both static and runtime) and reduce startup time.
25872
25873 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
25874
25875         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
25876         AsAny marshalling conversion instead of crashing.
25877
25878         * marshal.c: Fix warnings.
25879
25880 2004-02-09  Martin Baulig  <martin@ximian.com>
25881
25882         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
25883
25884         * reflection.h (MonoReflectionInflatedMethod): Removed the
25885         `declaring' field, it's now in the unmanaged MonoGenericMethod.
25886
25887         * reflection.c (method_encode_methodspec): Removed the `method'
25888         argument; we get it from `gmethod->declaring'.
25889         (inflated_method_get_object): Removed the `declaring' argument.
25890
25891 2004-02-09  Martin Baulig  <martin@ximian.com>
25892
25893         * class.h (MonoGenericMethod): New type.
25894         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
25895         `generic_method'.
25896
25897         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
25898         a `MonoGenericMethod *gen_method' one.
25899
25900         * class.c (mono_class_inflate_generic_type): Take an additional
25901         `MonoGenericMethod * argument.  This is only non-NULL if we're
25902         inflating types for a generic method.   
25903         (mono_class_inflate_generic_signature): Renamed to
25904         inflate_generic_signature() and made static; take a
25905         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
25906         (inflate_generic_header): Take a `MonoGenericMethod *' argument
25907         instead of a `MonoGenericInst *' one.
25908         (mono_class_inflate_generic_method): Likewise.
25909
25910         * reflection.c (encode_generic_method_sig): Take a
25911         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
25912         (method_encode_methodspec): Likewise.
25913         (inflated_method_get_object): Likewise. 
25914
25915         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
25916         field with a `MonoGenericMethod *gmethod' one.  
25917
25918 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
25919
25920         * class.h (mono_class_has_parent): add parens to expansion
25921         so you can ! this.
25922
25923 2004-02-08  Martin Baulig  <martin@ximian.com>
25924
25925         * image.h (MonoImage): Removed `generics_cache'.
25926
25927         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
25928         instead of a `MonoType *' argument; removed the `inflate_methods'
25929         argument.  Don't inflate methods here.
25930
25931         * loader.c (find_method): If it's a generic instance, call
25932         mono_class_init() on the `sclass->generic_inst->generic_type'.
25933
25934         * metadata.c (mono_type_size): Make this work on uninitialized
25935         generic instances; call it on the `ginst->generic_type's class.
25936
25937         * reflection.c (mono_reflection_bind_generic_parameters): Call
25938         mono_class_from_generic() to create the `ginst->klass'.
25939
25940 2004-02-08  Martin Baulig  <martin@ximian.com>
25941
25942         * class.h (MonoClass): Changed type of `generic_inst' from
25943         `MonoType *' to `MonoGenericInst *'.
25944
25945 2004-02-08  Martin Baulig  <martin@ximian.com>
25946
25947         * icall.c (ves_icall_Type_BindGenericParameters): Just call
25948         mono_type_get_object(), this is now creating a `MonoGenericInst'
25949         for MONO_TYPE_GENERICINST.
25950         (ves_icall_MonoGenericInst_GetParentType): Likewise.
25951         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
25952
25953         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
25954         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
25955         (inflated_method_get_object): Added `MonoClass *refclass' argument.
25956         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
25957         and reflected type.
25958
25959         * reflection.h (MonoReflectionInflatedMethod): Removed
25960         `declaring_type' and `reflected_type'.
25961
25962 2004-02-08  Martin Baulig  <martin@ximian.com>
25963
25964         * class.h (MonoGenericInst): Added `MonoType *parent' and
25965         `MonoType **ifaces'.
25966
25967         * reflection.h (MonoReflectionGenericInst): Removed `klass',
25968         `parent' and `interfaces'.
25969
25970         * reflection.c (mono_reflection_bind_generic_parameters): Take a
25971         `MonoType *' argument and return a `MonoType *'.
25972
25973         * icall.c
25974         (ves_icall_MonoGenericInst_GetParentType): New interncall.
25975         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
25976
25977 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
25978
25979         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
25980         valuetype marshalling.
25981
25982 2004-02-06  Martin Baulig  <martin@ximian.com>
25983
25984         * class.c
25985         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
25986         (my_mono_class_from_generic_parameter): Likewise.
25987
25988 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
25989
25990         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
25991         contents of the symbol files lazily.
25992
25993         * object.h (MonoThread): Add 'name' and 'name_len' fields.
25994
25995         * threads.h threads.c icall.c: New icalls for getting and setting the
25996         threads name.
25997
25998 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
25999
26000         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
26001         Raise an exception when the domain is not found.
26002
26003 2004-02-03  Martin Baulig  <martin@ximian.com>
26004
26005         * reflection.c (mono_image_get_methodspec_token): Use the
26006         uninflated signature; fixes gen-33.
26007
26008 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
26009
26010         * gc.c threads.c: Make the finalizer thread a normal managed thread so
26011         the finalizer code can use thread functionality.
26012
26013         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
26014         the finalizer thread.
26015
26016         * threads.c: Make some functions more robust.
26017
26018         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
26019
26020         * metadata.h: Add new marshalling conventions.
26021
26022         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
26023         stringbuilder marshalling. Fixes #53700.
26024
26025         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
26026
26027         * reflection.c (mono_image_get_type_info): Save declarative security
26028         info.
26029
26030         * reflection.c (mono_image_get_field_info): Handle uninitialized 
26031         unmanaged fields as well.
26032
26033         * appdomain.c: Bump corlib version.
26034
26035 2004-02-01  Martin Baulig  <martin@ximian.com>
26036
26037         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
26038         method type arguments.  
26039
26040 2004-01-30  Duncan Mak  <duncan@ximian.com>
26041
26042         * marshal.h: Add prototype for
26043         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
26044         and
26045         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
26046         fix the build.
26047
26048 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
26049
26050         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
26051         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
26052
26053 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
26054
26055         * marshal.c (mono_marshal_get_native_wrapper): Add support for
26056         custom marshalling of valuetypes.
26057
26058         * marshal.c: Fix some warnings.
26059
26060 2004-01-29  Martin Baulig  <martin@ximian.com>
26061
26062         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
26063         for generic method parameters.
26064
26065         * reflection.c (method_encode_methodspec): Write the uninflated
26066         signature into the methodspec table.
26067         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
26068         is always the uninflated method.
26069         (reflection_methodbuilder_to_mono_method): Copy the generic
26070         parameters from the MethodBuilder into `header->gen_params'.
26071
26072 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
26073
26074         * class.c (mono_class_from_generic_parameter): Fix warning.
26075
26076 2004-01-27  Martin Baulig  <martin@ximian.com>
26077
26078         * class.c (mono_class_from_generic_parameter): Don't create
26079         `klass->methods' here.  
26080
26081 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
26082
26083         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
26084         extension since it does not work with libraries named lib<FOO>.dll.so.
26085
26086 2004-01-25  Martin Baulig  <martin@ximian.com>
26087
26088         * class.c (mono_class_inflate_generic_type): Added support for
26089         MONO_TYPE_GENERICINST.
26090
26091         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
26092         inflate methods on open constructed types.      
26093
26094 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26095
26096         * object.c: fire ProcessExit event in the root AppDomain after running
26097         Main. Fixes bug #53299.
26098
26099 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
26100
26101         * socket-io.c: include the new socket-wrappers.h header.
26102         Use the wrappers instead of the unix socket functions to make the code
26103         more clear.
26104
26105 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
26106
26107         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
26108
26109         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
26110         Fixes #22532.
26111
26112 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
26113
26114         * reflection.c (mono_image_create_pefile): Handle the case when the
26115         entry point is not a MethodBuilder.
26116
26117         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
26118         field to ReflectionMethod since it is not allways a builder.
26119
26120         * reflection.c (type_get_fully_qualified_name): New helper function to
26121         return the fully qualified name of a type.
26122
26123         * reflection.c (encode_marshal_blob): Always emit the fully qualified
26124         type name for custom marshallers.
26125
26126         * reflection.c (mono_marshal_spec_from_builder): Ditto.
26127
26128         * class.c (mono_class_setup_vtable): If a parent class already 
26129         implements an interface, use the implementing methods from that class.
26130         Fixes #53148.
26131
26132 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26133
26134         * threadpool.c: just return instead of ExitThread to allow for thread
26135         clean up earlier.
26136
26137 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
26138
26139         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
26140         when closing resource modules.
26141
26142         * reflection.c (mono_image_create_pefile): Handle the case when the
26143         entry point is not a MethodBuilder.
26144
26145         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
26146         field to ReflectionMethod since it is not allways a builder.
26147
26148 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
26149
26150         * marshal.c (mono_marshal_get_managed_wrapper): 
26151         mono_marshal_alloc takes native int so CONV_I
26152         the arg for 64bits.
26153
26154 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
26155
26156         * reflection.c (fixup_cattrs): New function to fixup the methoddef
26157         tokens in the cattr table. Fixes #53108.
26158
26159 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26160
26161         * loader.c: don't trim ".dll" before looking up in the config file.
26162         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
26163
26164 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
26165
26166         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
26167         Return the module which contains the resource as well.
26168         (ves_icall_System_Reflection_Module_Close): New icall.
26169
26170         * appdomain.c: Bump corlib version number.
26171
26172         * image.c (mono_image_addref): New public function.
26173
26174         * assembly.c: Call mono_image_addref.
26175
26176         * reflection.c (mono_module_get_object): Increase reference count of 
26177         the image.
26178
26179         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
26180         Fixes #22532.
26181
26182         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
26183         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
26184         proper exceptions on DllImport problems.
26185
26186 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
26187
26188         * class.c, metadata.c: eliminate CSIZE macro.
26189
26190 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
26191
26192         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
26193         * object.h: Added async_callback field in MonoAsyncResult.
26194         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
26195         * verify.c: Added async_callback in MonoAsyncResult layout.
26196
26197 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
26198
26199         * reflection.c (mono_reflection_get_custom_attrs): Add support
26200         for Modules.
26201
26202 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
26203
26204         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
26205         marshalling.
26206         (mono_marshal_method_from_wrapper): Add null pointer check.
26207
26208 2004-01-16  Martin Baulig  <martin@ximian.com>
26209
26210         * debug-mono-symfile.h: Set version number to 36 and reflect
26211         latest symbol writer changes.
26212
26213 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
26214
26215         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
26216         multi-dimensional arrays.
26217         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
26218         (mono_class_from_mono_type): Use bounded_array_class_get.
26219         
26220         * class.c (mono_bounded_array_class_get): New function which takes
26221         a 'bounded' bool argument to distinguish vectors from one dimensional
26222         arrays.
26223
26224         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
26225         bounded_array_class_get if the array has bounds.
26226
26227         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
26228         Search modules loaded using AssemblyBuilder:AddModule as well.
26229
26230 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26231
26232         * appdomain.c: increased corlib version.
26233         * filewatcher.c: removed g_print.
26234         * icall.c:
26235         (get_property_info): only allocate what is actually requested.
26236         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
26237
26238 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26239
26240         * Makefile.am: added filewatcher.[ch]
26241         * filewatcher.[ch]: FileSystemWatcher runtime support.
26242         * icall.c: added new FSW icalls.
26243
26244 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
26245
26246         * string-icalls.c: fix stringbuilder regression as suggested by
26247         Iain McCoy <iain@mccoy.id.au>.
26248
26249 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
26250
26251         * process.c (process_read_stringtable_block): Recognize '007f' as
26252         a language neutral stringtable block.
26253
26254 2004-01-12  Patrik Torstensson
26255
26256         * object.h (MonoStringBuilder) : Changed layout to support our
26257         new stringbuilder class.
26258         * marshal.c: Change marshalling to support the new layout of 
26259         string builder.
26260         * appdomain.c: increased version number because new layout of
26261         string builder.
26262
26263 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
26264
26265         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
26266         assembly name as an string instead of an AssemblyName, since it is
26267         easier to extract info from it.
26268
26269         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
26270         the culture subdirectories too. Fixes #52231.
26271
26272 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26273
26274         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
26275         It takes 2 new parameters with an optional name for the method to look
26276         for and case ignoring info.
26277
26278         * threadpool.c: removed unused variable.
26279
26280 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26281
26282         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
26283         It takes 2 new parameters with an optional name for the property to look
26284         for and case ignoring info.
26285         Fixes bug #52753.
26286
26287 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
26288
26289         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
26290         Fix #52451.
26291
26292 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26293
26294         * appdomain.c:
26295         * assembly.c: escape the uri before passing it to g_filename_from_uri.
26296         Fixes bug #52630.
26297
26298 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
26299
26300         * reflection.c: Add support for more than one unmanaged resource.
26301
26302         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
26303         in field->def_value, as done in all other cases.
26304
26305         * reflection.c (mono_reflection_get_custom_attrs): Add support for
26306         TypeBuilders.
26307
26308         * reflection.c (mono_reflection_create_runtime_class): Remove 
26309         errorneous assignment to klass->element_class, since it is already
26310         done in mono_reflection_setup_internal_class.
26311
26312 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26313
26314         * gc.c: added missing LeaveCriticalSection.
26315         * icall.c: indented a couple of lines.
26316         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
26317         if we call EndInvoke inside a callback. Fixes bug #52601.
26318
26319 2004-01-07  Martin Baulig  <martin@ximian.com>
26320
26321         * mono-debug-debugger.h
26322         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
26323
26324 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
26325
26326         * appdomain.c: Use messages in NotImplementedException.
26327
26328         * exception.c (mono_get_exception_not_implemented): Now this takes
26329         a message argument.
26330
26331         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
26332         exception instead of g_asserting an aborting when something is not
26333         implemented.
26334
26335         Add some inline docs.
26336
26337 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
26338
26339         * reflection.h: Update after changes to object layout.
26340
26341         * reflection.c: Implement saving of unmanaged aka win32 resources.
26342
26343         * appdomain.c: Bump version number.
26344
26345         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
26346         Handle missing domains gracefully.
26347
26348 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
26349
26350         * file-io.c : On Windows, there are much more invalid_path_chars.
26351
26352 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
26353
26354         * class.h, object.c: prepare for GetType () speedup.
26355
26356 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
26357
26358         * profiler.c: workaround for --profile null reference exception on
26359           cygwin. Patch by Patrik Torstensson.
26360
26361 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
26362
26363         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
26364         make work for unaligned access.
26365
26366 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
26367
26368         * class.c: small cleanup (class->fields [i] -> field).
26369         * image.c: check address of metadata is valid.
26370
26371 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
26372
26373         * assembly.h assembly.c (mono_assembly_loaded): New public function to
26374         search the list of loaded assemblies.
26375
26376         * reflection.c (mono_reflection_type_from_name): Use 
26377         mono_assembly_loaded instead of mono_image_loaded.
26378
26379         * reflection.c: Fix warnings.
26380
26381 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
26382
26383         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
26384         is dynamic. This is needed since an assembly can contain both dynamic and
26385         non-dynamic images.
26386
26387         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
26388         assembly->dynamic.
26389
26390         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
26391
26392         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
26393         to store modules loaded using AddModule.
26394
26395         * reflection.c (mono_image_fill_file_table): Generalize this so it works
26396         on Modules.
26397
26398         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
26399
26400         * reflection.c (mono_image_fill_export_table_from_module): New function to
26401         fill out the EXPORTEDTYPES table from a module.
26402
26403         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
26404         into a separate function. Also handle loaded non-dynamic modules.
26405
26406         * reflection.c (mono_image_basic_init): Fix memory allocation.
26407
26408         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
26409
26410         * assembly.c (mono_assembly_load_references): Make this public.
26411
26412 2003-12-19  Martin Baulig  <martin@ximian.com>
26413
26414         * class.c (mono_class_initialize_generic): Made this static, take
26415         a `MonoGenericInst *' instead of a `MonoClass *'.
26416         (mono_class_from_generic): Call mono_class_initialize_generic()
26417         unless we're already initialized or being called from
26418         do_mono_metadata_parse_generic_inst().
26419
26420         * class.h (MonoGenericInst): Added `initialized' and
26421         `init_pending' flags.
26422
26423         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
26424         `mono_class_init (gklass)' or mono_class_initialize_generic()
26425         here; set `generic_inst->init_pending' while parsing the
26426         `type_argv'.
26427
26428 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
26429
26430         * locales.c: include string.h for memxxx prototypes
26431
26432 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
26433
26434         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
26435         constructor when accessing literal fields.
26436
26437 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
26438
26439         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
26440
26441         * reflection.c (assembly_add_resource_manifest): New function to fill
26442         the MANIFESTRESOURCE table.
26443
26444         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
26445
26446         * reflection.h: Update to changes in class layout.
26447
26448         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
26449         Reenable call to mono_runtime_is_shutting_down ().
26450
26451         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
26452         determine if the runtime is shutting down.
26453
26454 2003-12-16  Jackson Harper <jackson@ximian.com>
26455
26456         * icall.c: comment out call to mono_runtime_is_shutting_down to
26457         fix build.
26458         
26459 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
26460
26461         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
26462         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
26463
26464 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
26465
26466         * reflection.c: move definition of swap_with_size
26467         to before its first call
26468
26469 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
26470
26471         * appdomain.c (mono_runtime_is_shutting_down): New public function.
26472
26473         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
26474         icall.
26475
26476         * object.c: Fix warnings.
26477
26478         * icall.c (ves_icall_Type_Get...): Only consider inherited static
26479         members if FlattenHierarchy is set.
26480
26481         * reflection.c (mono_image_add_decl_security): New function to emit
26482         declarative security.
26483
26484         * reflection.h reflection.c: Add support for declarative security.
26485
26486         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
26487         
26488 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
26489
26490         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
26491         
26492         * appdomain.c verify.c: Moved corlib version checking into its own
26493         function in appdomain.c since it needs to create vtables etc.
26494
26495 2003-12-13  Patrik Torstensson <p@rxc.se>
26496
26497         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
26498         instead of unwrapped server.
26499
26500 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
26501
26502         * verify.c (check_corlib): Fix field index.
26503
26504 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
26505
26506         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
26507         GetGacPath icall.
26508
26509 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
26510
26511         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
26512         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
26513         cope with sizeof(size_t) != sizeof(guint32).
26514
26515 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26516
26517         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
26518         in case of failure.
26519
26520 2003-12-10  Mark Crichton <crichton@gimp.org>
26521
26522         * icall.c: removed the GetNonZeroBytes.  We now handle this case
26523         in managed code.
26524
26525         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
26526
26527 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
26528
26529         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
26530         marked as deleted.
26531
26532 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
26533
26534         * verify.c (check_corlib): Handle the case when the version field is 
26535         initialized by a static constructor.
26536
26537 2003-12-08  Patrik Torstensson  <p@rxc.se>
26538
26539     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
26540
26541 2003-12-08  Martin Baulig  <martin@ximian.com>
26542
26543         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
26544         a MonoReflectionGenericParameter, also take the parameter index
26545         and name as arguments.
26546         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
26547         (ves_icall_MonoGenericParam_initialize): New interncall.
26548         (ves_icall_Type_make_byref_type): New interncall.
26549
26550         * reflection.h (MonoReflectionGenericParam): Derive from
26551         MonoReflectionType, not just from MonoObject.  Added `refobj' and
26552         `index' fields.
26553
26554         * reflection.c (mono_reflection_define_generic_parameter): Create
26555         and return a new MonoReflectionGenericParam; don't initialize the
26556         constraints here.
26557         (mono_reflection_initialize_generic_parameter): New public method;
26558         initializes the constraints and creates the `param->pklass'.
26559
26560 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
26561
26562         * reflection.h reflection.c: Use the new fields 'num_types', 
26563         'num_fields' and 'num_methods' to track the number of types etc.
26564
26565         * verify.c (check_corlib): Check corlib version number.
26566
26567 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
26568
26569         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
26570         function works on all methods.
26571
26572 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
26573
26574         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
26575         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
26576         the custom_type_info flag of the transparent proxy.
26577         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
26578         objects that supports IRemotingTypeInfo.
26579         * object.h: Added custom_type_info field in transparent proxy.
26580
26581 2003-12-06  Martin Baulig  <martin@ximian.com>
26582
26583         * class.c (mono_class_create_from_generic): Removed.
26584         (mono_class_from_generic): Check `ginst->klass' before doing
26585         anything else.  This is important to fully support "recursive"
26586         generic types.
26587
26588         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
26589         empty `generic_inst->klass' before doing anything else.
26590
26591 2003-12-06  Dick Porter  <dick@ximian.com>
26592
26593         * verify.c: 
26594         * object.h:
26595         * icall.c:
26596         * locales.c: Use C structs to access class fields.  Don't do a
26597         conversion between MonoString and UChar because both are
26598         platform-endian UTF-16.  Compare now takes startindex and count
26599         parameters.  Add a char overload for IndexOf.  Speed up the
26600         invariant string IndexOf.
26601
26602 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
26603
26604         * Makefile.am (monosn_LDADD): Fix parallel build.
26605
26606 2003-12-04  Martin Baulig  <martin@ximian.com>
26607
26608         * icall.c
26609         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
26610         (ves_icall_Type_make_array_type): New interncall.       
26611
26612 2003-12-04  Martin Baulig  <martin@ximian.com>
26613
26614         * locales.c: also change it in the !HAVE_ICU case.
26615
26616 2003-12-04  Dick Porter  <dick@ximian.com>
26617
26618         * icall.c:
26619         * locales.c: construct_compareinfo is now in CompareInfo, not
26620         CultureInfo.
26621
26622 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
26623
26624         * image.c (mono_image_load_file_for_image): Cache loaded images in the
26625         image->files array.
26626
26627         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
26628         table as well.
26629
26630         * assembly.c (mono_assembly_load_references): Only load references
26631         once.
26632
26633         * class.c (mono_class_from_name): Avoid linear search of the 
26634         EXPORTEDTYPE table.
26635
26636         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
26637
26638 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
26639
26640         * image.h (MonoImage): Add 'field_cache' field.
26641
26642         * loader.c (mono_field_from_token): Cache field lookups.
26643         
26644         * reflection.c (mono_module_get_object): Fix name property.
26645
26646         * icall.c (ves_icall_get_enum_info): Update after changes to 
26647         mono_metadata_get_constant_index ().
26648
26649         * icall.c: Get rid of get_type_info icall, use a separate icall for
26650         each type property to avoid needless memory allocations. Fixes #51514.
26651
26652         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
26653         to avoid needless binary searches.
26654
26655         * class.c (class_compute_field_layout): Move the initialization of
26656         field->def_value to mono_class_vtable ().
26657
26658         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
26659         non-corlib types.
26660
26661         * object.c (mono_object_allocate): Make it inline.
26662
26663         * object.c (mono_object_allocate_spec): Make it inline.
26664         
26665 2003-12-02  Dick Porter  <dick@ximian.com>
26666
26667         * locales.c (create_NumberFormat): NumberFormatInfo construction.
26668         Patch by Mohammad DAMT (mdamt@cdl2000.com).
26669
26670 2003-12-01  Dick Porter  <dick@ximian.com>
26671
26672         * threads.c: Fix signature and call in CreateMutex and
26673         CreateEvent.
26674
26675 2003-12-01  Dick Porter  <dick@ximian.com>
26676
26677         * icall.c: 
26678         * locales.c: Implement string compares and searching
26679
26680         * object.h: Add extra Thread field
26681
26682 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
26683
26684         * reflection.c (fixup_method): Add support for MonoCMethod.
26685
26686 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
26687
26688         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
26689
26690         * reflection.c (assembly_name_to_aname): Allow extra characters in
26691         assembly names. Fixes #51468.
26692
26693 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
26694
26695         * exception.c (mono_exception_from_name_domain): New helper function.
26696
26697         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
26698         exception object in the correct domain.
26699
26700         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
26701         formatting + make a copy a the input data.
26702
26703         * loader.c (mono_get_method_from_token): Methods which contain
26704         native code do not have entries in the ImplMap.
26705
26706         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
26707         Thanks to Gonzalo for spotting this.
26708         
26709         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
26710         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
26711
26712         * assembly.h (mono_assembly_load_from): Split the second part of 
26713         assembly loading into a new public function.
26714
26715         * exception.h (mono_get_exception_bad_image_format): New function.
26716
26717 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
26718
26719         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
26720         Enumerate all modules inside a dynamic assembly. Fixes #51293.
26721         
26722         * icall.c: Add new icall for creating dynamic methods.
26723
26724         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
26725
26726         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
26727
26728         * reflection.c (mono_reflection_create_dynamic_method): New icall to
26729         create a dynamic method.
26730
26731         * reflection.c (resolve_object): New helper function.
26732
26733         * reflection.c: Generalize ReflectionMethodBuilder and the functions
26734         which manipulate it so they can also work on dynamic methods.
26735
26736         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
26737         creating the MonoReflectionMethodAux structure if it is not needed.
26738         
26739         * reflection.h verify.c: Update after changes to object layout.
26740
26741         * reflection.c (method_builder_encode_signature): Fix compilation on
26742         gcc 2.95.x.
26743
26744 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
26745
26746         * appdomain.h: Added support for context static fields. Added static_data
26747           field to MonoAppContext and renamed thread_static_fields to a more
26748           generic special_static_fields in MonoAppDomain, since it can now contain
26749           context static fields.
26750         * domain.c: Updated hashtable name.
26751         * object.c: Replaced field_is_thread_static() for a more generic
26752           field_is_special_static() which also checks for context static attribute.
26753           In mono_class_vtable(), added support for static context fields.
26754         * threads.c: Changed methods that manage thread static fields to more
26755           generic methods so they can be reused both for thread and context static
26756           data.
26757         * threads.h: Declared some new methods.
26758
26759 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
26760
26761         * reflection.h: Update after changes to the managed types.
26762
26763         * reflection.c (encode_custom_modifiers): New helper function.
26764
26765         * reflection.c (method_encode_signature): Emit custom modifiers.
26766
26767         * reflection.c (field_encode_signature): Emit custom modifiers.
26768
26769 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
26770
26771         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
26772
26773         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
26774         implementation.
26775
26776         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
26777         icall.
26778
26779         * object.c (mono_field_get_value_object): New function.
26780
26781         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
26782         specific.
26783
26784 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
26785
26786         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
26787         return a preallocated out-of-memory exception instance.
26788
26789         * object.c (out_of_memory): Use the new function.
26790
26791         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
26792         flag is before the custom modifiers. Fixes #49802.
26793
26794 2003-11-16  Martin Baulig  <martin@ximian.com>
26795
26796         * class.c (mono_class_is_open_constructed_type): Implemented the
26797         MONO_TYPE_GENERICINST case.
26798
26799 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
26800
26801         * assembly.c (mono_assembly_fill_assembly_name): New function to
26802         fill out the MonoAssemblyName structure.
26803         (mono_assembly_open): Use the new function.
26804
26805         * icall.c (fill_reflection_assembly_name): New helper function.
26806
26807         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
26808         new function.
26809
26810         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
26811
26812 2003-11-15  Martin Baulig  <martin@ximian.com>
26813
26814         * class.c (mono_class_is_open_constructed_type): New public
26815         function; checks whether a type is an open constructed type,
26816         ie. whether it still contains type parameters.
26817         (mono_class_inflate_generic_type): If we're a type parameter and
26818         the inflated type is also a MONO_TYPE_(M)VAR, return the original
26819         type.
26820
26821         * class.h (MonoGenericInst): Added `guint32 is_open'.
26822
26823         * loader.c (method_from_methodspec): Check whether we're an open
26824         or closed constructed type and set `ginst->is_open'.
26825
26826         * reflection.c (mono_reflection_bind_generic_parameters): Check
26827         whether we're an open or closed constructed type and set
26828         `ginst->is_open'.
26829         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
26830         from open constructed types.
26831
26832 2003-11-15  Martin Baulig  <martin@ximian.com>
26833
26834         * reflection.c (mono_reflection_bind_generic_parameters): If we're
26835         a generic instance (instead of a generic type declaration) with
26836         unbound generic parameters, bind them to our actual types.
26837
26838 2003-11-14  Martin Baulig  <martin@ximian.com>
26839
26840         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
26841
26842         * reflection.c (mono_reflection_bind_generic_parameters): If we're
26843         an interface type, populate `res->interfaces' with instantiated
26844         versions of all the interfaces we inherit.
26845
26846 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
26847
26848         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
26849         when MONO_PATH is set but doesn't contain the install dir.
26850
26851 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26852
26853         * icall.c:
26854         (ves_icall_Type_GetInterfaces): don't return an interface twice when
26855         it's also implemented in base classes. Fixes bug #50927.
26856
26857 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
26858
26859         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
26860         if this method is called from a finalizer. Fixes #50913.
26861
26862 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
26863
26864         * threads.c: Implement VolatileRead/VolatileWrite
26865
26866         * icall.c: Add new icalls for VolatileRead/VolatileWrite
26867
26868 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
26869
26870         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
26871         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
26872         2.95.3.
26873
26874         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
26875         from Peter Ross (pro@missioncriticalit.com).
26876         
26877 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
26878
26879         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
26880
26881 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
26882
26883         * assembly.c (mono_assembly_load_references): Disable check because it
26884         triggers on older corlibs which lots of people have.
26885
26886 2003-11-12  Jackson Harper  <jackson@ximian.com>
26887
26888         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
26889         load corlib.dll if mscorlib.dll is not found.
26890         * assembly.h: Remove corlib name define.
26891         * class.c:
26892         * domain.c:
26893         * image.c: Change corlib name to mscorlib.
26894         
26895 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
26896
26897         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
26898
26899 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
26900
26901         * appdomain.h: Added loader_optimization here to sync with the C#
26902         code, and add disallow_binding_redirects field.
26903
26904 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
26905
26906         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
26907
26908         * reflection.c (mono_image_build_metadata): Fix crash on modules
26909         with no types.
26910
26911         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
26912
26913         * icall.c (ves_icall_get_method_info): Return callingConvention as
26914         well.
26915
26916         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
26917         namespaces from the EXPORTEDTYPE table as well.
26918
26919         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
26920         from all modules inside the assembly.
26921         
26922 2003-11-11  Martin Baulig  <martin@ximian.com>
26923
26924         * reflection.c (mono_reflection_bind_generic_parameters): Make
26925         this work for interfaces.
26926
26927 2003-11-11  Martin Baulig  <martin@ximian.com>
26928
26929         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
26930
26931 2003-11-11  Martin Baulig  <martin@ximian.com>
26932
26933         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
26934         "MonoInflatedMethod" and "MonoInflatedCtor".
26935
26936 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
26937
26938         * reflection.c (resolution_scope_from_image): Use the assembly table
26939         from the manifest module, since other modules don't have it.
26940
26941         * debug-helpers.c (mono_type_full_name): New helper function.
26942
26943         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
26944
26945         * image.c (mono_image_load_file_for_image): New public function which
26946         is a replacement for the load_file_for_image in class.c.
26947
26948         * assembly.c (mono_assembly_load_module): A wrapper for the function
26949         above which does assembly association and reference loading too.
26950
26951         * class.c (mono_class_from_name): Call mono_assembly_load_module.
26952
26953 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
26954
26955         * appdomain.c: not all of the attributes for the full assembly name
26956         are required and the order doesn't matter. Fixes bug #50787.
26957
26958 2003-11-10  Dick Porter  <dick@ximian.com>
26959
26960         * locales.c: Use platform-endian UTF16
26961
26962 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
26963
26964         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
26965         
26966 2003-11-10  Martin Baulig  <martin@ximian.com>
26967
26968         * metadata.c
26969         (mono_metadata_load_generic_params): Make this actually work.
26970
26971         * reflection.c (mono_reflection_bind_generic_parameters): If our
26972         parent is a generic instance, pass all the `types' to it, no
26973         matter whether it has the same number of type parameters or not.
26974
26975 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
26976
26977         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
26978
26979         * assembly.c (mono_assembly_load_references): Move the image<->assembly
26980         assignment code to this function so it gets called recursively for all
26981         modules.
26982
26983         * image.c (load_modules): Remove the assembly assignment since it is
26984         now done by mono_assembly_load_references.
26985         
26986         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
26987         Add 'module' argument.
26988         (mono_module_get_types): New helper function.
26989         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
26990
26991 2003-11-08  Martin Baulig  <martin@ximian.com>
26992
26993         * class.c (mono_class_inflate_generic_method): Interface method
26994         don't have a header.
26995
26996         * reflection.c (mono_image_get_methodspec_token): Take an
26997         additional `MonoGenericInst *' argument instead of reading it from
26998         the header; this is necessary to support interfaces.
26999         (mono_image_create_token): Pass the `MonoGenericInst *' from the
27000         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
27001         (inflated_method_get_object): Take an additional `MonoGenericInst *'
27002         argument.
27003
27004         * reflection.h (MonoReflectionInflatedMethod): Added
27005         `MonoGenericInst *ginst'.
27006
27007 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
27008
27009         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
27010
27011 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
27012
27013         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
27014
27015 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
27016
27017         * reflection.c 
27018         (reflection_methodbuilder_from_method_builder):
27019         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
27020         initialize a ReflectionMethodBuilder structure.
27021         (mono_image_get_methodbuilder_token):
27022         (mono_image_get_ctorbuilder_token): New functions to emit memberref
27023         tokens which point to types in another module inside the same assembly.
27024
27025         * reflection.c: Use the new helper functions.
27026         
27027         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
27028
27029         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
27030         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
27031
27032         * reflection.c (resolution_scope_from_image): Emit a moduleref if
27033         neccesary.
27034
27035         * reflection.c (mono_image_build_metadata): Emit metadata only for the
27036         current module. Emit the manifest only for the main module.
27037
27038         * reflection.c (mono_image_create_token): Add assertion when a 
27039         memberref needs to be created.
27040
27041         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
27042
27043         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
27044         larger buffer for the custom attribute blob. Fixes #50637.
27045         
27046 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27047
27048         * threadpool.c: notify listener on async processing handles after
27049         invoking the async callback. Thanks to Zoltan.
27050
27051 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
27052
27053         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
27054         avoid code duplication.
27055
27056         * reflection.h (MonoDynamicImage): New type which is currently unused,
27057         but will be used through the ref.emit code in place of 
27058         MonoDynamicAssembly.
27059
27060         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
27061         object layout.
27062
27063         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
27064         a MonoDynamicImage instead of just a MonoImage.
27065         
27066         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
27067         icalls to ModuleBuilder but keep their semantics, so they will work
27068         with moduleb->assemblyb. This will change later.
27069         
27070 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
27071
27072         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
27073         object layout.
27074
27075         * reflection.c (mono_image_build_metadata): Avoid creation of a default
27076         main module, since it is now done by the managed code.
27077
27078 2003-11-03  Martin Baulig  <martin@ximian.com>
27079
27080         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
27081         `ginst->klass' here.
27082         (method_encode_methodspec): Don't use the `ginst->generic_method's
27083         klass if it's a generic instance, use `ginst->klass' in this case.
27084
27085 2003-11-03  Martin Baulig  <martin@ximian.com>
27086
27087         * reflection.c (mono_image_get_generic_method_param_info):
27088         Removed, use mono_image_get_generic_param_info() instead.
27089         (mono_image_get_type_info): Write the GenericParam table before
27090         the Method table.  This is neccessary because in the GenericParam
27091         table, type parameters of the class (ie. '!0' etc.) must come
27092         before the ones from its generic methods (ie. '!!0' etc).
27093
27094 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
27095
27096         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
27097
27098 2003-11-02  Martin Baulig  <martin@ximian.com>
27099
27100         * reflection.c (create_generic_typespec): Take a
27101         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
27102         the generic parameters from it.
27103
27104 2003-11-02  Martin Baulig  <martin@ximian.com>
27105
27106         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
27107         instead of a `MonoClassField *' since we just need the type.
27108         (create_generic_typespec): New static function.  Creates a
27109         TypeSpec token for a generic type declaration.
27110         (mono_image_get_generic_field_token): New static function.
27111         (mono_image_create_token): If we're a FieldBuilder in a generic
27112         type declaration, call mono_image_get_generic_field_token() to get
27113         the token.
27114
27115 2003-11-02  Martin Baulig  <martin@ximian.com>
27116
27117         * reflection.h
27118         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
27119         `MonoReflectionGenericInst *declaring_type' and
27120         `MonoReflectionGenericInst *reflected_type' fields.
27121
27122         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
27123         `MonoReflectionGenericInst *declaring_type' and a
27124         `MonoReflectionGenericInst *reflected_type' argument instead of a
27125         single `MonoReflectionGenericInst *type' one.  Set
27126         `res->declaring_type' and `res->reflected_type' from them.
27127         (mono_reflection_inflate_field): Likewise.      
27128
27129 2003-11-02  Martin Baulig  <martin@ximian.com>
27130
27131         * class.c (mono_class_setup_vtable): Don't store generic methods
27132         in the vtable.  
27133
27134 2003-11-02  Martin Baulig  <martin@ximian.com>
27135
27136         * reflection.h (MonoReflectionGenericInst): Added
27137         `MonoReflectionType *declaring_type'.
27138
27139         * reflection.c (mono_reflection_bind_generic_parameters): Use
27140         `if (tb->parent)' instead of `klass->parent'.
27141
27142 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
27143
27144         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
27145         with an empty ASSEMBLY table.
27146
27147         * reflection.c (mono_image_build_metadata): Avoid using the same loop
27148         variable in the inner and outer loops.
27149
27150 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
27151
27152         * metadata.h (mono_metadata_make_token): Put parentheses around macro
27153         argument.
27154
27155         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
27156         
27157         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
27158         icalls. Instead, do everything in managed code. This is needed since
27159         it is hard to restore the original domain etc. in unmanaged code in the
27160         presence of undeniable exceptions.
27161
27162         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
27163         New icalls to push and pop appdomain refs.
27164
27165 2003-10-31  Martin Baulig  <martin@ximian.com>
27166
27167         * class.c (inflate_generic_type): Renamed to
27168         mono_class_inflate_generic_type() and made it public.
27169
27170         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
27171         New interncall.
27172
27173         * loader.c (mono_field_from_memberref): Also set the retklass for
27174         typespecs.
27175
27176         * fielder.c (mono_image_get_inflated_field_token): New static
27177         method; creates a metadata token for an inflated field.
27178         (mono_image_create_token, fixup_method): Added support for
27179         "MonoInflatedField".
27180         (fieldbuilder_to_mono_class_field): New static function.
27181         (mono_reflection_inflate_field): New public function.
27182
27183         * reflection.h
27184         (MonoReflectionGenericInst): Added `MonoArray *fields'.
27185         (MonoReflectionInflatedField): New typedef.     
27186
27187 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
27188
27189         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
27190         for Solaris and other platforms without s6_addr16
27191
27192 2003-10-30  Martin Baulig  <martin@ximian.com>
27193
27194         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
27195         argument instead of two.
27196         (mono_class_inflate_generic_signature): Likewise.
27197         (inflate_generic_header): Likewise.
27198         (mono_class_inflate_generic_method): Likewise.  In addition, if
27199         `ginst->klass' is set, it becomes the new `method->klass'.
27200
27201         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
27202         field.
27203
27204         * reflection.c (encode_generic_method_sig): Write a 0xa as the
27205         first byte. [FIXME]
27206         (method_encode_methodspec): If we have generic parameters, create
27207         a MethodSpec instead of a MethodRef.
27208         (fixup_method): Added support for "MonoInflatedMethod" and
27209         "MonoInflatedCtor".
27210         (mono_image_create_token): Added support for "MonoInflatedMethod"
27211         and "MonoInflatedCtor".
27212         (inflated_method_get_object): New static function; returns a
27213         managed "System.Reflection.MonoInflatedMethod" object.
27214         (mono_reflection_bind_generic_method_parameters): Return a
27215         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
27216         (mono_reflection_inflate_method_or_ctor): Likewise.
27217         (mono_image_get_generic_method_param_info): Initialize unused
27218         fields to zero.
27219         (mono_image_get_generic_param_info): Likewise.
27220
27221         * reflection.h (MonoReflectionInflatedMethod): New public
27222         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
27223         "S.R.MonoInflatedCtor" classes.
27224
27225         * loader.c (method_from_memberref): If we're a TypeSpec and it
27226         resolves to a generic instance, inflate the method.
27227
27228 2003-10-28  Dick Porter  <dick@ximian.com>
27229
27230         * object.c (mono_runtime_run_main): Convert command-line arguments
27231         into utf8, falling back to the user's locale encoding to do so.
27232
27233 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
27234
27235         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
27236         at this time.
27237
27238         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
27239
27240         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
27241         up icalls at method definition time. Partially fixes #33569.
27242
27243 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
27244
27245         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
27246         marshalling of arrays. Fixes #50116.
27247
27248         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
27249
27250         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
27251         points to a vtable in the dying appdomain.
27252
27253         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
27254         listeners into unmanaged code inside the lock.
27255
27256         * object.c (mono_class_vtable): Turn off typed allocation in non-root
27257         domains and add some comments.
27258
27259 2003-10-25  Martin Baulig  <martin@ximian.com>
27260
27261         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
27262
27263         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
27264
27265         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
27266         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
27267         currently parsing.  Create the generic class and store it in
27268         `generic_inst->klass' before parsing the type arguments.  This is
27269         required to support "recursive" definitions; see mcs/tests/gen-23.cs
27270         for an example.
27271         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
27272         to support recursive typespec entries.
27273
27274         * class.c (mono_class_setup_parent): If our parent is a generic
27275         instance, we may get called before it has its name set.
27276         (mono_class_from_generic): Splitted into
27277         mono_class_create_from_generic() and mono_class_initialize_generic().
27278
27279 2003-10-25  Martin Baulig  <martin@ximian.com>
27280
27281         * icall.c (ves_icall_Type_BindGenericParameters): Return a
27282         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
27283         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
27284         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
27285
27286         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
27287         (create_typespec): Likewise.
27288         (mono_reflection_bind_generic_parameters): Return a
27289         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
27290         (mono_reflection_inflate_method_or_ctor): New public function.
27291
27292         * reflection.h (MonoReflectionGenericInst): New typedef.        
27293
27294 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
27295
27296         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
27297         inside the domain lock. Fixes #49993.
27298         
27299         * object.c (mono_class_vtable): When typed allocation is used, 
27300         allocate vtables in the GC heap instead of in the mempool, since the
27301         vtables contain GC descriptors which are used by the collector even
27302         after the domain owning the mempool is unloaded.
27303
27304         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
27305
27306         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
27307         reflect what it does. Also invalidate mempools instead of freeing
27308         them if a define is set.
27309
27310         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
27311         of the appdomain.
27312         
27313         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
27314         hold the finalizable objects in this domain.
27315
27316         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
27317         appdomain.
27318
27319         * appdomain.c (mono_domain_set): New function to set the current
27320         appdomain, but only if it is not being unloaded.
27321
27322         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
27323         appdomain which is being unloaded.
27324         
27325         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
27326         unloading of the root appdomain.
27327
27328         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
27329         icall to execute a method in another appdomain. Intended as a 
27330         replacement for InternalSetDomain, which can confuse the code 
27331         generation in the JIT.
27332
27333         * appdomain.c (mono_domain_is_unloading): New function to determine
27334         whenever an appdomain is unloading.
27335
27336         * appdomain.c (mono_domain_unload): New function to correctly unload
27337         an appdomain.
27338
27339         * assembly.c (mono_assembly_load_references): Check that an assembly
27340         does not references itself.
27341
27342         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
27343         domain manually, it asks the finalizer thread to do it, then waits for
27344         the result. Also added a timeout.
27345
27346         * icall.c: Register the new icalls.
27347
27348         * threads.h threads.c: Export the mono_gc_stop_world and 
27349         mono_gc_start_world functions.
27350         
27351         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
27352         function to fill out the mempool with 0x2a.
27353
27354 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
27355
27356         * reflection.h (MonoReflectionMethodAux): New structure to store
27357         information which is rarely used, thus is not in the MonoMethod
27358         structure.
27359
27360         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
27361         store the aux info.
27362
27363         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
27364         and marshalling info into the aux structure.
27365
27366         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
27367         from the aux structure.
27368
27369         * loader.c (mono_method_get_param_names): Retrieve the param names from
27370         the aux structure.
27371         
27372 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
27373
27374         * exception.h exception.c: Add AppDomainUnloadedException && fix 
27375         warning.
27376
27377 2003-10-21  Dick Porter  <dick@ximian.com>
27378
27379         * socket-io.c
27380         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
27381         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
27382
27383 2003-10-21  Martin Baulig  <martin@ximian.com>
27384
27385         * reflection.c (mono_reflection_bind_generic_parameters):
27386         `klass->parent' is NULL for interfaces.
27387
27388 2003-10-21  Martin Baulig  <martin@ximian.com>
27389
27390         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
27391
27392 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
27393
27394         * exception.c (mono_exception_from_name_msg): New helper function for
27395         creating exceptions and initializing their message field.
27396
27397         * exception.c: Simplify functions using the new helper.
27398
27399         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
27400         New function.
27401
27402         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
27403         mono_raise_exception, since otherwise gcc doesn't generate the function
27404         epilog for raise_exception, confusing the stack unwinding in the JIT.
27405         Fixes #45043.
27406
27407         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
27408         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
27409         Fixes #49499.
27410
27411 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27412
27413         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
27414         utf8.
27415
27416 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
27417
27418         * icall.c: Removed GetUninitializedObject method because
27419           AllocateUninitializedClassInstance does the same.
27420
27421 2003-10-18  Martin Baulig  <martin@ximian.com>
27422
27423         * class.c (inflate_generic_signature): Renamed to
27424         mono_class_inflate_generic_signature() and made it public.
27425         (my_mono_class_from_generic_parameter): New static function; if we
27426         don't already have the generic parameter's MonoClass, create a
27427         very simple one which is just used internally in the runtime and
27428         not passed back to managed code.
27429
27430         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
27431
27432         * metadata.h (MonoMethodSignature): Moved the
27433         `MonoGenericParam *gen_params' to the MonoMethodHeader.
27434         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
27435
27436         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
27437         ves_icall_MonoMethod_GetGenericArguments(); this is now an
27438         interncall on the MonoMethod class, not on MethodInfo.
27439         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
27440         calling mono_reflection_bind_generic_method_parameters() directly.
27441
27442         * loader.c (mono_method_get_signature): If this is a MethodSpec;
27443         return the already computed `method->signature'.
27444         (method_from_methodspec): New static function to load a method
27445         from a MethodSpec entry.
27446         (mono_get_method_from_token): Call the new method_from_methodspec()
27447         for MethodSpec tokens.  
27448         (mono_get_method_from_token): If we're a generic method, load the
27449         type parameters.
27450
27451         * reflection.c (mono_image_get_memberref_token): Allow
27452         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
27453         table.
27454         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
27455         (mono_image_create_token): First check whether it's a generic
27456         method (so we'd need to create a MethodSpec), then do the other
27457         two alternatives.
27458         (mono_reflection_bind_generic_method_parameters): Return a
27459         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
27460         called directly from the interncall.
27461
27462 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
27463
27464         * reflection.c (load_public_key): Move loading of the public key
27465         into managed code.
27466
27467         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
27468
27469         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
27470         fields.
27471
27472         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
27473         culture, hash_alg and public_key. Fixes #49555.
27474
27475 2003-10-17  Martin Baulig  <martin@ximian.com>
27476
27477         * class.h (MonoGenericInst): Moved this declaration here and added
27478         `MonoMethod *generic_method'.
27479
27480         * icall.c
27481         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
27482         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
27483
27484         * metadata.c (mono_metadata_type_equal): Two types of
27485         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
27486         index; ie. don't compare the address of the `MonoGenericParam'
27487         structure.
27488         (mono_metadata_load_generic_params): Removed the `MonoMethod
27489         *method' argument.
27490
27491         * metadata.h (MonoGenericInst): Moved declaration to class.h.
27492         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
27493
27494         * reflection.c (method_encode_signature): Encode the number of
27495         generic parameters.
27496         (encode_generic_method_sig): New static function.
27497         (method_encode_methodspec): New static function; creates an entry
27498         in the MethodSpec table for a generic method.
27499         (mono_image_get_methodspec_token): New static function.
27500         (mono_image_create_token): Call mono_image_get_methodspec_token()
27501         for generic methods.
27502         (mono_reflection_bind_generic_method_parameters): New public
27503         function.  Instantiates a generic method.
27504
27505 2003-10-16  Martin Baulig  <martin@ximian.com>
27506
27507         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
27508         *gen_params' here from MonoMethodHeader.
27509
27510         * metadata.c (mono_metadata_parse_method_signature): If we have
27511         generic parameters, initialize `method->gen_params' and then set
27512         the correct `type->data.generic_param' in all the parameters.
27513
27514 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
27515
27516         * threads.c (mono_threads_get_default_stacksize): New function to 
27517         return the default stacksize.
27518
27519         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
27520         termination of the finalizer thread, since the previous method had
27521         race conditions. Fixes #49628.
27522
27523         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
27524         as for the other managed threads.
27525
27526 2003-10-16  Martin Baulig  <martin@ximian.com>
27527
27528         * class.c (inflate_generic_signature): Copy `generic_param_count'
27529         and `gen_params'.
27530
27531         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
27532         New interncall.
27533
27534         * metadata.c (mono_metadata_parse_method_signature): Actually set
27535         the `method->generic_param_count' here.
27536         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
27537
27538 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
27539
27540         * object.h: Add a new field to TypedRef to simplify the implementation
27541         of the REFANY opcodes in the JIT.
27542
27543         * icall.c: Make use of the new field.
27544
27545         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
27546         dynamically.
27547
27548 2003-10-15  Martin Baulig  <martin@ximian.com>
27549
27550         * class.c (mono_class_from_gen_param): Renamed to
27551         mono_class_from_generic_parameter() and moved most of the
27552         functionality from mono_reflection_define_generic_parameter()
27553         here; ie. we create a "real" class here.
27554         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
27555         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
27556         previously been called.
27557
27558         * class.h (MonoGenericParam): Moved the declaration of this struct
27559         here from metadata.h and added `MonoMethod *method'.
27560
27561         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
27562         interncall.
27563
27564         * loader.c (mono_get_method_from_token): If we have any generic
27565         parameters, call mono_metadata_load_generic_params() to read them
27566         from the MONO_TABLE_GENERICPAR.
27567
27568         * metadata.c (mono_metadata_load_generic_params): Added
27569         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
27570
27571         * metadata.h (MonoMethodSignature): Replaced
27572         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
27573         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
27574
27575         * reflection.c (mono_reflection_define_generic_parameter): Moved
27576         most of the functionality into the new
27577         mono_class_from_generic_parameter(); set the `method' field if
27578         we're a method parameter.       
27579
27580 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
27581
27582         * marshal.c (emit_struct_conv): if native size is 0
27583         emit no code.
27584
27585 2003-10-14  Martin Baulig  <martin@ximian.com>
27586
27587         * icall.c: The generics API has changed in the spec since it was
27588         added to System.Type; these modifications make it match the spec
27589         again.
27590         (ves_icall_Type_GetGenericParameters): Renamed to
27591         `ves_icall_Type_GetGenericArguments'.
27592         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
27593         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
27594         `ves_icall_MonoType_get_HasGenericArguments'.
27595         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
27596         `ves_icall_MonoType_get_IsGenericParameter'.
27597         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
27598         this is no interncall anymore.
27599         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
27600         `ves_icall_TypeBuilder_get_IsGenericParameter'.
27601
27602 2003-10-14  Martin Baulig  <martin@ximian.com>
27603
27604         * reflection.c (mono_reflection_bind_generic_parameters): Also
27605         inflate generic methods if we're reading the class from IL.
27606
27607 2003-10-13  Martin Baulig  <martin@ximian.com>
27608
27609         * reflection.c (mono_reflection_define_generic_parameter): This
27610         method isn't called directly from the icall anymore; take a
27611         `MonoReflectionAssemblyBuilder *' so we can use this for type and
27612         method generic parameters.
27613         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
27614         (method_builder_encode_signature): Encode generic parameters.
27615         (mono_image_get_method_info): Write generic params to the
27616         MONO_TABLE_GENERICPARAM table.
27617
27618         * reflection.h (MonoReflectionMethodBuilder): Added
27619         `MonoArray *generic_params'.
27620
27621         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
27622
27623         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
27624         wrapper for mono_reflection_define_generic_parameter().
27625         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
27626
27627 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
27628
27629         * marshal.h: Add missing function to fix build.
27630
27631         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
27632         the SetLastError pinvoke attribute.
27633
27634         * marshal.c (mono_marshal_set_last_error): New helper function called
27635         by the generated code.
27636         
27637         * marshal.c (mono_mb_emit_branch): New helper function.
27638
27639         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
27640
27641         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
27642         classes as parameters and return values of delegates. Fixes #29256. 
27643
27644 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
27645
27646         * locales.c: use gint32 in non HAVE_ICU case
27647
27648 2003-10-11  Martin Baulig  <martin@ximian.com>
27649
27650         * mono-debug.c (mono_debug_add_method): Added a workaround for
27651         bug #48591.
27652
27653 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
27654
27655         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
27656         delegates passed to native code must use the STDCALL calling 
27657         convention. Fixes #35987.
27658
27659 2003-10-10  Martin Baulig  <martin@ximian.com>
27660
27661         * class.c (inflate_generic_type): If we're inflating for a generic
27662         type instance (and not for a generic method), return
27663         MONO_TYPE_MVAR unchanged.
27664
27665 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27666
27667         * string-icalls.c: Join ignores null strings in the source array.
27668         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
27669         * threads.c: GetAvailableTheads is slightly more accurate.
27670
27671 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
27672
27673         * threads.h threads.c : add mono_threads_set_default_stacksize
27674         and pass default to CreateThread calls.
27675
27676 2003-10-09  Dick Porter  <dick@ximian.com>
27677
27678         * icall.c:
27679         * locales.h:
27680         * locales.c: Internal calls for constructing CultureInfo and
27681         related objects from libicu (if its available.)
27682
27683 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
27684
27685         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
27686
27687 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27688
27689         * threadpool.c: added an argument to async_invoke_thread that is the
27690         item to process, pass the MonoAsyncResult to the thread start function
27691         when creating a new thread. This way we don't need to acquire any lock
27692         when we're creating a new thread. Readded a semaphore for faster
27693         response times (instead of that Sleep i added).
27694
27695 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
27696
27697         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
27698         get daylight change dates better on Windows, fix handling
27699         of platforms without tm_gmtoff.
27700
27701 2003-10-06  Martin Baulig  <martin@ximian.com>
27702
27703         * class.c (inflate_generic_method): Renamed to
27704         mono_class_inflate_generic_method() and made public.
27705         (mono_class_init): Don't inflate the generic methods here.
27706         (mono_class_from_generic): Added `gboolean inflate_methods'
27707         argument.  Inflate the methods here.
27708
27709         * loader.c (mono_method_get_param_names): Ignore instances of
27710         generic types for the moment.
27711
27712         * reflection.c (fixup_method): Added support for inflated methods.
27713         (mono_image_create_token): Use mono_image_get_methodref_token()
27714         for inflated methods.
27715         (mono_custom_attrs_from_param): Ignore instances of generic types
27716         for the moment.
27717         (mono_reflection_bind_generic_parameters): New public function.
27718         Moved all the functionality from
27719         ves_icall_Type_BindGenericParameters() here and added support for
27720         dynamic types.
27721         (mono_reflection_define_generic_parameter): Initialize
27722         `klass->methods' here.
27723
27724         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
27725         functionality into mono_reflection_define_generic_parameter().
27726         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
27727         TypeBuilder, return that TypeBuilder.
27728
27729 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27730
27731         * appdomain.c: removed mono_delegate_semaphore.
27732
27733         * threadpool.c:
27734         (mono_thread_pool_add): moved hash table creation inside and the thread 
27735         creation outside of the critical region.
27736         (mono_thread_pool_finish): removed obsolete code.
27737         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
27738         continue or exit the thread depending on the queue.
27739
27740 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
27741
27742         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
27743         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
27744         handle more bool marshalling options
27745
27746 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
27747
27748         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
27749         arrays of structs. Also add a more descriptive error message when
27750         a structure member is marshalled as LPArray.
27751
27752 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
27753
27754         * marshal.c (mono_marshal_get_native_wrapper): Add support for
27755         marshalling arrays of complex types. Fixes #29098. Also remove an
27756         usused and incomplete function.
27757
27758 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
27759
27760         * gc.c: report heap_size - free_bytes as total memory allocated
27761         (bug#49362).
27762
27763 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
27764
27765         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
27766         fix timezone handling problems on Windows.
27767         
27768         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
27769         asserts when the year is outside the range handled by ms the functions.
27770
27771         * class.c (setup_interface_offsets): If the class is an interface,
27772         fill out its interface_offsets slot.
27773
27774 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27775
27776         * threadpool.c: mark threadpool threads as background.
27777
27778 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
27779
27780         * decimal.c - define DECINLINE to nothing if not using GCC
27781
27782 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
27783
27784         * assembly.c: More refcount fixes.
27785
27786 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27787
27788         * string-icalls.c: if we're not trimming, return the same string.
27789         When not splitting, don't create a new string.
27790
27791 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27792
27793         * image.c:
27794         (mono_image_open): increment the ref_count inside the critical section.
27795
27796 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
27797
27798         * image.c (mono_image_open): Fix reference counting bug.
27799
27800 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
27801
27802         * marshal.c (mono_marshal_type_size) struct alignment changed for 
27803         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
27804         64bits. Avoid leak in mono_marshal_get_native_wrapper when
27805         mono_lookup_pinvoke_call throws.        
27806
27807 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
27808
27809         * reflection.c (mono_reflection_parse_type): Fix #49114.
27810
27811         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
27812         temporary workaround for cygwin header problem.
27813
27814         * object.c (mono_object_isinst): Synchronize this with the code
27815         generated by the JIT for casts.
27816
27817 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
27818
27819         * reflection.c (encode_type): Fix #38332.
27820
27821 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
27822
27823         * marshal.c (mono_marshal_method_from_wrapper): New function to return
27824         the original method from the wrapper method.
27825
27826 2003-09-25  Martin Baulig  <martin@ximian.com>
27827
27828         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
27829         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
27830         (ves_icall_Type_get_IsGenericInstance): New interncall.
27831
27832 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
27833
27834         * object.c: fix cast warning in big endian code.
27835
27836 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
27837
27838         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
27839         
27840 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
27841
27842         * assembly.c: don't call check_env from mono_assembly_load. It's
27843         already done once in mono_assemblies_init and may cause headaches when
27844         multiple threads are loading assemblies.
27845
27846 2003-09-19  Martin Baulig  <martin@ximian.com>
27847
27848         * reflection.c (mono_reflection_define_generic_parameter): Don't
27849         allocate `klass->methods', set `klass->flags' to
27850         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
27851
27852 2003-09-18  Martin Baulig  <martin@ximian.com>
27853
27854         * class.c (mono_class_init): Don't create `class->methods' if it's
27855         already initialized.
27856
27857         * metadata.c (mono_metadata_load_generic_params): Make this
27858         actually work.
27859
27860         * reflection.c (mono_reflection_define_generic_parameter): Set
27861         parent class and interfaces from the constraints.
27862
27863         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
27864         to keep this struct in sync with the declaration in TypeBuilder.cs.
27865
27866 2003-09-17  Martin Baulig  <martin@ximian.com>
27867
27868         * metadata.h (MonoType): Replaced the data's `int type_param'
27869         field with `MonoGenericParam *generic_param'.
27870         (MonoGenericParam): Added `MonoClass *klass'.
27871
27872         * class.c (mono_class_from_gen_param): Removed the
27873         `MonoImage *image' and `int type_num' arguments.
27874
27875         * metadata.c (mono_metadata_parse_generic_param): New static
27876         method; creates a MonoGenericParam which just contains the index.
27877         (do_mono_metadata_parse_type): Call
27878         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
27879         MONO_TYPE_MVAR.
27880
27881         * reflection.c (mono_image_typedef_or_ref): Generic type
27882         parameters may be in the same assembly, but never use a typedef
27883         for them.
27884         (mono_reflection_define_generic_parameter): We're now creating a
27885         "real" class for the type parameter; it's now safe to call
27886         mono_class_from_mono_type() on the class'es type, it'll do the
27887         right thing.
27888
27889 2003-09-16  Martin Baulig  <martin@ximian.com>
27890
27891         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
27892         `symfile->range_entry_size' and `symfile->class_entry_size' here;
27893         the `symfile' data structure must be fully initialized before it
27894         gets added to the table.
27895
27896 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
27897
27898         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
27899
27900         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
27901         class init trampolines.
27902
27903 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
27904
27905         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
27906         to the built-in profiler to turn off time and allocation profiling
27907         respectively.
27908
27909 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
27910
27911         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
27912         g_direct_equal.
27913
27914         * debug-helpers.c (mono_method_full_name): Print the wrapper type
27915         in human readable form.
27916
27917 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
27918
27919         * reflection.c icall.c: Fixed warnings.
27920
27921         * image.c (load_class_names): Use a temporary hash table to hold the
27922         namespaces in order to avoid doing many string comparisons.
27923
27924         * image.h: Fix typo.
27925
27926         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
27927         Pass NULL instead of g_direct_equal to the GHashTable constructor 
27928         since the NULL case is short-circuited inside g_hash_table_lookup, 
27929         leading to better performance.  
27930
27931         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
27932         obtain the first custom attribute for a given index. Depends on the
27933         CustomAttribute table being sorted by the parent field.
27934
27935         * reflection.c (mono_custom_attrs_from_index): Use the new function 
27936         for better performance.
27937
27938 2003-09-07  Martin Baulig  <martin@ximian.com>
27939
27940         * class.c (mono_class_init): If we're a generic instance, inflate
27941         all our methods instead of loading them from the image.
27942         (mono_class_from_generic): Set `class->methods = gklass->methods'.
27943
27944 2003-09-07  Martin Baulig  <martin@ximian.com>
27945
27946         * mono-debug-debugger.c: Added support for constructors.
27947
27948 2003-09-06  Martin Baulig  <martin@ximian.com>
27949
27950         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
27951         New interncall.
27952
27953         * reflection.c (mono_reflection_setup_generic_class): Call
27954         ensure_runtime_vtable() to create the vtable.
27955
27956 2003-09-05  Martin Baulig  <martin@ximian.com>
27957
27958         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
27959         MONO_TYPE_MVAR.
27960
27961 2003-09-04  Martin Baulig  <martin@ximian.com>
27962
27963         * reflection.c (mono_reflection_define_generic_parameter): Generic
27964         parameters start with zero.
27965
27966 2003-09-04  Martin Baulig  <martin@ximian.com>
27967
27968         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
27969
27970         * reflection.h (MonoReflectionGenericParam): New typedef.
27971         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
27972         the generic parameters from the managed TypeBuilder.
27973
27974         * reflection.c (mono_reflection_define_generic_parameter): New function.
27975         (mono_reflection_create_runtime_class): Encode generic parameters.
27976         (mono_reflection_setup_generic_class): New function; this is
27977         called after adding adding all generic params to the TypeBuilder.
27978         (encode_type): Added MONO_TYPE_VAR.
27979
27980 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
27981
27982         * class.h class.c (mono_class_needs_cctor_run): Moved this method
27983         here from the JIT.
27984
27985         * assembly.h assembly.c: Moved the AOT loading code into an assembly
27986         load hook.
27987
27988 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
27989
27990         * reflection.h reflection.c class.h class.c: Delete duplicate 
27991         definition of mono_type_get_name () from reflection.c and export the
27992         one in class.c.
27993
27994         * class.c: Class loading fixes from Bernie Solomon 
27995         (bernard@ugsolutions.com).
27996
27997         * reflection.c: Endianness fixes from Bernie Solomon 
27998         (bernard@ugsolutions.com).
27999         
28000 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
28001
28002         * assembly.h assembly.c: Define a file format version for AOT
28003         libraries.
28004         
28005         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
28006
28007         * appdomain.h (MonoJitInfo): New field to determine whenever the
28008         code is domain neutral.
28009         
28010 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
28011
28012         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
28013
28014 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
28015
28016         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
28017         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
28018         Avoid caching the result since strings must be domain specific. Fixes
28019         #48050.
28020
28021 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
28022
28023         * marshal.c (mono_marshal_init): Make this callable multiple times
28024         since it is hard to find a correct place to call it.
28025
28026         * object.c (mono_runtime_class_init): Execute static constructors in
28027         the correct appdomain.
28028
28029         * image.c (build_guid_table): Handle the case when multiple images have
28030         the same GUID.
28031
28032 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28033
28034         * icall.c: added a couple of icalls for System.Web.
28035
28036 2003-08-28  Martin Baulig  <martin@ximian.com>
28037
28038         * icall.c (ves_icall_Type_BindGenericParameters): Use
28039         `klass->generic_inst' instead of `&klass->byval_arg' in the
28040         mono_type_get_object() call.  The returned type must be
28041         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
28042
28043 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
28044
28045         * NOTES: New file.
28046
28047         * object.c (mono_class_proxy_vtable): Make it thread safe.
28048
28049         * pedump.c: Fix warning.
28050
28051         * object.c appdomain.h: Get rid of metadata_section. 
28052         It is no longer needed and it was causing deadlocks with domain->lock.
28053
28054         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
28055
28056 2003-08-26  Martin Baulig  <martin@ximian.com>
28057
28058         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
28059
28060 2003-08-26  Martin Baulig  <martin@ximian.com>
28061
28062         * pedump.c (main): Call mono_metadata_init(),
28063         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
28064         and mono_loader_init().
28065
28066 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
28067
28068         * loader.h: Add missing include to fix build.
28069
28070         * image.h: mono_image_load_references is no more.
28071
28072         * assembly.c: Reworked assembly loading to make it really thread safe.
28073         After these changes, the assembly returned by mono_assembly_open is
28074         fully initialized, i.e. all its references assemblies are loaded.
28075
28076         * assembly.c (mono_image_load_references): Renamed to 
28077         mono_assembly_load_references, and made private, since clients no
28078         longer need to call it.
28079
28080         * class.c: Removed calls to mono_assembly_load_references, since it was
28081         a source of deadlocks.
28082
28083         * loader.h loader.c class.h class.c: Protect data structures using a 
28084         new lock, the loader lock.
28085
28086         * class.c (mono_class_setup_vtable): Create temporary hash tables and
28087         GPtrArrays only when needed.
28088
28089         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
28090         into empty structures by mcs. Fixes pinvoke7.cs.
28091         
28092         * domain.c (mono_init): Call a new initialization function.
28093
28094         * appdomain.c (mono_runtime_init): Call the new initializer function
28095         of the marshal module.
28096
28097         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
28098         inserted into empty structures by mcs. Fixes pinvoke7.cs.
28099
28100         * marshal.h marshal.c: Added locks around the wrapper caches to make
28101         this module thread safe.
28102
28103         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
28104         this argument. Fixes pinvoke1.exe.
28105
28106 2003-08-25  Lluis Sanchez <lluis@ximian.com>
28107
28108         * object.h: Added call_type field to MonoMethodMessage and the corresponding
28109         enumeration of values. Removed fields to store remote call output values in
28110         MonoAsyncResult. Not needed any more.
28111         * object.c: Initialize call_type and async_result fields in mono_message_init.
28112         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
28113         dispatching the message.
28114         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
28115         async call to finish. To do it use a message with EndInvoke call type.
28116
28117 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
28118
28119         * loader.h loader.c (mono_method_hash_marhal_info): New function which
28120         determines whenever a method has marshalling info.
28121
28122 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28123
28124         * assembly.c: fix the build on windows.
28125
28126 2003-08-22 Lluis Sanchez <lluis@ximian.com>
28127
28128         * object.cs: Fixed bug #47785.
28129
28130 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
28131
28132         * string-icalls.c (StringReplace): If their are no occurances of
28133         the old string found return a reference to the supplied
28134         string. This saves some memory and matches MS behavoir.
28135         
28136 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28137
28138         * socket-io.c: fixed compilation for systems that define AF_INET6
28139         and don't define SOL_IP/SOL_IPV6.
28140
28141 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
28142
28143         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
28144         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
28145
28146         * rawbuffer.c rawbuffer.h: Make this module thread safe.
28147
28148         * domain.c: Make this module thread safe.
28149
28150         * domain.c (mono_init): Call new initialization function.
28151
28152         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
28153         reference types too. Fixes #38812.
28154
28155         * image.c (mono_image_init): Fixed warnings.
28156
28157         * class.c (mono_class_from_typeref): Handle assembly load failure
28158         correctly.
28159
28160         * appdomain.c (add_assemblies_to_domain): Handle the case when
28161         the references of an assembly are not yet loaded.
28162
28163         * metadata.c image.c assembly.c: Moved initialization of global
28164         variables to a separate function called at startup since lazy 
28165         initialization of these variables is not thread safe.
28166         
28167         * image.c assembly.c: Made this module thread safe by adding locks in 
28168         the appropriate places.
28169
28170         * domain.c (mono_init): Call the new initialization functions of the
28171         three modules.
28172
28173 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
28174
28175         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
28176           make a direct call. It is proxy's work to make the call asynchronous.
28177           mono_delegate_end_invoke(): If the targe is a proxy, just collect
28178           the return values.
28179         * object.cs: mono_method_call_message_new(): read AsyncResult and
28180           state object from parameters list, if this info is requested.
28181         * object.h: Added fields to store remote call output values in
28182           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
28183
28184 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
28185
28186         * object.h: add needed fields to MonoThread.
28187         * threads.c, threads.h: allow registering a function to cleanup data
28188         allocated per thread by the JIT.
28189
28190 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
28191
28192         * loader.h: portability fix by Bernie Solomon
28193         * <bernard@ugsolutions.com>.
28194
28195 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
28196
28197         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
28198         return a MonoArray. This simplifies the code and also ensures that
28199         the cache allways contains an object reference as a value.
28200
28201         * icall.c (ves_icall_get_parameter_info): Simplified using the new
28202         function.
28203
28204 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28205
28206         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
28207         fixes a problem with byte ordering when getting the address family for
28208         a socket.
28209
28210 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
28211
28212         * .cvsignore: Added monosn.
28213
28214         * reflection.h reflection.c loader.c: Added support for parameter
28215         marshalling to dynamically created types. Fixes #47295.
28216
28217 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
28218
28219         * rand.c: remove useless warnings.
28220
28221 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
28222
28223         * class.c: implemented ldtoken for methods and fieldrefs.
28224
28225 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28226
28227         * threadpool.c: when mono_async_invoke was called, no one took care of
28228         monitoring the queue. So if the method invoked took some time and we
28229         got new async invoke requests after 500 ms (the thread created waited
28230         that long in WaitForSingleObject), the new async invoke was not called
28231         until the previous one finished.
28232
28233         This is fixed now. Thanks to Totte for helping with it.
28234
28235 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28236
28237         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
28238
28239 2003-08-11  Martin Baulig  <martin@ximian.com>
28240
28241         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
28242
28243 2003-08-06  Martin Baulig  <martin@ximian.com>
28244
28245         * mono-debug-debugger.c: Added support for static fields,
28246         properties and methods.
28247
28248 2003-08-06  Martin Baulig  <martin@ximian.com>
28249
28250         * mono-debug-debugger.c: Don't store the MonoString's vtable to
28251         make this work for applications with multiple application domains.
28252
28253 2003-08-04  Martin Baulig  <martin@ximian.com>
28254
28255         * mono-debug-debugger.c: Completely reworked the type support; the
28256         most important thing is that we're now just using one single
28257         `MonoType' instance per type.
28258
28259 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
28260
28261         * mono-endian.h, mono-endian.c, icall.c: Added icall
28262         ves_icall_System_Double_AssertEndianity to assert double word endianity
28263         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
28264
28265 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
28266
28267         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
28268         support, icalls and fixes.
28269
28270 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
28271
28272         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
28273         classes that are a punctuation character in .NET is not the same a
28274         g_unichar_ispunct.
28275
28276 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
28277
28278         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
28279
28280 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
28281
28282         * icall.c: Add new MemCopy internalcall.
28283         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
28284         Simplified code; It is not necessary to handle all the cases here,
28285         as the C# code takes care of it.  Only handle the case of the name
28286         resource embedded into the assembly.
28287
28288         Changed signature to return the data pointer and the size of the
28289         data. 
28290
28291 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
28292
28293         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
28294         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
28295
28296 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
28297
28298         * socket-io.c: ignore EINTR error in select.
28299
28300 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
28301
28302         * class.h, class.c: removed unused subclasses field in MonoClass.
28303
28304 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
28305
28306         * icall.c: improve fix of get_base_definition(). If the parent class
28307           doesn't have the mehod, look at the parent of the parent.
28308         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
28309           to check if a parameter is an in or out parameter
28310           (PARAM_ATTRIBUTE_IN is not set by default).
28311           mono_method_return_message_restore(): Use mono_class_value_size to
28312           get the size of a value type. mono_type_stack_size (parameterType)
28313           does not return the correct value if parameterType is byRef.
28314           mono_load_remote_field(), mono_load_remote_field_new(),
28315           mono_store_remote_field(), mono_store_remote_field_new():
28316           raise exception if the remote call returns an exception.
28317
28318 2003-07-28  Martin Baulig  <martin@ximian.com>
28319
28320         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
28321         method.  This is a wrapper around mono_runtime_invoke() which
28322         boxes the instance object if neccessary.
28323
28324 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
28325
28326         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
28327         metadata.h, row-indexes.h, verify.c: first cut of generics support.
28328
28329 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
28330
28331         * icall.c: disable mcs bug workaround.
28332
28333 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
28334
28335         * object.c (mono_runtime_class_init): Take the metadata_section
28336         mutex before obtaining the domain mutex.
28337
28338         * appdomain.h: Added definition of metadata_section mutex here. 
28339
28340         * object.c: define metadata_mutex here.
28341
28342 2003-07-24  Ravi Pratap  <ravi@ximian.com>
28343
28344         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
28345         fixed.
28346
28347 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
28348
28349         * reflection.c: Fix bug #46669
28350
28351 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28352
28353         * exception.c:
28354         * exception.h:
28355         * icall.c:
28356         * object.h: fill in the type name for TypeLoadException.
28357
28358 2003-07-23  Ravi Pratap  <ravi@ximian.com>
28359
28360         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
28361         relationship between TypeBuilders while compiling corlib) and bug
28362         45993 (Array types returned from the runtime while compiling
28363         corlib were from the loaded corlib).
28364
28365 2003-07-22  Martin Baulig  <martin@ximian.com>
28366
28367         * mono-debug-debugger.c: Reworked the type support a bit more;
28368         distinguish between types and classes.
28369
28370 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
28371
28372         * icall.c: add IsArrayImpl icall.
28373
28374 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
28375
28376         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
28377         initializing real_size only once. Also fix bug #46602.
28378
28379 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
28380
28381         * object.c: Renamed mono_metadata_section to metadata_section.
28382
28383 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
28384
28385         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
28386           empty array if the type is an array. Fixed.
28387           ves_icall_MonoMethod_get_base_definition: if the base method
28388           is abstract, get the MethodInfo from the list of methods of
28389           the class.
28390         * reflection.c: ParameterInfo.PositionImpl should be zero-based
28391           and it was 1-based. Fixed in mono_param_get_objects.
28392
28393 2003-07-20  Martin Baulig  <martin@ximian.com>
28394
28395         * mono-debug.h: Set version number to 31.
28396         (mono_debug_init): Added `MonoDomain *' argument.
28397
28398         * mono-debug-debugger.c: Reworked the type support; explicitly
28399         tell the debugger about builtin types; pass the `klass' address to
28400         the debugger.
28401
28402 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
28403
28404         * image.c: Allow new metadata tables to be loaded without a
28405         warning. Also update the warning message to give the new constant value.
28406                 
28407 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
28408
28409         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
28410         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
28411         array type representation changes.
28412
28413 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
28414
28415         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
28416         on Environment.Exit () call.
28417
28418 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
28419
28420         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
28421         requires a matching corlib.
28422
28423 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
28424
28425         * Changelog: My editor decided to add a CR to each line. Sorry about that.
28426           Committed again without the CRs.
28427         
28428 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
28429
28430         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
28431           getting it from the "this" socket instance. Did not work
28432           if the socket is a subclass of Socket.
28433           Also fixed bug #35371.
28434
28435 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
28436
28437         * metadata.c: fixed size for TypedByRef.
28438         * loader.c: when searching for a method, consider the vararg amrker.
28439         * unicode.c, decimal.c: constify some arrays.
28440
28441 2003-07-15  Dick Porter  <dick@ximian.com>
28442
28443         * socket-io.c: Fixed compilation for gcc < 3.2.
28444
28445         Fixed compilation for machines that don't have AF_INET6 (thanks to
28446         Bernie Solomon <bernard@ugsolutions.com> for that part.)
28447
28448         Fixed compile warnings.
28449         
28450         Fixed formatting and line endings.
28451
28452 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
28453
28454         * socket-io.h:
28455         * socket-io.c: Added IPv6 support.
28456
28457 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
28458
28459         * class.c (mono_class_is_assignable_from): New function to implement
28460         the is_assignable_from logic. Used by mono_object_isinst, 
28461         Type::IsAssignableFrom () and the interpreter.
28462
28463         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
28464         Object, even interfaces.
28465         
28466         * object.c (mono_object_isinst): Implement in terms of 
28467         is_assignable_from.
28468
28469         * icall.c (ves_icall_type_is_assignable_from): New icall.
28470
28471 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
28472
28473         * domain.c (foreach_domain): fix compiler warning.
28474
28475 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
28476
28477         * image.c (load_metadata_ptrs): use g_strndup because strndup is
28478         not available on all plattforms
28479
28480 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
28481
28482         * image.h image.c: Store the metadata version string in MonoImage.
28483         * icall.c: New icall to retrieve the image version.
28484         * reflection.c (create_dynamic_image): Fill in the image version field
28485         * reflection.c (build_compressed_metadata): Use the image version
28486         from the image structure.
28487
28488 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28489
28490         * appdomain.c: modified comment.
28491         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
28492         That will be its last iteration when mono_gc_cleanup is called from
28493         mono_runtime_cleanup and before the domain is unloaded.
28494
28495         Fixes bug #45962.
28496
28497 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
28498
28499         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
28500         attributes.
28501
28502 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
28503
28504         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
28505         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
28506         Bernie Solomon <bernard@ugsolutions.com>.
28507
28508 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
28509
28510         * object.c, object.h: provide mono_object_new_fast() for faster
28511         allocation in some special cases.
28512
28513 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
28514
28515         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
28516         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
28517
28518 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
28519
28520         * threadpool.c: fix leaks.
28521
28522 2003-07-01  Dick Porter  <dick@ximian.com>
28523
28524         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
28525         using MonoGHashTables.  Fixes threadpool bug posted to list.
28526
28527 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
28528
28529         * image.h, image.c: added support to load an assembly from a byte array.
28530         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
28531         assembly bundle support.
28532
28533 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
28534
28535         * threadpool.c (mono_thread_pool_add): keep a reference to the
28536         AsyncResult to prevent GC
28537
28538 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
28539
28540         * class.c: leak fix.
28541
28542 2003-06-25  Dick Porter  <dick@ximian.com>
28543
28544         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
28545         for the async object, the WaitHandle object will close the handle.
28546         Fixes bug 45321.
28547
28548 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
28549
28550         * class.c: in mono_array_class_get (), lookup from the hash with the
28551         same type we insert: this works around a bug in
28552         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
28553         lluis. The real fix will have to wait for after the release.
28554
28555 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
28556
28557         * icall.c: fix memory leak when getting type members.
28558
28559 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
28560
28561         * reflection.c: added more pubtoken special cases.
28562
28563 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
28564
28565         * class.c: handle field offset correctly when class size
28566         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
28567
28568 2003-06-20  Martin Baulig  <martin@ximian.com>
28569
28570         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
28571         *image' field.
28572
28573 2003-06-20  Martin Baulig  <martin@ximian.com>
28574
28575         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
28576
28577 2003-06-20  Martin Baulig  <martin@ximian.com>
28578
28579         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
28580         just distinguish between variables in registers and variables at
28581         an offset relative to a register.
28582
28583 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28584
28585         * icall.c: #ifdef out latest changes until mcs is fixed.
28586
28587 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
28588
28589         * icall.c: return members in metadata order.
28590
28591 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
28592
28593         * icall.c: avoid infinite loop in GetTimeZoneData.
28594
28595 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
28596
28597         * icall.c: added Marshal.Prelink/All icalls.
28598
28599 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
28600
28601         * object.c, object.h: fix warnings and do some overflow checking
28602         when creating arrays.
28603
28604 2003-06-17  Dick Porter  <dick@ximian.com>
28605
28606         * file-io.h:
28607         * file-io.c: File attributes need to be tweaked slightly when
28608         passed from the managed to the w32 world.
28609
28610 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
28611         * profiler.h profiler-private.h profiler.c: Rework last patch
28612         based on suggestion by Paolo.
28613         
28614 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
28615
28616         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
28617         instruction level coverage data collection.
28618         * profiler.h profiler.c (: Added new callback function which can be
28619         used by the profiler to limit which functions should have coverage
28620         instrumentation.
28621         * profiler.c (mono_profiler_load): Call g_module_build_path to
28622         generate the file name of the profiler library.
28623
28624 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
28625
28626         * profiler.c, profiler.h, profiler-private.h: added basic block 
28627         coverage profiling API.
28628
28629 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
28630
28631         * reflection.c (mono_reflection_create_runtime_class): Add support
28632         for events in dynamically generated code.
28633
28634         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
28635         not allocated.
28636
28637 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
28638
28639         * icall.c: when getting timezone info, return reasonable values if we
28640         can't get the actual data.
28641
28642 2003-06-14  Dick Porter  <dick@ximian.com>
28643
28644         * threads.c (start_wrapper): Remove the reference to the thread
28645         object in the TLS data, so the thread object can be finalized.
28646         This won't be reached if the thread threw an uncaught exception,
28647         so those thread handles will stay referenced :-( (This is due to
28648         missing support for scanning thread-specific data in the Boehm GC
28649         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
28650
28651 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
28652
28653         * reflection.c: ensure streams and tables are first allocated with
28654         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
28655
28656 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
28657
28658         * icall.c: fixed GetElementType for byrefs (bug# 44792).
28659
28660 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
28661
28662         * reflection.c (mono_reflection_create_runtime_class): Add support for
28663         properties to dynamically created classes.
28664         * reflection.c: Fix a few places where non-MonoObjects were inserted
28665         into the tokens hashtable.
28666
28667 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
28668
28669         * object.c: some support to handle out of memory exceptions.
28670
28671 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
28672
28673         * marshal.c (mono_marshal_get_native_wrapper): support reference
28674         return types
28675
28676 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
28677
28678         * object.h, object.c: more portability stuff from Bernie Solomon.
28679         Unexport mono_object_allocate(). Added mono_object_unbox ().
28680         Set exitcode when an unhandled exception is thrown.
28681
28682 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
28683
28684         * marshal.c (mono_marshal_get_native_wrapper): use custom
28685         marshaler for return types.
28686
28687 2003-06-10  Dick Porter  <dick@ximian.com>
28688
28689         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
28690         ip_mreq is available
28691
28692 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
28693
28694         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
28695         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
28696         by Bernie Solomon <bernard@ugsolutions.com>.
28697
28698 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
28699
28700         * gc.c (mono_gc_init): Avoid error message on shutdown when
28701         GC_DONT_GC=1 is used.
28702
28703         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
28704         New icall to return the GUID of a module.
28705
28706 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
28707
28708         * class.c: ensure instance size always includes the parent's size
28709         even whem class size is set explicitly (fixes bug#44294).
28710
28711 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
28712
28713         * profiler.h, profiler.c: made the simple profiler thread-safe,
28714         get more accurate timing info. Allow the loading of an
28715         externally-developed profiler module.
28716
28717 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
28718
28719         * marshal.c (mono_marshal_get_native_wrapper): improved
28720         class/byref arguments.
28721         (mono_marshal_get_native_wrapper): better string marshaling support.
28722
28723 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
28724
28725         * class.c: ensure .pack and .size are handled correctly and
28726         simplified layout of static fields.
28727
28728 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
28729
28730         * appdomain.c
28731         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
28732
28733         * loader.c (mono_lookup_pinvoke_call): look for modules in the
28734         current directory (fix bug 44008)
28735
28736 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
28737
28738         * marshal.c (mono_marshal_get_native_wrapper): started support for
28739         custom marshalers.
28740         (mono_delegate_to_ftnptr): consider marshalling specifications
28741
28742 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
28743
28744         * reflection.c, reflection.h: emit custom marshal info.
28745
28746 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28747
28748         * object.c: free the GError.
28749         * icall.c: added CloseEvent_internal.
28750         * threads.[ch]:
28751         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
28752         call.
28753
28754 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
28755
28756         * loader.c (mono_method_get_signature): Add support for dynamic
28757         assemblies.
28758
28759 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
28760
28761         * reflection.c: fixed bug #43905.
28762
28763 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
28764
28765         * class.c, domain.c, icall.c, metadata.h, object.h: support for
28766         handling TypedReference and ArgIterator.
28767         * loader.c, loader.h: added function to get signature at call site.
28768
28769 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
28770
28771         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
28772         data readonly. Buglets and warning fixes. Some MethodSpec support.
28773
28774 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
28775
28776         * class.h, class.c, object.c: remove relative numbering support.
28777
28778 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
28779
28780         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
28781         free the string, until we get a chance to fix Gtk#
28782
28783 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28784
28785         * marshal.c: revert last patch.
28786
28787 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
28788
28789         * icall.c: updates for new mono_class_vtable() not calling
28790         the type constructor anymore.
28791
28792 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
28793
28794         * object.h, object.c: separate vtable creation from type
28795         initialization. Make running the .cctor thread safe.
28796
28797 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
28798
28799         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
28800
28801 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
28802
28803         * loader.c (mono_get_method): consider calling convention
28804
28805 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
28806
28807         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
28808         to return the invisible global type for a module.
28809
28810         * reflection.c (mono_image_build_metadata): Emit global fields too.
28811
28812 2003-05-20  Peter Williams  <peterw@ximian.com>
28813
28814         * loader.c (mono_lookup_internal_call): Add a few newlines.
28815
28816 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
28817
28818         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
28819         literal strings.
28820
28821         * appdomain.c (set_domain_search_path): Recalculate search path when
28822         AppDomainSetup.PrivateBinPath changes.
28823
28824         * object.c (mono_class_compute_gc_descriptor): It turns out some
28825         parts of the class libs (like System.Thread) holds pointers to
28826         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
28827         to treat native int a pointer type here.
28828         
28829 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
28830
28831         * appdomain.h, domain.c: add hashtable for jump target resolution.
28832
28833 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
28834
28835         * reflection.h reflection.c icall.c: Added new icalls 
28836         GetManifestResourceInfoInternal, GetModulesInternal and support
28837         infrastructure.
28838
28839 2003-05-16  Dick Porter  <dick@ximian.com>
28840
28841         * icall.c:
28842         * file-io.h:
28843         * file-io.c: Implement System.IO.MonoIO::GetTempPath
28844
28845 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
28846
28847         * object.c: mono_store_remote_field: little fix to previous patch.
28848
28849 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
28850
28851         * class.c: add constructors to array classes.
28852         * icall.c: special case array construction for InternalInvoke (),
28853
28854 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
28855
28856         * class.h class.c reflection.c object.c: Added support for field
28857         defaults in dynamically generated classes.
28858
28859 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
28860
28861         * reflection.c: properly encode charset for ddlimport.
28862
28863 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
28864
28865         * threads.c: allow compiling without GC.
28866
28867 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
28868
28869         * appdomain.h, object.c, object.h, threads.c, threads.h: added
28870         handling of thread static data.
28871
28872 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
28873
28874         * reflection.h, reflection.c: added mono_custom_attrs_free ().
28875
28876 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
28877
28878         * class.c (mono_array_class_get): always set the serializable flags
28879         (mono_array_class_get): always set the SEALED attribute for array types
28880
28881 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
28882
28883         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
28884         attributes (fix for bug 42021).
28885
28886 2003-05-12  Dick Porter  <dick@ximian.com>
28887
28888         * gc.c: Don't run finalizers when the finalizer thread is
28889         finishing up, because the default domain has already been
28890         destroyed.
28891
28892 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
28893
28894         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
28895         value is null, we should throw an exception.   This is slightly
28896         different than the other conventions used for the constructor.
28897
28898 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28899
28900         * socket-io.c: fixed windows build.
28901
28902 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28903
28904         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
28905
28906 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
28907
28908         * object.c (mono_string_new_wrapper): Compatibility fix for MS
28909         compilers.
28910
28911 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
28912
28913         * class.c (mono_class_layout_fields): Add experimental GC aware
28914         auto layout facility. Requires class library changes to work correctly.
28915
28916         (mono_class_setup_vtable): Avoid overriding explicit interface
28917         method implementations. Fixes iface3.exe test.
28918
28919         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
28920         object reference.
28921         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
28922         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
28923
28924         * metadata.h: Add new type classification macro which determines
28925         whenever the type holds an object reference.
28926
28927 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
28928
28929         * marshal.c (mono_marshal_get_native_wrapper): cleanups
28930
28931 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
28932
28933         * gc.c (finalizer_thread): Work around a GC bug.
28934
28935 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
28936
28937         * marshal.c (emit_struct_conv): allow unions
28938
28939         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
28940
28941 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
28942
28943         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
28944
28945 2003-05-06  Martin Baulig  <martin@ximian.com>
28946
28947         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
28948
28949 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28950
28951         * socket-io.c:
28952         (Select_internal): allow NULLs, don't create arrays if not needed.
28953         Coupled with Socket.cs changes.
28954
28955         * threadpool.c:
28956         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
28957         register a finalizer for it that will close the semaphore handle. This
28958         fixes the leak and make Lupus' test run with > 4080 loops.
28959
28960 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
28961
28962         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
28963         Jerome Laban (bug #42287)
28964
28965 2003-05-02  Martin Baulig  <martin@ximian.com>
28966
28967         * debug-mono-symfile.h
28968         (MonoSymbolFile): Moved declaration into mono-debug.h.
28969         (MonoDebugMethodJitInfo): Likewise.
28970         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
28971         argument.
28972         (_mono_debug_address_from_il_offset): Take a
28973         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
28974
28975         * mono-debug.h
28976         (MonoDebugDomainData): New struct.
28977         (mono_debug_get_domain_data): New function.
28978         (mono_debug_add_method): Take an additional `MonoDomain *'
28979         argument.
28980         (mono_debug_source_location_from_address): Likewise.
28981         (mono_debug_il_offset_from_address): Likewise.
28982         (mono_debug_address_from_il_offset): Likewise.
28983
28984 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
28985
28986         * reflection.c: one more check for null type in custom attrs.
28987
28988 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28989
28990         * reflection.c: avoid warning (comparison is always false due to limited
28991         range of data type).
28992
28993 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
28994
28995         * icall.c: throw an exception in Type.GetField if the argument 'name'
28996         is NULL.
28997
28998 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
28999
29000         * reflection.c: fixed handling of enums in named arguments to custom
29001         attributes (bug #42123).
29002
29003 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
29004
29005         * reflection.c: use the right array element type and handle
29006         a null for a Type argument, too.
29007
29008 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
29009
29010         * reflection.c: handle arrays as arguments to custom attributes.
29011
29012 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
29013
29014         * reflection.c: handle a string value in a custom attr
29015         ctor that takes an object.
29016
29017 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
29018
29019         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
29020         (fix bug #42063)
29021
29022 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
29023
29024         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
29025
29026 2003-04-27  Martin Baulig  <martin@ximian.com>
29027
29028         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
29029         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
29030         MONO_DEBUGGER_EVENT_BREAKPOINT.
29031         (mono_breakpoint_trampoline_code): Removed.
29032         (mono_debugger_event_handler): The last argument is now a
29033         `guint32'.
29034         (mono_debugger_insert_breakpoint_full): Removed the
29035         `use_trampoline' argument.
29036         (mono_debugger_method_has_breakpoint): Likewise.
29037         (mono_debugger_trampoline_breakpoint_callback): Renamed to
29038         mono_debugger_breakpoint_callback(); take the method and
29039         breakpoint number as arguments.
29040
29041 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
29042
29043         * metadata.c: fix off by one when loading parameters attributes.
29044
29045 2003-04-24  Martin Baulig  <martin@ximian.com>
29046
29047         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
29048
29049 2003-04-24  Martin Baulig  <martin@ximian.com>
29050
29051         * mono-debug-debugger.c: Moved all code which interacts with the
29052         Mono Debugger here.
29053
29054         * debug-mono-symfile.c: This code now just deals with the symbol
29055         file itself, the debugger code is now in mono-debug-debugger.c.
29056
29057 2003-04-23  Martin Baulig  <martin@ximian.com>
29058
29059         * mono-debug.c (mono_debug_source_location_from_il_offset):
29060         New method; like mono_debug_source_location_from_address(), but
29061         takes an IL offset instead of a machine address.
29062
29063 2003-04-23  Martin Baulig  <martin@ximian.com>
29064
29065         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
29066         `line' field; this is now computed by the debugger.
29067
29068 2003-04-23  Martin Baulig  <martin@ximian.com>
29069
29070         * mono-debug.[ch]: New files.  This is the new debugging interface.
29071
29072         * mono-debug-debugger.[ch]: New files.  Moved all code which
29073         interacts with the Mono Debugger here.
29074
29075 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
29076
29077         * domain.c (mono_init): initialize mono_defaults.monitor_class
29078
29079 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
29080
29081         * reflection.c (method_encode_code): Add a spicy exception to help
29082         future compiler authors.
29083
29084 2003-04-21  Martin Baulig  <martin@ximian.com>
29085
29086         * icall.c
29087         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
29088         Make this work with relative pathnames; g_filename_to_uri() needs
29089         an absolute filename.
29090
29091 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
29092
29093         * icall.c: Track name changes in Object and ValueType.
29094
29095 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
29096
29097         * metadata.c (mono_type_stack_size): size should be a multiple of
29098         sizeof (gpointer)
29099
29100 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29101
29102         * gc.c:
29103         (internal_domain_finalize): moved into mono_domain_finalize. No need
29104         to create another thread because the finalizers will be run in the
29105         finalizer thread.
29106         
29107         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
29108         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
29109         to be run (MS does this too).
29110
29111 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
29112
29113         * object.c (mono_class_compute_gc_descriptor): Update comment.
29114
29115         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
29116
29117         * image.h: Add synchronized wrapper cache.
29118
29119         * image.c (do_mono_image_open): Initialize cache.
29120
29121         * reflection.c (create_dynamic_mono_image): Initialize cache.
29122
29123 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29124
29125         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
29126         ves_icall_System_Buffer_ByteLengthInternal.
29127
29128 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
29129
29130         * reflection.c: setup klass->nested_in earlier. Allow
29131         a dash in the assembly name.
29132
29133 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
29134
29135         * metadata.c (mono_type_to_unmanaged): dont access
29136         type->data.klass for MONO_TYPE_OBJECT
29137         (mono_type_to_unmanaged): consider System.Delegate class
29138
29139 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
29140
29141         * class.c: just setup supertypes in the proper place instead of
29142         initializing the full element class for arrays.
29143
29144 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
29145
29146         * class.c: ensure the element class of arrays is initialized.
29147         Setup the supertype info for array classes, too.
29148
29149 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
29150
29151         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
29152
29153 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29154
29155         * Makefile.am: re-added -m option when running cygpath. This way,
29156         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
29157         separator.
29158         * mono-config.c: same codepath for locating mono config file for WIN32
29159         and the rest.
29160         * assembly.c: if mono_assembly_setrootdir is called, don't override
29161         the value set.
29162
29163 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29164
29165         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
29166         MONO_ASSEMBLIES variable.
29167
29168 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
29169
29170         * icall.c: added Assembly::GetNamespaces() icall.
29171
29172 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29173
29174         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
29175
29176 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
29177
29178         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
29179         * object.c: fixed bug in the construction of vtable for proxies
29180
29181 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
29182
29183         * object.c (mono_array_new): Mark mono_array_new as an icall.
29184
29185 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29186
29187         * class.c: fixed test for public method when overriding interfaces.
29188         Closes bug #40970.
29189
29190 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
29191
29192         * appdomain.h, domain.c: added mono_domain_foreach() to
29193         be able to access the currently loaded appdomains.
29194         * object.c: make string interning work across sppdomains.
29195         Mark some functions for use as icalls.
29196
29197 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
29198
29199         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
29200
29201         * reflection.h reflection.c: Allocate long living data using 
29202         GC_MALLOC_ATOMIC so the collector does not need to scan it.
29203
29204         * reflection.c: Double the allocation size in streams instead of
29205         increasing it, to prevent unneccesary copying on large assemblies.
29206         
29207         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
29208         creation if the assembly does not have the Run flag set.
29209
29210 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
29211
29212         * class.h: avoid the C++ keywords in header files (Jerome Laban
29213         spotted and fixed this).
29214
29215 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29216
29217         * object.c:
29218         (mono_unhandled_exception): fill in the arguments for the
29219         UnhandledException event. Only trigger that event for the default
29220         domain (as MS does).
29221
29222 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
29223
29224         * object.c: Improve typed allocation stuff based on suggestions from
29225         Paolo. Also turn it on if the GC library supports it.
29226
29227 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
29228
29229         * object.c object.h class.h: Added experimental typed allocation
29230         facility using the interfaces in gc_gcj.h.
29231
29232         * os/gc_wrapper.h: Added new include files.
29233         
29234 2003-04-03  Martin Baulig  <martin@ximian.com>
29235
29236         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
29237         which is not yet enabled by default.
29238
29239         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
29240         functions.
29241         (mono_gc_lock, mono_gc_unlock): New static functions.
29242
29243         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
29244         functions; stop/start the world for the garbage collector.  This
29245         is using the windows API; we need to complete the SuspendThread()/
29246         ResumeThread() implementation in the io-layer to make this work on Unix.
29247         (mono_gc_push_all_stacks): New public function; tells the garbage
29248         collector about the stack pointers from all managed threads.
29249
29250 2003-04-03  Martin Baulig  <martin@ximian.com>
29251
29252         * object.h (MonoThread): Added `gpointer stack_ptr'.
29253
29254         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
29255
29256 2003-04-03  Martin Baulig  <martin@ximian.com>
29257
29258         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
29259
29260 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
29261
29262         * reflection.c (typebuilder_setup_fields): Initialize field.first and
29263         field.last.
29264
29265 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
29266
29267         * loader.c (mono_lookup_internal_call): Report the corlib that is
29268         out of sync.
29269
29270 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
29271
29272         * icall.c (ves_icall_type_GetTypeCode): fixed check for
29273         System.DBNull (it's class not valuetype).
29274
29275 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
29276
29277         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
29278         if the array method was already assigned a token (fixes bug#40646).
29279
29280 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
29281
29282         * reflection.c (mono_reflection_get_type): Attempt type resolve even
29283         if no assembly is given.
29284
29285 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
29286
29287         * metadata.h: Added the new tables.
29288
29289         * row-indexes.h: Added definitions for new tables.
29290
29291         * metadata.c: Add schemas for new tables, and add support for
29292         computing the sizes of them.
29293
29294         * class.c: Update for handling the new type cases.
29295
29296 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
29297
29298         * metadata.h (MONO_TYPE_IS_VOID): new macro
29299
29300 2003-03-31  Martin Baulig  <martin@ximian.com>
29301
29302         * threads.h (MonoThreadCallbacks): Added `thread_created'.
29303
29304         * threads.c (mono_thread_new_init): Call `thread_created' in the
29305         mono_thread_callbacks.
29306
29307 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
29308
29309         * loader.h: added marshalbyrefobject_class to mono_defaults
29310         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
29311         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
29312           generation of output parameters.
29313           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
29314         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
29315           contextbound and the target object belongs to the context of the caller.
29316         * object.h: added context and unwrapped_server variables in MonoRealProxy.
29317         * object.c: Implemented support for interfaces and abstract classes
29318           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
29319           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
29320
29321 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
29322
29323         * class.h class.c (mono_class_is_subclass_of): New function.
29324         
29325         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
29326         routines for most common case (calls from ArrayList::ToArray).
29327
29328         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
29329         routine so programs which call Environment::Exit() can be profiled.
29330
29331         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
29332         Added MONO_ARCH_SAVE_REGS.
29333
29334         * icall.c (ves_icall_type_is_subtype_of): Use new function.
29335
29336 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
29337
29338         * blob.h: Add a couple of new MonoType types definitions.
29339
29340         * tabledefs.h: Add a couple of new call convs.
29341
29342 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
29343
29344         * reflection.h (MonoReflectionDynamicAssembly): track changes in
29345         the layout of the class.
29346
29347         * reflection.c (alloc_table): double the size on overflow to avoid
29348         unnecessary copying.
29349
29350         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
29351         avoid filling out metadata tables and blobs. Also set mb->ilgen to
29352         null so it can be garbage collected.
29353         
29354 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
29355
29356         * reflection.c (mono_reflection_get_type): Return the resolved type
29357         only if it is in the assembly we searched.
29358
29359         * reflection.c (ensure_runtime_vtable): Initialize method slots.
29360
29361         * class.c (mono_class_setup_vtable): Set the slot of the overriding
29362         method.
29363
29364 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29365
29366         * appdomain.c:
29367         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
29368         the right one is 'file:///blah', but MS allows it.
29369         * assembly.c:
29370         (mono_assembly_open): allow 'file://blah'
29371
29372         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
29373
29374 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
29375
29376         * socket-io.c: fixes bug #40310.
29377
29378 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
29379
29380         * reflection.c (mono_reflection_parse_type): handle deeply nested
29381         types correctly.
29382
29383         * reflection.c (mono_image_create_token): Use unique token values
29384         since they will be put into a hash table.
29385
29386         * class.c (mono_class_setup_vtable): If a method occurs in more than
29387         one place in the vtable, and it gets overriden, then change the
29388         other occurances too.
29389
29390         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
29391         object as return type.
29392
29393 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
29394
29395         * icall.c: Deleted "ToString" implementation for double and float
29396         because they are full implemented in managed code.
29397
29398 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
29399
29400         * reflection.c, reflection.h: implemented and exported functions
29401         to retrieve info about custom attributes.
29402
29403 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29404
29405         * appdomain.c: moved Uri handling to assembly.c
29406         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
29407         work when using a file Uri in *nix and windows.
29408
29409         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
29410         GetReferencedAssemblies.
29411
29412 2003-03-18  Dick Porter  <dick@ximian.com>
29413
29414         * icall.c: Rename a couple of internal calls
29415
29416         * threads.c: Set the thread state to Stopped when a thread exits.
29417         Fixes bug 39377.
29418
29419 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
29420
29421         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
29422         New icall.
29423
29424         * object.c (mono_class_vtable): fix warning.
29425
29426 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
29427
29428         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
29429
29430         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
29431         memory.
29432         (method_encode_clauses): Create exception info structures in the right
29433         order.
29434         (mono_reflection_setup_internal_class): Initialize supertypes field.
29435
29436         * class.c object.c: Handle interfaces which implement other interfaces 
29437         correctly.
29438
29439         * class.h class.c: Move the supertypes array initialization code into 
29440         a separate function so it can be used for dynamic types too. Also call
29441         it earlier, in mono_class_init(), since it can be used before the
29442         type is initialized.
29443
29444 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29445
29446         * Makefile.am:
29447         * assembly.c:
29448         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
29449
29450         * appdomain.c:
29451         * appdomain.h:
29452         * marshal.c:
29453         * object.c: remove warnings.
29454
29455 2003-03-13  Martin Baulig  <martin@ximian.com>
29456
29457         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
29458         (MonoDebugLexicalBlockEntry): New types.
29459
29460         * debug-mono-symfile.c
29461         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
29462
29463 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29464
29465         * process.c: ret can be any non-zero value accroding to MS doc.
29466
29467 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
29468
29469         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
29470         fixing a warning for a miss-used prototype, would have cause
29471         random memory corruption.
29472
29473 2003-03-07  Martin Baulig  <martin@ximian.com>
29474
29475         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
29476         getting really annoying ....
29477
29478 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
29479
29480         * reflection.c (fixup_method): added support for array methods.
29481
29482 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
29483
29484         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
29485         (pointed out by Michael Adams).
29486
29487 2003-03-04  Dick Porter  <dick@ximian.com>
29488
29489         * icall.c: Temporarily reverted the Double and Single ToString()
29490         change, because it broke nunit.
29491
29492 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
29493
29494         * object.h, threads.h: make include files compatible with C++
29495         (patch by Jerome Laban <jlaban@wanadoo.fr>).
29496
29497 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
29498
29499         * icall.c: Erased ToString helper functions for Double and Single.
29500         Now, that implementations ar all in managed code (Double and Single
29501         Formatters).
29502
29503 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
29504
29505         * appdomain.c: Added method for initializing the default context of
29506         a domain. Added internal call for getting the default context.
29507         * appdomain.h: Added context variable in MonoDomain struct.
29508         * domain.c: mono_domain_set also sets the default context of the domain
29509         * icall.c: Mapped internal method InternalGetDefaultContext.
29510         * object.c: mono_object_get_virtual_method returns always a remoting
29511         wrapper if the object is a transparent proxy.
29512         mono_runtime_invoke_array: when creating an object by calling the
29513         constructor, if the created object is a proxy, then the constructor should
29514         be called using the a remoting wrapper.
29515
29516 2003-03-03  Dick Porter  <dick@ximian.com>
29517
29518         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
29519         variable so it compiles on solaris.  Problem spotted by
29520         Christopher Taylor <ct@cs.clemson.edu>
29521
29522 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29523
29524         * appdomain.c:
29525         (get_info_from_assembly_name): don't leak value.
29526
29527         * icall.c:
29528         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
29529         result.
29530
29531 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
29532
29533         * assembly.c: export mono_image_load_references ().
29534         * class.c: handle function pointers. mono_class_from_name() now
29535         supports nested type names directly.
29536
29537 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
29538
29539         * reflection.h reflection.c: Encode already created dynamic methods 
29540         and fields correctly as a DEF instead of a REF.
29541
29542         * reflection.c: Get rid of the force_ref argument to 
29543         mono_image_typedef_or_ref since it was wrong in the first place.
29544
29545         * string-icalls.c: add error checking to string constructors according
29546         to the MSDN docs.
29547
29548         * reflection.c: Emit types in the order their TypeBuilders were 
29549         created. Previously, a new table index was assigned to each type before
29550         the tables were emitted. This was wrong because the signature blob
29551         might already refer to a type by its original table index.
29552
29553 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
29554
29555         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
29556         change.
29557         
29558 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29559
29560         * Makefile.am: make assemblies dir have \ instead of / on windows.
29561
29562 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
29563
29564         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
29565         iterate over the NESTEDCLASS table using a linear search since the
29566         table is not guaranteed to be sorted by the secondary key.
29567
29568         * class.c (mono_class_create_from_typedef): fixed up call to
29569         mono_metadata_nesting_typedef.
29570         
29571 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
29572
29573         * marshal.c (mono_string_to_byvalstr): clear the memory as
29574         suggested by Jerome Laban <jlaban@wanadoo.fr>
29575
29576 2003-02-26  Dick Porter  <dick@ximian.com>
29577
29578         * process.c: Cope with padding in .rsrc blocks
29579
29580 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
29581
29582         * metadata.h: reverted the filter_len change, it breaks reflection
29583         
29584 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
29585
29586         * metadata.h: added a new field to store the filter_len
29587         
29588
29589 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
29590
29591         * reflection.c: handle custom attributes for types and members
29592         created with Reflection.Emit (bug#38422).
29593
29594 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
29595
29596         * reflection.c: define RTSpecialName automatically for constructors for
29597         compatibility with MS.NET.
29598
29599         * reflection.c (mono_reflection_create_runtime_class): initialize
29600         nested_in field of dynamically created classes.
29601
29602 2003-02-22  Martin Baulig  <martin@ximian.com>
29603
29604         * debug-mono-symfile.h: Incremented version number.
29605
29606 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
29607
29608         * object.h icall.c process.c: fix warnings.
29609
29610 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
29611
29612         * appdomain.h appdomain.c:
29613         (mono_domain_try_type_resolve): split the 
29614         name_or_tb argument into a name and a tb argument.
29615         (mono_domain_has_type_resolve): new function to check whenever the
29616         application has registered a TypeResolve event handler.
29617         
29618         * icall.c reflection.h reflection.c: move the type resolve logic into
29619         mono_reflection_get_type () so it will be invoked when 
29620         Assembly::GetType () is called.
29621
29622         * reflection.c:
29623         (mono_reflection_get_type): renamed to get_type_internal.
29624         (mono_reflection_get_type): fixed type name generation so it works 
29625         for nested types too.
29626         (mono_reflection_get_type): call has_type_resolve () to avoid the 
29627         costly type name generation if there is no resolve event handler.
29628
29629 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
29630
29631         * class.c, image.c: load exported types from file references.
29632
29633 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
29634
29635         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
29636           used to cache the managed methods used to create proxies and make 
29637           remote invocation of methods.
29638         * class.h: Added in MonoVTable a flag to indicate that a class needs 
29639           to be remotely created.
29640         * object.c: Modified the method mono_class_vtable(). It now initializes 
29641           the remote flag of the vtable. Modified mono_object_new_specific(), 
29642           so now it checks the remote flag.
29643         * icall.c: Added a couple of internal methods, one for enabling instance 
29644           creation interception for a type, and one for creating objects bypassing
29645           the remote check.
29646
29647 2003-02-18  Martin Baulig  <martin@ximian.com>
29648
29649         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
29650         New interncall to get a method's metadata token.
29651
29652         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
29653         New interncall for the debugger.
29654
29655 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
29656
29657         * class.c (mono_class_setup_vtable): allocate supertype array
29658
29659 2003-02-18  Martin Baulig  <martin@ximian.com>
29660
29661         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
29662
29663 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29664
29665         * reflection.c:
29666         (assembly_name_to_aname): jump over unknown properties (i've found
29667         something like: 'type, assembly, version=xxx, custom=null, public...',
29668         so now will ignore custom=null and still get the rest of the values).
29669
29670 2003-02-17  Dick Porter  <dick@ximian.com>
29671
29672         * threads.c: Have Thread.Start() wait for a semaphore to signal
29673         that the thread has set up all its local data.  This fixes bug
29674         34323, where Abort() raced the new thread's TLS data.
29675
29676         Also removes the handle_store() call from start_wrapper, because
29677         threads are now always created suspended and there is no longer a
29678         race between the parent and child threads to store the info.
29679
29680 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
29681
29682         * image.c: explain the #- heap issue in a message, hopefully
29683         avoiding FAQs on mono-list.
29684
29685 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29686
29687         * icall.c:
29688         (GetEntryAssembly): if the domain has not invoked
29689         AppDomain.ExecuteAssembly yet, return the assembly of the default
29690         AppDomain.
29691
29692 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
29693
29694         * class.c (mono_ldtoken): make it work in dynamic assemblies.
29695
29696 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
29697
29698         * metadata.c, reflection.c: simple speedup to type hash
29699         and equals code.
29700
29701 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
29702
29703         * image.c, image.h, class.c, assembly.c: move module loading
29704         to MonoImage. When loading metadata, consider alignemnet from
29705         the start of metadata, not from the metadata address in memory.
29706
29707 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
29708
29709         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
29710         AssemblyBuilder objects. Factored out custom attribute creation into
29711         a separate function.
29712         (create_custom_attr): new function to create custom attributes.
29713
29714 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
29715
29716         * Makefile.am: Got tired of typing the full pathname to pedump.
29717         Until there is another option, am installing this.
29718
29719 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
29720
29721         * class.c (class_compute_field_layout): always set field->parent 
29722         (mono_ldtoken): use mono_defaults.fieldhandle_class;
29723
29724 2003-02-11  Dick Porter  <dick@ximian.com>
29725
29726         * threads-types.h:
29727         * monitor.c: Rewrote Monitor, making lock much faster and
29728         Pulse/Wait work as specified.  Also uses much fewer handles, and only
29729         creates them as needed.
29730
29731         * exception.c: Added SynchronizationLockException
29732
29733         * threads.c: Deleted old Monitor implementation.  The new one is
29734         in a new file.
29735
29736 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
29737
29738         * class.c: handled TypedReference type code. Set the correct size for
29739         class data. Setup interface_offsets for interface classes, too.
29740
29741 2003-02-09  Martin Baulig  <martin@ximian.com>
29742
29743         * debug-mono-symfile.h: Reflect latest symbol writer changes.
29744
29745 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
29746
29747         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
29748         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
29749         * object.c: fixed mono_object_get_virtual_method () for interfaces.
29750         * verify.c: check for code that runs after the end of the method.
29751
29752 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
29753
29754         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
29755         "System.Math::Round2".
29756         * sysmath.h: Added Floor, Round and Round2 definitions.
29757         * sysmath.c: Modified certain functions that were not 100% compliant
29758         with MS.NET (math precision) and added the implementation of Floor,
29759         Round and Round2.
29760
29761 2003-02-07  Martin Baulig  <martin@ximian.com>
29762
29763         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
29764
29765 2003-02-07  Martin Baulig  <martin@ximian.com>
29766
29767         * debug-mono-symfile.c: Reflected latest symwriter changes.
29768         (mono_debug_create_mono_symbol_file): Removed.
29769         (mono_debug_open_mono_symbol_file): Take an argument which
29770         specifies whether to create a dynamic symbol file.
29771
29772 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
29773
29774         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
29775
29776 2003-02-05  Martin Baulig  <martin@ximian.com>
29777
29778         * reflection.c (mono_image_build_metadata): Make this public,
29779         protect it against being called multiple times, don't create
29780         resources and don't build the compressed metadata here.
29781         (mono_image_create_pefile): Do this here.
29782
29783         * icall.c
29784         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
29785
29786 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29787
29788         * socket-io.c: fixed bug #36322.
29789
29790 2003-02-06  Piers Haken <piersh@friskit.com>
29791
29792         * appdomain.[ch]:
29793         * class.h:
29794         * debug-mono-symfile.c:
29795         * icall.c:
29796         * loader.c:
29797         * mono-config.c:
29798         * monosn.c:
29799         * reflection.c:
29800         * socket-io.c: warning cleanups
29801
29802 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
29803
29804         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
29805         function. works like remoting invoke, but does a check for the Proxy first.
29806
29807 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
29808
29809         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
29810
29811 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
29812
29813         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
29814         array of pointers.
29815         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
29816         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
29817
29818         * object.c (mono_store_remote_field_new): used by the new jit
29819         instead of mono_store_remote_field
29820         (mono_load_remote_field_new): used by the new jit
29821         instead of mono_load_remote_field
29822
29823 2003-02-05  Patrik Torstensson
29824
29825         * appdomain.c: changed unload to take the domain id instead
29826         of domain
29827         
29828         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
29829
29830
29831 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29832
29833         * appdomain.c: don't look for assemblies in ApplicationBase if
29834         PrivateBinPathProbe is set.
29835
29836 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29837
29838         * object.c: make the first argument in main_args contain the absolute
29839         path to the assembly. Fixes bug #37511.
29840
29841 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29842
29843         * icall.c: get correct UTC offset for countries not using daylight
29844         time saving. Fixes bug #30030.
29845
29846 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29847
29848         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
29849         and 1 are the family).
29850
29851 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
29852
29853         * icall.c (ves_icall_InternalExecute): removed wrong assertion
29854
29855         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
29856
29857 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
29858
29859         * reflection.c: added support for SignatureHelper tokens, which is
29860         needed by the Calli opcode.
29861
29862         * reflection.h: track changes to SignatureHelper class.
29863
29864         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
29865
29866 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29867
29868         * appdomain.c: fixed loading assemblies from PrivateBinPath.
29869
29870 2003-02-03  Patrik Torstensson
29871         * appdomain.[c|h], domain.c : 
29872          - Added support for getting a domain via domain id
29873          - Support for setting and getting domain from System.AppDomain 
29874            (used in cross appdomain channel)
29875          - Added support for get/set for a MonoAppContext on a thread 
29876            (Context class in System.Runtime.Remoting.Contexts),
29877          - Removed hack in Get/SetData and ExecuteAssembly.
29878         
29879         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
29880         the managed world to get control when a proxy is created.
29881
29882         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
29883         
29884 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
29885
29886         * icall.c
29887         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
29888         Populate the codebase field as well.
29889
29890 2003-02-02  Martin Baulig  <martin@ximian.com>
29891
29892         * debug-mono-symfile.c
29893         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
29894         (mono_debug_symfile_add_method): Allow interncalls.
29895
29896 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29897
29898         * icall.c: throw parse exception if strtod fails or the string is empty.
29899
29900 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
29901
29902         * marshal.c: handle object type separately from defined
29903         class types.
29904
29905 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
29906
29907         * marshal.c: handle NATIVE_LPSTR for strings when it's
29908         explicitly specified.
29909
29910 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
29911
29912         * reflection.c, reflection.h, icall.c: setup the reflection
29913         handle cache for ModuleBuilders and AssemblyBuilders.
29914
29915 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
29916
29917         * reflection.c (reflection_methodbuilder_to_mono_method): set
29918         pinvoke flag
29919
29920 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
29921
29922         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
29923
29924 2003-01-29  Dick Porter  <dick@ximian.com>
29925
29926         * threads.c: No need for the fake_thread kludge now that Thread
29927         doesn't run a class constructor
29928         
29929 2003-01-29  Dick Porter  <dick@ximian.com>
29930
29931         * threads.c: Use g_direct_hash instead of the rather bogus
29932         g_int_hash
29933
29934 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
29935
29936         * marshal.c (mono_marshal_get_native_wrapper): add check for null
29937         (fix pinvoke12.exe)
29938         (mono_marshal_get_struct_to_ptr): generate valid IL code
29939         (mono_marshal_get_ptr_to_struct): generate valid IL code
29940         (*): correctly set sig->pinvoke, we need to memdup the signature
29941         to do that
29942
29943 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
29944
29945         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
29946         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
29947
29948 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
29949
29950         * profiler.c: provide more callers information.
29951
29952 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
29953
29954         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
29955
29956         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
29957
29958         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
29959
29960 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
29961
29962         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
29963         exception instead of going into an infinite loop on dates which it 
29964         can't yet handle.
29965
29966         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
29967         out-of-range exception if needed.
29968
29969         * class.c (mono_class_setup_vtable): allow a virtual method to provide
29970         an implementation for an interface method and to override an inherited
29971         method at the same time. 
29972         Imagine a scenario when a virtual method is used to override a
29973         virtual abstract method in a parent class, and this same method 
29974         provides an implementation for an method inherited from an interface. 
29975         In this case, the interface resolution code will set im->slot, which 
29976         means that the virtual method override pass will skip this method 
29977         which means a pointer to the abstract method inherited from the parent
29978         will remain in the vtable of this non-abstract class.
29979
29980         * class.c: (mono_class_setup_vtable): continue search for a real 
29981         method if only an abstract method is found.     
29982
29983 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
29984
29985         * reflection.c: add size to encoding for ByValStr and ByValArray
29986         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
29987
29988 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
29989
29990         * class.c (mono_class_setup_vtable): pass the override info as an
29991         argument.
29992
29993         * class.c (mono_class_setup_vtable): set the slot of overriding methods
29994         correctly.
29995         
29996         * reflection.c (ensure_runtime_vtable); add support for method 
29997         overrides.
29998         
29999 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
30000
30001         * reflection.c (resolution_scope_from_image): Hack to work to work with
30002         dynamic assemblies.
30003
30004         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
30005         added a 'force_ref' argument to force this function to allways return 
30006         a TypeRef. This is needed by mono_image_get_memberref_token ().
30007         
30008 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
30009
30010         * reflection.c (mono_image_get_type_info): interfaces really don't have
30011         a parent.
30012
30013         * reflection.c (mono_image_basic_init): fill out missing fields of
30014         image structure.
30015
30016         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
30017         dynamic assemblies. This is required so dynamic assemblies show up in
30018         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
30019         Type::GetType() etc. This is consistent with MS behaviour.
30020
30021         * image.c image.h reflection.c: add newly created classes to the name 
30022         cache so mono_class_get () will find them.      
30023
30024 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
30025
30026         First part of changes to get IKVM.NET running under mono.
30027         
30028         * appdomain.h, appdomain.c: added new function 
30029         mono_domain_try_type_resolve() which will emit TypeResolve events. 
30030         This function will call AppDomain::DoTypeResolve to do the actual work.
30031
30032         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
30033         moved existing code dealing with dynamic tokens to a new function 
30034         called mono_reflection_lookup_dynamic_token (). This function will 
30035         raise TypeResolve events when appropriate. Since reflection.c is not 
30036         part of libmetadata, a new hook function called 
30037         mono_lookup_dynamic_token() is added to class.c which will call this.
30038
30039         * assembly.h assembly.c: make the invoke_load_hook function public,
30040         so it can be called for dynamic assemblies.
30041
30042         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
30043
30044         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
30045         type isn't found.
30046
30047         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
30048         MonoGHashTable, since it contains pointers to objects which the GC 
30049         needs to track.
30050
30051         * assembly.c (search_loaded): remove unused variable.
30052         
30053 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
30054
30055         * object.c: fixed issue exposed by gcc-generated IL programs
30056         that use RVA data for pointers.
30057
30058 2003-01-25  Martin Baulig  <martin@ximian.com>
30059
30060         * threads.c (start_wrapper): Moved the initialization of
30061         `start_func' above the mono_new_thread_init() call to which we
30062         pass it as argument.
30063
30064 2003-01-24  Martin Baulig  <martin@ximian.com>
30065
30066         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
30067         the MonoThread pointer.
30068
30069 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
30070
30071         * icall.c: Rename `PowImpl' to Pow.
30072
30073 2003-01-23  Dick Porter  <dick@ximian.com>
30074
30075         * threads.c (start_wrapper): Create a Thread object if needed, so
30076         the Main() thread can do the class initialisation in a subthread
30077         that has been set up to allow managed code execution.
30078
30079         Pass the thread ID instead of the MonoThread pointer to the thread
30080         start and attach callbacks.  This change is required, because the
30081         jit thread start callback must be called _before_ the Thread
30082         object can be created.
30083         
30084         (mono_thread_init): Removed much object creation code that is no
30085         longer needed.  No managed code is called from here now.
30086
30087         * object.c (mono_runtime_exec_managed_code): Create a subthread
30088         for Main, and call back to the runtime to use it.
30089         Set the exit code when Main exits.
30090
30091         * gc.c: Make sure domain finalisation happens in a subthread.
30092         Re-enable threaded GC, fixing bug 31333 (again).
30093
30094         * environment.c: System.Environment internall calls (so far just
30095         ExitCode is here, the others are still in icall.c)
30096
30097         * appdomain.c (mono_runtime_cleanup): All threads running managed
30098         code should have finished before mono_runtime_cleanup() is
30099         reached, so no need to clean up threads.
30100
30101 2003-01-22  Martin Baulig  <martin@ximian.com>
30102
30103         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
30104         `gpointer func' arguments.      
30105         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
30106         but added `MonoThread *thread' argument.
30107         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
30108
30109         * threads.c (mono_new_thread_init): Added `gpointer func' argument
30110         and pass it to the mono_thread_start_cb callback.
30111         (mono_install_thread_callbacks): New public function to install a
30112         set of callbacks which are set by the debugger.
30113         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
30114
30115 2003-01-22  Martin Baulig  <martin@ximian.com>
30116
30117         * Makefile.am: Install debug-mono-symfile.h.
30118
30119 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
30120
30121         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
30122
30123 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
30124
30125         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
30126         * class.c (mono_ptr_class_get): correctly set access levels of pointers
30127         (mono_array_class_get): correctly set access levels of arrays
30128
30129 2003-01-20      Patrik Torstensson
30130         * image.h (MonoAssemblyName): changed major, minor, build, revision
30131         from signed to unsigned.
30132
30133 2003-01-20  sean kasun <skasun@azstarnet.com>
30134
30135         * reflection.c (load_cattr_value): Now this handles
30136         MONO_TYPE_SZARRAY.  Fixes bug #35629
30137
30138 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
30139
30140         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
30141         integer value
30142
30143 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30144
30145         * decimal.c: fixed bug #26056.
30146
30147 2003-01-17  Martin Baulig  <martin@ximian.com>
30148
30149         * gc.c: Raise an ExecutionEngineException instead of using g_error().
30150
30151 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30152
30153         * exception.[ch]:
30154         (mono_get_exception_type_initialization): new function.
30155
30156         * object.c: throw a TypeInitializationException when an exception is
30157         thrown invoking the class constructor.
30158
30159 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30160
30161         * reflection.c: fixed attribute reading.
30162
30163 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30164
30165         * icall.c:
30166         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
30167         provided, look for the type in the calling assembly and then in
30168         mscorlib; if the assembly name is provided, only try that one.
30169
30170 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
30171
30172         * object.c: register the vtable before there is a chance it's
30173         queried again recursively.
30174
30175 2003-01-13  Duncan Mak  <duncan@ximian.com>
30176
30177         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
30178         gc-internal.h. 
30179         
30180 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
30181
30182         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
30183
30184 2003-01-11  Martin Baulig  <martin@ximian.com>
30185
30186         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
30187         this to 20 for the release.
30188
30189 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
30190
30191         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
30192
30193         * loader.c (mono_method_get_marshal_info): bug fix
30194
30195         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
30196         structures with explicit layout
30197
30198 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
30199
30200         * profiler.c: made the output more readable (and sorted). 
30201         Added caller information for the allocation profiler.
30202
30203 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
30204
30205         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
30206
30207 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30208
30209         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
30210         to get value types.
30211         
30212 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
30213
30214         * object.c, profiler.h, profiler.c, profiler-private.h:
30215         Added object allocation profiler.
30216
30217 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
30218
30219         * reflection.h, reflection.c: handle global methods.
30220         Compress blob entries.
30221
30222 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
30223
30224         * marshal.c: fix compilation.
30225
30226 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
30227
30228         * loader.c (mono_method_get_marshal_info): impl.
30229
30230         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
30231
30232 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30233
30234         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
30235         for reference types.
30236
30237 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
30238
30239         * loader.c: fixed off by one error in loaded parameter names.
30240
30241 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
30242
30243         * marshal.c (mono_marshal_get_icall_wrapper): like
30244         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
30245         instead of a MonoMethod.
30246
30247 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30248
30249         * decimal.c: fixed bug #36537.
30250
30251 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
30252
30253         * marshal.c: throw a missing method exception if a
30254         P/Invoke method is not found.
30255
30256 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
30257
30258         * icall.c: allow a null this for constructors.
30259
30260 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
30261
30262         * icall.c: raise the proper exceptions if the arguments to the
30263         internal Invoke are incorrect.
30264
30265 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
30266
30267         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
30268
30269 2003-01-03  Martin Baulig  <martin@ximian.com>
30270
30271         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
30272
30273 2002-12-31  Martin Baulig  <martin@ximian.com>
30274
30275         * debug-mono-symfile.c: Completely rewrote the type section.
30276         Instead of using individual malloc()ed fields, we use one big
30277         continuous memory area and offsets into this area.
30278         See the comments in the source code for details.
30279
30280 2002-12-30  Martin Baulig  <martin@ximian.com>
30281
30282         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
30283
30284 2002-12-30  Martin Baulig  <martin@ximian.com>
30285
30286         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
30287         line number table in this data blob instead of using an external
30288         pointer.
30289
30290 2002-12-28  Martin Baulig  <martin@ximian.com>
30291
30292         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
30293
30294 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
30295
30296         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
30297         as a boxed return type.
30298
30299 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
30300
30301         * appdomain.c
30302         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
30303         g_build_filename to properly get separators on the filename created.
30304
30305         * object.h: Small change, introduce MonoMarshalByRefObject to
30306         track the layout of that structure in the C# universe as we make
30307         changes there.
30308
30309 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
30310
30311         * object.c: removed assert to allow static fields on interfaces.
30312         * loader.c: a TypeSpec may be used for any type, not just arrays.
30313
30314 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
30315
30316         * class.c, class.h: added mono_class_array_element_size ().
30317         Ignore static methods in interfaces.
30318
30319 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30320
30321         * threads.c: fixed the build under cygwin.
30322
30323 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
30324
30325         * reflection.c: handle nullref constants. Allocate keys for
30326         reflection handles with the GC.
30327
30328 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30329
30330         * threads.c, threads.h: added mono_thread_get_abort_signal()
30331         to get a suitable signal for thread abort.
30332
30333 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
30334
30335         * metadata.c: fix handling of ExportedType table.
30336
30337 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30338
30339         * icall.c: added WriteWindowsDebugString internal call.
30340
30341 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30342
30343         * reflection.h: added fields to match C# implementation.
30344
30345 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30346
30347         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
30348
30349 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
30350
30351         * gc.h, gc-internal.h: Rename header for GC internal calls to
30352         gc-internal.h from gc.h as to not clash with Boehm GC having its
30353         header installed as <gc.h> in outside include paths.
30354         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
30355         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
30356
30357 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30358
30359         * icall.c: assign minor, build and revision in FillName.
30360
30361 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
30362
30363         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
30364         Added support for running code generated by Reflection.Emit.
30365
30366 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30367
30368         * appdomain.c: check for NULL argument in LoadFrom.
30369
30370 2002-12-10  Dick Porter  <dick@ximian.com>
30371
30372         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
30373
30374 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30375
30376         * appdomain.c: fix buglet when building exe file name.  Handle full
30377         assembly name (needed after latest changes to AssemblyName).
30378         * image.c:
30379         (mono_image_close): free some hashtables.
30380
30381 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
30382
30383         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
30384         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
30385         on some systems (redhat 7.3) 
30386
30387 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
30388
30389         * threads.c: delete the critical section of a sync block,
30390         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
30391
30392 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
30393
30394         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
30395
30396 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30397
30398         * appdomain.[ch]: handle the assembly preload event to try loading the
30399         assemblies using the paths we have in the current domain.
30400
30401         * assembly.[ch]: created an assembly preload hook that is called to try
30402         loading the assembly by other means that the ones provided here.
30403
30404         * domain.c: initialize the domain search path.
30405
30406         From now on, assemblies (TODO: except corlib and System) are loaded
30407         according to these rules when using mono_assembly_load ():
30408
30409                 1. It tries to load the assembly from the ApplicationBase
30410                 of the current domain appending .dll and .exe (TODO: have to
30411                 try loading from name/name.dll and name/name.exe).
30412
30413                 2. It tries the search path specified in PrivateBinPath for the
30414                 current domain (if any).
30415
30416                 3. Previous behavior.
30417
30418 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
30419
30420         * icall.c: implemented GetInterfaceMap() related icall.
30421         * domain.c, loader.h: load MethodInfo in mono_defaults.
30422
30423 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
30424
30425         * gc.c: disable the finalizer thread for now, untill all the issues
30426         with it are resolved.
30427
30428 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
30429
30430         * string-icalls.c: handle embedded nulls in string ctor when the
30431         length is specified.
30432
30433 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
30434
30435         * class.c: look for explicit interface implementation in parent
30436         classes, too.
30437
30438 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
30439
30440         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
30441
30442 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
30443
30444         * gc.c: protect handles with a critical section.
30445
30446 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30447
30448         * icall.c:
30449         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
30450         parameters. If no assembly specified, try getting the type from all
30451         the assemblies in the current domain, else, load the assembly and get
30452         the type from it.
30453
30454 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30455
30456         * marshal.c: applied patch from Aleksey Demakov that fixes
30457         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
30458
30459 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30460
30461         * icall.c: fixed get_location.
30462
30463 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
30464
30465         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
30466         declarations to make it work with older gcc. 
30467
30468         * loader.c (mono_get_method): set signature->pinvoke for native calls
30469
30470 2002-11-20  Dick Porter  <dick@ximian.com>
30471
30472         * threads.c (mono_thread_init): Set the main thread's handle
30473
30474 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
30475
30476         * gc.c: allow compilation without GC support. Changed to match the
30477         mono coding style.
30478
30479 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
30480
30481         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
30482
30483 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
30484
30485         * reflection.c: set a public key token on the core assemblies.
30486
30487 2002-11-18  Dick Porter  <dick@ximian.com>
30488
30489         * threads.c: Split out some thread initialisation so that other
30490         files can set the start callback function.
30491
30492         * gc.c: Run finalisers in a separate thread, to avoid stack
30493         overflow.  Fixes bug 31333.
30494
30495         * appdomain.c: Set up GC finalisation thread.
30496
30497         * reflection.c: 
30498         * object.c: 
30499         * domain.c: Use gc.h macros for GC_malloc
30500         
30501 2002-11-15  Dick Porter  <dick@ximian.com>
30502
30503         * threadpool.c: 
30504         * threads.c:
30505         * appdomain.c: Removed mono_runtime_init_with_attach(),
30506         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
30507         merging the extra parameter with the existing function.  Removed
30508         unneeded code in mono_thread_attach().
30509
30510 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
30511
30512         * image.c (mono_image_loaded_by_guid): a method to get loaded
30513         images by guid. 
30514         (load_metadata_ptrs): we store the guid as string.
30515
30516 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
30517
30518         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
30519
30520         * metadata.c (mono_guid_to_string): imported method form Zoltan
30521         Varga (slightly modified)
30522
30523         * assembly.c (mono_assembly_open): load precompiled code
30524
30525         * loader.h (MonoMethod): we store the method token for use in the
30526         aot compiler. 
30527
30528 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30529
30530         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
30531         the hook function called when an assembly is loaded.
30532         
30533         * domain.c: Modified file.
30534         (mono_domain_assembly_load): removed hash table insertion of assemblies.
30535
30536         Fixes bug #33196.
30537
30538 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
30539
30540         * reflection.c: Map PEFileKind to the value expected by the WinNT
30541         image loader. 
30542
30543 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30544
30545         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
30546         Read until the buffer is filled completely.
30547
30548 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30549
30550         * icall.c: implemented MonoType.InternalGetEvent ().
30551
30552 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30553
30554         * appdomain.c: implemented InitAppDomainSetup. Delayed
30555         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
30556         the entry_assembly.
30557
30558         * assembly.c: base_dir is now an absolute path ending with
30559         G_DIR_SEPARATOR.
30560
30561         * icall.c: modified get_location according to the above changes.
30562
30563         * object.c: init AppDomain.SetupInformation for the default domain after
30564         we have the entry assembly.
30565
30566         * domain.c: when unloading a domain, setup = NULL.
30567
30568 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
30569
30570         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
30571
30572 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
30573
30574         * object.h, object.c: introduced mono_object_get_virtual_method ()
30575         to lookup the method invoked on an object when a callvirt is done on
30576         a method.
30577         * icall.c: make MethodInfo::Invoke() always do a virtual call.
30578
30579 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30580
30581         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
30582         current domain when loaded an assembly and failed to load it.
30583
30584         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
30585
30586 2002-10-31  Dick Porter  <dick@ximian.com>
30587
30588         * icall.c: 
30589         * file-io.h: 
30590         * file-io.c: Return the error status in a parameter, as the
30591         GetLastError() value has long since been blown away if we try and
30592         look it up in a subsequent internal call invocation.  Delete the
30593         GetLastError() internal call, because it's useless.
30594
30595 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
30596
30597         * class.[ch]: added cast_class to fix bug 29517
30598
30599 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
30600
30601         * marshal.c: create valid IL code in the filter clause:
30602         the new JIT is less forgiving:-)
30603
30604 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30605
30606         * icall.c: removed get_property internal call.
30607
30608 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
30609
30610         * appdomain.h domain.c: Added an ID to appdomains.
30611         
30612         * threads.c threads.h icall.c: Implement icall
30613         Thread:GetDomainID(), and remove unused icall 
30614         CurrentThreadDomain_internal.
30615
30616 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30617
30618         * icall.c: Don't recurse through the base types in GetConstructor.
30619         Fixes bug #32063. 
30620
30621 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
30622
30623         * mempool.h, mempool.c: added mono_mempool_empty() and
30624         mono_mempool_stats().
30625
30626 2002-10-23  Dick Porter  <dick@ximian.com>
30627
30628         * file-io.c: 
30629         * file-io.h: 
30630         * icall.c: Added MonoIO.GetFileType internal call
30631
30632 2002-10-17  Dick Porter  <dick@ximian.com>
30633
30634         * appdomain.c (mono_runtime_cleanup): Don't signal the async
30635         delegate semaphore before waiting for all threads to finish,
30636         because new threads can also call async delegates.  Fixes bug
30637         32004.
30638
30639         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
30640         of 3 seconds, in case another async job is queued.  (This part is
30641         needed because the bug fix reintroduced the 3s exit lag.)  This
30642         makes the mono_runtime_shutdown flag superfluous.
30643
30644 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
30645
30646         * reflection.c: include ehader size in method section headers.
30647         Really check for suplicated modules entries.
30648
30649 2002-10-17  Martin Baulig  <martin@gnome.org>
30650
30651         * debug-mono-symfile.c: Added back support for locals.
30652
30653 2002-10-14  Martin Baulig  <martin@gnome.org>
30654
30655         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
30656         MONO_TYPE_VOID.
30657
30658 2002-10-14  Martin Baulig  <martin@gnome.org>
30659
30660         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
30661         mono_class_get() instead of looking in the class cache. 
30662
30663 2002-10-13  Martin Baulig  <martin@gnome.org>
30664
30665         * debug-mono-symfile.c: Set version number to 28, include the
30666         signature in method names.
30667
30668 2002-10-13  Martin Baulig  <martin@gnome.org>
30669
30670         * debug-mono-symfile.h: Set version number to 27.
30671
30672 2002-10-11  Martin Baulig  <martin@gnome.org>
30673
30674         * gc.c: Don't register/unregister NULL pointers as disappearing links.
30675
30676 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
30677
30678         * metadata.c, metadata.h: added helper function to allocate signatures.
30679
30680 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30681
30682         * icall.c: added internal call to get the location of machine.config.
30683
30684 2002-10-08  Martin Baulig  <martin@gnome.org>
30685
30686         * debug-mono-symfile.c: Ignore classes with a pending init for the
30687         moment.
30688
30689 2002-10-03  Dick Porter  <dick@ximian.com>
30690
30691         * threads.c: Freebsd pthread_t is a pointer
30692
30693 2002-10-03  Dick Porter  <dick@ximian.com>
30694
30695         * socket-io.c: Implemented GetHostName_internal
30696
30697 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30698
30699         * mono-config.c:
30700         (mono_config_parse_file): don't leak the text.
30701
30702 2002-10-02  Martin Baulig  <martin@gnome.org>
30703
30704         * debug-mono-symfile.c: Added support for methods.
30705
30706 2002-10-01  Martin Baulig  <martin@gnome.org>
30707
30708         * debug-mono-symfile.c: Don't emit methods and line numbers for
30709         the dynamic symbol file, just write the type table.  We can easily
30710         have an external helper program which creates a symbol file for an
30711         IL file.        
30712
30713 2002-10-01  Dick Porter  <dick@ximian.com>
30714
30715         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
30716         Only add the handle to the cleanup array when we're about to
30717         launch the thread.  Bug 31425 deadlocked when the test was run on
30718         mono under w32.
30719
30720 2002-10-01  Martin Baulig  <martin@gnome.org>
30721
30722         * debug-mono-symfile.c: Added support for properties.
30723
30724 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
30725
30726         * reflection.c: unaligned store fix from Mark Crichton
30727         <crichton@gimp.org>.
30728
30729 2002-09-27  Martin Baulig  <martin@gnome.org>
30730
30731         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
30732         New interncall.
30733
30734 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
30735
30736         * assembly.h, assembly.c: use a sane API to hook into the assembly
30737         loading process instead of a useless special-purpouse hack
30738         (ngen needs a hook, too, for example).
30739
30740 2002-09-27  Dick Porter  <dick@ximian.com>
30741
30742         * threads.c (mono_thread_init): Call GetCurrentProcess() so
30743         io-layer can set up some process handle info.  Not needed on w32,
30744         but doesn't hurt either.
30745
30746         * process.c: Pass the program name in the second parameter to
30747         CreateProcess, so the path is searched.  Include the working
30748         directory. Implemented process name, process enumeration, and some
30749         process detail internal calls.
30750         
30751         * icall.c: Added internal calls for process lookup, and some
30752         process details
30753
30754 2002-09-26  Martin Baulig  <martin@gnome.org>
30755
30756         * assembly.c (mono_install_open_assembly_hook): New global
30757         function to install a function to be invoked each time a new
30758         assembly is loaded.
30759         (mono_assembly_open): Run this callback function if set.
30760
30761         * debug-mono-symfile.c: Put back line numbers for the dynamic
30762         symbol file and also record the .il file as source file.  This
30763         allows us to install the temporary symbol file as `file.dbg' just
30764         like a compiler-generated one.
30765
30766 2002-09-26  Nick Zigarovich <nick@chemlab.org>
30767
30768         * Corrected typo in gc.c (BOHEM vs BOEHM).
30769
30770 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30771
30772         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
30773         GetProperties. Also avoid calling g_slist_length in GetProperties and
30774         GetMethods.
30775
30776 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
30777
30778         * reflection.c: avoid unaligned stores (bug spotted by
30779         Mark Crichton  <crichton@gimp.org>).
30780
30781 2002-09-25  Martin Baulig  <martin@gnome.org>
30782
30783         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
30784         instead of guint64 for addresses and added prologue/epilogue info.
30785
30786 2002-09-25  Martin Baulig  <martin@gnome.org>
30787
30788         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
30789         store line number info.  For the dynamic symbol file, we only need
30790         to provide the JIT generated dynamic line number info for the dynamic
30791         symbol file.
30792
30793 2002-09-25  Martin Baulig  <martin@gnome.org>
30794
30795         * debug-mono-symfile.h: Incremented version number.
30796
30797 2002-09-24  Martin Baulig  <martin@gnome.org>
30798
30799         * class.c (mono_debugger_class_init_func): New global function
30800         pointer variable.
30801         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
30802         call it.
30803
30804         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
30805         function.  This is called via the mono_debugger_class_init_func
30806         hook to add all types to the dynamic type table.
30807         (ves_icall_MonoDebugger_GetType): New interncall to get a class
30808         from its metadata token.
30809
30810         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
30811         New interncall for the debugger.
30812
30813 2002-09-24  Nick Drochak <ndrochak@gol.com>
30814
30815         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
30816         before using it in case it is null.
30817         
30818 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
30819
30820         * metadata.c: allow custom modifiers in local var signatures
30821         (bug spotted by Zoltan Varga).
30822
30823 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
30824
30825         * class.c: deal with the <Module> class that may have a NULL vtable.
30826         Eliminate warnings.
30827
30828 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
30829
30830         * image.c, image.h: more strong name helpers.
30831         * monosn.c: more work: convert pem keys to cryptoapi format.
30832
30833 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
30834
30835         * string-icalls.c: speedup IndexOf.
30836
30837 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
30838
30839         * icall.c: updates from Zoltan.2.Varga@nokia.com.
30840
30841 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
30842
30843         * icall.c: cleanup: use mono_object_domain ().
30844
30845 2002-09-23  Martin Baulig  <martin@gnome.org>
30846
30847         * debug-mono-symfile.c: Improved type support.
30848
30849 2002-09-22  Martin Baulig  <martin@gnome.org>
30850
30851         * debug-mono-symfile.c: Added support for reference types and strings.
30852
30853 2002-09-22  Martin Baulig  <martin@gnome.org>
30854
30855         * debug-mono-symfile.c: Started to work on the type table.
30856
30857 2002-09-21  Martin Baulig  <martin@gnome.org>
30858
30859         * debug-mono-symfile.c: Largely reworked the symbol table format.
30860         The symbol table is now incrementally updated each time a new
30861         method is added.  We're now also using our own magic and version
30862         so that you don't need to recompile all your classes if the
30863         dynamic table changes.
30864         (mono_debug_update_mono_symbol_file): Removed.
30865         (mono_debug_symfile_add_method): New function to add a method.
30866
30867 2002-09-21  Martin Baulig  <martin@gnome.org>
30868
30869         * icall.c
30870         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
30871         New interncall.
30872
30873         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
30874         New interncall to get a method from its metadata token.
30875
30876 2002-09-21  Martin Baulig  <martin@gnome.org>
30877
30878         * debug-mono-symfile.c: Create type table.
30879
30880 2002-09-20  Martin Baulig  <martin@gnome.org>
30881
30882         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
30883
30884 2002-09-20  Martin Baulig  <martin@gnome.org>
30885
30886         * debug-mono-symfile.c: Provide information about params and locals.
30887
30888 2002-09-20  Martin Baulig  <martin@gnome.org>
30889
30890         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
30891         New interncall.
30892
30893         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
30894         interncall to get a method from its metadata token.
30895
30896 2002-09-20  Martin Baulig  <martin@gnome.org>
30897
30898         * debug-mono-symfile.c: Added a few checks for method->header
30899         being non-NULL.  This should never happen, but for the moment
30900         let's use a g_warning() rather than a g_assert().
30901
30902 2002-09-19  Mark Crichton  <crichton@gimp.org>
30903
30904         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
30905         even if support for it isn't present.  Added an #ifdef to fix this.
30906
30907         * socket-io.c: Added checks back for Solaris support.
30908
30909 2002-09-19  Martin Baulig  <martin@gnome.org>
30910
30911         * debug-mono-symfile.c (read_string, write_string): Reflect latest
30912         changes in the symbol file format.
30913
30914 2002-09-18  Martin Baulig  <martin@gnome.org>
30915
30916         * debug-mono-symfile.c: Set version number to 21.
30917
30918 2002-09-18  Dick Porter  <dick@ximian.com>
30919
30920         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
30921         on netbsd.  Fixes bug 30051.
30922
30923 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
30924
30925         * reflection.c:
30926         (set_version_from_string): little fix.
30927
30928 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
30929
30930         * monosn.c, Makefile.am: added strong name utility.
30931         * reflection.h, reflection.c: implemented delayed signing,
30932         locale, version and hash id assembly attributes.
30933
30934 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
30935
30936         * loader.c, metadata.c: load param attributes in signatures.
30937
30938 2002-09-16  Martin Baulig  <martin@gnome.org>
30939
30940         * debug-mono-symfile.c: Added string table with all method names.
30941
30942 2002-09-14  Martin Baulig  <martin@gnome.org>
30943
30944         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
30945         fast method lookup.
30946
30947 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
30948
30949         * reflection.c: record the public key token of referenced assemblies.
30950
30951 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
30952
30953         * image.c, image.h: added functions to get the strong name and the
30954         public key of an assembly.
30955         * pedump.c: use them.
30956
30957 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
30958
30959         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
30960
30961 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
30962
30963         * marshal.c (mono_marshal_get_managed_wrapper): Added
30964         MONO_TYPE_BOOLEAN 
30965
30966 2002-09-11  Martin Baulig  <martin@gnome.org>
30967
30968         * gc.c: Call GC_unregister_disappearing_link() on all links when
30969         finalizing them, this is necessary to aviod a crash in boehm's
30970         finalize handler.
30971
30972 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
30973
30974         * gc.c: handle GetTarget for finalized objects spotted and fixed by
30975         nick@chemlab.org.
30976
30977 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
30978
30979         * icall.c: implemented MonoType::Module.
30980         * reflection.c, reflection.h: mono_module_get_object () from
30981         Tomi Pakarinen <tomi.pakarinen@welho.com>.
30982
30983 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
30984
30985         * icall.c: ignore overridden methods in GetMethods ().
30986         Fix for FieldInfo::SetValue().
30987         * object.c: handle float/double in runtime invoke.
30988
30989 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
30990
30991         * object.c: allow a constructor to be called again on an object.
30992
30993 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
30994
30995         * class.h, class.c: move field layout code to it's own function and
30996         export it. Get an interface id earlier. Move fields in MonoClass
30997         so they are more cache friendly and align the bitfields.
30998         * loader.c: temporary handle get_param_names() for a runtime method.
30999         * reflection.c, reflection.h: more code to handle runtime creation of
31000         types.
31001
31002 2002-09-09  Martin Baulig  <martin@gnome.org>
31003
31004         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
31005         signature with the pinvoke field being set for the actual call.
31006
31007 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
31008
31009         * icall.c: removed some unused icalls. Start of map of glib charsets
31010         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
31011
31012 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
31013
31014         * debug-helpers.c: break infinite loop (found and fixed by
31015         Holger Arnold <harnold@gmx.de>).
31016
31017 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
31018
31019         * icall.c: target may be null in create_delegate.
31020
31021 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
31022
31023         * marshal.c: handle a boolean return type.
31024
31025 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
31026
31027         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
31028
31029 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
31030
31031         * gc.c: fix weakreferences.
31032
31033 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
31034
31035         * icall.c: added icall to get default codepage.
31036
31037 2002-09-03  Dick Porter  <dick@ximian.com>
31038
31039         * threads.h: 
31040         * threads.c: Use MonoThread instead of MonoObject where
31041         apropriate.
31042
31043         Store running thread objects in a hash table, so that we have all
31044         the info to hand when waiting for them to finish
31045         (means we don't need OpenThread() any more, so mingw builds should
31046         be fully functional again.)
31047
31048         * verify.c:
31049         * object.h: Added thread ID to MonoThread
31050
31051 2002-09-03  Martin Baulig  <martin@gnome.org>
31052
31053         * icall.c (System.Reflection.Assembly::get_location): New interncall.
31054
31055 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31056
31057         * icall.c: fixed leak in get_temp_path. Thanks lupus.
31058
31059 2002-09-03  Martin Baulig  <martin@gnome.org>
31060
31061         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
31062         argument to store the end address of the disassembled instruction.
31063
31064         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
31065         here from debug-symfile.h.
31066         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
31067         JIT into this struct.
31068         (MonoSymbolFile): Added `char *image_file' field.
31069         (MonoDebugGetMethodFunc): Removed.
31070         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
31071         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
31072         (mono_debug_find_method): New method.
31073
31074         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
31075         create a full symbol file.
31076         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
31077         and static symbol files.
31078         (mono_debug_find_method): The symbol file keeps an internal method hash,
31079         call this to get a MonoDebugMethodInfo from a MonoMethod.
31080
31081         * debug-symfile.[ch]: Removed.
31082
31083 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
31084
31085         * image.c (do_mono_image_open): Remove linker version check.
31086
31087 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
31088
31089         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
31090         wrappers for instance methods.
31091         
31092 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31093
31094         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
31095
31096 2002-08-28  Dick Porter  <dick@ximian.com>
31097
31098         * Makefile.am: Export HOST_CC for w32 builds
31099
31100 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
31101
31102         * file-io.c process.c: MonoString are null terminated, no
31103         need for mono_string_to_utf16() anymore.
31104
31105 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
31106
31107         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
31108
31109 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
31110
31111         * icall.c, reflection.h: speedup System.MonoType.
31112
31113 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
31114
31115         * reflection.c: allow null as the value of a string argument in
31116         custom attributes constructors.
31117
31118 2002-08-27  Martin Baulig  <martin@gnome.org>
31119
31120         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
31121         `trampoline_address' field.
31122
31123 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
31124
31125         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
31126         check (fixes bug #29486) 
31127
31128 2002-08-27  Martin Baulig  <martin@gnome.org>
31129
31130         * debug-mono-symfile.c: Changed the file format in a way that allows us
31131         open it read-only and to use a specially malloced area for all the
31132         dynamic data.  We can now also generate a symbol file on-the-fly if we're
31133         debugging IL code and there is no MCS generated symbol file for it.
31134
31135 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
31136
31137         * object.c: added a define for a good string and array
31138         creation speedup (not enabled by default because we need to deal with
31139         the synch stuff).
31140
31141 2002-08-26  Martin Baulig  <martin@gnome.org>
31142
31143         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
31144         function to create a dynamic symbol file.  This is used by the
31145         debugger to create a symbol file for IL code on-the-fly.
31146
31147 2002-08-26  Martin Baulig  <martin@gnome.org>
31148
31149         * loader.c (mono_lookup_pinvoke_call): Include the error message
31150         from g_module_error() in the error message.
31151
31152 2002-08-24  Martin Baulig  <martin@gnome.org>
31153
31154         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
31155         function to update the symbol file.  The symbol file is mmap()ed
31156         writable, but private.  This allows us to install the symbol file
31157         together with the assembly.
31158
31159 2002-08-24  Martin Baulig  <martin@gnome.org>
31160
31161         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
31162         but they can read the new symbol file format which mcs is now creating.
31163
31164         * debug-symfile.c (mono_debug_find_source_location): Moved to
31165         debug-mono-symfile.c; this is now operating on the new symbol file.
31166
31167 2002-08-23  Martin Baulig  <martin@gnome.org>
31168
31169         * debug-helpers.c (mono_method_desc_from_method): New function to get
31170         a MonoMethodDesc from a MonoMethod.
31171
31172 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
31173
31174         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
31175         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
31176
31177 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
31178
31179         * string-icalls.[ch]: make helper methods static.
31180
31181 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31182
31183         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
31184         types to it and to SetValueInternal.
31185
31186         * object.c: Moved handle_enum label to its proper place. This was the
31187         f... bug! ;-)
31188
31189         This time i compiled mcs and gtk-sharp and they both work.
31190
31191 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31192
31193         * icall.c: reverted partially my previous patch until 
31194         object.c:set_value handles enums correcly.
31195
31196 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31197
31198         * icall.c:
31199         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
31200         (ves_icall_System_Environment_get_MachineName): removed warning when
31201         compiling under cygwin.
31202
31203 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
31204
31205         * object.c: fixed field_get_value() for reference types.
31206
31207 2002-08-22  Dick Porter  <dick@ximian.com>
31208
31209         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
31210         Don't free a buffer while it's still needed.  Patch from Jonathan
31211         Liger <Jonathan.liger@wanadoo.fr>
31212
31213 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
31214
31215         * icall.c (ves_icall_System_Environment_get_Platform): Add new
31216         internal call.
31217
31218 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
31219
31220         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
31221         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
31222
31223         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
31224         we call unmanaged code which throws exceptions.
31225
31226 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
31227
31228         * appdomain.h: added per-domain entry_assembly.
31229         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
31230         arguments.
31231         * icall.c: Assembly::GetEntryAssembly icall.
31232         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
31233         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
31234
31235 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
31236
31237         * appdomain.h, gc.c: added mono_domain_finalize ().
31238
31239 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31240
31241         * object.c:
31242         (mono_print_unhandled_exception): changed g_warning by g_printerr
31243         because g_log has a 1024 characters limit (yeah, i got a big stack
31244         trace). Don't print exception name, that should be in ToString 
31245         returned string.
31246
31247 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31248
31249         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
31250         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
31251
31252 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31253
31254         * object.c:
31255         (mono_print_unhandled_exception): after previous commit, i realized
31256         that MS calls ToString on the exception. I changed this function to
31257         do that. This way we get stack_trace for free.
31258
31259 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31260
31261         * object.c:
31262         (mono_print_unhandled_exception): invoke Message property instead of
31263         getting 'message' field from Exception. Don't allocate memory for
31264         'trace' and 'message' if not needed.
31265
31266 2002-08-18  Dick Porter  <dick@ximian.com>
31267
31268         * unicode.c: Fix asserts to match Encoder.cs checks
31269
31270 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
31271
31272         * marshal.c: fix unaligned store issue and a few wrong
31273         opcode argument types.
31274
31275 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31276
31277         * icall.c: added GetUninitializedObjectInternal internal call.
31278
31279 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
31280
31281         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
31282         to the right domain.
31283
31284 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
31285
31286         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
31287
31288         * class.c (class_compute_field_layout): set blittable to false for Strings
31289
31290         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
31291
31292 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
31293
31294         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
31295         first chunk of code to create types at runtime. Code to
31296         handle ReflectedType/DeclaringType. Make reflection handles
31297         domain specific.
31298
31299 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
31300
31301         * class.c: set correct name in arrays.
31302
31303 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
31304
31305         * appdomain.c (mono_domain_transfer_object): make it work with
31306         valuetypes. bug fixes.
31307
31308 2002-08-12  Dick Porter  <dick@ximian.com>
31309
31310         * object.h: Rename some parameters to avoid c++ keywords (Patch
31311         from Joseph Wenninger <kde@jowenn.at>)
31312
31313 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
31314
31315         * icall.c: added icall to implement Assembly.GetFile*.
31316
31317 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
31318
31319         * reflection.h, reflection.c: code to embed managed resources.
31320
31321 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
31322
31323         * class.c: move all the type size stuff into
31324         class_compute_field_layout().
31325
31326 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
31327
31328         * class.c: ensure enums have always the correct instance size.
31329         * unicode.c: remove wrong assert.
31330
31331 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
31332
31333         * assembly.c: fix mem corruption issue.
31334         * image.h, image.c: added mono_image_get_resource () to access
31335         managed resources.
31336         * icall.c: implemented Assembly.EntryPoint property and some
31337         Managed Resources related internalcalls.
31338
31339
31340 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
31341
31342         * image.c, image.h: impemented mono_image_get_entry_point ().
31343         * appdomain.c: use mono_image_get_entry_point.
31344
31345 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
31346
31347         * reflection.c: support the object type argument when loading
31348         custom attributes.
31349
31350 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
31351
31352         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
31353         String as return type.
31354
31355 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
31356
31357         * reflection.c: fix encoding of named args for custom attrs to match
31358         the ms implementation. Read them back when instantiating custom
31359         attributes.
31360
31361 2002-08-02  Radek Doulik  <rodo@ximian.com>
31362
31363         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
31364         by Dietmar as quick fix
31365         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
31366         16 as stack size, used on more places as quick fix before Dietmar
31367         will fix it properly
31368
31369 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
31370
31371         * object.h, object.c: added accessors for fields and properties.
31372
31373 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
31374
31375         * class.c, class.h: made mono_class_get_field_from_name ()
31376         loop on parent types.
31377         Added mono_class_get_property_from_name ().
31378
31379 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
31380
31381         * class.c, class.h: move the code to setup the type vtable in its own
31382         function so that it can be reused also for types created at runtime.
31383         Eliminate the "class" identifier from the header file.
31384         * reflection.c: setup the vtable for enums so that we can create
31385         objects for use in SetConstant ().
31386
31387 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
31388
31389         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
31390         instead of the delegate itself as this pointer (bug #28383)
31391
31392 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
31393
31394         * marshal.c (mono_marshal_get_managed_wrapper): added return type
31395         conversions.
31396
31397 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
31398
31399         * loader.c: don't set the pinvoke bit on icalls.
31400
31401 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
31402
31403         * debug-helpers.c (mono_method_full_name): only print a number to
31404         indicate wrapper type (so that the output is more readable in traces).
31405
31406 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
31407
31408         * class.c (mono_class_init): include method override patch from Paolo
31409
31410 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
31411
31412         * icall.c: fixed GetTypeCode().
31413
31414 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
31415
31416         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
31417         use real delegate invoke function to make it work with multicast
31418         delegates (fix bug# 28291).
31419
31420 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
31421
31422         * object.c: load constant strings.
31423
31424 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
31425
31426         * reflection.c: no magic numbers.
31427         * tabledefs.h: security action enum.
31428
31429 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
31430
31431         * assembly.c: fix possible memory corruption.
31432
31433 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
31434
31435         * reflection.h, reflection.c: added support for linking resources.
31436         * verify.c: check we have an updated corlib.
31437
31438 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
31439
31440         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
31441         string arrays.
31442         (mono_marshal_string_array): null terminate unmanaged string arrays.
31443         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
31444
31445 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
31446
31447         * icall.c: Type.GetType () can now return also types from the
31448         calling assembly.
31449
31450 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
31451
31452         * loader.h, loader.c: stack walking support.
31453         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
31454         GetCallingAssembly.
31455
31456 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
31457
31458         * marshal.c: added optimisations for blittable types 
31459
31460         * class.c (mono_array_class_get): do not set blittable attribute on arrays
31461         (mono_class_setup_mono_type): set blittable attribute for single
31462         and double.
31463
31464         * marshal.c (mono_string_utf8_to_builder): impl.
31465         (mono_string_builder_to_utf8): impl.
31466         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
31467
31468 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
31469
31470         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
31471         (mono_marshal_get_managed_wrapper): impl. byref types
31472
31473 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31474
31475         * icall.c:
31476         (search_method): don't display debug message. 
31477
31478 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
31479
31480         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
31481
31482 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
31483
31484         * appdomain.c: set the missing filename when throwing exception.
31485
31486 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
31487
31488         * metadata.c (mono_type_size): code cleanup
31489         (mono_type_stack_size): removed some test code
31490
31491 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
31492
31493         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
31494         mono_get_exception_file_not_found now.
31495
31496         * exception.c (mono_exception_from_name_two_strings): New version
31497         that will call a constructor with two string arguments. 
31498         (mono_get_exception_file_not_found): New helper routine, used to
31499         report file-not-found errors.
31500
31501 2002-07-20  Dick Porter  <dick@ximian.com>
31502
31503         * process.h:
31504         * process.c: Pass file handles to CreateProcess
31505         
31506         * icall.c:
31507         * file-io.h:
31508         * file-io.c: Implemented CreatePipe
31509
31510 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
31511
31512         * metadata.c (mono_get_param_info): set alignment for value types
31513
31514 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
31515
31516         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
31517         Constify mono_domain_assembly_open().
31518         * loader.c: handle null namespace in icalls.
31519
31520 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
31521
31522         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
31523         (emit_str_to_ptr_conv): marshal object as structs
31524
31525         * metadata.c (mono_type_to_unmanaged): marshal object as structs
31526
31527         * marshal.c (mono_marshal_get_runtime_invoke): support value types
31528
31529 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
31530
31531         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
31532         (mono_marshal_get_native_wrapper): we an now return value types
31533
31534 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
31535
31536         * verify.c: more checks implemented.
31537
31538 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
31539
31540         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
31541         (fix bug #27695)
31542         (mono_marshal_get_native_wrapper): allow byref arguments
31543         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
31544         impl. PtrToStringXXX methods
31545         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
31546         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
31547         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
31548         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
31549         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
31550
31551 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
31552
31553         * reflection.c: fix buglet in parsing an assembly name.
31554
31555 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
31556
31557         * marshal.c (emit_ptr_to_str_conv): first impl.
31558
31559 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
31560
31561         * object.c, class.h: cache the vtable in the class as suggested by
31562         vargaz@freemail.hu (Zoltan Varga).
31563
31564 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
31565
31566         * class.h, loader.c: added mono_field_from_token().
31567         * verify.c: first cut of type checking code.
31568
31569 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
31570
31571         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
31572
31573 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
31574
31575         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
31576         (fix bug #27782)
31577         (mono_marshal_get_remoting_invoke): impl.
31578         (mono_delegate_begin_invoke): impl.
31579         (mono_mb_emit_save_args): impl.
31580         (mono_delegate_end_invoke): impl.
31581         (mono_marshal_get_delegate_begin_invoke):
31582         (mono_marshal_get_delegate_end_invoke):
31583         (mono_marshal_get_delegate_invoke): generate a special name for
31584         those methods (including the signature) and associate them whith
31585         the delegate class. 
31586
31587 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
31588
31589         * reflection.[ch]: 
31590         (mono_reflection_type_from_name): now it has a MonoImage parameter
31591         which is used as the default image to search the type in. If the image
31592         is NULL or getting the type from it fails, it defaults to corlib.
31593
31594         * icall.c: changed 1 call to mono_reflection_type_from_name to match
31595         new parameter.
31596
31597 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
31598
31599         * reflection.c: update the parameter table index.
31600
31601 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
31602
31603         * domain.c: don't include the mark byte in the string hash.
31604
31605 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
31606
31607         * icall.cs: icall for Type.GetTypeCode ().
31608         * verify: a couple of fixes and disabled local initialization checks.
31609
31610 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
31611
31612         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
31613
31614         * debug-helpers.c (mono_method_full_name): print the type of the
31615         runtime wrapper
31616
31617         * metadata.c (mono_signature_hash): a hash function for signatures
31618         (mono_signature_hash): better hash algorithm
31619
31620         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
31621
31622         * debug-helpers.c (mono_method_full_name): this can now generate
31623         method names with signatures
31624
31625         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
31626         method dont have this pointers.
31627
31628 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
31629
31630         * reflection.c: fixup typebuilder tokens.
31631         * image.c: fix buglet.
31632         * marshal.h: remove whitespace.
31633         * metadata.h, metadata.c: reinstate code that was removed.
31634         * verify.c: handle catch directives and fix another couple of bugs.
31635
31636 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
31637
31638         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
31639         (mono_marshal_get_native_wrapper): make it comp. with the old code
31640         (mono_marshal_get_native_wrapper): support boolean
31641         (mono_marshal_get_managed_wrapper): support more types
31642
31643 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
31644
31645         * class.c (class_compute_field_layout): compute class->blittable attribute.
31646
31647 2002-07-09  Dick Porter  <dick@ximian.com>
31648
31649         * threads.c: Make the thread cleaning up cope with threads that
31650         call ExitThread()
31651
31652 2002-07-08  Radek Doulik  <rodo@ximian.com>
31653
31654         * reflection.c (method_encode_code): use non-translated values to
31655         compute finally_start, this fixes exception handling on ppc, yay!
31656
31657         * decimal.h (struct signscale): fix endianess
31658
31659 2002-07-07  Radek Doulik  <rodo@ximian.com>
31660
31661         * reflection.c: swap box_val and not val
31662
31663 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
31664
31665         * reflection.c, reflection.h: handle full assembly info in type name.
31666         Handle Type arguments when loading custom attributes.
31667         * icall.c: updated to use new mono_reflection_type_from_name () method.
31668
31669 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31670
31671         * loader.c:
31672         (method_from_memberref): also print assembly name when method not found.
31673
31674 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31675
31676         * icall.c:
31677         (ves_icall_TypeGetProperties): fixed bug #27473. 
31678
31679 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
31680
31681         * reflection.c: display image name and token when cannot find the
31682         .ctor for an attribute.
31683
31684 2002-07-05  Martin Baulig  <martin@gnome.org>
31685
31686         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
31687
31688 2002-07-04  Dick Porter  <dick@ximian.com>
31689
31690         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
31691         compile on mingw.  This will cause mingw builds to not wait for
31692         subthreads to terminate after the main thread does.  I've lodged a
31693         bug with the mingw developers for them to wrap OpenThread().
31694
31695 2002-07-03  Dick Porter  <dick@ximian.com>
31696
31697         * threads.c: Store thread IDs instead of handles, because
31698         GetCurrentThread() returns a pseudohandle and therefore stores
31699         useless values.  mono_thread_cleanup() continues checking the
31700         array of threads until it is empty, to cope with subthreads
31701         spawning new threads after the main thread has finished.
31702
31703         * profiler.h:
31704         * profiler.c:
31705         * profiler-private.h: Pass the thread ID to thread profiler
31706         functions, instead of a handle
31707
31708 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
31709
31710         * verify.c: fixes to make it more usable.
31711         * pedump.c: added --verify code to verify IL code in an assembly.
31712
31713 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
31714
31715         * reflection.c: turn errors into warnings to allow compiling corlib.
31716
31717 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
31718
31719         * reflection.c: add special cases to compile corlib.
31720
31721 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
31722
31723         * reflection.c: handle properties with only a set method.
31724
31725 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
31726
31727         * opcodes.h: add enum with opcodes in opval order.
31728
31729 2002-07-01  Dick Porter  <dick@ximian.com>
31730         
31731         * object.h:
31732         * object.c (mono_runtime_run_main): Removed unneeded argument
31733
31734 2002-06-28  Martin Baulig  <martin@gnome.org>
31735
31736         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
31737
31738 2002-06-27  Dick Porter  <dick@ximian.com>
31739
31740         * threads.c: Store the handle in both the parent thread and in the
31741         subthread, to minimise the time between starting a new thread and
31742         storing its ID.
31743
31744 2002-06-26  Dick Porter  <dick@ximian.com>
31745
31746         * appdomain.c (mono_runtime_cleanup): Close the socket library
31747         after all the threads have finished, not before
31748
31749 2002-06-26  Martin Baulig  <martin@gnome.org>
31750
31751         * debug-symfile.c (mono_debug_find_source_location): Added
31752         `guint32 *line_number' argument.  If it's not NULL, store the line number
31753         there and return the file name without the line number.
31754
31755 2002-06-25  Dick Porter  <dick@ximian.com>
31756
31757         * icall.c:
31758         * process.h:
31759         * process.c: Process forking and other support functions
31760
31761 2002-06-25  Dick Porter  <dick@ximian.com>
31762
31763         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
31764         things dont happen when the image is closed.
31765         (mono_image_lookup_resource): Walk the resource section looking
31766         for a particular entry
31767
31768         * cil-coff.h: PE resource section decoding
31769
31770 2002-06-25  Dick Porter  <dick@ximian.com>
31771         
31772         * assembly.h:
31773         * assembly.c: 
31774         (mono_assembly_foreach): Accessor functions to walk the list of
31775         loaded assemblies
31776         (mono_assembly_set_main):
31777         (mono_assembly_get_main): Process methods need to know which
31778         assembly is the "main" one
31779
31780         * object.c (mono_runtime_run_main): Record the main assembly
31781
31782         * debug-helpers.c: Fix typo
31783
31784 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
31785
31786         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
31787         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
31788
31789 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
31790
31791         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
31792
31793 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
31794
31795         * image.c (do_mono_image_open): Initialize reference count,
31796         otherwise we leak the MonoImage.
31797
31798 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
31799
31800         * reflection.c: small tweak to handle self-hosting.
31801
31802 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
31803
31804         * reflection.c: fix type name parse code.
31805
31806 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
31807
31808         * reflection.c: break out of the loop.
31809         * image.c: special case corlib.
31810
31811 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
31812
31813         * reflection.c: add all the custom attrs at the end to ensure the
31814         ctors have been properly initialized when the attributes are defined
31815         in the current assembly.
31816
31817 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
31818
31819         * reflection.c: handle correctly multiple-nested types.
31820
31821 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
31822
31823         * row-indexes.h: fix typos.
31824         * reflection.c: adjust for typos and fix method_def_or_ref
31825         encoding in MethodImpl table.
31826
31827 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
31828
31829         * reflection.c: fix entry point patching (thanks Serge!).
31830
31831 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
31832
31833         * verify.c: add check for System.Exception
31834
31835 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
31836
31837         * image.c, class.c: minifix for code just c&p'ed.
31838         * reflection.c: warning fix.
31839         * object.h, loader.h, domain.c: load also StringBuilder.
31840
31841 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
31842
31843         * marshal.h, marshal.c: some support code to handle complex marshaling.
31844
31845 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
31846
31847         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
31848         Better signatures with vtable error dump.
31849
31850 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
31851
31852         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
31853
31854 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
31855
31856         * icall.c (ves_icall_Type_GetField): impl.
31857
31858 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
31859
31860         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
31861         to retrieve a marshal description blob for a field or param.
31862
31863 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
31864
31865         * reflection.h, reflection.c: change order of nested type emission
31866         to avoid table corruption. The NestedTypes table is sorted.
31867         * icall.c: change order of GetConstructor results to workaround mcs bug.
31868
31869 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
31870
31871         * reflection.h, reflection.c: handle field and param marshal
31872         information.
31873
31874 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
31875
31876         * icall.c, marshal.c marshal.h: more Marshal class implementation.
31877
31878 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
31879
31880         * reflection.c: fix call convention.
31881
31882 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
31883
31884         * reflection.h, reflection.c: mono_image_get_memberref_token()
31885         takes a type instead of a class, now. Added
31886         mono_image_get_array_token() to create tokens for the special
31887         multi-dim array methods.
31888
31889 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
31890
31891         * assembly.c: handle modules (no assembly table). Split
31892         loading references in its own function.
31893         * class.c: handle moduleref resolution scope.
31894         * image.c, image.h: cache module name in image.
31895
31896 2002-06-07  Martin Baulig  <martin@gnome.org>
31897
31898         * reflection.c (mono_image_get_type_info): Only add a class layout entry
31899         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
31900
31901 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
31902
31903         * icall.c: more signature fixes that used uint instead of int.
31904
31905 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
31906
31907         * reflection.c: fixed signature of field refs.
31908
31909 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
31910
31911         * class.c, reflection.c: handle typerefs of nested types
31912         (both on read and when writing files).
31913
31914 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
31915
31916         * icall.c: fix method signatures that tried to workaround the previous
31917         typo, d'oh!
31918
31919 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
31920
31921         * debug-helpers.c: fix typo.
31922
31923 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
31924
31925         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
31926         rewrote the PE/COFF writing code (our programs are understood by the
31927         ms runtime, now).
31928
31929 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
31930
31931         * gc.c, gc.h, icall.c: weakreference support.
31932
31933 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
31934
31935         * Makefile.am, mono-config.c: use $(sysconfdir).
31936
31937 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
31938
31939         * icall.c: changed default precision of Double.ToString() to 15.
31940         Fixed memory leak. Unified with Single.ToString.
31941
31942 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
31943
31944         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
31945
31946 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
31947
31948         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
31949         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
31950         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
31951         and myself.
31952
31953 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
31954
31955         * debug-symfile.c, sysmath.c: yet more compilation fixes.
31956
31957 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
31958
31959         * reflection.c, socket-io.c: more compilation fixes.
31960
31961 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
31962
31963         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
31964         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
31965         unicode.c: warning and compiler compatibility fixes.
31966
31967 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
31968
31969         * class.h, metadata.c: fixed warnings/compilation errors.
31970
31971 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
31972
31973         * Makefile.am, mono-config.c, mono-config.h: configuration file
31974         support routines.
31975         * loader.c, loader.h: make Dll mapping configurable at runtime in the
31976         config file. Export methods to insert and lookup mappings.
31977
31978 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
31979
31980         * reflection.c: handle types and boxed objects in custom attr
31981         constructors.
31982
31983 2002-05-30  Martin Baulig  <martin@gnome.org>
31984
31985         * debug-symfile.c
31986         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
31987
31988 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
31989
31990         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
31991         to lookup the implmap row for a P/Invoke method.
31992         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
31993         P/Invoke method from the runtime on an as needed basis.
31994
31995 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
31996
31997         * metadata.c (mono_metadata_parse_signature): impl.
31998
31999 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
32000
32001         * class.c: handle .pack directive.
32002
32003 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
32004
32005         * object.c: initialize static fields with RVA data.
32006
32007 2002-05-25  Martin Baulig  <martin@gnome.org>
32008
32009         * debug-symfile.c
32010         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
32011
32012 2002-05-24  Martin Baulig  <martin@gnome.org>
32013
32014         * debug-symfile.c
32015         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
32016         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
32017         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
32018
32019 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
32020
32021         * object.c: special case string ctros in invoke.
32022         * gc.c: silly whitespace changes.
32023
32024 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
32025
32026         * threadpool.[ch]: impl. a threadpool that can
32027         be used by mint and mono.
32028
32029 2002-05-22  Martin Baulig  <martin@gnome.org>
32030
32031         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
32032         The first argument is now a `MonoReflectionModuleBuilder *', the return
32033         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
32034         `methods' field to get the method builder.  The `token' argument is the
32035         unfixed token.
32036
32037         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
32038         invalid characters instead of g_assert_not_reached()ing.  This seems
32039         to be the behaviour of mscorlib.
32040
32041 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
32042
32043         * object.c (mono_runtime_invoke_array): applied patch from Rachel
32044         Hestilow to fix bug #25104
32045
32046 2002-05-21  Martin Baulig  <martin@gnome.org>
32047
32048         * debug-symfile.c (mono_debug_find_source_location): New function.
32049         Looks up an IL offset in the line number table and returns the source
32050         location as a string.
32051
32052 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32053
32054         * icall.c:
32055         (mono_double_ToStringImpl): changed %f by %g until we have something
32056         better.
32057
32058 2002-05-21  Nick Drochak  <ndrochak@gol.com>
32059
32060         * icall.c : Use different name for Math.Pow's icall.  Needed to check
32061         parameters first in C#.
32062
32063 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
32064
32065         * icall.c, reflection.h: added icall to get info about an event.
32066
32067 2002-05-20  Radek Doulik  <rodo@ximian.com>
32068
32069         * object.c (mono_value_box): don't use memcpy for boxing on BIG
32070         endian
32071         (mono_value_box): don't use memcpy for small sizes on
32072         architectures with unaligned access
32073
32074 2002-05-20  Martin Baulig  <martin@gnome.org>
32075
32076         * reflection.c (mono_reflection_setup_internal_class): Don't crash
32077         if `tb->parent == NULL'.
32078         (mono_reflection_create_internal_class): New function.  This is
32079         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
32080         for enum types.
32081
32082         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
32083         New interncall.
32084
32085 2002-05-19  Martin Baulig  <martin@gnome.org>
32086
32087         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
32088         argument to get the length, don't default to the array length.
32089
32090 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
32091
32092         * assembly.c (mono_assembly_setrootdir): New function used to
32093         override the MONO_ASSEMBLIES directory.
32094
32095 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
32096
32097         * icall.c: ValueType_GetHashCode() initialize local var.
32098
32099 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
32100
32101         * reflection.c: sort custom attributes table.
32102
32103 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
32104
32105         * reflection.c: support named args in custom attributes (write support).
32106
32107 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
32108
32109         * reflection.c: fix finally position calculation.
32110
32111 2002-05-15  Radek Doulik  <rodo@ximian.com>
32112
32113         * reflection.c: fixed endianess at many places
32114
32115         * icall.c (ves_icall_InitializeArray): comment out debug msg
32116
32117 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
32118
32119         * object.c (mono_unhandled_exception): new function to handle
32120         unhandled exceptions.
32121         (mono_unhandled_exception): call the UnhandledException event.
32122         (mono_runtime_delegate_invoke): impl.
32123
32124 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
32125
32126         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
32127         returns the RVA, not the direct pointer to the data. Handle the case
32128         when the class size is fixed.
32129
32130 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
32131
32132         * reflection.c: fix some endianess issues.
32133
32134 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
32135
32136         * object.c (mono_runtime_invoke): is now able to catch exceptions.
32137
32138         * threads.c (mono_thread_init): added a callback which is invoked
32139         at thread start.
32140
32141 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
32142         
32143         * icall.c: make GetHashCode return non-negative values.
32144
32145 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
32146
32147         * object.c, icall.c, gc.c: revert to address-based hashcode.
32148
32149 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
32150
32151         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
32152
32153 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
32154
32155         * icall.c, class.c: special case <Module>.
32156
32157 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
32158
32159         * icall.c: fix bug in GetNow().
32160
32161 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
32162
32163         * object.c (mono_runtime_class_init): make sure that we call all
32164         static class constructors.
32165
32166 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
32167
32168         * reflection.c: sort methodsemantics table.
32169
32170 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
32171
32172         * reflection.h, reflection.c: honour init locals setting.
32173
32174 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
32175
32176         * icall.c: copied Double ToStringImpl for Single ToStringImpl
32177
32178 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
32179
32180         * reflection.c: support ContructorBuilders in attribute blob creation.
32181
32182 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
32183
32184         * reflection.c: some changes to build a binary that can be run
32185         directly in windows.
32186
32187 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
32188
32189         * loader.c: print a big message when an icall can't be found.
32190
32191 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32192
32193         * string-icalls.c: fix bug 24248.
32194
32195 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
32196
32197         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
32198         icall.c, reflection.h: separate assembly loading by pathname and by
32199         assembly name. Use the MONO_PATH env var to search for assemblies.
32200
32201 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
32202
32203         * assembly.c, image.h: add some support for assemblies
32204         with multiple modules.
32205         * class.c, class.h: export mono_class_from_typeref().
32206         * loader.c: remove duplicated code and use mono_class_from_typeref(),
32207         instead.
32208
32209 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
32210
32211         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
32212         documentation says (the ECMA one is correct).
32213
32214 2002-05-02  Dick Porter  <dick@ximian.com>
32215
32216         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
32217         Don't name the synchronisation mutex.
32218
32219 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
32220
32221         * rand.c
32222         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
32223         Make the prototypes match.
32224         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
32225         Same.
32226
32227         * icall.c
32228         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
32229         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
32230         all systems have tm.tm_zone, so use strftime() with %Z to print
32231         the timezone abreviation into a temp string.
32232
32233         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
32234         rather than mono_array_addr() on a MonoString on Big Endian
32235         machines.
32236
32237 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
32238
32239         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
32240         fix bug 24041
32241
32242 2002-04-30  Dick Porter  <dick@ximian.com>
32243
32244         * socket-io.c: Cope with SOCKET being an integer rather than a
32245         pointer now.
32246
32247         * threads.c: Added Thread_free_internal, to deal with thread
32248         handle cleanup.  Moved calls to handle_store() and handle_remove()
32249         to start_wrapper(), so each can only be called once.  Allocate
32250         synchronisation blocks with GC_malloc(), and use GC finalisation
32251         to close the handles.
32252
32253         * icall.c: added System.Threading.Thread::Thread_free_internal
32254
32255 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
32256
32257         * icall.c: support Environment.Exit, CommandLineArgs().
32258
32259 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
32260
32261         * object.c, object.h: added mono_runtime_run_main () and
32262         mono_runtime_get_main_args () for use in System.Environment.
32263
32264 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
32265
32266         * gc.c: fix thinko, enable actual finalization since the jit is now
32267         fixed.
32268
32269 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
32270
32271         * gc.c, object.c: take into account that an object may be offset wrt the address
32272         returned by GC_malloc().
32273
32274 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
32275
32276         * image.c: handle files without entries in the assembly table (modules).
32277
32278 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
32279
32280         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
32281         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
32282         allowed to be null when it's System.Object class setup.
32283
32284 2002-04-27  Martin Baulig  <martin@gnome.org>
32285
32286         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
32287         if `tb->parent == NULL' rather than crashing.
32288
32289 2002-04-28  Nick Drochak  <ndrochak@gol.com>
32290
32291         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
32292         calling acos() where asin() should have been called.
32293
32294 2002-04-26  Martin Baulig  <martin@gnome.org>
32295
32296         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
32297         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
32298         there's a subdirectory called `System', but we don't want to read that
32299         subdirectory as an assembly.
32300
32301 2002-04-25  Martin Baulig  <martin@gnome.org>
32302
32303         * debug-symfile.c: Reflect latest MonoString changes.
32304
32305 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
32306
32307         * rand.c, rand.h: instance method icalls need to have an explicit
32308         this pointer as first argument in the C implementation.
32309
32310 2002-04-25  Nick Drochak <ndrochak@gol.com>
32311
32312         * icall.c: Fix typo in map for GetNonZeroBytes
32313
32314 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
32315
32316         * string-icalls.c : String does now passes unit tests without any 
32317         errors, the following changes has been made:
32318         
32319         Implemented replace methods.
32320         Renaming of methods to (try) follow the standard.
32321         Fixed compare ordinal
32322         Made all memory allocated directly to function instead of via icall function.
32323         Small performance fix in is_in_array function
32324                         
32325  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
32326
32327         c (mono_string_Internal_ctor_charp_int_int):
32328         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
32329         sindex < 0, throw ArgumentOutOfRangeException instead of
32330         ArgumentNullException.
32331
32332         Added new check for length == 0, however
32333         I need to make it return String.Empty from the C code.
32334         
32335         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
32336         that calculate the length for us here.
32337         
32338         (mono_string_Internal_ctor_sbytep_int_int): Replaced
32339         mono_string_new_utf16 with mono_string_new, since value is utf8.
32340
32341 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
32342
32343         * object.c: register the object for finalization if needed.
32344         Allocate one more char in the string for the terminating 0 char.
32345
32346 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
32347
32348         * class.c, class.h, image.c: check if a type implemenst a destructor.
32349         Use the proper key for array class lookups.
32350         * icall.c: register the icalls in the System.GC class.
32351         * gc.c, gc.h: GC-related functions and icalls.
32352
32353 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32354
32355         * icall.c:
32356         * socket-io.c:
32357         * unicode.c: free some strings gotten from mono_string_to_utf8 and
32358         changed a couple of free () by g_free ().
32359
32360         * decimal.c: one-liner in the comments for decimal2string ().
32361
32362 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
32363
32364         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
32365
32366 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
32367
32368         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
32369         * object.c (mono_runtime_invoke_array) : handle null in params
32370
32371 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
32372
32373         * string-icalls.c: fixed bug in split (one off bug)
32374
32375 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
32376
32377         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
32378         * icalls.c: added String::Equals as internal method
32379
32380 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
32381
32382         * threads.c: fixed bug in the double interlocked functions
32383
32384 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
32385
32386         * threads.c: implemented all of the new interlocked icalls.
32387         * string-icalls.c: fix a bug in insert.
32388         * icalls.c: added the icalls for interlocked, removed old string functions.
32389         
32390 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
32391
32392         * loader.c: fix off-by-one error when reading argument names.
32393
32394 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
32395
32396         * profiler.c: win32 counter implementation (untested).
32397         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
32398         (the latter needs testing and more complete impl. from win32 folks).
32399
32400 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
32401
32402         * object.c: mono_array_new_full workaround mono_array_class_get
32403         problem.
32404
32405 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
32406
32407         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
32408         * object.h (mono_string_chars): Changed casting type.
32409
32410 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
32411
32412         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
32413                            method signatures to use gunichar2 instead of gint16.
32414
32415 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
32416
32417         * object.h, object.c: domain-specific versions of mono_object_new and
32418         mono_array_new.
32419
32420 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
32421
32422         * object.c: changed String layout
32423
32424         * string-icalls.c (mono_string_Internal_ctor_chara): added
32425         internal string constructors.
32426
32427 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
32428
32429         * threads.c: pass 'this' to the thread start routine.
32430
32431 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32432
32433         * string-icalls.c: fix IndexOf and LastIndexOf. Now
32434         InternalCompareStr don't call twice mono_string_cmp_char for the last
32435         character. Improved performance in mono_string_cmp_char.
32436
32437 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
32438
32439         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
32440         code into its own library: libmonoruntime.
32441
32442 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
32443
32444         * object.h, object.c: changed array format so that szarrays do not
32445         require a bounds structure.
32446         * icall.c, appdomain.c: support for new szarray format.
32447
32448 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
32449
32450         * metadata.c: compare also the retuns type when comparing signatures:
32451         we didn't do this as an optimization since really overloaded methods
32452         must differ also in the arguments, but this doesn't work with
32453         low-level IL code (or when using explicit conversion operators: see
32454         bug#23498 for an example).
32455
32456 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
32457
32458         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
32459
32460 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
32461
32462         * icall.c: make MonoType::GetElementType its own icall.
32463
32464 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
32465
32466         * icall.c: remove MonoMethod_get_Name().
32467         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
32468         object.
32469
32470 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
32471
32472         * string-icalls.c: optimized a few methods.
32473
32474 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
32475
32476         * icall.c: added all new string internal calls
32477         * string-icalls.c: added, new string internal call implementation.
32478         * object.c: added mono_string_new_size for allocating a string a size
32479
32480 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
32481
32482         * object.c (mono_object_isinst): use the same code as in the
32483         optimized x86 version.
32484
32485 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
32486
32487         * profiler.c: TSC-based timer code (faster and more accurate).
32488         Not hooked up in configure, yet (set USE_X86TSC to 1).
32489
32490 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
32491
32492         * profiler.c, profiler.h: track time spent compiling methods.
32493         * threads.c: track thread creation/destruction.
32494
32495 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
32496
32497         * profiler.c, profiler.h, profiler-private.h: profiling interface
32498         and sample implementation. Moved here so that it can be used also by
32499         the jit.
32500
32501 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
32502
32503         * reflection.c, reflection.h: keep types and other handles separate in
32504         the hash tables for referred tokens. Add guid for modules.
32505
32506 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
32507
32508         * assembly.c: fix bugs found with valgrind.
32509         * metadata.h, metadata.c: added mono_metadata_guid_heap().
32510
32511 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
32512
32513         * threads: added icall support for getting current domain for
32514                    the thread.
32515  
32516 2002-04-13  Martin Baulig  <martin@gnome.org>
32517
32518         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
32519         (MonoDebugVarInfo): Added `index' field for register based addresses.
32520         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
32521         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
32522         `MonoDebugVarInfo *params' and `guint32 this_offset' with
32523         `MonoDebugVarInfo *this_var'.
32524
32525         * debug-symfile.c (relocate_variable): New static function to write
32526         a location description for a local variable or method parameter.
32527
32528 2002-04-12  Martin Baulig  <martin@gnome.org>
32529
32530         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
32531         stack offset and begin/end scope address of a local variable.
32532         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
32533         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
32534         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
32535
32536         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
32537         Added new relocation types for start/end scope of a local variable.
32538
32539 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
32540
32541         * object.h: add mono_object_domain() macro.
32542         * reflection.c: handle typespecs.
32543         * icall.c: MonoMethod::get_Name() implementation.
32544
32545 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
32546
32547         * icall.c: String::GetHashCode() icall implementation.
32548
32549 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
32550
32551         * icall.c: String::IndexOfAny icall.
32552         * object.c, object.h: make array->max_length more useful.
32553         Intrduced mono_object_class() and mono_string_length() macros.
32554
32555 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
32556
32557         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
32558         instead of g_unichar_isdigit.
32559
32560 2002-04-11  Nick Drochak  <ndrochak@gol.com>
32561
32562         * icall.c: Implement a simple Double.ToString().
32563
32564 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
32565
32566         * appdomain.h: only io-layer.h is supposed to be included.
32567         * icall.c: explicitly import environ. Fix warning.
32568
32569 2002-04-10  Nick Drochak  <ndrochak@gol.com>
32570
32571         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
32572                 return true even if it's not Daylight Savings time.
32573                 Only return false for the case where the function isn't
32574                 implemented for a plaform (read Windows).
32575
32576 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
32577
32578         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
32579         data with a mutex.
32580
32581 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
32582
32583         * mempool.c (mono_mempool_alloc): only use g_malloc when
32584         absolutely necessary.
32585
32586 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
32587
32588         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
32589
32590         * class.c (mono_class_vtable): use domain mempool to allocate vtable
32591         (mono_class_proxy_vtable): use domain mempool
32592
32593 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
32594
32595         * appdomain.h, appdomain.c: split initialization that requires the
32596         execution engine support into mono_runtime_init().
32597
32598 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
32599
32600         * class.c (mono_class_init): don't include vtable inside MonoClass
32601         to save some memory, gather some statistics.
32602         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
32603
32604 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
32605
32606         * icall.c: internalcall implementation for ValueType.Equals().
32607
32608 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
32609
32610         * object.c (mono_message_init): moved 
32611         (mono_runtime_exec_main): new arch. independent impl.
32612         (mono_runtime_invoke_array): new method - like
32613         mono_runtime_invoke, but you can pass an array of objects.
32614         (mono_remoting_invoke): new arch. independent impl.
32615         (mono_message_invoke): new arch. independent impl.
32616         (mono_runtime_class_init): new arch. independent impl.
32617         (mono_runtime_object_init): new arch. independent impl.
32618
32619 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
32620
32621         * metadata.c, object.c, reflection.c: documented the exported
32622         functions.
32623
32624 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
32625
32626         * icall.c: simpler code to pass the assembly builder data to corlib.
32627         Implement GetNestedTypes() internalcall.
32628
32629 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
32630
32631         * class.c: warn if a type can't be loaded.
32632
32633 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
32634
32635         * image.h: typedef MonoImageOpenStatus
32636         * types.h: removed unused file
32637         
32638 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
32639
32640         * icall.c: Enum_ToObject accepts enum value arguments.
32641
32642 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
32643
32644         * class.c: move initialization of properties, events and nested
32645         classes, so that they happen for interfaces, too.
32646
32647 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
32648
32649         * icall.c: cleanup some ugly casts in Array_SetValue*.
32650
32651 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
32652
32653         * icall.c: the values array fro enums is of the correct type, now.
32654         Implement (correctly) getFullName instead of assQualifiedName for
32655         MonoType.
32656         * reflection.h, reflection.c: added mono_type_get_name ().
32657
32658 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
32659
32660         * assembly.c, image.h: for each MonoImage, record from wich assembly
32661         it was loaded.
32662         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
32663         Make Type.Assembly work.
32664
32665 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
32666
32667         * debug-symfile.h: use char* instead of gpointer to avoid
32668         unnecessary casts.
32669
32670         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
32671
32672         * icall.c (ves_icall_InternalExecute): impl. FielSetter
32673         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
32674
32675 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
32676
32677         * icall.c (mono_message_init): impl. (code cleanup)
32678         (ves_icall_InternalExecute): impl. FieldGetter
32679
32680         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
32681         defined we call all (non-static)methods through the vtable. 
32682
32683 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
32684
32685         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
32686         finalizer even though the memory is still referenced (and the chunk of
32687         memory is not freed).
32688
32689 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
32690
32691         * assembly.c: fix brokeness.
32692
32693 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
32694
32695         * class.c: kill some warnings. Check explicit interface method
32696         implementation also without considering the namespace.
32697         Load also literal strings in static class data.
32698
32699 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
32700
32701         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
32702         (default_assembly_name_resolver): Make the resolver take the
32703         "base" directory where the assembly was originally defined, so we
32704         can load DLLs that are in the same directory as the assembly that
32705         is being referenced.
32706
32707 2002-03-28  Dick Porter  <dick@ximian.com>
32708
32709         * file-io.h: 
32710         * file-io.c:
32711         * socket-io.c: 
32712         * unicode.h: 
32713         * unicode.c: Warning cleanups
32714
32715 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
32716
32717         * object.h, reflection.h: use the correct type instead of MonoObject.
32718
32719 2002-03-28  Martin Baulig  <martin@gnome.org>
32720
32721         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
32722         (mono_debug_update_symbol_file): Initialize classes if necessary.
32723
32724 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
32725
32726         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
32727         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
32728
32729 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
32730
32731         * assembly.h: fix function prototype.
32732         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
32733         * mono-endian.h: use const cast.
32734
32735 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
32736
32737         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
32738
32739 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
32740
32741         * loader.c: don't assert when a typeref can't be loaded, give
32742         a chance to the runtime to trow an exception instead.
32743         * loader.h: fix warning.
32744
32745 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
32746
32747         * class.c (mono_class_proxy_vtable): added proxy support
32748
32749 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
32750
32751         * icall.c: removed last of PAL calls, added System.Environment
32752         * file-io.h, file-io.c: MonoIO implementation
32753         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
32754
32755 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
32756
32757         * appdomain.c: do not use the byte marker in ldstr table lookup.
32758         * debug-helpers.c: allow two ':' to separate class and method name.
32759         * object.c: allocate arrays bounds with the GC, too.
32760         * verify: add a few more checks.
32761
32762 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
32763
32764         * reflection.c: output also literal strings. Allocate parameter data
32765         with GC_malloc() (thanks, Martin, for catching this!).
32766
32767 2002-03-26  Martin Baulig  <martin@gnome.org>
32768
32769         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
32770         include the `this' offset in the `param_offsets'.
32771
32772 2002-03-25  Martin Baulig  <martin@gnome.org>
32773
32774         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
32775         mono_debug_get_class() function to get the classes. Added new
32776         relocation types for arrays and strings.
32777         (mono_debug_get_class): New static function to search in all
32778         referenced assemblies for a metadata token.
32779
32780         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
32781
32782 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
32783
32784         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
32785         hold gc-allocated objects. Make the string heap a stream like the
32786         others. Removed duplicated code when writing stream info.
32787         Added asserts to catch possible buffer overflows. Set the sorted map
32788         for tables that need sorting. Added some documentation.
32789
32790 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
32791
32792         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
32793         for interned strings and vtables.
32794
32795 2002-03-24  Martin Baulig  <martin@gnome.org>
32796
32797         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
32798         it in the array since it was created with g_slist_prepend().
32799
32800 2002-03-24  Martin Baulig  <martin@gnome.org>
32801
32802         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
32803         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
32804         (mono_debug_method_from_token): Renamed to
32805         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
32806         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
32807
32808         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
32809         relocation types.
32810
32811         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
32812
32813 2002-03-24  Martin Baulig  <martin@gnome.org>
32814
32815         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
32816         (mono_debug_method_from_token): New func.
32817
32818         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
32819         New interncall, calls mono_debug_local_type_from_signature().
32820         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
32821         calls mono_debug_method_from_token().
32822
32823 2002-03-23  Martin Baulig  <martin@gnome.org>
32824
32825         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
32826         specifies the number of bytes to be converted, not the array size.
32827         Return the number of chars, not the number of bytes.
32828         (ves_icall_iconv_get_chars): The `byteCount' argument
32829         specifies the number of bytes to be converted, not the array size.
32830
32831 2002-03-23  Martin Baulig  <martin@gnome.org>
32832
32833         * reflection.h (MonoReflectionSigHelper): New type.
32834
32835         * reflection.c (mono_reflection_sighelper_get_signature_local),
32836         (mono_reflection_sighelper_get_signature_local): New functions.
32837
32838         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
32839         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
32840         interncalls.
32841
32842 2002-03-23  Martin Baulig  <martin@gnome.org>
32843
32844         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
32845         is_writeable is set.
32846         (mono_raw_buffer_update): New function to write the modified map
32847         back to disk.
32848
32849         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
32850
32851         * debug-symfile.c (mono_debug_update_symbol_file): Call
32852         mono_raw_buffer_update() when done writing.
32853
32854 2002-03-23  Martin Baulig  <martin@gnome.org>
32855
32856         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
32857
32858         * debug-symfile.c: Added support for arguments and local variables.
32859
32860 2002-03-23  Dick Porter  <dick@ximian.com>
32861
32862         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
32863         protected by ifdefs, hence breaking the w32 build.
32864
32865 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
32866
32867         * object.c: implement is_interned() the right way.
32868
32869 2002-03-21  Martin Baulig  <martin@gnome.org>
32870
32871         * debug-symfile.[ch]: New files to handle debugging information
32872         files. There's also support to dynamically update these symbol
32873         files to include machine dependent information.
32874
32875 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
32876
32877         * threads.c (mono_thread_create): new function to create thread
32878         from C
32879
32880 2002-03-20  Martin Baulig  <martin@gnome.org>
32881
32882         * icall.c (ves_icall_InternalInvoke): Create a new object if the
32883         method is a constructor.
32884         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
32885         points to ves_icall_InternalInvoke().
32886
32887 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
32888
32889         * file-io.c: Flush shouldn't throw exceptions.
32890
32891 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
32892
32893         * file-io.c: FileStream flush support; FileSetLength now
32894         restores file pointer.
32895
32896 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
32897
32898         * class.c: set image for pointer classes.
32899
32900 2002/03/19  Nick Drochak <ndrochak@gol.com>
32901
32902         * sysmath.c: Forgot one.
32903
32904 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
32905
32906         * sysmath.c: Avoid redefining existing names.
32907
32908 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
32909
32910         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
32911         handled by runtime as icall rather than dllimport from libm.so
32912         * file-io.c, file-io.h: fixed handle argument type.
32913
32914 2002-03-18  Dick Porter  <dick@ximian.com>
32915
32916         * reflection.c (mono_image_get_type_info): rename interface to
32917         iface, because of "#define interface struct" on windows.
32918
32919 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
32920
32921         * class.c, class.h: rename and export mono_ptr_class_get().
32922         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
32923         * reflection.c, reflection.h, icall.c: better/saner type name
32924         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
32925         method signatures.
32926
32927 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
32928
32929         * class.c (mono_class_init): removed hardcoded GHC_SLOT
32930
32931         * icall.c (ves_icall_InternalInvoke): impl.
32932
32933 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
32934
32935         * reflection.c: output the interface map table, too.
32936
32937 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
32938
32939         * class.c (class_compute_field_layout): separate computation of 
32940         static field layout
32941
32942 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
32943
32944         * icall.c: added System.Buffer support.
32945         * file-io.c: moved file icalls from PAL to FileStream.
32946
32947 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
32948
32949         * icall.c (ves_icall_System_Object_GetHashCode): impl.
32950
32951 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
32952
32953         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
32954
32955 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
32956
32957         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
32958
32959 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
32960
32961         * debug-helpers.{c,h}: moved here from monograph some useful functions
32962         to locate a method by name/signature in a class or image. Included
32963         also a small and flexible IL disassembler.
32964
32965 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
32966
32967         * reflection.c: fixup tokens in methods with small header size, too.
32968
32969 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
32970
32971         * object.c (mono_string_to_utf8): remove assert(!error), instead
32972         print a warning. 
32973
32974 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
32975
32976         * icall.c: update to the new mono_Array_class_get interface.
32977
32978 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
32979
32980         * appdomain.c, object.c: Boehm-GC enable.
32981         * icall.c: make get_data_chunk() support split data requests.
32982         Ensure a class is initialized in more cases. Return only the first
32983         property found in GetProperties() or the compiler gets confused. 
32984         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
32985         * reflection.h, reflection.c: add fixup mechanism for field and method
32986         tokens. Initialize assembly->typeref in a single place. Output
32987         properties after events. Support custom attributes for events, too.
32988         Typo fix for paramter custom attrs.
32989
32990 2002-03-07  Martin Baulig  <martin@gnome.org>
32991
32992         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
32993
32994 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
32995
32996         * class.c (mono_array_class_get): fix. for multi. dim. arrays
32997
32998 2002-03-06  Martin Baulig  <martin@gnome.org>
32999
33000         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
33001         non-zero lower bounds. See testcases #F10-#F13.
33002
33003 2002-03-05  Martin Baulig  <martin@gnome.org>
33004
33005         * exception.c (mono_get_exception_argument_out_of_range): New exception.
33006
33007         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
33008         ves_icall_System_Array_GetValue(), only calculate the absolute array position
33009         here.
33010         (ves_icall_System_Array_SetValue): Likewise.
33011         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
33012         as argument and does the actual work. This function is used when copying a
33013         multi-dimensional array.
33014         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
33015         now do all the widening conversions of value types.
33016         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
33017
33018 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
33019
33020         * class.c: remove some magic numbers and use the smbolic names,
33021         instead. Added init_events() to load event info at class init time.
33022         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
33023         and mono_metadata_methods_from_event().
33024         * reflection.h, reflection.c: added support for writing out the evnets
33025         related information.
33026
33027 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
33028
33029         * reflection.h, icall.c: use a different method (GetInterfaces)
33030         to gather interface info and add isbyref, isprimitive and
33031         ispointer to the ves_icall_get_type_info() return value.
33032
33033 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
33034
33035         * class.h: stared adding support for events.
33036         * icall.c: split find_members implementation. Added debug icall to get
33037         the address of an object.
33038         * reflection.c: handle TypeBuilders in mono_type_get_object().
33039
33040 2002-03-01  Martin Baulig  <martin@gnome.org>
33041
33042         * icall.c (ves_icall_System_Array_GetLength): This must throw an
33043         ArgumentOutOfRangeException(), not an ArgumentException().
33044         (ves_icall_System_Array_GetLowerBound): Likewise.
33045         (ves_icall_System_Array_GetValue): Improved argument checking.
33046         (ves_icall_System_Array_SetValue): Improved argument checking.
33047
33048 2002-03-01  Martin Baulig  <martin@gnome.org>
33049
33050         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
33051         called with invalid arguments rather than just dying with g_assert().
33052         (ves_icall_System_Array_SetValue): Likewise.
33053         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
33054         raise a NotImplementedException instead.
33055         (ves_icall_System_Array_GetLength): Added argument checking.
33056         (ves_icall_System_Array_GetLowerBound): Added argument checking.
33057
33058 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
33059
33060         * object.h (mono_assert): new macros mono_assert and
33061         mono_assert_not_reached
33062
33063 2002-02-28  Martin Baulig  <martin@gnome.org>
33064
33065         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
33066         and "System::String::IsInterned" to "System::String::_IsInterned".
33067
33068 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
33069
33070         * icall.c: remove hacks for typebuilder. Added icall to create a
33071         modified type from a tybebuilder.
33072         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
33073         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
33074         to create a backing MonoClass for a TypeBuilder.
33075
33076 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
33077
33078         * class.c, class.h: more refactoring of class init.
33079         Export mono_class_setup_mono_type() and mono_class_setup_parent().
33080
33081 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
33082
33083         * marshal.c, marshal.h: start of marshaling interface.
33084
33085 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
33086
33087         * icall.c: fix order in assembly qualified name icall.
33088
33089 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
33090
33091         * class.c: do not free str, since we store it in the hash table.
33092         * reflection.h: add label field to MonoILExceptionInfo.
33093         * reflection.c: handle references to more than one assembly. Handle
33094         case when there isn't a module created in the assembly.
33095
33096 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
33097
33098         * class.c: Fix typo. Start refactoring of class init code.
33099
33100 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
33101
33102         * appdomain.c: exit with 1 on error.
33103         * class.c: we already have the name in MonoClassField.
33104         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
33105         MonoStreamHeader instead of an offset of image->raw_metadata.
33106
33107 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
33108
33109         * appdomain.c (mono_init): Be even more descriptive about the error.
33110
33111 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
33112
33113         * appdomain.c: give the user an informative message when corlib can't
33114         be loaded.
33115
33116 2002-02-26  Martin Baulig  <martin@gnome.org>
33117
33118         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
33119         New icall to get the time zone data.
33120
33121 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
33122
33123         * reflection.c: set virtual and raw size of section correctly.
33124         * threads.c: transfer domain information to newly created threads.
33125
33126 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
33127
33128         * class.c: when instancing a class in a domain, load the default
33129         vaules for static fields from the constant table. Fix System.Enum to
33130         not be an enum.
33131         * icall.c: implement Object::GetType() internalcall. Implemented
33132         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
33133         Fixed checking of binding flags in find_members().
33134         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
33135         * reflection.c: handle enumerations when writing to the constant
33136         table. Use a different object cache for types.
33137
33138
33139 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
33140
33141         * object.c (mono_object_isinst): fix for arrays
33142
33143         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
33144
33145 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
33146
33147         * object.c: don't use mprotect ()  and fix intern pool hash table
33148         lookup for big endian systems.
33149
33150 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
33151
33152         * icall.c: change type_is_subtype_of () signature.
33153
33154 2002-02-21  Mark Crichton  <crichton@gimp.org>
33155
33156         * rand.c, rand.h: Added random number generator for
33157         System.Security.Cryptography classes.
33158
33159         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
33160
33161         * icall.c: Added System.Security.Cryptography calls.
33162
33163 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
33164
33165         * class.c, icall.c, metadata.c: better support for pointer types.
33166         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
33167         * reflection.c: Add support for getting custom attrs for properties
33168         and simplify some code.
33169
33170 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
33171
33172         * icall.c: change getToken () and add custom attribute GetBlob()helper
33173         method.
33174         * reflection.h: add custom attrs array to the reflection builder structures.
33175         * reflection.c: encode and emit custom attributes for all the relevant
33176         reflection objects. Cache fieldref and methodref tokens. Change
33177         mono_image_create_token() interface to take a MonoDynamicAssembly.
33178         More complete custom attributes decoder. Load custom attributes for
33179         Assembly, Field, Method and Constructor objects, too. Make the
33180         returned array an Attribute[] one, not object[]. Added
33181         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
33182         custom attribute constructor.
33183
33184 2002-02-20  Dick Porter  <dick@ximian.com>
33185
33186         * icall.c:
33187         * rawbuffer.c:
33188         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
33189         problem code out for now).
33190
33191 2002-02-19  Radek Doulik  <rodo@ximian.com>
33192
33193         * object.c (mono_ldstr): use hash table to avoid multiple swapping
33194
33195 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
33196
33197         * icall.c: register the GetCustomAttributes method.
33198         * object.c, object.h: add mono_string_new_len ().
33199         * reflection.h, reflection.c: added mono_runtime_invoke(),
33200         mono_install_runtime_invoke(). Added
33201         mono_reflection_get_custom_attrs () to load custom attributes and
33202         create the attribute objects.
33203
33204 2002-02-19  Dick Porter  <dick@ximian.com>
33205         * threads-dummy-types.c:
33206         * threads-dummy-types.h:
33207         * threads-dummy.c:
33208         * threads-dummy.h:
33209         * threads-pthread-types.c:
33210         * threads-pthread-types.h:
33211         * threads-pthread.c:
33212         * threads-pthread.h:  Deleted obsolete files
33213
33214 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
33215
33216         * class.c (mono_class_vtable): runtime init the class when we
33217         allocate static class data.
33218
33219         * icall.c (ves_icall_System_Array_SetValue): check for null values.
33220
33221         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
33222         and String - but we will need generic marshalling support in the
33223         future. 
33224         (mono_init): set the domain name in a ms compatible way
33225
33226         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
33227         String[].
33228
33229 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
33230
33231         * object.c (mono_array_clone): use alloca() instead of g_malloc  
33232         for sizes
33233
33234         * appdomain.c (mono_domain_unload): impl.
33235
33236 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
33237
33238         * appdomain.c, object.c: fix intern pool implementation.
33239         * class.c: fix alignment code.
33240
33241 2002-02-16  Radek Doulik  <rodo@ximian.com>
33242
33243         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
33244         and s2 > s1, just copy lower bytes to be compatible with little
33245         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
33246         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
33247
33248         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
33249         force big_endian to be 1 for big endian machines 
33250         (ves_icall_iconv_new_decoder): ditto
33251
33252 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
33253
33254         * socket-io.c (convert_sockopt_level_and_name): If the system
33255         doesn't define SOL_IP or SOL_TCP, get them by hand using
33256         getprotobyname() and caching the values (because this could be a
33257         slow operation).
33258         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
33259         Use the appropriate struct when the system does support it. Ie,
33260         not all systems have struct ip_mreqn so use struct ip_mreq when
33261         appropriate.
33262
33263 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
33264
33265         * reflection.c: handle finally clauses.
33266
33267 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
33268
33269         * socket-io.c: use g_snprintf() instead of snprintf.
33270
33271 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
33272
33273         * reflection.c (mono_param_get_objects): Cast second argument to
33274         mono_method_get_param_names to a const char** to silence the
33275         compiler warning.
33276
33277         * appdomain.c (mono_domain_assembly_open): Put parens around the
33278         truth statement in the for-loop.
33279
33280         * unicode.c (iconv_convert): Got rid of a compiler warning about
33281         int i being unused when the system has a new iconv.
33282         (iconv_get_length): Same.
33283
33284         * image.c (load_class_names): Cast the second argument to
33285         g_hash_table_insert() to char* to hush compiler warnings about the
33286         arg being a const.
33287         (mono_image_open): Same here.
33288
33289         * socket-io.c: Don't conditionally include sys/filio.h or
33290         sys/sockio.h here anymore since we now get them from
33291         io-layer/io-layer.h
33292         (inet_pton): If the system doesn't support inet_aton, implement
33293         using inet_addr and also #define INADDR_NONE if it isn't defined
33294         by the system.
33295
33296 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
33297
33298         * metadata.c, metadata.h: added function to get packing and size info
33299         of a typedef.
33300         * reflection.h, reflection.c: handle field RVA data. Save info about
33301         the table layout if needed. Assign typedef indexes to all the types
33302         before dumping the info about them to avoid forward reference problems.
33303
33304 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
33305
33306         * socket-io.c (convert_sockopt_level_and_name): ifdef
33307         SO_ACCEPTCONN because it is not defined on my system (old debian)
33308
33309 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
33310
33311         * opcode.c: use stddef.h to get NULL.
33312
33313 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
33314
33315         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
33316         for FIONBIO, FIONREAD and SIOCATMARK.
33317         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
33318         define INADDR_NONE and besides, inet_addr() is deprecated and
33319         should not be used. Use inet_pton() instead - it also has the
33320         added bonus that it can easily handle IPv6 addresses as well.
33321         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
33322
33323 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
33324
33325         * decimal.c: remove _MSC_VER conditional.
33326
33327 2002-02-13  Dick Porter  <dick@ximian.com>
33328
33329         * socket-io.c: 
33330         * icall.c: Internal calls for Blocking, Select, Shutdown,
33331         GetSocketOption and SetSocketOption
33332
33333 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
33334
33335         * assembly.cs: better resolver: use it instead of some kludgy
33336         code.
33337
33338 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
33339
33340         * reflection.c: the best way to speed-up the compiler is to avoid
33341         infinite loops.
33342
33343 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
33344
33345         * class.c (mono_class_vtable): changed the object layout
33346         (obj->vtable->class). 
33347         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
33348
33349 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
33350
33351         * assembly.c: look for assemblies in the assembly dir, too.
33352
33353 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33354
33355         * class.c: fix thinko in mono_class_from_type().
33356
33357 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
33358
33359         * exception.h, exception.c: added TypeLoadException.
33360         * object.h, object.c: added mono_array_clone ().
33361         * icall.c: handle throwOnError in AssemblyGetType().
33362         Added Array.Clone().
33363         * opcode.h, opcode.c: use a single value for the opcode val.
33364         Compile fix for non-gcc compilers.
33365
33366 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
33367
33368         * opcodes.c, opcodes.h: export interesting info about opcodes.
33369
33370 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
33371
33372         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
33373         icalls. 
33374
33375         * class.c (class_compute_field_layout): set element_class for enums
33376         (mono_class_create_from_typedef): set element_class for normal classes
33377
33378         * icall.c (ves_icall_System_Enum_get_value): impl.
33379
33380         * class.c (mono_class_create_from_typedef): do not set valuetype
33381         flag for System.ValueType and System.Enum
33382
33383 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
33384
33385         * unicode.c (iconv_convert): fix big endian problem.
33386
33387 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
33388
33389         * class.c: add asserts if we are ever going to scribble over memory.
33390         * socket-io.c: not all systems have AF_IRDA defined.
33391
33392 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
33393
33394         * class.c (class_compute_field_layout): do not consider static
33395         fields to compute alignment
33396
33397 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
33398
33399         * appdomain.c (mono_appdomain_get): impl.
33400         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
33401
33402 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
33403
33404         * icall.c: ignore "file://" prefix when loading an assembly.
33405
33406 2002-01-23  Dick Porter  <dick@ximian.com>
33407
33408         * socket-io.c:
33409         * icall.c:
33410         * Makefile.am: Added socket support
33411
33412 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
33413
33414         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
33415         code back.  This should return the assemblies that are loaded by
33416         the runtime on behalf of an application domain. 
33417
33418         The current implementation is still broken, it just returns every
33419         assembly loaded, but until we get real applications domain this
33420         will do.
33421
33422 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
33423
33424         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
33425         AppDomain object.
33426
33427 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
33428
33429         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
33430         the mono_class_from_name lookup.
33431         (ves_icall_get_parameter_info): ditto.
33432         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
33433         method.
33434         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
33435
33436 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
33437
33438         * class.c: load also nested classes on class init.
33439         System.ValueType instance methods gets passed boxed
33440         values, unless methods in derived classed that get a pointer to the
33441         data.
33442         * icall.c: use better name parsing code in GetType().
33443         * image.c, image.h: add mono_image_loaded ().
33444         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
33445         * reflection.c, reflection.h: added mono_reflection_parse_type().
33446
33447 2002-01-22  Veronica De Santis <veron78@interfree.it>
33448
33449         * icall.c : Added mapping of internal calls for Manual and Auto reset events
33450         * threads.c : Added the implementation of internal calls for events
33451         * threads.h : Added prototypes of internal calls for events
33452         
33453 2002-01-21  Radek Doulik  <rodo@ximian.com>
33454
33455         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
33456
33457 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
33458
33459         * class.c (mono_class_init): set min_align to 1 (instead of 0)
33460         (mono_class_value_size): use min_align
33461
33462 2002-01-20  Dick Porter  <dick@ximian.com>
33463
33464         * threads.h:
33465         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
33466         so it compiles on w32.
33467
33468 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
33469
33470         * metadata.c (mono_type_stack_size): impl.
33471
33472         * class.c (mono_class_get_field): impl. memberref token
33473
33474 2002-01-16 Veronica De Santis <veron78@@interfree.it>
33475
33476         * icall.h : Added the internal calls mapping for CreateMutex_internal
33477                     and ReleaseMutex_internal.
33478         * threads.h : Added the prototype of mutexes internal calls.
33479         * threads.c : Added the implementations of mutexes internal calls.
33480
33481 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
33482
33483         * metaparse.h: removed unused file.
33484         * reflection.c, reflection.h: added stream_data_align () function 
33485         to align data in streams and keep stream aligned. Add support for
33486         exception support in method headers.
33487
33488 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
33489
33490         * unicode.c: make iconv_convert () return the number of bytess written
33491         in the output buffer.
33492
33493 2002-01-15  Dick Porter  <dick@ximian.com>
33494         * threads.c: Make the runtime's idea of infinite timeouts coincide
33495         with the class library's
33496
33497         Fix a particularly egregious bug in mono_thread_cleanup(). That
33498         code was so utterly bogus it must have been written on a Monday.
33499
33500 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
33501
33502         * reflection.h: add subtypes field to TypeBuilder.
33503         * reflection.c: encode constants for literal fields.
33504         Handle subtypes. Fix user string token (and add a zero byte)
33505         at the end.
33506         
33507 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
33508
33509         * class.c (mono_class_init): bug fix: assign slot numbers for
33510         abstract methods.
33511
33512 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
33513
33514         * reflection.c: don't try to output a code RVA for abstract methods.
33515         Small fixes for method header format. Output parameter info to the
33516         ParamDef table. Save method overriding info to MethodImpl table.
33517         Fix property support. Allow typedef.extends to be a type in the
33518         building assembly.
33519         * verify.c: fix off-by-one error.
33520
33521 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
33522
33523         * class.c: fix mono_class_from_mono_type () for szarray types.
33524         Remove unused cache check in mono_class_from_type_spec().
33525         * icall.c: *type_from_name () functions handle simple arrays and byref.
33526         * reflection.c: handle byref and szarray types. Handle methods without
33527         body (gets P/Invoke compilation working). Handle types and fields in
33528         get_token ().
33529         * reflection.h: add rank to MonoTypeInfo.
33530
33531 2002-01-10  Dick Porter  <dick@ximian.com>
33532
33533         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
33534         internal calls
33535
33536 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
33537
33538         * icall.c: initialize class in type_from_handle ().
33539         Loop also in parent classes for get_method ().
33540         * reflection.c: properly encode class and valuetype types.
33541         Start on encoding TypeBuilder types. Handle fieldrefs.
33542         Use correct length when registering a user string.
33543         Handle ConstructorBuilder and MonoMethod in get_token ().
33544         Make mono_type_get_object () aware of cached types.
33545         * object.c: back out change to mono_string_new ().
33546
33547 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
33548         * object.c: mono_string_new should return a NULL when the string 
33549         passed in is NULL -- not try to deference it.
33550         
33551 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
33552
33553         * icall.c: hack to make IsSubType work for TypeBuilders.
33554         * reflection.c: emit constructors before methods.
33555         Retrieve param names in mono_param_get_objects().
33556
33557 2002/01/05  Nick Drochak  <ndrochak@gol.com>
33558
33559         * Makefile.am: fix list of headers and sources so automake 1.5
33560         doesn't complain. Removed \# at end of list.
33561
33562 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
33563
33564         * reflection.c: get token for a method ref. Set return type of
33565         constructor to void.
33566         * loader.c: debug message.
33567         * class.c: typo fix.
33568
33569 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
33570
33571         * icall.c: fix array init with rank > 1. FindMembers
33572         loops in parent class as well.
33573         * image.c: do not insert nested types in name cache.
33574         * reflection.c: warning fix.
33575         * reflection.h: add override method (for interface impl).
33576
33577 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
33578
33579         * metadata.c: fix customattr decoding.
33580
33581 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
33582
33583         * rawbuffer.cs: Added native Win32 implementation, avoids using
33584         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
33585
33586 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
33587
33588         * class.c: make the low-level routines handle the cache.
33589
33590 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
33591
33592         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
33593
33594 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
33595
33596         * class.c: fix mono_array_element_size() for objects.
33597         * class.h, class.c: add properties to MonoClass and load them
33598         at init time.
33599         * icall.c: check with isinst() when assigning a value to an array
33600         instead of requiring the classes to match exactly.
33601         Implemented icall for System.Type::GetType().
33602         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
33603         enums. Handle bindingflags when looking for methods and fields.
33604         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
33605         and mono_metadata_methods_from_property().
33606         * reflection.h, reflection.c: added structures for propreties,
33607         parameters and enums. Implemented mono_property_get_object() and
33608         mono_param_get_objects().
33609
33610 2001-12-18  Dick Porter  <dick@ximian.com>
33611
33612         * file-io.c: Use mono_string_to_utf16() instead of
33613         mono_string_chars()
33614
33615         * object.c: Added mono_string_to_utf16(), which copies the non
33616         NULL-terminated MonoString into a new double-null-terminated
33617         buffer.
33618
33619 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
33620
33621         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
33622
33623 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
33624
33625         * file-io.c: raise exceptions if handle is invalid.
33626
33627 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
33628
33629         * assembly.c: yet another check for mscorlib.
33630         * class.c, class.h: load nesting info for classes.
33631         * icall.c: many new functions to support the Reflection classes.
33632         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
33633         * reflection.h, reflection.c: mono_image_create_token(),
33634         mono_assembly_get_object(), mono_type_get_object(),
33635         mono_method_get_object(), mono_field_get_object(): methods to return
33636         objects that parallel the C representation of assemblies, types,
33637         methods, fields.
33638
33639 2001-12-11  Dick Porter  <dick@ximian.com>
33640
33641         * icall.c:
33642         * file-io.c: Internal calls for file IO.
33643
33644 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
33645
33646         * tabledefs.h: missing FileAttributes.
33647         * verify.h, verify.c: use is_valid_string () to simplify and check for
33648         valid strings more correctly. Fix warnings and speeling.
33649         Check more tables: Filed, File, ModuleRef, StandAloneSig.
33650         Check code: branches, maxstack, method calls.
33651
33652 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
33653
33654         * object.c (mono_object_allocate): removed static, so that the jit
33655         can allocate value types.
33656
33657         * icall.c (ves_icall_System_DateTime_GetNow): impl.
33658
33659 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
33660
33661         * class.c: init enum types right away and register the
33662         token->MonoClass map in mono_class_create_from_typedef ().
33663         * verify.h, verify.c: first cut of the verifier.
33664         * pedump.c: add --verify switch to verify metadata tables.
33665         * tabledefs.h: add some missing enums.
33666
33667 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
33668
33669         * class.c (mono_install_runtime_class_init): impl.
33670         (mono_class_init): renamed mono_class_metadata_init to
33671         mono_class_init, also removed the metadata_inited flag
33672
33673         * object.c (mono_object_isinst): use faster algorithm
33674
33675 2001-11-30  Radek Doulik  <rodo@ximian.com>
33676
33677         * mono-endian.h: reverted last change
33678         added function prototypes
33679
33680         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
33681         add mono-endian.c back
33682
33683         * mono-endian.c: returned back, as Paolo pointed out, it's needed
33684         for unaligned access, I've mistaked it with endianess. I am
33685         sorry.
33686         (mono_read16): fix reverted endianess
33687         (mono_read64): ditto
33688         (mono_read32): ditto
33689
33690 2001-11-30  Dick Porter  <dick@ximian.com>
33691
33692         * exception.c: Implement mono_exception_from_name()
33693
33694 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
33695
33696         * metadata.h, metadata.c: remove params_size and locals_size and their
33697         calculation from the metadata code: they are only usefult to the
33698         interp.
33699
33700 2001-11-29  Radek Doulik  <rodo@ximian.com>
33701
33702         * object.c (mono_ldstr): swap bytes here, it's probably not the
33703         best place, but works for me now, I'll redo it once I know mono
33704         better, also note that I add PROT_WRITE and don't reset back, also
33705         note that it's only affects big endians, so x86 should be OK
33706
33707         * mono-endian.h (read16): use just glib macros for both endians
33708
33709         * mono-endian.c: removed as glib macros are used in in
33710         mono-endian.h so we don't need to care about endianess for read
33711         macros as glib does that for us already
33712
33713 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
33714
33715         * class.h, class.h: take minimum alignment into consideration so
33716         that the fields of a class remain aligned also when in an array.
33717
33718 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
33719
33720         * loader.h, loader.c: add mono_method_get_param_names().
33721         * class.c: 0-init class fields.
33722
33723 2001-11-26  Dick Porter  <dick@ximian.com>
33724
33725         * icall.c:
33726         * threads-types.h:
33727         * threads.c: New file that handles System.Threading on all platforms
33728
33729         * object.c: 
33730         * object.h: Remove the synchronisation struct from MonoObject,
33731         replace it with a pointer that gets initialised on demand
33732
33733         * Makefile.am: Replace all the system-specific threading code with
33734         a single file that uses the new wrapper library
33735
33736 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
33737
33738         * class.c, class.h: add mono_install_trampoline() so that the runtime
33739         can register a function to create a trampoline: removes the ugly
33740         requirement that a runtime needed to export arch_create_jit_trampoline.
33741         * object.h, object.c: added mono_install_handler() so that the runtime
33742         can install an handler for exceptions generated in C code (with
33743         mono_raise_exception()). Added C struct for System.Delegate.
33744         * pedump.c: removed arch_create_jit_trampoline.
33745         * reflection.c: some cleanups to allow registering user strings and
33746         later getting a token for methodrefs and fieldrefs before the assembly
33747         is built.
33748         * row-indexes.h: updates and fixes from the new ECMA specs.
33749
33750 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
33751
33752         * class.h, class.c: add enum_basetype field to MonoClass.
33753         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
33754         to get index in the constant table reated to a field, param or
33755         property.
33756         * reflection.h, reflection.c: handle constructors. Set public-key and
33757         version number of the built assembly to 0.
33758         * row-indexes.h: update from new ECMA spec.
33759
33760 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
33761
33762         * class.h, class.c: add a max_interface_id to MonoClass.
33763         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
33764         since it's used to do that. Added mono_type_type_from_obj().
33765         Make GetType() return NULL instead of segfaulting if the type was not
33766         found. Handle simple arrays in assQualifiedName.
33767         * object.h: add a struct to represent an Exception.
33768         * reflection.c: output call convention in method signature.
33769         Add code to support P/Invoke methods and fixed offsets for fields.
33770
33771 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
33772
33773         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
33774         the value.
33775         * icall.c: use mono_array_addr instead of array->vector: fixes the
33776         reflection image writing.
33777         * reflection.c: init call convention byte to 0 in method signature.
33778         Encode the property signature. Don't output property-related methods
33779         twice. Really process the properties for a type (don't cast a field to
33780         a property, my mom always told me that).
33781         Fix 64 bit issues in pointer alignment in a different and more
33782         readable way.
33783
33784 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
33785
33786         * loader.h: Removed type class from MonoDefaults, added monotype
33787
33788         * loader.c: Loaded MonoType, removed loading of Type
33789
33790         * icall.c (my_mono_new_object): Now returns a System.MonoType,
33791         and fills in System.Type._impl with a RuntimeTypeHandle rather
33792         than the actual MonoClass *
33793
33794         (ves_icall_type_from_handle): change from type_class to
33795         monotype_class
33796
33797         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
33798         implemented
33799
33800         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
33801         implemented
33802
33803         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
33804
33805         (ves_icall_System_Reflection_Assembly_GetType): implemented
33806
33807         (ves_icall_System_MonoType_assQualifiedName): implemented
33808
33809         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
33810
33811 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
33812
33813         * assembly.c (mono_assembly_open): Implement a cache for the
33814         assemblies. 
33815
33816         (mono_assembly_close): only destroy the assembly when the last
33817         reference is gone.
33818         
33819 2001-11-09  Dick Porter  <dick@ximian.com>
33820
33821         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
33822
33823 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
33824
33825         * class.c (mono_class_metadata_init): bug fix: compute the right slot
33826
33827 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
33828
33829         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
33830         from Martin Weindel.
33831         * object.h: add mono_string_chars ().
33832
33833 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
33834
33835         * reflection.c (build_compressed_metadata): Eliminates warnings
33836         and uses 64-bit clean code.
33837
33838         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
33839         (mono_type_equal): Change signature to eliminate warnings.
33840
33841 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
33842
33843         * icall.c, loader.c: remove the internalcall array constructors.
33844         Changes to match the new MonoArray structure.
33845         * object.h, object.c: an array object doesn't allocate an extra
33846         vector. Add mono_array_new_full () to create jagged arrays easily.
33847
33848 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
33849
33850         * metadata.h, metadata.c: add mono_metadata_field_info () to
33851         retreive all the info about a field from vairous tables.
33852         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
33853         * class.h, class.c: augment MonoClassField with more info.
33854         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
33855         policy and load a field's RVA if needed.
33856
33857 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
33858
33859         * class.c (mono_class_metadata_init): create a trampoline for all
33860         virtual functions instead of actually compiling them.
33861
33862 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
33863
33864         * class.h, class.c: include name in MonoClassField.
33865         * class.c: fix fundamental type of System.Object and System.String.
33866         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
33867         tokens in ldtoken.
33868         * icall.c: remove internalcalls for the Reflection stuff that is now
33869         done in C# code.
33870         * loader.c: mono_field_from_memberref () implementation.
33871         * mono-endian.c: thinko (s/struct/union/g).
33872         * object.c, object.h: make the mono_string_* prototypes actually use
33873         MonoString instead of MonoObject.
33874         * reflection.c, reflection.h: updates for changes in the reflection
33875         code in corlib: we use C structures that map to the actual C# classes.
33876         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
33877         fat method header if needed and use the info from the ILGenerator for
33878         methods. Handle fields in types. Misc fixes.
33879
33880 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
33881
33882         * class.c (mono_class_metadata_init): bug fix: always allocate
33883         space for static class data
33884
33885 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
33886
33887         * class.c (mono_compute_relative_numbering): use relative
33888         numbering to support fast runtime type checks.
33889
33890 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
33891
33892         * class.c (mono_class_create_from_typeref): added debugging output
33893         to print class name when MonoDummy is returned instead of real class
33894
33895 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
33896
33897         * class.c (mono_class_metadata_init): interface offset table now
33898         contains pointers into the vtable - this is more efficient for the jit
33899
33900 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
33901
33902         * class.c (mono_class_metadata_init): use a temporary vtable (the
33903         old algorithm only worked for the interpreter, but not for the jit)
33904
33905 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
33906
33907         * loader.c (method_from_memberref): use mono_class_get to get the
33908         class of an array instead of using System.Array directly.
33909         (mono_get_method): also add MEMBERREF methods to the method cache
33910         which usefull for arrays.
33911
33912 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
33913
33914         * pedump.c (arch_compile_method): added to compute vtable entry
33915
33916         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
33917         number of interfaces.
33918         
33919         * class.h: merged MonoArrayClass into MonoClass
33920
33921         * class.c (mono_class_create_from_typedef): compute the vtable size and
33922         allocate space to include the vtable inside MonoClass
33923         (mono_class_metadata_init): initialize the vtable
33924
33925 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
33926
33927         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
33928         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
33929         * image.c: endian fixes by Laurent Rioux.
33930         * object.h, object.c: rename MonoStringObject to MonoString and
33931         MonoArrayObject to MonoArray. Change some function names to conform to
33932         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
33933         guint16* as first argument, so don't use char*.
33934         Provide macros to do the interesting things on arrays in a portable way.
33935         * threads-pthread.c: updates for the API changes and #include <sched.h>
33936         (required for sched_yield()).
33937         * icall.c: updates for the API changes above.
33938         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
33939         platforms that need them.
33940
33941 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
33942
33943         * class.c: set the correct type for all the fundamental
33944         type when loading the class.
33945
33946 2001-10-05  Dick Porter  <dick@ximian.com>
33947
33948         * threads-pthread.c (pthread_mutex_timedlock): Simple
33949         compatibility version for C libraries that lack this call.
33950
33951 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
33952
33953         * class.c: MonoTypes stored in MonoClass are stored as
33954         fundamental MonoTypes when the class represents a
33955         fundamental type (System.Int32, ...).
33956         The TypeHandle return by ldtoken is a MonoType*.
33957         * icall.c: ves_icall_get_data_chunk () write out all the
33958         PE/COFF stuff. Implement ves_icall_define_method (),
33959         ves_icall_set_method_body (), ves_icall_type_from_handle ().
33960         * image.c: properly skip unknown streams.
33961         * loader.h, loader.c: add type_class to mono_defaults.
33962         * metadata.c, metadata.h: export compute_size () as
33963         mono_metadata_compute_size () with a better interface.
33964         Typo and C&P fixes.
33965         * pedump.c: don't try to print the entry point RVA if there is no entry point.
33966         * reflection.c, reflection.h: many cleanups, fixes, output method
33967         signatures and headers, typedef and typeref info, compress the metadata
33968         tables, output all the heap streams, cli header etc.
33969         * row-indexes.h: typo fixes.
33970
33971 2001-10-04  Dick Porter  <dick@ximian.com>
33972
33973         * object.h: Add a synchronisation mutex struct to MonoObject
33974
33975         * object.c (mono_new_object): Initialise the object
33976         synchronisation mutexes
33977
33978         * icall.c: System.Threading.Monitor internal calls
33979         
33980         * threads-pthread.h:
33981         * threads-pthread.c: System.Threading.Monitor internal calls
33982
33983         * threads-types.h: New file, includes the system-specific thread
33984         structures
33985         
33986         * threads-pthread-types.h:
33987         * threads-pthread-types.c: New files, handle pthread-specific
33988         synchronisation types
33989
33990         * threads-dummy-types.h: 
33991         * threads-dummy-types.c: New files of dummy support for
33992         thread-specific types
33993
33994         * metadata.c:
33995         * image.c:
33996         * pedump.c: include mono-endian.h not endian.h
33997         
33998         * Makefile.am: More threads files.
33999         Name mono-endian.h not endian.h
34000
34001 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
34002
34003         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
34004         stuff and implement a few more bits.
34005         * icall.c: a field needs to be dereferenced twice. Do not use the same
34006         name for two variables in the same scope.
34007         * image.c, image.h: cleanups.
34008
34009 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
34010
34011         * class.c (mono_class_metadata_init): bug fix: compute the right size
34012
34013 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
34014
34015         * icall.c: implemented some of the Reflection internalcalls.
34016         * image.c, image.h: start writing out the PE/COFF image.
34017         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
34018         that does the reverse than decode_blob_size ().
34019         * object.c: use mono_metadata_encode_value (). Move here
34020         temporary implementation of mono_string_to_utf8 ().
34021         * rawbuffer.c: make malloc_map static.
34022
34023 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
34024
34025         * metadata.c: fix type comparison for arrays.
34026         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
34027         Added a couple of new classes to monodefaults.
34028         * icall.c: added a couple of Reflection-related internalcalls.
34029         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
34030         Added a byval_arg MonoType to MonoClass.
34031
34032 2001-09-28  Dick Porter  <dick@ximian.com>
34033
34034         * icall.c:
34035         * threads-pthread.h: 
34036         * threads-pthread.c: Implemented internal calls for
34037         LocalDataStoreSlot operations.  Applied mutexes around all shared
34038         data.  Reworked the thread creation and Start() operations to
34039         avoid a race condition.
34040         
34041         * threads-dummy.h:
34042         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
34043
34044 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
34045
34046         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
34047
34048 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
34049
34050         * class.c, loader.c: warn and return NULL instead of erroring out.
34051         * icall.c: added System.AppDomain::getCurDomain().
34052         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
34053
34054 2001-09-25  Dick Porter  <dick@ximian.com>
34055
34056         * threads-pthread.h:
34057         * threads-pthread.c: Implemented timed thread joining and added
34058         System.Threading.Thread::Join_internal internal call
34059
34060         * icall.c: Added System.Threading.Thread::Join_internal internal call
34061
34062         * threads-dummy.h:
34063         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
34064
34065 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
34066
34067         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
34068         mono_string_intern () to implement the semantics of the ldstr opcode
34069         and the interning of System.Strings.
34070         * icall.c: provide hooks to make String::IsIntern and String::Intern
34071         internalcalls.
34072
34073 2001-09-23  Dick Porter  <dick@ximian.com>
34074
34075         * threads-dummy.c: 
34076         * threads-dummy.h: New files of dummy threading routines
34077
34078         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
34079         support code based on system specifics
34080
34081         Rename PTHREAD_LIBS to THREAD_LIBS
34082         
34083 2001-09-23  Dick Porter  <dick@ximian.com>
34084
34085         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
34086         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
34087         internal calls.
34088         (mono_thread_init): Set up a Thread object instance to return when
34089         the main thread calls Thread.CurrentThread
34090         (mono_thread_cleanup): Wait for all subthreads to exit
34091
34092         * icall.c: New internal calls for System.Threading.Thread::Sleep
34093         (including Schedule) and CurrentThread
34094
34095         * threads.h: New file, to insulate thread-specific stuff from the
34096         rest of the code
34097
34098 2001-09-21  Dick Porter  <dick@ximian.com>
34099
34100         * threads-pthread.h: 
34101         * threads-pthread.c: New file, for handling pthreads-style
34102         threading support.  Start() now starts a new thread and executes
34103         the ThreadStart delegate instance.
34104
34105         * icall.c: Added the internalcall for
34106         System.Threading.Thread::Start_internal
34107
34108         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
34109
34110 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
34111
34112         * loader.c: work around the different signatures for delegates
34113         constructors csc generates in compiled code vs the ones compiled in mscorlib.
34114
34115 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
34116
34117         * class.h, class.c: add mono_class_get_field_from_name ().
34118         * *: Fix C comments and other ANSI C issues.
34119
34120 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
34121
34122         * endian.h, assembly.c: fix some endianness issues.
34123
34124 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
34125
34126         * loader.h, load.c: add delegate_class to mono_defaults.
34127         Handle runtime provided methods in mono_get_method ().
34128
34129 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
34130
34131         * loader.c (mono_get_method): use pinvoke for internal call
34132
34133         * icall.c: use pinvoke for internal call
34134
34135         * loader.c (method_from_memberref): set the method name
34136
34137 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
34138
34139         * metadata.c: help the compiler generate better code for
34140         mono_class_from_mono_type ().
34141
34142 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
34143
34144         * class.c (mono_class_metadata_init): delayed computing of the
34145         class size to mono_class_metadata_init ()
34146
34147 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
34148
34149         * class.c, class.h: add an interfaces member to MonoClass.
34150         * image.c, image.h: add assembly_name field to MonoImage
34151         from the assembly table.
34152         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
34153
34154 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
34155
34156         * class.c: Handle Array in mono_class_from_mono_type ().
34157         * metadata.c, pedump.c: some endian fixes.
34158
34159 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
34160
34161         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
34162         * metadata.c: fix small problem introduced with the latest commit.
34163
34164 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
34165
34166         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
34167         We don't need a MonoMetadata pointer anymore to compare signatures in
34168         mono_metadata_signature_equal (), update callers.
34169         Reduced memory usage an number of allocations for MonoMethodHeader and
34170         MonoMethodSignature.
34171
34172 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
34173
34174         * metadata.c: added compare for szarray.
34175
34176 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
34177
34178         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
34179         and add a couple more types to it and mono_defaults. Give an hint on
34180         classes that need implementing in our corlib and are referenced
34181         in mscorlib.
34182
34183 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
34184
34185         * class.h, class.c: keep track if a class is also an Enum.
34186         * loader.c: Implement a couple more types for use in libffi
34187         marshalling. Gives better diagnostics when failing to dlopen
34188         a library. Set method->klass for P/Invoke methods, too.
34189
34190 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
34191
34192         * class.c, class.h: add a MonoType this_arg to MonoClass that
34193         represents a pointer to an object of the class' type that
34194         can be used by the interpreter and later the type cache.
34195         Add best guess alignment info for valuetype objects.
34196
34197 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
34198
34199         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
34200         into MonoType: one less level of indirection and allocation and
34201         simplifies quite a bit of code. Added cache for MonoTypes that are
34202         used frequently, so that we don't need to allocate them all the time.
34203
34204 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
34205
34206         * class.c (mono_class_create_from_typedef): System.Enum is also a
34207         value type, although it does not derive from System.ValueType
34208         (maybe a bug in the ms compiler?)
34209
34210         * metadata.c (mono_type_size): return the right size for value types
34211
34212         * loader.c (mono_get_method): only initialize method header if not abstract
34213
34214         * class.c (mono_class_from_mono_type): use mono_default values. 
34215
34216 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
34217
34218         * *: use MonoClass pointers instead of <type_tokens>
34219         
34220         * class.h: new flag: metadata_inited.
34221
34222         * class.c (mono_class_metadata_init): impl.
34223         (mono_class_instance_size): impl.
34224         (mono_class_data_size): impl.
34225
34226 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
34227
34228         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
34229         MonoClass now has the name and name_space fields. 
34230         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
34231         mono_get_method () takes and optional MonoClass as argument.
34232         Removed mono_typedef_from_name() and added mono_class_token_from_name()
34233         instead that takes advantage of a map from class names to typedef
34234         tokens in MonoImage.
34235
34236 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
34237
34238         * metadata.c: zero is not a valid alignment boundary.
34239         Merge MONO_TYPE_VOID in default decoding code.
34240
34241 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
34242
34243         * image.h: merged MonoMetadata into MonoImage
34244
34245         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
34246         identify the type of elements.
34247
34248 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
34249
34250         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
34251         * cil-coff.h: split MonoMSDOSHeader and add size info.
34252         * image.c: add some consistency checks.
34253         * metadata.c: fix row size computation: one programmer
34254         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
34255         add explanation for the locator routine.
34256         Fix decoding of size in method header.
34257         
34258 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
34259
34260         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
34261         (g_concat_dir_and_file): Bring g_concat_dir_and_file
34262         function from gnome-libs.  This uses the right path separator
34263         based on the OS, and also works around a bug in some systems where
34264         a double slash is not allowed. 
34265         (default_assembly_name_resolver): Use g_concat_dir_and_file
34266         (mono_assembly_open): ditto.
34267
34268 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
34269
34270         * metadata.c (mono_metadata_signature_equal): impl.
34271
34272         * *: void is now a realy MonoType (instead of using NULL)
34273         
34274         * metadata.c (do_mono_metadata_parse_type): use
34275         mono_metadata_parse_type to parse void value.
34276
34277 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
34278
34279         * metadata.c, metadata.h: in the signature and method header store
34280         only the space required for holding the loca vars and incoming arguments.
34281
34282 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
34283
34284         * metadata.c (do_mono_metadata_parse_type): treat void like any
34285         other type (instead of assigning NULL);
34286
34287 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
34288
34289         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
34290
34291 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
34292
34293         * image.c (do_mono_image_open): added a cache for arrays.
34294
34295 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
34296
34297         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
34298         decode a single column from a row in a metadata table and changes
34299         to take advantage of it in the typedef locator (gives a nice speed up).
34300         Store offset info for function params.
34301
34302 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
34303
34304         * image.h (MONO_IMAGE_IS_CORLIB): removed 
34305
34306 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
34307
34308         * assembly.c: how could mono_assembly_close () had ever worked?
34309         * metadata.c, metadata.h: provide offset info for local vars.
34310         Implement mono_type_size () to take care of alignment as well
34311         as size (it was mono_field_type_size in cli/class.c before).
34312
34313 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
34314
34315         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
34316
34317         * assembly.h (CORLIB_NAME): set to corlib.dll
34318
34319         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
34320
34321 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
34322
34323         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
34324         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
34325         tokentype.h: massive namespace cleanup.
34326
34327 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
34328
34329         * metadata.h, metadata.c: decode exception clauses when parsing method header.
34330
34331 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
34332
34333         * metadata.c (mono_metadata_free_type): added check for type !=
34334         NULL (void) before calling mono_metadata_free_type()
34335
34336 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
34337
34338         * metadata.h, row_indexes.h: added header with enumerations to use
34339         to index in the columns from tables in metadata and to decode coded
34340         tokens: we should start using this instead of embedding magic numbers
34341         all over the code.
34342
34343 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
34344
34345         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
34346         Move metadata_t info from cli_image_info_t to MonoImage, where
34347         it's easily accessible. Changed all the uses accordingly.
34348         Added the method and class caches to MonoImage.
34349         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
34350         and mono_metadata_decode_value () signature to be more consistent
34351         with the other parse functions (and simplify code). Taken advantage
34352         of zero-length array allocation with GCC. Removed reduntant (and
34353         wrong) MonoFieldType struct and use MonoParam instead. Changed
34354         mono_metadata_parse_field_type () to use common code for parsing.
34355         Added mono_metadata_typedef_from_field () and
34356         mono_metadata_typedef_from_method () to lookup a typedef index from a
34357         field or method token.
34358         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
34359
34360 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
34361
34362         * metadata.c (mono_metadata_parse_field_type): Implement. 
34363         (do_mono_metadata_parse_type): Split engine from
34364         mono_metadata_parse_type, so that we can create smaller structures
34365         for things that just have one pointer to the MonoType (look at
34366         the MonoFieldType)
34367
34368 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
34369
34370         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
34371         as Jan Gray found out, it is incorrect. 
34372
34373 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
34374
34375         * assembly.c: Implement asssembly loading.  This loads an image
34376         and loads all the referenced assemblies.  Come to think of it, we
34377         could always do lazy loading of the assemblies. 
34378
34379         * image.c (mono_image_open): Keep loaded images in a hashtable.
34380
34381         * image.h (MonoImage): Add reference count.
34382
34383 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
34384
34385         * assembly.c (mono_assembly_open): Keep track of the file name in
34386         case the assembly has no ASSEMBLY table.
34387
34388         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
34389         from get.c here.
34390
34391 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
34392
34393         * metadata.c, metadata.h: decode local vars in method header
34394         parse function. Change callers accordingly.
34395
34396 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
34397
34398         * metadata.h, cil-coff.h: protect against multiple inclusion.
34399         Added some new structures to hold information decoded from metadata:
34400         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
34401         and relevant decoding/free functions.
34402         * metadata.c: implement decoding functions. Add warning for out of bounds
34403         index in mono_metadata_locate(). Implement mono_get_method () to retreive
34404         all the info about a method signature and invocation. Remove check on
34405         uninitialized local var in parse_mh() and fix memory leak.
34406
34407 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
34408
34409         * metadata.h: More macros.
34410
34411         * tokentype.h: New file.
34412
34413 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
34414
34415         * assembly.c: added a consistency check and initialize
34416         some structures with g_new0().
34417         * metadata.c: fixed a couple more bugs in table size computation
34418         and add other checks for out-of bound access to metadata.
34419
34420 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
34421
34422         * metatada.c: fix bugs computing table sizes. Spew a
34423         warning when index in string heap is out of bounds.
34424
34425 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
34426
34427         * metadata.h: Add a couple of macros to manipulate tokens. 
34428
34429 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
34430
34431         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
34432         cli_section_tables).
34433
34434 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
34435
34436         * metadata.c (mono_metadata_user_string): New function, provides
34437         access to the UserString heap. 
34438
34439 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
34440
34441         * metadata.c: Add inline documentation.
34442
34443 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
34444
34445         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
34446         files. 
34447
34448 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
34449
34450         * typeattr.h: New file, TypeAttribute flags. 
34451
34452 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
34453
34454         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
34455         mono_assembly_ensure_section): Section loading code.
34456         (load_section_tables): Load the sections.
34457
34458         * mono/metadata/metadata.c (mono_metadata_locate_token,
34459         mono_metadata_locate): Functions to locate the information
34460         definition given a token or a table and an index.
34461         (mono_metadata_compute_table_bases): New.
34462         (compute_size): New function to compute the sizes of the various
34463         tables.
34464
34465         * mono/metadata/metadata.h: Finish listing the different index
34466         types. 
34467
34468         * mono/metadata/pedump.c: Improve to dump new information.
34469
34470 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
34471
34472         * mono/metadata/metadata.c: Entered all the tables matching
34473         Beta2. 
34474
34475         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
34476
34477
34478
34479