In metadata:
[mono.git] / mono / metadata / ChangeLog
1
2 2008-09-17  Robert Jordan  <robertj@gmx.net>
3
4         * marshal.c (mono_marshal_get_ldflda_wrapper): Add support for
5         context bound objects. Fixes #415577.
6
7         Code is contributed under MIT/X11 license.
8
9 Tue Sep 16 21:03:58 CEST 2008 Paolo Molaro <lupus@ximian.com>
10
11         * icall-def.h, threads-types.h, threads.c: fixed SpinWait()
12         implementation (bug #423582).
13
14 2008-09-16  Zoltan Varga  <vargaz@gmail.com>
15
16         * object.c (mono_object_get_virtual_method): Handle the case method->slot
17         is not set. Fixes #426309.
18
19 2008-09-16  Jb Evain  <jbevain@novell.com>
20
21         * class.c (mono_class_from_name): fix the exported type look up
22         when the type is defined in a referenced assembly.
23
24 2008-09-16  Jb Evain  <jbevain@novell.com>
25
26         * reflection.c (mono_image_fill_export_table_from_type_forwarders):
27         increment the next index counter on each iteration to make that work
28         for more than one type forwarder. Unmanaged part to fix #422929.
29
30 2008-09-15  Mark Probst  <mark.probst@gmail.com>
31
32         * object-internals.h: enum ComInterfaceType in
33         MonoInterfaceTypeAttribute is guint32, not guint16.
34
35 2008-09-12  Mark Probst  <mark.probst@gmail.com>
36
37         * cil-coff.h, image.c, reflection.c: Endianness fixes in image
38         writing code.
39
40 2008-09-11  Mark Probst  <mark.probst@gmail.com>
41
42         * icall.c: Boolean arguments to a runtime invoke are MonoBoolean,
43         not gboolean.
44
45 2008-09-11  Mark Probst  <mark.probst@gmail.com>
46
47         * debug-mono-symfile.c (mono_debug_symfile_lookup_location):
48         Endianness fixes for MonoSymbolFileOffsetTable.
49
50 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
51
52         * process.c (complete_path) : Removing quotes from the 
53           input path.  The glib file routines do not handle file paths
54           that have quotes around them.
55
56         Code is contributed under MIT/X11 license.
57
58 2008-09-10  Bill Holmes  <billholmes54@gmail.com>
59
60         * socket-io.h : Adding a comment to provide locations where 
61           changes to MonoSocketAsyncResult need to be synced.
62
63         Code is contributed under MIT/X11 license.
64
65 2008-09-10  Zoltan Varga  <vargaz@gmail.com>
66
67         * marshal.c (emit_marshal_custom): Call NativeToManaged for non-out 
68         parameters as well. Fixes #425001.
69
70 2008-09-08  Miguel de Icaza  <miguel@novell.com>
71
72         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Fix
73         windows build.
74
75 2008-09-07  Miguel de Icaza  <miguel@novell.com>
76
77         * console-io.c: Add support for tracking the window size if it
78         changes.
79
80         The setup is very simple: the TtySetup function will now return a
81         pointer to a location in memory that tracks the current console
82         size.  The managed code checks its current value every time its
83         queried against the last value set, and updates accordingly.
84
85         With this setup we can work with multiple consoles, and we do not
86         require to poke into managed code from a signal handler.
87
88         Additionally, the environment for COLUMNS and LINES is now handled
89         in unmanaged code.
90
91         (ves_icall_System_ConsoleDriver_GetTtySize): This is now gone.
92
93 2008-09-07  Mark Probst  <mark.probst@gmail.com>
94
95         * marshal.c (mono_type_native_stack_size): Treat
96         MONO_TYPE_TYPEDBYREF like MONO_TYPE_VALUETYPE.
97
98 2008-09-04  Jb Evain  <jbevain@novell.com>
99
100         * class.c (mono_class_is_assignable_from): fix assignability of nullables
101         to nullables.
102
103 2008-09-03 Rodrigo Kumpera  <rkumpera@novell.com>
104
105         * verify.c (verify_type_compatibility_full): Revert change
106         to allow converting a native int to unmanaged pointer be verifiable
107         under non-strict mode.
108         It turns out that "(IntPtr)null" is indeed unverifiable, go figure.
109
110         * verify.c: Added some TODOs.
111
112 2008-09-02  Bill Holmes  <billholmes54@gmail.com>
113
114         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi,
115           ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni) :
116           Changed to use GlobalAlloc for the memory returned on Windows platforms.
117
118         Code is contributed under MIT/X11 license.
119
120 2008-09-02  Jb Evain  <jbevain@novell.com>
121
122         * object.c (mono_ldstr_metdata_sig): renamed to mono_ldstr_metadata_sig.
123
124 2008-09-02 Rodrigo Kumpera  <rkumpera@novell.com>
125
126         reflection.c (typebuilder_setup_fields): Handle classes with
127         explicit size.
128
129 2008-09-01 Rodrigo Kumpera  <rkumpera@novell.com>
130
131         class.c (mono_class_setup_events): Add memory barrier due to
132         double checked locking.
133         
134         class.c (mono_class_setup_properties): Same.
135
136 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
137
138         * class.c (mono_class_is_assignable_from): Fix the build.
139         
140         * class.c (mono_class_is_assignable_from): Call mono_class_setup_vtable ()
141         before accessing klass->interface_bitmap. Fixes #421744.
142
143 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
144
145         * appdomain.c (mono_runtime_set_no_exec): New internal function setting
146         the runtime into no-exec mode, useful when running the AOT compiler.
147
148         * appdomain.c gc.c object.c: Avoid executing managed code when running
149         in no-exec mode.
150         
151         * rawbuffer.c (mono_raw_buffer_load_mmap): Disable this on the iphone.
152
153         * reflection.c (_mono_reflection_get_type_from_info): Handle the 
154         special case when the mono_assembly_loaded () returns NULL because the 
155         search hook is not installed.
156
157 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
158
159         * marshal.c: Applied patch from tom hindle (tom_hindle@sil.org) to fix
160         crashes in bstr marshalling on linux.
161
162 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
163
164         * debug-helpers.c (mono_type_get_desc): Fix printing of generic instances
165         with more than one parameter.
166
167 2008-08-24  Miguel de Icaza  <miguel@novell.com>
168
169         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup): Disable
170         start/stop flow control as well when turning off ICANON (allows
171         C-s and C-q to be read by Console.ReadKey).
172
173 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
174
175         * class.c (mono_class_init): Move the initialization of nested classes
176         into mono_class_get_nested_types (). Fixes #418433.
177
178         * class-internals.h (struct _MonoClass): Add a new 'nested_classes_inited'
179         flag.
180
181         * class.c reflection.c icall.c: Use mono_class_get_nested_types () for 
182         iterating tough the nested classes of a class.
183
184 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
185
186         * class.c (mono_class_generic_sharing_enabled): Enable generic sharing
187         on arm.
188
189 2008-08-22  Miguel de Icaza  <miguel@novell.com>
190
191         * console-io.c (sigcont_handler): Support signal chaining for
192         SIGCONT.
193
194         (console_set_signal_handlers): Use best practices with sigaction,
195         clear the structure before using it. 
196
197 2008-08-22  Robert Jordan  <robertj@gmx.net>
198
199         * console-io.c (ves_icall_System_ConsoleDriver_TtySetup):
200         Fix the Windows build.
201
202 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
203
204         * class.c (mono_class_generic_sharing_enabled): Make the default
205         sharing mode 'corlib'.
206
207 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
208
209         * console-io.c (console_set_signal_handlers): Fix a warning.
210
211         * marshal.c (mono_marshal_get_synchronized_wrapper): Call the wrapper
212         method normally, the JIT will take care of avoiding recursion.
213
214 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
215
216         * console-io.c : Fixing builds for platforms that do not have <termios.h>.
217
218         Code is contributed under MIT/X11 license.
219
220 2008-08-20  Miguel de Icaza  <miguel@novell.com>
221
222         * console-io.c (sigcont_handler): We need to restore the entire
223         termios state, not only the original settings, as things like echo
224         can be controlled after this (Booish exposes this issue with its
225         own ReadLine implementation).
226
227         Additionally, we need to set the terminal back into keypad_xmit
228         mode.
229         
230         (ves_icall_System_ConsoleDriver_TtySetup): Take the keypad xmit
231         string as a paramter as well.   Otherwise we get different
232         keyboard sequences.
233
234 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
235
236         * marshal.c (emit_marshal_object): Avoid managed-to-native marshalling of
237         delegates with byref out parameter passing. Fixes #351520.
238
239         * debug-helpers.c (mono_context_get_desc): New helper function to stringify
240         a generic context.
241         (mono_type_get_desc): Add the type arguments for GENERICINST.
242         (mono_method_full_name): Stringify the class name using mono_type_full_name
243         so it picks up generic arguments.
244
245 2008-08-19  Gert Driesen  <drieseng@users.sourceforge.net>
246
247         * console-io.c: Removed debug output.
248
249 2008-08-19 Rodrigo Kumpera  <rkumpera@novell.com>
250
251         reflection.c (mono_reflection_create_runtime_class): Alloc
252         the nested classes linked list using the dynamic image mempool.
253         Fixes leak in corlib compilation.
254
255 2008-08-19  Miguel de Icaza  <miguel@novell.com>
256
257         * console-io.c: Fix incredibly annoying behavior on the console
258         after resuming execution after control-z.   This affected every
259         console application.
260
261 2008-08-18 Rodrigo Kumpera  <rkumpera@novell.com>
262
263         * mempool-internals.h: Header for mono private mempool functions. The first
264         two function are for allocating glib linked lists using pools.
265
266         * mempool.c: Added g_list_prepend_mempool and g_slist_prepend_mempool.
267
268         * Makefile.am: Added mempool-internals.h.
269
270 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
271
272         * domain.c (mono_domain_create): Call the JIT domain hook if installed.
273         (mono_domain_free): Ditto.
274
275         * domain-internals.h (struct _MonoDomain): Add 'runtime_info' field, this could
276         be used by the JIT to store its domain-specific information, instead of putting
277         it directly into MonoDomain.
278
279         * domain.c (mono_install_create_domain_hook): New helper function to install
280         a hook which initializes domain->runtime_info.
281
282         * domain.c (mono_install_free_domain_hook): Ditto.
283         
284 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
285
286         * marshal.c (mono_delegate_end_invoke): Raise an exception instead of
287         asserting if the ares parameter is null.
288
289         * mono-perfcounters.c: Fix warnings.
290
291         * marshal.c (mono_marshal_get_delegate_begin_invoke): Don't set save_lmf, it
292         is not needed, don't check for interruptions either.
293         (mono_marshal_get_delegate_end_invoke): Ditto.
294
295 2008-08-15  Marek Habersack  <mhabersack@novell.com>
296
297         * mono-perfcounters.c (predef_readonly_counter): added support for
298         reading the ASP.NET Requests Queued counter from another process.
299
300 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
301
302         * metadata-internals.h: Move the 'aot_module' field from MonoAssembly to
303         MonoImage to simplify the AOT code.
304
305 2008-08-10  Zoltan Varga  <vargaz@gmail.com>
306
307         * marshal.c (emit_marshal_object): Implement native-to-managed StringBuilder
308         marshalling. Fixes #416078.
309
310 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
311         
312         * marshal.c (mono_marshal_get_native_wrapper): Add an 'aot' argument, when
313         it is set, looking up the icall address is deferred to the JIT, since 
314         in embedded scenarios, the icall might not be registered in the runtime
315         doing the AOT compilation. Backported from the 2.0 branch.
316
317 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
318
319         * marshal.c (mono_remoting_wrapper): Handle nullable types correctly.
320         Fixes #415621.
321
322 2008-08-05  Marek Habersack  <mhabersack@novell.com>
323
324         * Makefile.am: added support for cross-compilation.
325
326 2008-08-04  Zoltan Varga  <vargaz@gmail.com>
327
328         * socket-io.c (get_socket_assembly): Make 'moonlight' variable static.
329
330 Fri Aug 1 18:47:48 CEST 2008 Paolo Molaro <lupus@ximian.com>
331
332         * mono-perfcounters.c: jitted methods and jitted bytes counters.
333
334 Fri Aug 1 16:07:09 CEST 2008 Paolo Molaro <lupus@ximian.com>
335
336         * class-internals.h, icall-def.h, mono-perfcounters-def.h,
337         mono-perfcounters.c: performance counters implementation.
338
339 2008-07-31  Zoltan Varga  <vargaz@gmail.com>
340
341         * metadata-internals.h (struct _MonoAssembly): Change the type of 'aot_module'
342         to gpointer, letting the AOT code decide what to store in it.
343
344 2008-07-31  Bill Holmes  <billholmes54@gmail.com>
345
346         * marshal.c (cominterop_get_native_wrapper) : Adding a call to 
347           mono_class_setup_methods if the methods are not initialized.
348
349         Code is contributed under MIT/X11 license.
350
351 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
352
353         * verify.c: Remove some debug code I commited by accident.
354
355         * verify.c (mono_method_is_valid_in_context): Change the return value
356         to make possible to distinguish between invalid and unverifiable.
357
358         * verify.c (verifier_load_method): Don't return NULL for unverifiable
359         methods.
360
361 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
362
363         * verify.c (mono_generic_param_is_constraint_compatible): Inflate type
364         constraints. Fixes regression in gtest-253.
365
366 2008-07-30 Rodrigo Kumpera  <rkumpera@novell.com>
367
368         * verify.c (mono_verifier_verify_class): Don't allow generic types
369         with explicit layout.
370
371         * verify.c (mono_method_verify): Check locals and argument types.
372
373 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
374
375         * monitor.c (mono_monitor_try_enter_internal): Allow nterruption of the
376         wait if the thread is in StopRequested state.
377
378         * class.c (mono_class_from_name): Refactor the module searching code into
379         a separate function so it can be reused in the AOT case too.
380
381 2008-07-28 Rodrigo Kumpera  <rkumpera@novell.com>
382
383         * verify.c (mono_type_is_valid_in_context): Improve the error message.
384         Check both the type and it's generic type definition for loader errors.
385         
386         * verify.c (mono_method_is_valid_in_context): Don't generate another
387         error when a type errors occur, this leads to the wrong exception been
388         thrown.
389
390 2008-07-28  Dick Porter  <dick@ximian.com>
391
392         * icall-def.h
393         * process.c
394         (ves_icall_System_Diagnostics_Process_ProcessHandle_duplicate):
395         New internal calls to duplicate and close a process handle.
396
397 2008-07-27  Andreas Färber  <andreas.faerber@web.de>
398
399         * object.c (CHECK_ADD_OVERFLOW_UN): Add missing bracket. Fixes #412499.
400
401 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
402
403         * appdomain.c (unload_thread_main): Attach the unload thread to the runtime.
404
405 2008-07-27  Robert Jordan  <robertj@gmx.net>
406
407         * class.c (mono_class_init): Don't compute class.has_finalize for
408         valuetypes. Fixes #412477.
409
410 2008-07-25 Rodrigo Kumpera  <rkumpera@novell.com>
411
412         * verify.c: Implement constraint equivalence checking.
413         This is required when a generic parameter is used as
414         argument to a constrained one.
415
416         Fixes #410637.
417
418 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
419
420         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
421
422         * domain-internals.h (struct _MonoDomain): Add 'method_code_hash' field.
423
424         * object-internals.h (struct _MonoDelegate): Add 'method_code' field,
425         synch with managed object layout.
426
427 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
428
429         * verify.c (do_branch_op): Handle valuetypes and generic
430         arguments properly.
431
432         * verify.c (do_cmp_op): Same.
433
434         Fixes #410383.
435
436 2008-07-24  Mark Probst  <mark.probst@gmail.com>
437
438         * generic-sharing.c: Fix memory leaks.
439
440         * class.c, class-internals.h: Make
441         mono_class_inflate_generic_type_with_mempool() non-static.
442
443 2008-07-24 Rodrigo Kumpera  <rkumpera@novell.com>
444
445         * pedump.c (dump_verify_info): Dump full class name.
446
447 2008-07-24  Mark Probst  <mark.probst@gmail.com>
448
449         * generic-sharing.c: Removed some old code that didn't do anything.
450
451 2008-07-24  Massimiliano Mantione  <massi@ximian.com>
452         * profiler.c: Added runtime_initialized_event,
453         mono_profiler_install_runtime_initialized and
454         mono_profiler_runtime_initialized. This new hook tells the profiler
455         when the runtime is sufficiently initialized to be able to call
456         mono_thread_attach on the root appdomain.
457         * profiler.h, profiler-private.h: Likewise.
458
459 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
460
461         * verify.c (do_cast): Do boxing for generic arguments as well.
462
463         * class.c (is_nesting_type): Drop generic instantiations before
464         checking for nesting.
465
466         * class.c (can_access_instantiation): Allow access to generic
467         arguments.
468
469 2008-07-23 Rodrigo Kumpera  <rkumpera@novell.com>
470
471         * verify.c (verify_class_for_overlapping_reference_fields):
472         On some cases, the field size might be zero, guard against that.
473         Fix the explicit layout check to work as expected.
474
475 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
476
477         * threads.c (ves_icall_System_Threading_Thread_Abort): Avoid calling 
478         mono_thread_resume () during shutdown, since the thread we want to abort
479         might be suspended.
480
481 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
482
483         * mono-debug-debugger.c (mono_debugger_check_breakpoints): Fix a 
484         warning.
485
486         * debug-mono-symfile.c: Fix a warning.
487
488         * mono-perfcounters.c (get_cpu_times): Fix a warning.
489
490         * object.c (mono_class_vtable): Check if exception_type is set, and return
491         NULL as defined by the function comments.
492
493 2008-07-22  Mark Probst  <mark.probst@gmail.com>
494
495         * mempool.c: Use malloc for every single mempool allocation if the
496         configure option is set.  This makes it easier to track mempool
497         allocations with tools like Valgrind.
498
499 2008-07-22  Jb Evain  <jbevain@novell.com>
500
501         * reflection.c (create_dynamic_mono_image): emit the same
502         metadata version that SL2 does when creating a SL2 image.
503
504 2008-07-21 Rodrigo Kumpera  <rkumpera@novell.com>
505
506         * icall-def.h:
507         * icall.c: New icall System.Enum:get_hashcode. This function
508         avoids the overhead of boxing the enum to the underlying type.
509
510 2008-07-21  Mark Probst  <mark.probst@gmail.com>
511
512         * reflection.c (mono_method_get_object): Don't let static RGCTX
513         invoke wrappers get into MonoReflectionMethods.
514
515 2008-07-17 Rodrigo Kumpera  <rkumpera@novell.com>
516
517         * object-internals.h:
518         * object.c: New mono_runtime_class_init_full function
519         that makes throwing the exception optinal.
520
521         * class-internals.h: New exception type MONO_EXCEPTION_OBJECT_SUPPLIED
522         for the case where the exception object is supplied.
523
524 2008-07-16  Kornél Pál  <kornelpal@gmail.com>
525
526         * coree.h: Define __ImageBase as _image_base__ on cygwin that fixes build with
527         old ld versions.
528
529         Contributed under MIT/X11 license.
530
531 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
532
533         * string-icalls.c (ves_icall_System_String_InternalSplit):
534         Optimize array allocation by caching the MonoClass of the
535         array type.
536
537         * icall.c (ves_icall_Type_GetMethodsByName): Same.
538
539         * reflection.c (mono_param_get_objects): Same.
540
541 2008-07-16 Rodrigo Kumpera  <rkumpera@novell.com>
542
543         * icall-def.h:
544         * icall.c: New ves_icall_MonoGenericClass_InflateType icall.
545         It inflates the given type using the class context.
546
547 2008-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
548
549         * object.c (mono_class_try_get_vtable): New function. Tries to fetch
550         the vtable if it already exists.
551
552         * object-internals.h: Add mono_class_try_get_vtable as part of the
553         internal API.
554
555         * reflection.c (mono_type_get_object): Use the MonoObject from the
556         vtable when possible. Reduces locking contention on reflection heavy
557         code.
558
559 2008-07-15  Zoltan Varga  <vargaz@gmail.com>
560
561         * decimal.c (my_g_bit_nth_msf): Implement this directly without calling
562         g_bit_nth_msf () since that macro is not implemented in eglib.
563
564 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
565
566         * class.c (mono_class_generic_sharing_enabled): Always disable generic sharing
567         on platforms which do not support it.
568
569 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
570
571         * marshal.c (mono_signature_to_name): Encode sig->hasthis as well.
572
573 2008-07-11  Martin Baulig  <martin@ximian.com>
574
575         * mono-debug-debugger.h
576         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_INTERRUPTION_REQUEST'.
577
578         * mono-debug-debugger.c
579         (_mono_debugger_interruption_request): New global volatile variable.
580         (mono_debugger_check_interruption): New public function.
581
582         * threads.c
583         (mono_thread_current_check_pending_interrupt): Call
584         mono_debugger_check_interruption().
585         (mono_thread_interruption_checkpoint_request): Likewise.
586
587 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
588
589         * verify.c: Add more type checks for loaded types. Verify the result
590         handle from ldtoken.
591
592 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
593
594         * loader.c (field_from_memberref): Don't crash if the field
595         wasn't found.
596
597 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
598
599         * verify.c: Verify if type and method instantiations
600         don't have invalid VAR or MVAR arguments.
601
602 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
603
604         * verify.c: Fix double free of function pointer list.
605
606 2008-07-11 Rodrigo Kumpera  <rkumpera@novell.com>
607
608         * object.c (mono_string_to_utf8): Comment the new code as it
609         breaks under eglib.
610
611 2008-07-08 Rodrigo Kumpera  <rkumpera@novell.com>
612
613         * object.c (mono_string_to_utf8): Avoid allocating a temp array.
614
615 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
616
617         * threads.c : Thread.Interrupt changes to ensure that ThreadInterruptedException
618           is not throw too many times.
619
620         Code is contributed under MIT/X11 license.
621
622 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
623
624         * mono-debug.c (mono_debug_find_method): Allow this to be called even when
625         debugging is turned off.
626
627 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
628
629         * generic-sharing.c (mono_method_lookup_rgctx): Fix a warning.
630
631 2008-07-04  Mark Probst  <mark.probst@gmail.com>
632
633         * class-internals.h, class.c: Added new generic sharing option:
634         Share only stuff in System.Collections.Generic, which is now the
635         default.
636
637 2008-07-04  Mark Probst  <mark.probst@gmail.com>
638
639         * generic-sharing.c, class-internals.h: New function for getting a
640         generic method in a generic class given the corresponding method
641         for a different instantiation of the class.  Partly refactored
642         from mini-trampolines.c.
643
644         * class.c: Make sure generic methods have a class_inst if they are
645         part of a generic class.
646
647         * metadata.c (mono_type_stack_size_internal): Handle type
648         variables.
649
650 2008-07-04  Mark Probst  <mark.probst@gmail.com>
651
652         * domain-internals.h: New field (has_this) in MonoGenericJitInfo.
653         Signifies whether information on the this/vtable/mrgctx variable
654         is available.
655
656 2008-07-04  Mark Probst  <mark.probst@gmail.com>
657
658         * object.c, object-internals.h, icall.c: New function
659         mono_delegate_ctor_with_method(), which does the same as
660         mono_delegate_ctor(), but takes an explicit method argument
661         instead of taking the method from the jit info.
662
663         * marshal.c: When creating a delegate with an inflated method take
664         the "this" argument as the target class for the castclass.
665
666 2008-07-03  Mark Probst  <mark.probst@gmail.com>
667
668         * domain.c (mono_jit_info_table_find): Fixed a bug that caused
669         mono_jit_info_table_find() to perform very badly in some cases.
670
671 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
672
673         * icall.c (type_from_typename): Handle 'string'.
674
675         * marshal.c (mono_marshal_get_runtime_invoke): Don't insert runtime invoke
676         wrappers into the wrapper_hash, since the key is not a MonoMethod.
677
678 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
679
680         * icall.c (mono_get_jit_icall_info): New function to return the jit icall hash table.
681
682         * *-gc.c (mono_gc_get_managed_allocator_types): New function to return the
683         number of available managed allocator types.
684
685         * marshal.c (mono_marshal_init): Register Thread:ResetAbort as an icall ().
686         (mono_marshal_get_runtime_invoke): Call ResetAbort as an icall.
687
688 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
689
690         * domain-internals.h (struct _MonoDomain): Add 'jit_code_hash_lock' field,
691         which is a low level lock protecting just the 'jit_code_hash' hash table.
692
693         * domain.c: Initialize+cleanup jit_code_hash_lock.
694         
695 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
696
697         * coree.c (mono_load_coree): Set coree_module_handle global variable only
698         after initialization.
699
700         * coree.h: Make MonoFixupExe internal.
701
702         Contributed under MIT/X11 license.
703
704 2008-06-30  Kornél Pál  <kornelpal@gmail.com>
705
706         * coree.c (_CorValidateImage): Retain IMAGE_DIRECTORY_ENTRY_SECURITY
707         because that is platform independent. Check NumberOfRvaAndSizes in PE32
708         as well.
709         (MonoLoadImage): New wrapper function around LoadLibrary to ensure that the
710         image being loaded is a CLI image and _CorValidateImage gets called.
711
712         * coree.h: Add MonoLoadImage.
713
714         * image.c (mono_image_open_full): Load CLI images using MonoLoadImage
715         instead of LoadLibrary.
716
717         Contributed under MIT/X11 license.
718
719 2008-06-29 Rodrigo Kumpera  <rkumpera@novell.com>
720
721         * icall.c (ves_icall_System_ValueType_Equals): Avoid allocating objects
722         for any primitive type.
723
724 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
725
726         * object.c (mono_array_new_specific): Optimize this and the other allocation
727         functions a bit.
728         
729         * object.c (mono_class_create_runtime_vtable): Use typed allocation in other
730         domains too if mono_dont_free_domains is set.
731
732         * domain-internals.h (mono_dont_free_domains): New internal option controlling
733         whenever to free appdomain data after it has been unloaded.
734
735         * domain.c (mono_domain_free): Don't free appdomain data if the option is set.
736         
737 2008-06-28  Zoltan Varga  <vargaz@gmail.com>
738
739         * icall.c (ves_icall_System_Enum_get_underlying_type): New icall.
740         (mono_method_get_equivalent_method): Fix a warning.
741
742         * object.c (mono_message_init): Avoid looking up array types for each call.
743
744 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
745
746         * object.c (mono_message_invoke): Avoid looking up the object[] type for each
747         call.
748
749         * icall.c (ves_icall_System_ValueType_Equals): Optimize the comparison of enums
750         even more.
751
752         * class.c (mono_class_get_fields): Avoid calling setup_fields_locking () for
753         each iteration.
754
755         * icall.c (ves_icall_System_ValueType_Equals): Avoid traversing all the static
756         fields of an enum.
757
758 2008-06-26 Rodrigo Kumpera  <rkumpera@novell.com>
759
760         * object.c (mono_value_box): Fix boxing of nullables.
761
762 2008-06-26  Kornél Pál  <kornelpal@gmail.com>
763
764         * assembly.c (mono_set_rootdir): Use __ImageBase instead of
765         mono_module_handle that is defined by the linker; no initialization required.
766         * coree.h: Remove mono_module_handle, add __ImageBase, update
767         mono_image_open_from_module_handle.
768         * coree.c (_CorValidateImage): Convert platform independent PE32 images to
769         PE32+ on 64-bit Windows that makes the OS able to load CIL images as modules.
770         (MonoFixupCorEE): Export Address Table RVAs are 32-bit unsigned integers so
771         memory has to be allocated for trampolines (x64) or procedure labels (IA64) up
772         to 4 GB away from image base address. IA64 version is not tested but was very
773         easy to implement and should work if we ever need it.
774         * domain.c (mono_init_internal): Avoid system error message boxes.
775         * image.c (mono_image_open_from_module_handle): Replace ref_count argument
776         with has_entry_point. Handle do_mono_image_load fauilre correctly.
777         (mono_image_open_full, mono_image_close): Use has_entry_point instead of
778         coff_attributes that is a more reliable way to detect if _CorDllMain was called.
779         * metadata-internals.h: Add has_entry_point to _MonoImage on Windows.
780
781         Contributed under MIT/X11 license.
782
783 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
784
785         * class.c, class-internals.h: Export mono_class_get_generic_type_definition
786         as part of the private mono API.
787         
788         * loader.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandleInternalType):
789         Do proper argument checking for methods that belong to generic classes.
790         Do proper type resolution for GMFH/2.
791         Fixes #377324.
792         
793 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
794
795         * verify.c (do_switch): Fix a memory corruption bug with
796         the jump index is out of bound.
797
798 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
799
800         * verify.c: Disable debug code.
801
802 2008-06-25 Rodrigo Kumpera  <rkumpera@novell.com>
803
804         * reflection.c (mono_image_get_methodbuilder_token): Use
805         mono_image_get_methodspec_token_for_generic_method_definition
806         instead of mono_image_get_memberref_token. We cache more memberef
807         entries now.
808
809 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
810
811         * verify.c: Inflate exception clause types.
812         Fixes #402606.
813         
814 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
815
816         * reflection.c (mono_image_get_methodbuilder_token): Don't leak
817         name.
818
819         * reflection.c (mono_image_get_ctorbuilder_token): Same.
820
821         * reflection.c (mono_image_create_method_token): Same.
822
823 2008-06-24 Rodrigo Kumpera  <rkumpera@novell.com>
824
825         * reflection.c: Added mono_image_get_methodref_token_for_methodbuilder.
826         It does the same as mono_image_get_methodref_token but works on
827         MethodBuilder.
828
829         * reflection.c: Use mono_image_get_methodspec_token_for_generic_method_definition
830         and always generate a methodspec. This follows the old behavior and fixes
831         the regressions in System.Core. 
832
833 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
834
835         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Collect exceptions for classes where 
836         don't event mono_class_get () succeeds. Fixes #402182.
837
838 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
839
840         * metadata-internals.h: Added MonoDynamicImage::methodspec
841         hashtable to store methodspec tokens created for MethodBuilders.
842
843         * reflection.c (mono_image_get_methodbuilder_token): Encode generic
844         MethodBuilders as open instantiations if a methodspec was requested.
845
846         * reflection.c (fixup_method): Skip MethodBuilder with methodspec tokens.
847
848         * reflection.c (create_dynamic_mono_image): Create the methodspec hashtable.
849
850         * reflection.c (mono_dynamic_image_free): Release the methodspec hashtable.
851
852         Fixes bug #349190.
853
854 2008-06-20 Rodrigo Kumpera  <rkumpera@novell.com>
855
856         * loader.c (method_from_methodspec): Avoid crashing if the
857         method lookup fails.
858
859 2008-06-20  Dick Porter  <dick@ximian.com>
860
861         * socket-io.c (get_socket_assembly): Cope with Moonlight network
862         classes being in a different assembly.  Fixes bug 399184.
863
864 2008-06-20  Zoltan Varga  <vargaz@gmail.com>
865
866         * loader.c (mono_loader_init): Make this callable multiple times.
867         (mono_dllmap_insert): Call mono_loader_init () so this works even before
868         the runtime is initialized. Fixes #401755.
869
870 2008-06-19  Dick Porter  <dick@ximian.com>
871
872         * socket-io.c (convert_socketflags): Ignore SocketFlags.Partial.
873         Fixes bug 349688.
874
875 2008-06-19  Dick Porter  <dick@ximian.com>
876
877         * socket-io.c:
878         * icall-def.h: Implement Socket generic Send() and Receive()
879         methods.  Fixes bug 395168.
880
881 2008-06-19  Kornél Pál  <kornelpal@gmail.com>
882
883         * icall-def.h, icall.c: Add ves_icall_System_Reflection_Module_GetHINSTANCE.
884
885         Contributed under MIT/X11 license.
886
887 2008-06-18  Martin Baulig  <martin@ximian.com>
888
889         * mono-debug.h (MONO_DEBUGGER_VERSION): Split into
890         `MONO_DEBUGGER_MAJOR_VERSION' and `MONO_DEBUGGER_MINOR_VERSION';
891         set to 80.0.  The debugger <-> runtime interface is now frozen as
892         well.   
893
894         * mono-debug.c
895         (mono_debug_debugger_version): Bump to 4.
896
897 2008-06-18  Martin Baulig  <martin@ximian.com>
898
899         * debug-mono-symfile.c
900         (load_symfile): Don't check the minor version.
901
902         * debug-mono-symfile.h: Bump the version number to 50.0.
903
904 2008-06-18  Martin Baulig  <martin@ximian.com>
905
906         * debug-mono-symfile.c
907         (load_symfile): Treat `MONO_SYMBOL_FILE_MINOR_VERSION' as a
908         minimum required version.
909
910 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
911
912         * reflection.c (mono_custom_attrs_from_property): Fix support for
913         retriveving cattrs of dynamic inflated generic types.
914
915         * reflection.c (mono_custom_attrs_from_event): Same.
916
917         * reflection.c (mono_custom_attrs_from_field): Same;
918
919         * reflection.c (typebuilder_setup_events): Same cattrs of events.
920
921         * loader.c (-mono_metadata_get_corresponding_field_from_generic_type_definition):
922         Moved to metadata.c.
923
924         * metadata.c: New functions to retrive the equivalent field, event
925         of property from the generic type definition.
926
927         * metadata-internals.h: Added new functions from metadata.c.
928
929 2008-06-17 Rodrigo Kumpera  <rkumpera@novell.com>
930
931         * reflection.c (mono_custom_attrs_from_builders): Mark MonoCustomAttrInfo
932         to cached in a mempool is used.
933
934         * metadata.c (free_generic_class): In some situations field generic_info type
935         is not properly dup'ed and leads to double free'ing.
936
937         Fixes #400643.
938
939 2008-06-17  Mark Probst  <mark.probst@gmail.com>
940
941         * marshal.c (mono_marshal_get_static_rgctx_invoke): Also handle
942         this arguments (will be needed later for generic methods).
943         Collect stats.
944
945 2008-06-17  Mark Probst  <mark.probst@gmail.com>
946
947         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal):
948         Create a static RGCTX invoke wrapper for methods which require it.
949
950 2008-06-17  Mark Probst  <mark.probst@gmail.com>
951
952         * object.c, class-internals.h: New function for checking whether
953         an individual field is special static.
954
955 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
956
957         * metadata.c (mono_metadata_get_generic_param_row): Use bsearch instead of
958         linear search since the table is sorted.
959
960         * gc.c (mono_gc_cleanup): Abort the finalizer thread more gracefully.
961         Fixes #324180.
962
963 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
964
965         * appdomain.c (unload_thread_main): Applied patch from Tim Howard 
966         (timh@ict.om.org). Remove the timeouts when waiting for appdomains to unload.
967
968         * gc.c (mono_domain_finalize): Allow an infinite timeout.
969
970         * threads.c (mono_threads_abort_appdomain_threads): Ditto.
971         
972         * threads.c (mono_thread_request_interruption): Get rid of locking, use
973         InterlockedCompareExchange to query and modify 
974         thread->interruption_requested.
975
976         * object-internals.h (struct _MonoThread): Change interruption_requested
977         to a gint32 so it can be modified by atomic operations. Add 
978         'critical_region_level' from the managed side, change small_id to a guint32,
979         add new set of 'unused' fields.
980
981         * appdomain.c: Bump corlib version.
982
983 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
984
985         * class.c (mono_class_from_name): Search modules as well. Fixes
986         #322332.
987
988 2008-06-13  Mark Probst  <mark.probst@gmail.com>
989
990         * generic-sharing.c: Code for maintaining the MRGCTX and MRGCTX
991         templates.  Templates are generalized with an additional type_argc
992         argument.  RGCTX templates have type_argc==0, MRGCTX templates
993         have type_argc>0.
994
995         * domain-internals.h, domain.c: New hash table for looking up
996         MRGCTXs.
997
998         * metadata.c, metadata-internals.h: Rename hash and equal
999         functions for MonoGenericInst's and make them public.
1000
1001         * class-internals.h: New data structures for the MRGCTX.  Macros
1002         for distinguishing slots in the RGCTX and the MRGCTX.
1003
1004 2008-06-13  Mark Probst  <mark.probst@gmail.com>
1005
1006         * object.c (mono_method_get_imt_slot): Put the same methods of
1007         different instantiations of the same generic interface in the same
1008         IMT slots, to make generic sharing simpler.
1009
1010 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
1011
1012         * metadata-internals.h: Added mono_metadata_field_info_with_mempool.
1013
1014         * metadata.c (mono_metadata_field_info_with_mempool): Added.
1015         This function works just like mono_metadata_field_info, but
1016         accept a mempool as argument to be used allocating memory.
1017
1018         * marshal.c (mono_marshal_load_type_info): Use new function
1019         to load marshal data into image mempool.
1020
1021 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
1022
1023         * class.c (mono_class_inflate_generic_type_with_mempool):
1024         This function allows to inflate a generic type using
1025         a mempool.
1026
1027         * class.c (inflate_generic_type): Take a mempool as argument
1028         and use it to do type dup'ing.
1029
1030         * class.c (mono_class_setup_fields): Field type for generic
1031         generic classes are allocated from the image mempool.
1032
1033         * metadata.c (free_generic_class): Inflated field type is
1034         now allocated in the image mempool.
1035
1036 2008-06-12 Rodrigo Kumpera  <rkumpera@novell.com>
1037
1038         * threads.c (thread_cleanup): Free MonoThread::name.
1039
1040 2008-06-12  Marek Habersack  <mhabersack@novell.com>
1041
1042         * appdomain.c (ensure_directory_exists): avoid unnecessary
1043         mkdir(2) calls when the shadow directory already exists.
1044         (mono_make_shadow_copy): copy also satellite assemblies from the
1045         private bin directories.
1046
1047 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * threads.c (mono_thread_get_stack_bounds): Align the stack in all cases.
1050         
1051         * threads.c (mono_thread_get_stack_bounds): Align the stack address to
1052         a page boundary. Fixes #396219.
1053
1054 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1055
1056         * marshal.c (mono_marshal_load_type_info): Add a memory barrier
1057         due to double-checked locking.
1058
1059 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1060
1061         * assembly.c (build_assembly_name): Release memory on failure.
1062
1063         * assembly.c (mono_assembly_name_parse_full): Release memory on failure.
1064
1065 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1066
1067         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Release
1068         memory on failure.
1069
1070 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1071
1072         * icall.c (ves_icall_System_Reflection_AssemblyName_ParseName): Release
1073         memory on failure.
1074
1075 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1076
1077         * loader.c (field_from_memberref): Check if field signature type is equal
1078         to the non-inflated type of the field. Fixes #398980.
1079
1080 2008-06-11  Zoltan Varga  <vargaz@gmail.com>
1081
1082         * assembly.c (mono_assembly_load_from_full): Call 
1083         mono_assembly_load_friends () outside the assemblies lock, since it can
1084         acquire the loader lock. Fixes #323696.
1085
1086         * reflection.c (resolve_object): Inflate the inst with the context for
1087         FieldOnTypeBuilderInst. Fixes #399010.
1088
1089 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1090
1091         * reflection.c (mono_image_get_field_on_inst_token): Don't
1092         inflate the field to encode it's signature. If it's a
1093         VAR or MVAR it should stay that way in the signature.
1094         Fixes #399047.
1095
1096 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1097
1098         * reflection.c (resolve_object): Release memory of inflated types.
1099
1100 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1101
1102         * loader.c (mono_method_get_signature_full): Remove assert about
1103         loading a methodspec to a generic method. We have such methods, such as
1104         System.Threading.Interlocked::CompareExchange<T>.
1105         This assert was removed since it crashes the verifier when it checks
1106         methods calling CompareExchange<T>.
1107
1108 2008-06-10  Marek Safar  <marek.safar@gmail.com>
1109
1110         * icall.c (ves_icall_MonoMethod_GetGenericArguments): Creates an instance
1111         of Type array and not MonoType.
1112
1113 2008-06-10  Marek Habersack  <mhabersack@novell.com>
1114
1115         * profiler.c: fix a segfault on shutdown. Patch from Paolo Molaro
1116         <lupus@ximian.com>
1117
1118 2008-06-10  Martin Baulig  <martin@ximian.com>
1119
1120         * debug-mono-symfile.h
1121         (MONO_SYMBOL_FILE_MINOR_VERSION): Bump to 6.  There were no
1122         changes to the file format, but we were generating incorrect
1123         source file indices in the line number table due to a bug, which
1124         made backtraces report an incorrect source file.
1125
1126 2008-06-10 Rodrigo Kumpera  <rkumpera@novell.com>
1127
1128         * mono-debug.c: Moved mono_debug_free_method_jit_info from
1129         mini/debug-mini.c to here.
1130
1131         * mono-debug.c (il_offset_from_address): Free memory from find_method.
1132
1133         * mono-debug.h: Export mono_debug_free_method_jit_info, users should
1134         use it to release structs returned by mono_debug_find_method.
1135
1136 2008-06-10  Zoltan Varga  <vargaz@gmail.com>
1137
1138         * class.c (mono_class_setup_vtable): Call setup_methods even for interfaces
1139         since it needs to set method->slot for all interface methods.
1140
1141 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
1142
1143         * class-internals.h: Forgot to add.
1144
1145 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
1146
1147         * class-internals.h: Added MONO_PROP_DYNAMIC_CATTR.
1148
1149         * reflection.c (lookup_custom_attr): Added a MonoImage argument.
1150         Lookup the custom attributes from property_hash.
1151
1152         * reflection.c (mono_save_custom_attrs): Save the custom attributes
1153         in property_hash. Allocate all data using the image mempool.
1154
1155         * reflection.c: Removed dynamic_custom_attrs. Changed all checks
1156         for dynamic_custom_attrs to checks if the image is dynamic.
1157
1158 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Free the
1161         assemblies array.
1162         
1163         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Avoid calling
1164         runtime functions while holding the domain assemblies lock.
1165
1166 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
1167
1168         * verify.c: Reapplied the last bit of the reverted changes.
1169
1170 2008-06-09 Rodrigo Kumpera  <rkumpera@novell.com>
1171
1172         * verify.c: Reapplied more of the reverted changes.
1173
1174 2008-06-09  Martin Baulig  <martin@ximian.com>
1175
1176         * debug-mono-symfile.c (load_symfile): Check the major version
1177         first; if it's wrong, don't print the minor version in the error message.
1178
1179 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
1180
1181         * appdomain.c (set_domain_search_path): Make this use the domain assemblies
1182         lock instead of the domain lock to avoid deadlocks, since the thread might
1183         already hold the loader lock.
1184
1185         * threads.c (start_wrapper): Call mono_monitor_init_tls ().
1186         (mono_thread_attach): Ditto.
1187
1188         * monitor.c: Use a TLS variable for holding the current thread id instead
1189         of calling pthread_self ().
1190         (mono_monitor_init_tls): New internal function to initialize the TLS
1191         variable.
1192         (mono_monitor_try_enter_internal): Put the owner == id check after the
1193         owner == 0 check.
1194
1195         * object-internals.h (_G_BOOLEAN_EXPR): Redefine this glib macro to avoid
1196         missed optimizations when using gcc-4.3.
1197
1198 2008-06-08 Rodrigo Kumpera  <rkumpera@novell.com>
1199
1200         * reflection.c (mono_dynamic_image_free): Free the memory
1201         used by MonoGenericParam in MonoDynamicImage::gen_param.
1202
1203         * reflection.c (mono_reflection_setup_generic_class): Allocate
1204         container from mempool.
1205
1206         * reflection.c (mono_reflection_initialize_generic_parameter): Allocate
1207         container from mempool.
1208
1209 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
1210
1211         * threads.c (mono_set_pending_exception): New internal function to set the
1212         pending exception of the current thread.
1213         (mono_thread_get_and_clear_pending_exception): Check for 
1214         thread->pending_exception as well.
1215
1216         * object-internals.h (struct _MonoThread): Add 'pending_exception' field.
1217
1218         * boehm-gc.c (mono_gc_base_init): Set GC_no_dls before calling GC_init () since
1219         it can trigger a collection.
1220
1221 2008-06-06  Martin Baulig  <martin@ximian.com>
1222
1223         Merged the `debugger-kahalo' branch.
1224
1225         * mono-debug.h
1226         (MONO_DEBUGGER_VERSION): Bumped to 72.
1227
1228         * debug-mono-symfile.h
1229         (MonoSymbolFileMethodIndexEntry): Removed.
1230         (MonoSymbolFileMethodEntry): New public typedef.
1231         (MonoSymbolFileOffsetTable): Added `_is_aspx_source'.
1232         (MonoSymbolFileSourceEntry): Remove everything except `index' and
1233         `data_offset'.
1234         (MonoSymbolFileMethodEntry): Removed.
1235         (MonoSymbolFileLexicalBlockEntry): Removed.
1236         (MonoSymbolFileLineNumberEntry): Removed.
1237         (MonoDebugLexicalBlockEntry): Removed.
1238         (MonoDebugMethodInfo): Replaced `entry' by `guint32 entry_offset';
1239         removed `num_il_offsets' and `il_offsets'.
1240         (MonoSymbolFile): Replace `version' with `major_version' and
1241         `minor_version'.
1242         (MONO_SYMBOL_FILE_VERSION): Replace with
1243         `MONO_SYMBOL_FILE_MAJOR_VERSION' and
1244         `MONO_SYMBOL_FILE_MINOR_VERSION'.
1245
1246         * debug-mono-symfile.c
1247         (mono_debug_symfile_lookup_location): Add support for the new line
1248         number table format.
1249
1250 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
1251
1252         * metadata.c (free_generic_class): Release the inflated
1253         MonoClass of dynamic generic classes if it's not a generic
1254         type definition.
1255
1256 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
1257
1258         * verify.c: Reapplied more of the reverted changes.
1259
1260 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
1261
1262         * reflection.c (lookup_custom_attr): Clean the cached flag or
1263         nobody will free it. Fixes a memleak in MonoCustomAttrs::IsDefinedInternal
1264         for SRE types.
1265
1266 2008-06-07 Rodrigo Kumpera  <rkumpera@novell.com>
1267
1268         * verify.c: Reapplied a small part of the reverted changes.
1269
1270 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
1271
1272         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
1273
1274         * monitor.c (mono_monitor_try_enter_internal): Add NULL check which was 
1275         previously in managed code.
1276         (mono_monitor_exit): Ditto.
1277         (ves_icall_System_Threading_Monitor_Monitor_exit): Removed, not needed anymore.
1278
1279         * icall-def.h: Rename the Enter/Exit icalls to simply Enter/Exit to match
1280         the managed definition.
1281
1282 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
1283
1284         * verify.c: Revert changes to see if it helps with weird buildbot crashes.
1285
1286 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
1287
1288         * monitor.c: Redefine GetCurrentThreadId () with a macro on !win32.
1289         
1290         * monitor.c: Add some micro optimizations.
1291
1292         * icall.c (type_from_typename): Handle 'bool'.
1293
1294 2008-06-06 Rodrigo Kumpera  <rkumpera@novell.com>
1295
1296         * verify.c: Implement constructor verification per P III 1.8.1.4.
1297         Fixes #396716.
1298
1299 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
1300
1301         * assembly.c (mono_assembly_loaded_full): Avoid calling the search hooks while
1302         holding the assemblies lock here too.
1303
1304 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1305
1306         * verify.c: Kill stack_top function.
1307
1308 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1309
1310         * verify.c: Kill stack_get function.
1311
1312 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1313
1314         * verify.c (mono_method_verify): Last change broke the build. Fixed.
1315
1316 2008-06-05 Rodrigo Kumpera  <rkumpera@novell.com>
1317
1318         * verify.c (verify_type_compatibility_full): Make SZARRAY checks
1319         more reliable.
1320
1321         * verify.c (mono_method_verify): Inflate params and locals to avoid
1322         mismatch when checking for compatibility.
1323
1324 2008-06-05  Jonathan Chambers  <joncham@gmail.com>
1325
1326         * metadata.c (mono_string_from_bstr): Fix BSTR marshalling.
1327         Length prefix should be size in bytes. Fix bug #339530.
1328         
1329         * metadata.c (mono_string_to_bstr): Fix BSTR marshalling.
1330         Length prefix should be size in bytes. Fix bug #339530.
1331
1332         Code is contributed under MIT/X11 license.
1333
1334 2008-06-05  Bill Holmes <billholmes54@gmail.com>
1335
1336         * decimal.c:  Adding MSVC implementation to my_g_bit_nth_msf.
1337
1338         Contributed under MIT/X11 license.
1339
1340 2008-06-05  Martin Baulig  <martin@ximian.com>
1341
1342         * mono-debug-debugger.c
1343         (mono_debugger_check_breakpoints): Reflect latest runtime changes.
1344
1345 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
1346
1347         * assembly.c (mono_assembly_load_from_full): Avoid calling the search hooks
1348         while holding the assemblies lock to prevent deadlocks. Handle the case
1349         where the search hook returns NULL but the assembly was still loaded.
1350         Fixes #323696.
1351
1352         * appdomain.c (set_domain_search_path): Acquire the domain lock since we
1353         modify domain state.
1354
1355 2008-06-05  Andreas Färber  <andreas.faerber@web.de>
1356
1357         * boehm-gc.c: Add DTrace probes gc-{begin,end}.
1358         * Makefile.am (pedump_LDADD): Post-process object files and
1359         add dtrace-generated object file, if necessary.
1360
1361         Code is contributed under MIT/X11 license.
1362
1363 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
1364
1365         * reflection.c (mono_dynamic_image_free): Free MonoDynamicImage::public_key.
1366
1367 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
1368
1369         * class.c (mono_type_get_full): Add a work-around for generic type definitions.
1370
1371 2008-06-04  Mark Probst  <mark.probst@gmail.com>
1372
1373         * threads.c: Try to free everything from the delayed free table
1374         when shutting down threads, and set the variable to NULL after the
1375         table is freed so that calling
1376         mono_thread_hazardous_try_free_all() when shutting down the root
1377         domain doesn't crash.
1378
1379 2008-06-04 Rodrigo Kumpera  <rkumpera@novell.com>
1380
1381         * class.c (mono_type_retrieve_from_typespec): Add an argument to inform
1382         the caller if resulting type was inflated.
1383
1384         * class.c (mono_class_create_from_typespec): Free the MonoType if it
1385         was inflated.
1386
1387         * class.c (mono_type_get_full): Free the MonoType if it was inflated.
1388
1389
1390 2008-06-04  Zoltan Varga  <vargaz@gmail.com>
1391
1392         * decimal.c (rescale128): Rework the code a bit so it no longer crashes the
1393         class library tests.
1394
1395         * icall.c (ves_icall_InternalInvoke): Applied patch from Andy Hume 
1396         (andyhume32@yahoo.co.uk). Add more useful exception messages. Fixes
1397         #396989.
1398
1399 2008-06-04  Mark Probst  <mark.probst@gmail.com>
1400
1401         * domain.c, domain-internals.h: The JIT infos are now freed by the
1402         JIT info table code.  They are freed immediately if there only a
1403         single JIT info table in circulation.  If there is more, the free
1404         is delayed via a queue.
1405
1406         * threads.c, threads-types.h: New hazard pointer function for
1407         freeing all freeable delayed items in one sitting.
1408
1409 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1410
1411         * reflection.c (typebuilder_setup_fields): Use mempool for allocations.
1412
1413         * reflection.c (typebuilder_setup_properties): Same.
1414
1415         * reflection.c (typebuilder_setup_events): Same.
1416
1417 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1418
1419         * reflection.c (mono_custom_attrs_from_builders): Receive a MonoMemPool
1420         and use it for allocating memory.
1421
1422         * reflection.c (mono_marshal_spec_from_builder): Same.
1423
1424         * reflection.c: Change code to use new signatures.
1425
1426         * metadata.c (mono_metadata_type_dup): Add a FIXME note.
1427
1428 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * decimal.c (rescale128): Put back one line which was accidently commented
1431         out.
1432         
1433         * decimal.c (rescale128): Disable the code added by the last patch, as it seems
1434         to cause crashes.
1435
1436 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1437
1438         * reflection.c (mono_reflection_generic_class_initialize): Name must
1439         be always malloc'ed so we can free it later on. Do this for field, property
1440         and event.
1441
1442         * metadata.c (free_generic_class): Free field, property and event names.
1443
1444 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1445
1446         * reflection.c (fieldbuilder_to_mono_class_field): Use mono_metadata_type_dup
1447         instead of g_memdup.
1448
1449         * reflection.c (typebuilder_setup_fields): Same.
1450
1451 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
1452
1453         * decimal.c (rescale128): Optimize this function a bit more.
1454
1455 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1456
1457         * metadata.c (free_generic_class): Release some memory from
1458         SRE generic classes.
1459
1460 2008-06-03 Rodrigo Kumpera  <rkumpera@novell.com>
1461
1462         * reflection.c (mono_image_get_generic_field_token): No reference
1463         to name is kept, free it.
1464
1465         * reflection.c (mono_reflection_generic_class_initialize): Free
1466         more memory of the inflated field.
1467
1468 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
1469
1470         * decimal.c (mono_decimalDiv): Moved equality checks here from managed
1471         code.
1472
1473 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
1474
1475         * reflection.c (mono_dynamic_image_free): Release memory used by
1476         MonoDynamicImage::array_methods elements.
1477
1478         * reflection.c (assembly_add_win32_resources): Release memory after
1479         encoding.
1480
1481 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * decimal.c (log2_32): Use an optimized version for this function too.
1484         
1485         * decimal.c (log2_64): Fix this on 32 bit machines.
1486
1487 2008-06-02 Rodrigo Kumpera  <rkumpera@novell.com>
1488
1489         * class.c (mono_dup_array_type): Implement allocation using a mempool.
1490
1491         * class.c (mono_metadata_signature_deep_dup): Same.
1492
1493         * metadata.c (mono_metadata_signature_dup_full): Added, allow dup'ng with
1494         a mempool.
1495
1496         * metadata.c (mono_metadata_signature_dup): Delegate to the _full version.
1497
1498         * metadata.c (mono_metadata_type_dup): Remove asserts and FIXME.
1499
1500         * metadata-internals.h: Added mono_metadata_signature_dup_full.
1501
1502         * class-internals.h: Update signatures to take a MonoMemPool.
1503
1504 2008-06-02  Dick Porter  <dick@ximian.com>
1505
1506         * icall.c (ves_icall_System_ComponentModel_Win32Exception_W32ErrorMessage): 
1507         * icall-def.h: Add
1508         System.ComponentModel.Win32Exception.W32ErrorMessage, using the
1509         FormatMessage API to get the error text.  Fixes bug 321827.
1510
1511 2008-06-02  Zoltan Varga  <vargaz@gmail.com>
1512
1513         * decimal.c: Add some micro optimizations to make decimal operations faster.
1514
1515 2008-06-01 Rodrigo Kumpera  <rkumpera@novell.com>
1516
1517         * reflection.c (method_encode_clauses): Take a mempool
1518         as parameter and use it to allocate the clause array.
1519
1520         * reflection.c (mono_image_get_field_on_inst_token): Free
1521         the inflated type after encoding it.
1522
1523         * reflection.c (mono_dynamic_image_free): Free each element
1524         of MonoDynamicImage::gen_params.
1525
1526         * reflection.c (reflection_methodbuilder_to_mono_method):
1527         Allocate the generic param array from the mempool.
1528         Allocate signature params from the mempool.
1529
1530         * reflection.c (mono_reflection_generic_class_initialize):
1531         Free inflated fields after been used.
1532
1533 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
1534
1535         * icall.c: Reapply the memory leak fixes as they no
1536         longer make mono crash.
1537
1538 2008-05-30 Rodrigo Kumpera  <rkumpera@novell.com>
1539
1540         * reflection.c (mono_type_get_object): Don't store the suplied
1541         MonoType with type_hash. A caller which pass a type that
1542         was mono_metadata_type_dup'ed cannot free it reliably, as type_hash
1543         might end with a pointer to freed memory.
1544         The solution is to use byval_arg or this_arg from the associated
1545         MonoClass of the supplied type.
1546
1547 2008-05-29  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * icall.c: Revert the rest of the last change as it breaks the build too.
1550
1551 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1552
1553         * icall.c: Revert a leak fix as it's breaking the build.
1554
1555 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1556
1557         * appdomain.c (mono_make_shadow_copy): Fix another leak of dir_name.
1558
1559 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1560
1561         * appdomain.c (mono_make_shadow_copy): We leaked dir_name.
1562
1563 2008-05-29 Rodrigo Kumpera  <rkumpera@novell.com>
1564
1565         * icall.c: Fix some memory leaks.
1566
1567 2008-05-29  Dick Porter  <dick@ximian.com>
1568
1569         * threadpool.c (mono_thread_pool_remove_socket): Always remove the
1570         async socket operations from the pending list when a socket
1571         closes.  Leaving it until the threadpool services the event
1572         exposes a race condition when a socket descriptor is reused.
1573         Fixes bug 377589.
1574
1575 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1576
1577         * object.c: Fix negative index check for array alocation.
1578
1579 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1580
1581         * icall.c, marshal.c: Delegate wrappers should skip visibility.
1582         This check is performed by the verifier for IL created delegates
1583         and by Delegate::CreateDelegate for programatically created ones.
1584         Fixes #372406.
1585
1586 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1587
1588         * sockey-io.c (ves_icall_System_Net_Sockets_Socket_Select_internal):
1589         Fix code to use mono_array_size_t instead of int.
1590
1591         Based on patch by Luis F. Ortiz.
1592         Contributed under X11 license.
1593         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1594
1595 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1596
1597         * icall.c: Added ves_icall_System_Array_GetLongLength and
1598         ves_icall_System_Array_CreateInstanceImpl64. Both allow handling big
1599         arrays.
1600
1601         * icall.h: Export both new functions.
1602
1603         Based on patch by Luis F. Ortiz.
1604         Contributed under X11 license.
1605         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1606
1607 2008-05-28  Martin Baulig  <martin@ximian.com>
1608
1609         The debugger now requires exactly r103463.
1610
1611         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 71.
1612         This version is not supported by the debugger, wait for 72.
1613
1614 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1615
1616         * object.h: Changed array related functions to use
1617         mono_array_size_t instead of guint32. Forgot to commit this file.
1618
1619         Patch by Luis F. Ortiz.
1620         Contributed under X11 license.
1621         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1622
1623
1624 2008-05-28 Rodrigo Kumpera  <rkumpera@novell.com>
1625
1626         * object.h: Don't use G_MAXINT32 or G_MAXUINT32 as old glibs
1627         don't define it. Use the number literal instead.
1628
1629 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1630
1631         * icall.c: Changed array related functions to use
1632         mono_array_size_t instead of guint32.
1633
1634         * icall.c (ves_icall_System_Array_GetLength): Check for length
1635         overflow under MONO_BIG_ARRAYS.
1636
1637         Based on patch by Luis F. Ortiz.
1638         Contributed under X11 license.
1639         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1640
1641 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1642
1643         * object.c: Add 64bits bounds check for arrays under MONO_BIG_ARRAYS.
1644
1645         Based on patch by Luis F. Ortiz.
1646         Contributed under X11 license.
1647         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1648
1649 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1650
1651         * object.c, object.h: Changed array related functions to use
1652         mono_array_size_t instead of guint32.
1653
1654         Patch by Luis F. Ortiz.
1655         Contributed under X11 license.
1656         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1657
1658 2008-05-27 Rodrigo Kumpera  <rkumpera@novell.com>
1659
1660         * object.h: Introduced mono_array_size_t typedef. This must be used
1661         in all places an array length is expected. This is 64bits wide if
1662         MONO_BIG_ARRAYS is enabled.
1663
1664         Patch by Luis F. Ortiz.
1665         Contributed under X11 license.
1666         http://lists.ximian.com/pipermail/mono-devel-list/2008-May/027995.html
1667
1668 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
1669
1670         * security-manager.c class.c: Set the class exception info by calling
1671         mono_class_set_failure ().
1672
1673         * class.c (mono_class_get_exception_data): New accessor function.
1674         (mono_class_set_failure): Store exception_data in the property hash.
1675
1676         * class-internals.h (struct _MonoClass): Store 'exception_data' outside
1677         the struct as a property.
1678
1679         * loader.c (mono_get_method_full): Store the lookup result for method
1680         tokens in method_cache, the others in methodref_cache to decrease the memory
1681         usage of hash tables.
1682
1683         * image.c (mono_image_close): Destroy method_cache and methodref_cache.
1684         (mono_image_init): method_cache is lazy inited now.
1685
1686         * metadata-internals.h (struct _MonoImage): Change method_cache to
1687         a MonoValueHashTable, add a separate methodref_cache.
1688
1689 2008-05-27  Eyal Alaluf <eyala@mainsoft.com>
1690
1691         * number-formatter.h: Fix tables to avoid arithemtic overflow in
1692           Double.ToString as exposed by Bug #383531.
1693
1694 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
1695
1696         * number-formatter.h: Make some tables static.
1697
1698         * class.c (mono_method_set_generic_container): New accessor function.
1699         (mono_method_get_generic_container): Ditto.
1700
1701         * class-internals.h (struct _MonoMethod): Remove rarely used 
1702         'generic_container' field, store it in the property hash instead. Add 
1703         'is_generic' boolean field instead.
1704
1705         * image.c (mono_image_init): Initialize property_hash.
1706         (mono_image_close): Destroy property_hash.
1707
1708         * metadata-internals.h (struct _MonoImage): Add 'property_hash' hash table to
1709         hold rarely used fields of runtime structures belonging to this image.
1710
1711         * class.c loader.c verify.c icall.c reflection.c: Use the new accessor functions
1712         to get/set method->generic_container.
1713
1714         * loader.c (mono_get_method_from_token): Avoid loading the method header for
1715         generic methods.
1716
1717 2008-05-25  Zoltan Varga  <vargaz@gmail.com>
1718
1719         * class.c (mono_class_inflate_generic_method_full): Don't increase
1720         mono_stats.inflated_method_count for methods found in the cache.
1721
1722         * threads.c (mono_thread_request_interruption): Add a comment about 
1723         QueueUserAPC ().
1724
1725 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
1726
1727         * class.c (setup_interface_offsets): Use sizeof (guint16) when allocating the
1728         interface_offsets_packed table.
1729         
1730         * class.c (mono_class_init): Remove some dead code.
1731
1732         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Call
1733         mono_class_setup_vtable () when CAS is active to detect security problems.
1734
1735 2008-05-23 Rodrigo Kumpera  <rkumpera@novell.com>
1736
1737         * verify.c (mono_delegate_type_equal): Handle VAR, MVAR and GENERICINST.
1738
1739         * verify.c (mono_delegate_signature_equal): Don't compar number of generic
1740         parameters as it's irrelevant for delegate checking.
1741
1742 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
1743
1744         * class-internals.h class.c: Correct the name of the 'mono_no_setup_vtable_in_class_init' variable.
1745
1746         * class.c (mono_class_init): Control the creation of a generic vtable using
1747         a global which is true by default, but set to false by the runtime startup code.
1748         
1749         * class.c (mono_class_init): Avoid constructing a generic vtable in most cases.
1750         Disabled for now since it breaks the embedding API.
1751         Move the setup of class->methods for arrays to mono_class_setup_methods ().
1752         (mono_class_setup_methods): Add a memory barrier.
1753
1754         * object.c (mono_class_create_runtime_vtable): Add code to handle the case
1755         when mono_class_init () doesn't compute the generic vtable.
1756         
1757 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
1758         * profiler.c: Added mono_profiler_install_statistical_call_chain,
1759         mono_profiler_stat_get_call_chain_depth and mono_profiler_stat_call_chain
1760         to support call chains (backtrace) in the stat profiler.
1761         * profiler.c, profiler-private.h: Likewise.
1762
1763 2008-05-22  Mark Probst  <mark.probst@gmail.com>
1764
1765         * generic-sharing.c: Init generic class when a method of it is
1766         requested via a runtime generic context.
1767
1768 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
1769
1770         * class.c (mono_class_init): Add a comment about trying to avoid calling this.
1771
1772         * reflection.c (mono_type_get_object): Add a FIXME.
1773
1774         * loader.c (find_method_in_class): Use mono_class_get_method_by_index ().
1775
1776         * class.c (mono_class_get_method_by_index): New helper function, returning an
1777         entry in the class->methods array.
1778
1779 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
1780
1781         * class.c (mono_class_init): Only do the array optimization for szarrays. 
1782         Avoid creating a generic vtable for generic instances as well.
1783         (mono_class_get_method_from_name_flags): Don't search in the metadata for
1784         generic instances.
1785
1786 2008-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
1787
1788         * loader.c (mono_get_method_constrained): Inflate the signature
1789         with class context. Fix #325283.
1790
1791 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
1792
1793         * object.c (mono_class_create_runtime_vtable): Add a comment.
1794
1795         * class.c (get_implicit_generic_array_interfaces): Call mono_class_init ()
1796         where needed.
1797         (setup_interface_offsets): Handle the case when this is called twice for arrays.
1798         (mono_class_setup_vtable_general): Add an assert.
1799         (mono_class_init): Avoid creating a generic vtable for arrays.
1800
1801         * class.c (mono_generic_class_get_class): Don't call setup_interface_offsets ()
1802         here, let mono_class_init () do that.
1803
1804         * class.c (mono_class_init): Avoid calling mono_class_setup_methods () for
1805         interfaces in mscorlib.
1806
1807         * class.c (mono_class_setup_vtable): Avoid calling setup_methods () for
1808         interfaces. Add some comments.
1809         (mono_class_init): Call mono_class_setup_methods () here since it is no
1810         longer called by mono_class_setup_vtable ().
1811
1812         * object.c (mono_class_proxy_vtable): Null out entries in pvt->vtable which are
1813         not set in class->vtable.
1814         (mono_class_create_runtime_vtable): Reenable the disabled code.
1815
1816         * object.c (mono_class_create_runtime_vtable): Disable the last change for
1817         now as it causes some test failures.
1818
1819         * object.c (mono_class_create_runtime_vtable): Avoid creating a generic vtable
1820         if using the vtable trampoline. Also remove some strange code which put the
1821         generic methods themselves into the vtable slots. Remove the AOT init_vtable
1822         stuff as it is no longer needed.
1823
1824 2008-05-19 Rodrigo Kumpera  <rkumpera@novell.com>
1825
1826         * pedump.c: Give make --verify all option check code as well.
1827         Using --verify code won't check for metadata now.
1828
1829 2008-05-19  Martin Baulig  <martin@ximian.com>
1830
1831         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 70.
1832
1833         * mono-debug.c
1834         (_mono_debug_using_mono_debugger): New global variable; it's set
1835         directly by the debugger, so mono_debug_using_mono_debugger() also
1836         works after attaching.
1837
1838 2008-05-18 Rodrigo Kumpera  <rkumpera@novell.com>
1839
1840         * object.c (mono_class_create_runtime_vtable): Use memory barriers
1841         as we do double checked locking on MonoClass::runtime_info and
1842         MonoClassRuntimeInfo::domain_vtables.
1843
1844 2008-05-18  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * debug-helpers.c (print_field_value): Fix a warning.
1847
1848 2008-05-16  Zoltan Varga  <vargaz@gmail.com>
1849
1850         * object.c (mono_object_get_virtual_method): Fix a crash if method->slot is not
1851         set in the AOT case.
1852
1853 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
1854
1855         * class.c (mono_class_setup_vtable_general): Use memory barriers
1856         as we do double checked locking on MonoClass::vtable.
1857
1858 2008-05-16 Rodrigo Kumpera  <rkumpera@novell.com>
1859
1860         * reflection.c (resolve_object): Inflate only if the generic context
1861         is not null. Fixes #389886.
1862
1863 2008-05-15  Jonathan Chambers  <joncham@gmail.com>
1864
1865         * metadata.c (emit_marshal_string): Free return strings using mono_marshal_free
1866         instead of g_free.
1867
1868         Code is contributed under MIT/X11 license.
1869
1870 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1871
1872         * class.c: Revert unrelated change.
1873
1874 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1875
1876         * verify.c (check_is_valid_type_for_field_ops): Type on stack can be
1877         a generic instantiation, use mono_class_from_mono_type instead of playing
1878         with MonoType directly.
1879
1880 2008-05-14 Rodrigo Kumpera  <rkumpera@novell.com>
1881
1882         * class.c: Added mono_class_has_parent_and_ignore_generics. Visibility
1883         checks must ignore generic instantiations, so mono_class_has_parent is not
1884         suitable. Fixes #390128.
1885
1886 2008-05-14  Zoltan Varga  <vargaz@gmail.com>
1887
1888         * reflection.c (mono_image_create_token): Add a 'register_token' argument, and use
1889         it to avoid registering tokens during metadata generation. Fixes #390023.
1890
1891 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
1892
1893         * coree.c: Rename dwOldProtect to OldProtect that makes naming convention
1894         consistent.
1895
1896         Contributed under MIT/X11 license.
1897
1898 2008-05-14  Kornél Pál  <kornelpal@gmail.com>
1899
1900         * domain.c (mono_init_internal): Enable LoadLibrary support. Load EXE image
1901         even when get_runtimes_from_exe didn't load it that allows mono_fixup_exe_image
1902         to fixup the EXE image.
1903         (mono_cleanup): Use mono_close_exe_image.
1904         (mono_close_exe_image): New function.
1905         * image.c: Include "marshal.h".
1906         (mono_image_open_from_module_handle): Add ref_count argument. Return the image.
1907         (mono_image_open_full, mono_image_close): Fix LoadLibrary/FreeLibrary reference
1908         counting when the image is loaded outside of mono_image_open_full. Set status
1909         based on GetLastError.
1910         * coree.c: Include required headers. Add init_from_coree.
1911         (_CorDllMain): Support fix in mono_image_open_full, mono_image_close. Call
1912         mono_assembly_open only when the image has vtfixups. Set init_from_coree.
1913         (_CorExeMain): Set init_from_coree.
1914         (CorExitProcess): Only call ExitProcess for now.
1915         (CorBindToRuntimeEx): New stub implementation.
1916         (CorBindToRuntime): New function.
1917         (MonoFixupCorEE): Fixup CorBindToRuntime and CorBindToRuntimeEx.
1918         (MonoFixupExe): ILONLY executables require no fixups.
1919         (mono_set_act_ctx): New function to set activation context.
1920         (mono_load_coree): Use init_from_coree. Call mono_set_act_ctx.  
1921         * coree.h: Move STATUS_SUCCESS and STATUS_INVALID_IMAGE_FORMAT to header.
1922         Declare mono_module_handle, coree_module_handle, mono_get_module_file_name,
1923         mono_load_coree, mono_fixup_exe_image and mono_image_open_from_module_handle
1924         as MONO_INTERNAL.
1925         * domain-internals.h: Add mono_close_exe_image.
1926
1927         Contributed under MIT/X11 license.
1928
1929 2008-05-13 Rodrigo Kumpera  <rkumpera@novell.com>
1930
1931         * metadata.c (mono_metadata_compute_size): Correctly calculate field
1932         size for generic param and event tables. Fixes #388977.
1933
1934 2008-05-13  Zoltan Varga  <vargaz@gmail.com>
1935
1936         * loader.c (mono_method_signature): Use memory barriers because of the double
1937         checked locking pattern.
1938
1939         * threads.c (remove_and_abort_threads): Stop and wait for threads which are
1940         aborting or aborted as well. Fixes #376391.
1941         
1942         * threads.c (mono_thread_execute_interruption): Avoid depending on no longer
1943         existing runtime state in the Suspend handler during shutdown.
1944
1945 2008-05-12  Zoltan Varga  <vargaz@gmail.com>
1946
1947         * threads.c (mono_thread_request_interruption): Add some FIXMEs.
1948
1949         * threads.c (mono_thread_suspend_all_other_threads): Add support for threads 
1950         which are starting up or shutting down.
1951
1952         * threads.c (mono_threads_set_shutting_down): Don't return a value since
1953         this function never returns if the runtime is already shutting down.
1954
1955         * icall.c (ves_icall_System_Environment_Exit): Update after 
1956         mono_threads_set_shutting_down () signature change.
1957         
1958 2008-05-09 Rodrigo Kumpera  <rkumpera@novell.com>
1959
1960         * class.c: Added can_access_instantiation to verify if the instantiation
1961         is visible. Fix access check for nested types as they returned TRUE
1962         before doing type and generic instantiation visibility checks.
1963
1964 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1965
1966         * reflection.c (mono_reflection_create_generic_class): The created type
1967         must have a different container from its TypeBuilder. Otherwise they
1968         will end sharing generic arguments, which is wrong.
1969
1970         Due to the sharing, making a generic instance of the created type using
1971         the TypeBuider generic arguments resulted in the generic type definition
1972         been returned, which is wrong as well.
1973
1974         As a bonus the code was leaking the type_params array. This memory should
1975         be allocated from the image mempool.
1976
1977         This fixes bug #354047.
1978
1979 2008-05-08 Rodrigo Kumpera  <rkumpera@novell.com>
1980
1981         * metadata-internals.h: Move MONO_SECMAN_FLAG macros from mini/declsec.h
1982         to here         as they are now used in assembly.c new code.
1983         Added a skipverification flag to MonoAssembly.
1984         New internal function mono_assembly_has_skip_verification.
1985
1986         * assembly.c: New function mono_assembly_has_skip_verification. It checks
1987         if an assembly has a version 2.0 SkipVerification security attribute. Fixes
1988         part of #387274.
1989
1990 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
1991
1992         * object.c (mono_object_get_virtual_method): Inflate the resulting method if
1993         needed. Fixes #387034.
1994
1995         * class.c (mono_class_inflate_generic_type): Avoid a crash if context is NULL.
1996
1997 2008-05-06  Miguel de Icaza  <miguel@novell.com>
1998
1999         * assembly.c (mono_assembly_load_reference): Prevent crash while
2000         disassembling Silverlight 2.0 executables while we still do not
2001         have GACed libraries.
2002
2003 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
2004
2005         * reflection.c: Special case generic type definitions as well. Fixes #383444.
2006
2007 2008-05-06  Zoltan Varga  <vargaz@gmail.com>
2008
2009         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Fix handling
2010         of the dynamic case. Fixes #387404.
2011
2012 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2013
2014         *verify.c (mono_verifier_is_class_full_trust): If under
2015         verify_all and the verifier mode was not set, only
2016         gac and corlib types are fulltrust. This makes --verify-all
2017         usable to detect unverifiable code, which is the expected
2018         use case.
2019
2020 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2021
2022         * verify.h: Ops, commited the header with debug
2023         enabled.
2024
2025 2008-05-06 Rodrigo Kumpera  <rkumpera@novell.com>
2026
2027         * verify.c (merge_stack): Use the new value on unverifiable
2028         stack merges.
2029
2030         * verify.c (verify_type_compatibility_full): Comparison
2031         of nullable types can't use mono_class_is_assignable_from.
2032
2033         * verify.c, verify.h: Added MONO_VERIFY_REPORT_ALL_ERRORS
2034         that makes all verification errors be reported.
2035
2036         * pedump.c: Pass MONO_VERIFY_REPORT_ALL_ERRORS to
2037         mono_method_verify.
2038
2039 2008-05-05  Robert Jordan  <robertj@gmx.net>
2040
2041         * marshal.c (mono_marshal_get_thunk_invoke_wrapper):
2042         support for value types. See #386415.
2043
2044         * object.c: comments.
2045
2046         Code is contributed under MIT/X11 license.
2047
2048 2008-05-05  Martin Baulig  <martin@ximian.com>
2049
2050         * debug-mono-symfile.h
2051         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): Removed; dropped support
2052         for old pre-terrania symbol files.
2053
2054 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
2055
2056         * mono-config.c: Add ppc64 architecture.
2057
2058         Code is contributed under MIT/X11 license.
2059
2060 2008-05-05  Andreas Färber  <andreas.faerber@web.de>
2061
2062         * object.c (mono_create_ftnptr, mono_get_addr_from_ftnptr):
2063           PPC64 uses function descriptors as well.
2064
2065         Code is contributed under MIT/X11 license.
2066
2067 2008-05-04  Zoltan Varga  <vargaz@gmail.com>
2068
2069         * object.c (compute_class_bitmap): Ignore literal static fields.
2070
2071         * sgen-gc.c (mono_gc_base_init): Print some help when the MONO_GC_DEBUG env
2072         var has an invalid format.
2073         (describe_ptr): Add some sanity checks for the vtable.
2074         (add_nursery_frag): Clear unused nursery fragments.
2075         (major_collection): Clear all remaining nursery fragments.
2076
2077 2008-05-03  Robert Jordan  <robertj@gmx.net>
2078
2079         * image.c, metadata-internals.h: add thunk_invoke_cache.
2080
2081         * marshal.c, marshal.h: implement
2082         mono_marshal_get_thunk_invoke_wrapper ().
2083
2084         * object.c, object.h: implement mono_method_get_unmanaged_thunk ().
2085
2086         Code is contributed under MIT/X11 license.
2087
2088 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
2089
2090         * verify.c (do_leave): Empty the stack.
2091
2092 2008-05-02 Rodrigo Kumpera  <rkumpera@novell.com>
2093
2094         * class.c (mono_class_is_assignable_from): Variance
2095         doesn't work between reference and value types. For example,
2096         given type C<T+>, C<int32> is not assignable to C<object>.
2097         Break the argument checking loop on first error. 
2098
2099 2008-05-02  Atsushi Enomoto  <atsushi@ximian.com>
2100
2101         * icall.c : base64_to_byte_array() needs some more strict
2102           check for sequence of '=' characters. Patch by Santa
2103           Marta (http://deee.g.hatena.ne.jp/santamarta).
2104
2105           Contributed under MIT/X11 license.
2106           (see http://www.lingr.com/room/mono-jp/archives/2008/04/20)
2107
2108 2008-05-02  Jonathan Chambers  <joncham@gmail.com>
2109
2110         * domain.c: Disable LoadLibrary support to fix Win32 build.
2111
2112         Code is contributed under MIT/X11 license.
2113
2114 2008-05-02  Zoltan Varga  <vargaz@gmail.com>
2115
2116         * sgen-gc.c: Add support for clearing nursery memory when a tlab is allocated,
2117         to help with cache behaviour.
2118
2119 2008-05-01  Miguel de Icaza  <miguel@novell.com>
2120
2121         * appdomain.c (mono_domain_from_appdomain): Add new accessor
2122         method. 
2123
2124 2008-05-01  Zoltan Varga  <vargaz@gmail.com>
2125
2126         * sgen-gc.c: Implement thread-local allocation and a managed allocation routine.
2127
2128 2008-05-01  Dick Porter  <dick@ximian.com>
2129
2130         * process.c (process_get_fileversion): Only pass 16 bits of
2131         language ID to VerLanguageName.  Fixes bug 381204.
2132
2133 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2134
2135         * verify.c (mono_method_verify): Fix the comparison
2136         operator for code bounds check.
2137
2138 2008-04-30 Rodrigo Kumpera  <rkumpera@novell.com>
2139
2140         * verify.c (mono_method_verify): Check the bounds of
2141         all access of the code array.
2142
2143 2008-04-29  Kornél Pál  <kornelpal@gmail.com>
2144
2145         * appdomain.c: Use HAVE_SYS_UTIME_H that fixes MSVC build.
2146
2147 2008-04-28  Zoltan Varga  <vargaz@gmail.com>
2148
2149         * image.c (mono_image_strong_name_position): Fix return value when the rva is
2150         not valid.
2151
2152 2008-04-28  Kornél Pál  <kornelpal@gmail.com>
2153
2154         * loader.c (mono_get_method_from_token, mono_method_signature): Add
2155         support for METHOD_IMPL_ATTRIBUTE_NATIVE.
2156         * domain.c (mono_init_internal): Load and fixup mscoree.dll on startup and
2157         fixup main EXE images when using mono.exe for mixed-mode assembly support.
2158         * domain-internals.h: Add MonoLoadFunc, mono_install_runtime_load and
2159         mono_runtime_load.
2160         * appdomain.c: Add mono_install_runtime_load, mono_runtime_load to support
2161         runtime initialization from metadata.
2162         * assembly.c: Remove obsolete ceGetModuleFileNameA.
2163         (mono_set_rootdir): Use mono_get_module_file_name.
2164         (mono_assembly_load_from_full): Call mono_image_fixup_vtable for module
2165         handles.
2166         * cil-coff.h: Add MonoVTableFixup. Update mono_cli_rva_image_map signature.
2167         * metadata-internals.h: Add is_module_handle to _MonoImage on Windows.
2168         * image.c (mono_cli_rva_image_map): Use MonoImage instead of
2169         MonoCLIImageInfo. Add support for module handles.
2170         (load_cli_header): Update mono_cli_rva_image_map signature.
2171         (load_metadata_ptrs): Update mono_cli_rva_image_map signature.
2172         (mono_image_strong_name_position): Use mono_cli_rva_image_map.
2173         (mono_image_rva_map): Add support for module handles.
2174         (mono_image_ensure_section_idx): Add support for module handles.
2175         (mono_image_close): Add support for module handles.
2176         (do_load_header): Add support for module handles.
2177         (mono_image_open_from_module_handle): New function for internal use.
2178         (mono_image_open_full): Load normal images using LoadLibrary on Windows.
2179         (mono_image_load_module): Call mono_image_fixup_vtable for module handles.
2180         (mono_image_load_file_for_image): Call mono_image_fixup_vtable for module
2181         handles.
2182         (mono_image_fixup_vtable): New function for mixed-mode assembly support.
2183         * image.h: Add mono_image_fixup_vtable.
2184         * coree.c: New file for mscoree.dll functions and mixed-mode assembly
2185         support.
2186         * coree.h: New file.
2187         * marshal.c (mono_marshal_get_native_wrapper): Throw exception for
2188         unsupported native code.
2189         (mono_marshal_set_callconv_from_modopt): New function splitted from
2190         mono_marshal_get_managed_wrapper.
2191         (mono_marshal_get_managed_wrapper): Use
2192         mono_marshal_set_callconv_from_modopt.
2193         (mono_marshal_get_vtfixup_ftnptr): New function for mixed-mode assembly support.
2194         * marshal.h: Add mono_marshal_get_vtfixup_ftnptr.
2195         * gc.c (mono_gc_init): Don't wait for the finalizer thread on Windows because
2196         that results in a deadlock when the runtime is loaded in _CorDllMain.
2197         * Makefile.am: Add coree.c and coree.h.
2198
2199         Contributed under MIT/X11 license.
2200
2201 2008-04-28  Mark Probst  <mark.probst@gmail.com>
2202
2203         * generic-sharing.c: Search for type arguments in array element
2204         types as well.
2205
2206 2008-04-28  Mark Probst  <mark.probst@gmail.com>
2207
2208         * class-internals.h, generic-sharing.c: New, small runtime generic context.
2209
2210         * metadata-internals.h, domain.c, image.c: Less bookkeeping is required for the new RGCTX.
2211
2212         * object.c: Don't setup the RGCTX when the vtable is created,
2213         because we're setting it up lazily now.
2214
2215 2008-04-26  Zoltan Varga  <vargaz@gmail.com>
2216
2217         * sgen-gc.c: Make the 'desc' variables an mword instead of a guint32 to fix 
2218         64 bit support.
2219
2220 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
2221
2222         * verify.c (verify_class_for_overlapping_reference_fields): 
2223         If class is under fulltrust allow reference types to overllap
2224         if they have the same RVA.
2225
2226 2008-04-24 Rodrigo Kumpera  <rkumpera@novell.com>
2227
2228         * pedump.c: Added new flag valid-only, that makes the verifier
2229         behaves just like --security=validil. It won't fail type load
2230         due to unverifiable restrictions.
2231
2232 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
2233
2234         * class-internals.h (struct MonoMethod): Added a verification_success
2235         field to cache verifier executions. Reduced MonoMethod:slot size by
2236         one bit.
2237
2238 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * sgen-gc.c (OBJ_RUN_LEN_SIZE): Make this and other macros take a 'desc' argument
2241         instead of a 'vt' argument to save an indirection and to allow these to be used
2242         for valuetypes.
2243         (scan_vtype): New helper function to scan an area using a gc descriptor.
2244         (mono_gc_wbarrier_value_copy): Implement this.
2245         (handle_remset): Add support for REMSET_VTYPE.
2246         (find_in_remset_loc): Ditto.
2247         (mono_gc_base_init): Allow some debugging options to be controlled through the
2248         use of the MONO_GC_DEBUG env variable.
2249         (mono_gc_alloc_obj): Add support the 'collect-before-allocs' debug option.
2250         (collect_nursery): Add support for the 'check-at-minor-collection' debug option.
2251
2252 2008-04-23  Martin Baulig  <martin@ximian.com>
2253
2254         * domain.c (mono_domain_create): Move the call to
2255         mono_debug_domain_create() down, after allocating the domain id.
2256
2257 2008-04-23 Rodrigo Kumpera  <rkumpera@novell.com>
2258
2259         verify.c (verify_class_for_overlapping_reference_fields): Skip
2260         static fields while verifying for overlapping fields as they
2261         don't matter at all.
2262
2263 2008-04-23  Marek Habersack  <mhabersack@novell.com>
2264
2265         * domain-internals.h: added a declaration of
2266         mono_make_shadow_copy.
2267
2268         * assembly.c (mono_assembly_open_full): shadow copying of
2269         assemblies moved to here, so that all the assemblies within the
2270         application domain's private binary directories can be
2271         processed. Fixes bug #380546
2272
2273         * appdomain.c (mono_make_shadow_copy): make_shadow_copy renamed to
2274         mono_make_shadow_copy and made non-static. The decision whether
2275         to shadow-copy an assembly is made based on its location - it's
2276         copied if it's in one of the private application domain binary
2277         directories and its different to the target file in the shadow
2278         directory. Fixes bug #380546
2279
2280 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * reflection.c (fixup_method): Handle {Method|Constructor}OnTypeBuilderInst.
2283
2284         * object-internals.h: Add MonoReflection{Method|Constructor}OnTypeBuilderInst
2285         types.
2286
2287         * reflection.c (mono_image_create_token): Handle 
2288         Method/ConstructorOnTypeBuilderInst.
2289         (resolve_object): Ditto.
2290         (inflate_mono_method): Receive the inflated class instead of a MonoGenericClass
2291         so it can be called from resolve_object. Also handle the case when the inflated
2292         class already has its methods setup.
2293
2294 2008-04-21  Martin Baulig  <martin@ximian.com>
2295
2296         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 69.
2297
2298 2008-04-20  Geoff Norton  <gnorton@novell.com>
2299
2300         * icall.c: Fix the _NSGetEnviron define to prevent an impropoer
2301         pointer dereference.
2302
2303 2008-04-15  Marek Habersack  <mhabersack@novell.com>
2304
2305         * appdomain.c (try_load_from): if IOMAP is in effect, call the
2306         portability API to look up the assembly file. Fixes behavior in
2307         situations when the application has a bin/ directory, but the
2308         assembly search patch refers to Bin/ (and thus the requested file
2309         name is Bin/SomeLibrary.dll). Fixes bug #379888
2310
2311 2008-04-15 Rodrigo Kumpera  <rkumpera@novell.com>
2312
2313         verify.c (mono_type_is_generic_argument): Extracted this check
2314         from a dozen places to here.
2315
2316         verify.c: Fixed all issues related to boxing generic arguments
2317         and their constraints.
2318
2319 2008-04-14 Rodrigo Kumpera  <rkumpera@novell.com>
2320
2321         verify.c (mono_class_interface_implements_interface): Fix win32 build.
2322
2323 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
2324
2325         * reflection.c (mono_custom_attrs_construct): Fix crash when the cattr type
2326         isn't finished yet. Fixes #363447.
2327
2328 2008-04-13  Zoltan Varga  <vargaz@gmail.com>
2329
2330         * class.c (mono_bounded_array_class_get): Fix the name of bounded array types.
2331         Fixes #346419.
2332
2333 2008-04-13  Jb Evain  <jbevain@novell.com>
2334
2335         * domain.c: update the 2.1 profile versions.
2336         Merged from the Moonlight 2 branch.
2337
2338 2008-04-12  Zoltan Varga  <vargaz@gmail.com>
2339
2340         * assembly.c (mono_assembly_load_from_full): Do the check for loading other
2341         mscorlibs for the non-refonly case as well.
2342
2343         * image.c (do_mono_image_load): Remove the mscorlib check, it is already done
2344         in mono_assembly_load_from_full (). Fixes #378924.
2345
2346 2008-04-11  Geoff Norton  <gnorton@novell.com>
2347
2348         * icall.c: The global extern environ doesn't exist on Mac.  We
2349         need to call NSGetEnviron instead.
2350
2351 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
2352
2353         verify.c: Add generic method constraint verification.
2354
2355 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
2356
2357         class.c (mono_class_inflate_generic_method_full): Add a long
2358         explanation to the is_mb_open hack. Remove the FIXME.
2359
2360 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
2361
2362         * verify.c (mono_method_verify): Mark all unknown opcodes
2363         as invalid. Mark jmp as unverifiable.
2364
2365 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
2366
2367         * verify.c: Add code to do type constraint verification on class instances.
2368
2369         * verify.c (mono_verifier_verify_class): Use the type constraint 
2370         verification code.
2371
2372 2008-04-10 Rodrigo Kumpera  <rkumpera@novell.com>
2373
2374         * class.c (mono_class_get_field_default_value): Don't pass cindex
2375         as hint to mono_metadata_get_constant_index. The local is not initialized
2376         and should contain garbage most of the time. This could only work
2377         with a lot of luck.
2378
2379 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
2380
2381         * tokentype.h: Add MONO_TOKEN_GENERIC_PARAM.
2382
2383 2008-04-09 Rodrigo Kumpera  <rkumpera@novell.com>
2384
2385         * class-internals.h: Add generic_param_token to MonoClass::sizes union.
2386
2387         * class.c (mono_class_from_generic_parameter): Save the token of the
2388         generic param in MonoClass::sizes.generic_param_token.
2389
2390         * reflection.c (mono_custom_attrs_from_class): If the class type is
2391         VAR or MVAR retrieve the attributes of the generic param.
2392
2393 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2394
2395         * class.c (mono_class_init): Do class verification if the verifier
2396         is enabled.
2397
2398 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2399
2400         * verify-internal.h: Added mono_verifier_verify_class.
2401
2402         * verify.c: Added mono_verifier_verify_class. It checks for
2403         classes with explicit layout that have overlapping reference fields.
2404
2405         * pedump.c: Init the verifier state prior to verification. Fixed
2406         command line arguments.
2407
2408 2008-04-08 Rodrigo Kumpera  <rkumpera@novell.com>
2409
2410         * Makefile.am: Added verify-internals.h, hopefully fix the build.
2411
2412 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
2413
2414         * verify-internals.h: Fix a warning.
2415
2416 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
2417
2418         * verify-internals.h: New header with the verifier configuration
2419         extracted from mini.c.
2420
2421         * verify.c: Implemented the new functions exported by verify-internals.h.
2422
2423 2008-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
2424
2425         * verify.c: Add proper verification of ckfinite.
2426
2427 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
2428
2429         * verify.c (do_conversion): Improved error message to something
2430         more meanfull.
2431
2432         * verify.c (check_is_valid_type_for_field_ops): Fix to work
2433         with primitive types.
2434
2435 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
2436
2437         * verify.c: Added tail prefix checking. Marked icall
2438         as unverifible.
2439
2440 2008-04-04 Rodrigo Kumpera  <rkumpera@novell.com>
2441
2442         * verify.c: Fix the detection of branches to the middle
2443         of an instruction.
2444
2445 2008-04-03 Rodrigo Kumpera  <rkumpera@novell.com>
2446
2447         * verify.c: Implemented verification of volatile. and
2448         unaligned. prefix. Check if a type is valid after retrieving it.
2449
2450 2008-04-01  Dick Porter  <dick@ximian.com>
2451
2452         * process.c (process_get_fileversion): If there's no string block,
2453         set the file language to en_US.  Fixes the other new part of bug
2454         374600.
2455
2456 2008-03-29 Rodrigo Kumpera  <rkumpera@novell.com>
2457
2458         * class.c: New functions mono_method_can_access_field_full and
2459         mono_method_can_access_method_full. They perform type visibility
2460         and type site check.
2461
2462         * class-internal.h: Added exported functions.
2463
2464         * verify.c: Use new functions to implement proper visibility checks.
2465
2466 2008-03-29  Zoltan Varga  <vargaz@gmail.com>
2467
2468         * mono-config.h: Add missing G_BEGIN_DECLS/G_END_DECLS. Fixes #375188.
2469
2470 2008-03-28  Dick Porter  <dick@ximian.com>
2471
2472         * process.c (process_get_fileversion): Use the first language ID
2473         we see, rather than insisting on an invariant language.  Fixes bug
2474         374600.
2475
2476 2008-03-28  Zoltan Varga  <vargaz@gmail.com>
2477
2478         * reflection.c (calc_section_size): Use add_stream_zero to align the size of
2479         the streams to fix reading of invalid memory later.
2480
2481         * metadata.h (MonoType): Use 'MonoTypeEnum' instead of int for the 'type' field
2482         to ease debugging.
2483
2484 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
2485
2486         * marshal.c (signature_dup): Use mono_metadata_signature_alloc ().
2487         (cominterop_method_signature): Ditto. Fix the size passed to memcpy.
2488
2489 2008-03-26  Massimiliano Mantione  <massi@ximian.com>
2490         * threads.h: Added MonoThreadManageCallback type and
2491         mono_thread_set_manage_callback prototype
2492         * object-internals.h: In _MonoThread, renamed unused6 to manage_callback
2493         (used to store the mono_thread_manage callback).
2494         * threads.c: Added mono_thread_set_manage_callback, and handle
2495         "MonoThread->manage_callback" in build_wait_tids.
2496
2497 2008-03-26  Dick Porter  <dick@ximian.com>
2498
2499         * process.c (process_get_fileversion): Set FileVersionInfo strings
2500         to Empty when the resource doesn't have the particular info.
2501         Fixes bug 355717.
2502
2503 2008-03-25 Rodrigo Kumpera  <rkumpera@novell.com>
2504
2505         * verify.c (mono_method_verify): Proper prefix validation.
2506
2507 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
2508
2509         * icall.c (ves_icall_InternalInvoke): Return exceptions thrown by the icall
2510         itself in a separate argument instead of throwing them. Fixes #373448.
2511
2512         * appdomain.c: Bump corlib version.
2513
2514 2008-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
2515
2516         * verify.c: Implemented readonly prefix and verify controled mutability pointers.
2517
2518 2008-03-20  Kornél Pál  <kornelpal@gmail.com>
2519
2520         * file-io.c, filewatcher.c, threadpool.c, threads.c: Removed Windows
2521         version macros.
2522
2523 2008-03-20  Mark Probst  <mark.probst@gmail.com>
2524
2525         * generic-sharing.c, class-internals.h: Code for putting
2526         reflection types into the runtime generic context.
2527
2528 2008-03-19 Rodrigo Kumpera  <rkumpera@novell.com>
2529
2530         * icall.c (ves_icall_get_method_info): Return correct values for the call convention.
2531         Fixes #340662. 
2532
2533
2534 2008-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
2535
2536         * verify.c (VerifyContext): Added instruction prefix data to the struct.
2537
2538         * verify.c (is_compatible_boxed_valuetype): Don't check if the type is a valuetype, been boxed is enough.
2539
2540         * verify.c (do_invoke): Support constrained callvirt form. Grouped similar checks together.
2541
2542         * verify.c (do_cast): Let the result value keep the boxed status.
2543
2544         * verify.c (mono_method_verify): Add proper support for prefixed and implement contrained.
2545
2546 2008-03-17  Jb Evain  <jbevain@novell.com>
2547
2548         * reflection.c: when running on a 2.0 runtime, emit
2549         unconditionally the #~ header version as 2.0, and the
2550         CLI header version as 2.5, for symmetry's sake with csc.
2551
2552 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
2553
2554         * class.c: Remove the unused cache_interface_offsets stuff.
2555
2556         * class.c loader.c domain.c verify.c metadata.c debug-helpers.c threadpool.c
2557         profiler.c: Fix warnings.
2558
2559 2008-03-16  Mark Probst  <mark.probst@gmail.com>
2560
2561         * generic-sharing.c, class-internals.h: Support for putting
2562         methods into the runtime generic context.
2563
2564 2008-03-16  Zoltan Varga  <vargaz@gmail.com>
2565
2566         * class.c (mono_class_setup_fields): Ignore calls made to this function for
2567         classes which are generic instances of not-yet finished typebuilders. Fixes
2568         #351172.
2569
2570         * reflection.c (fixup_method): Add support for FieldOnTypeBuilderInst.
2571
2572 2008-03-15  Zoltan Varga  <vargaz@gmail.com>
2573
2574         * metadata-internals.h (MonoDynamicImage): Add 'generic_def_objects' hash table.
2575
2576         * class-internals.h (MonoMethodInflated): Remove the rarely used reflection_info
2577         field, replace it with a hash table in MonoDynamicImage.
2578
2579         * reflection.c (inflate_mono_method): Access the generic definition object from
2580         image->generic_def_objects instead of imethod->reflection_info.
2581
2582         * reflection.c (mono_reflection_bind_generic_method_parameters): Ditto. 
2583
2584         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition): Ditto.
2585         
2586         * image.c (mono_image_close): Move the dynamic image freeing code to a separate
2587         function in reflection.c so it is easier to keep in sync with the dynamic image
2588         creation code.
2589
2590         * reflection.c (mono_dynamic_image_free): New internal function, extracted from
2591         mono_image_close ().
2592
2593 2008-03-15  Mark Probst  <mark.probst@gmail.com>
2594
2595         * class.c (mono_class_generic_sharing_enabled): Disable generic
2596         sharing for all architectures except AMD64 and x86 to fix build.
2597
2598 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
2599
2600         * verify.c: Use the generic definition MonoGenericContext when available.
2601         Remove code for checking generics instance compatibility in favor of
2602         mono_class_is_assignable_from.
2603
2604 2008-03-14  Mark Probst  <mark.probst@gmail.com>
2605
2606         * marshal.c, marshal.h, metadata-internals.h, image.c,
2607         wrapper-types.h: New wrapper for invoking a shared static method
2608         without having to pass the runtime generic context argument.
2609
2610 2008-03-14 Rodrigo Kumpera  <rkumpera@novell.com>
2611
2612         * icall-def.h: Add missing function PerformanceCounterCategory::GetInstanceNames.
2613
2614 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
2615
2616         * reflection.c (mono_image_get_field_on_inst_token): Add caching.
2617         
2618         * reflection.c (mono_image_get_field_on_inst_token): New helper function to
2619         create a token from a FieldOnTypeBuilderInst.
2620         (mono_image_create_token): Handle FieldOnTypeBuilderInst.
2621         (resolve_object): Ditto.
2622
2623         * object-internals.h (MonoReflectionFieldOnTypeBuilderInst): New structure
2624         mirroring System.Reflection.Emit.FieldOnTypeBuilderInst.
2625
2626 2008-03-14  Martin Baulig  <martin@ximian.com>
2627
2628         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 68.
2629
2630         * debug-mono-symfile.h
2631         (MONO_SYMBOL_FILE_VERSION): Bump to 41.
2632         (MONO_SYMBOL_FILE_COMPATIBILITY_VERSION): New #define.
2633
2634 2008-03-10  Martin Baulig  <martin@ximian.com>
2635
2636         * debug-mono-symfile.h
2637         (MonoSymbolFileMethodAddress): Removed `num_lexical_blocks' and
2638         `lexical_block_table_offset'.
2639         (MonoDebugMethodInfo): Removed `num_lexical_blocks' and
2640         `lexical_blocks'.
2641         (MonoSymbolFile): Added `version'.
2642
2643         * mono-debug.h
2644         (MonoDebugLexicalBlockEntry): Removed.
2645         (MonoDebugMethodJitInfo): Removed `num_lexical_blocks' and
2646         `lexical_blocks'.
2647
2648         * mono-debug.c (mono_debug_add_method): Don't compute lexical
2649         blocks here; the debugger now does this internally.
2650
2651 2008-02-27  Martin Baulig  <martin@ximian.com>
2652
2653         * object.c (mono_runtime_exec_main): Call
2654         `mono_debugger_event (MONO_DEBUGGER_EVENT_REACHED_MAIN)' and
2655         `mono_debugger_event (MONO_DEBUGGER_EVENT_MAIN_EXITED)' here.
2656
2657 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2658
2659         * verify.c (verify_type_compatibility_full): Allow native int to be converted
2660         to native pointer in non-strict mode. Required to "(IntPtr)null" work.
2661
2662 2008-03-12 Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * verify.c (verify_ldftn_delegate): Accept a sealed type when using
2665         ldftn with a virtual method.
2666
2667 2008-03-13  Geoff Norton  <gnorton@novell.com>
2668
2669         * decimal.c:  Only include memory.h if the platform has it.
2670
2671 Wed Mar 12 12:11:06 CET 2008 Paolo Molaro <lupus@ximian.com>
2672
2673         * assembly.c, class.c, metadata-internals.h: make sure public key
2674         tokesns are compared in a case-insensitive way. Also, all
2675         the lookups in the GAC use a lowercase public key token
2676         (gaacutil already does the lowercasing on install). Fixes
2677         bug #369541.
2678
2679 2008-03-11 Rodrigo Kumpera  <rkumpera@novell.com>
2680
2681         * verify.c (mono_delegate_signature_equal): Do proper variance check on arguments
2682         and return value.
2683
2684 Tue Mar 11 17:41:38 CET 2008 Paolo Molaro <lupus@ximian.com>
2685
2686         * image.c: when someone loads a mscorlib from a file, return the
2687         currently loaded mscorlib (fixes bug #369253).
2688
2689 Tue Mar 11 16:47:32 CET 2008 Paolo Molaro <lupus@ximian.com>
2690
2691         * class.c: handle types with no parents by forcing them to have
2692         System.Object as a parent and marking them as broken (this currently
2693         allows the first part of bug #369173 to work as well, likely because
2694         we don't check for typeload exceptions everywhere yet).
2695
2696 Tue Mar 11 15:23:54 CET 2008 Paolo Molaro <lupus@ximian.com>
2697
2698         * class.c: more complete check that types belong to corlib
2699         (fixes second part of bug #369173).
2700
2701 2007-03-10  Bill Holmes  <billholmes54@gmail.com>
2702
2703         * generic-sharing.c:  Including glib.h for the MSVC builds to define
2704           "inline" to "__inline" before including mono-membar.h.
2705           
2706         * mono-perfcounters.c:  Adding HAVE_SYS_TIME_H check for MSVC builds.
2707           Rename "Unknown" to "CatTypeUnknown" to avoid name collisions for 
2708           MSVC builds.
2709
2710         Contributed under MIT/X11 license.
2711
2712 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
2713
2714         * verify.c (do_invoke_method): Remove return type validation.
2715
2716         * verify.c (do_ret): Do return type validation at return site instead of
2717         call site.
2718
2719 2008-03-10 Rodrigo Kumpera  <rkumpera@novell.com>
2720
2721         * verify.c (do_invoke_method): Mark callvirt to static methods unverifiable.
2722
2723         * verify.c: Some todos cleaned and improved a few error messages.
2724
2725 2008-03-08  Zoltan Varga  <vargaz@gmail.com>
2726
2727         * class.c (mono_class_setup_mono_type): Improve the test for corlib.
2728
2729 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
2730
2731         * class.c (mono_class_setup_mono_type): Handle types whose name clashes with
2732         system types correctly.
2733
2734         * exception.h exception.c (mono_exception_from_token_two_strings): New helper
2735         function.
2736
2737 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
2738
2739         * assembly.c (build_assembly_name): Fix a warning.
2740
2741 Thu Mar 6 19:43:41 CET 2008 Paolo Molaro <lupus@ximian.com>
2742
2743         * marshal.c: ldfld_remote and stfld_remote needs just one wrapper as
2744         the called function takes an object type argument. Fixes storing or
2745         valuetypes across remoting as well as reducing memory usage.
2746         * image.c, metadata-internals.h: remove now unused ldfld_remote and
2747         stfld_remote wrapper caches.
2748
2749 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
2750
2751         * icall.c (mono_lookup_internal_call): Update the exception message when an icall
2752         is not found.
2753
2754         * reflection.c (mono_image_register_token): New helper function to save
2755         a token->object mapping.        
2756
2757         * icall.c (ves_icall_ModuleBuilder_RegisterToken): New icall to access it from
2758         managed code.
2759
2760         * reflection.c (_mono_reflection_parse_type): Distinguish between vectors and
2761         one dimension arrays. Fixes #367670.
2762         (mono_reflection_get_type_internal): Ditto.
2763
2764 Tue Mar 4 19:04:02 CET 2008 Paolo Molaro <lupus@ximian.com>
2765
2766         * marshal.c: mono_load_remote_field_new() always returns object.
2767         so use the proper signature (fixes bug #366445).
2768
2769 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
2770         
2771         * class-internals.h (MonoMethod): Remove unused uses_this flag, 
2772         add an 'inline_failure' flag instead.
2773
2774 2008-03-04  Mark Probst  <mark.probst@gmail.com>
2775
2776         * domain-internals.h, domain.c: Replaced MonoGenericSharingContext
2777         with a new structure, MonoGenericJitInfo, in the MonoJitInfo.  It
2778         contains the location of "this", used for exception handling.
2779
2780 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
2781
2782         * class.c (mono_class_layout_fields): Set the min alignment of small structs to
2783         their size on all platforms for perf reasons.
2784
2785 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2786
2787         * reflection.h: Move mono_reflection_is_valid_dynamic_token to
2788         object-internal.h
2789
2790         * object-internal.h: Same.
2791
2792 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2793
2794         * reflection.h: Fix the build I just broke.
2795
2796 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2797
2798         * reflection.c (mono_reflection_is_valid_dynamic_token): New function,
2799         Test if a token is valid, this remove explicit usage of 
2800         MonoDynamicImage::tokens from the verifier code.
2801
2802         * reflection.h: Added mono_reflection_is_valid_dynamic_token.
2803
2804         * verify.c (token_bounds_check): Use mono_reflection_is_valid_dynamic_token
2805         instead of direct access to MonoDynamicImage::tokens.
2806
2807 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2808
2809         * verify.c (token_bounds_check): Fix the build I just broke.
2810
2811 2008-03-03 Rodrigo Kumpera  <rkumpera@novell.com>
2812
2813         * verify.c (token_bounds_check): Fix bounds check for dynamic images.
2814
2815         * verify.c (verifier_load_method): Fixed the errors message.
2816
2817         * verify.c (mono_method_verify): Fixed a debug message.
2818
2819 Thu Feb 28 19:49:45 CET 2008 Paolo Molaro <lupus@ximian.com>
2820
2821         * icall-def.h, domain.c, mono-perfcounters-def.h, mono-perfcounters.c,
2822         mono-perfcounters.h, class-internals.h: support for predefined
2823         writable counters, query of categories and counters, bugfixes.
2824
2825 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
2826
2827         * verify.c (do_refanytype): Verify the refanytype opcode.
2828
2829         * verify.c (mono_method_verify): Use do_refanytype.
2830
2831 2008-02-28 Rodrigo Kumpera  <rkumpera@novell.com>
2832
2833         * verify.c (do_mkrefany): Verify the mkrefany opcode.
2834
2835         * verify.c (mono_method_verify): Use do_mkrefany.
2836
2837 Wed Feb 27 19:49:16 CET 2008 Paolo Molaro <lupus@ximian.com>
2838
2839         * Makefile.am, icall-def.h, icall.c, mono-perfcounters-def.h,
2840         mono-perfcounters.c, mono-perfcounters.h: basic performance counter
2841         implementation.
2842
2843 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * marshal.c (mono_marshal_get_synchronized_wrapper): Fix the code which throws
2846         the type load exception.
2847
2848 2008-02-27 Rodrigo Kumpera  <rkumpera@novell.com>
2849
2850         * verify.c: Added a few FIXME for method signatures
2851
2852         * verify.c (do_invoke_method): Use mono_method_get_signature_full instead
2853         of mono_method_get_signature and get vararg call working. Removed unused
2854         checks for return value.
2855
2856         * verify.c (do_refanyval): Verify the refanyval opcode.
2857
2858         * verify.c (mono_method_verify): Implemented verification of arglist and
2859         use do_refanyval.
2860
2861 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
2862
2863         * class.c (mono_class_setup_methods): Move the check for synchronized methods on
2864         vtypes to marshal.c.
2865
2866         * marshal.c (mono_marshal_get_synchronized_wrapper): Do the vtype check here so
2867         it works for AOT as well.
2868
2869 Tue Feb 26 17:46:32 CET 2008 Paolo Molaro <lupus@ximian.com>
2870
2871         * monitor.c, threads.c, threadpool.c: replace the use of GetTickCount ()
2872         with mono_msec_ticks () which is monotonic and doesn't cause bugs when
2873         the system time is adjusted.
2874
2875 Tue Feb 26 17:40:10 CET 2008 Paolo Molaro <lupus@ximian.com>
2876
2877         * icall.c, icall-def.h: use the new time functions (fixes the
2878         non-monotonic behaviour of TickCount).
2879
2880 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
2881
2882         * reflection.c (mono_custom_attrs_from_builders): Revert the last change as
2883         it breaks the build.
2884         
2885         * reflection.c (mono_custom_attrs_from_builders): Assert instead of a crash if the
2886         cattr is not finished yet.
2887
2888 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
2889
2890         * verify.c: Proper token validation for field, method and type.
2891
2892 2008-02-25 Rodrigo Kumpera  <rkumpera@novell.com>
2893
2894         * loader.c (field_from_memberref): Generate a loader error if the type is not found.
2895
2896         * loader.c (method_from_memberref): Generate type load error instead of method missing
2897         if the type is not found.
2898
2899 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
2900
2901         * marshal.c (mono_marshal_emit_managed_wrapper): Avoid generating invalid IL if
2902         some of the conversions caused the generation of a marshal directive exception.
2903
2904 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
2905
2906         verify.c: Report which exception should be thrown by the JIT.
2907         Added a lot of FIXME notes.
2908
2909 2008-02-22  Mark Probst  <mark.probst@gmail.com>
2910
2911         * generic-sharing.c: Runtime generic context slots are not
2912         instantiated on init anymore.  Instead, provide function to do the
2913         instantiating on demand.
2914
2915         * class-internals.h: Added vtable to runtime generic context.
2916         Macros for encoding direct and indirect slot offsets in one
2917         guint32.
2918
2919 2008-02-21  Mark Probst  <mark.probst@gmail.com>
2920
2921         * object.c, generic-sharing.c: Moved some generic sharing code
2922         from object.c to generic-sharing.c.
2923
2924         * generic-sharing.c: Added support for extensible runtime generic
2925         context.
2926
2927         * metadata-internals.h: Two new hash tables in MonoImage for
2928         extensible runtime generic context support.
2929
2930         * domain.c: Unregister generic vtables upon domain unloading.
2931
2932         * image.c: Destroy new hash tables upon image unloading.
2933
2934         * metadata.c: Unregister generic subclasses upon image unloading.
2935
2936         * class-internals.h: New data structure for runtime generic
2937         context template.  New fields in the runtime generic context for
2938         extensible part.
2939
2940         * Makefile.am: Added generic-sharing.c.
2941
2942 2008-02-21 Rodrigo Kumpera  <rkumpera@novell.com>
2943
2944         icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): If
2945         there is a pending loader exception, raise it.
2946
2947         icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
2948         same.
2949
2950         icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): 
2951         same.
2952
2953         Fixes #363450.
2954
2955 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
2956
2957         * icall.c (ves_icall_Type_GetPacking): Handle dynamic types.
2958
2959         * assembly.c (mono_assembly_load_from_full): Fix a leak in the previous patch.
2960         
2961         * assembly.c (mono_assembly_load_from_full): Return the non-refonly corlib for
2962         ref-only requests for compatibility with MS.
2963
2964 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2965
2966         * reflection.c (mono_custom_attrs_from_method): Don't silently
2967         return an empty list for generic method instances.
2968         (mono_custom_attrs_from_param): Likewise.
2969
2970 2008-02-20  Rodrigo Kumpera  <rkumpera@novell.com>
2971             Raja R Harinath  <harinath@hurrynot.org>
2972
2973         Fix #354757
2974         * class-internals.h (struct _MonoMethodInflated.is_mb_open): Add.
2975         * class.c (mono_class_inflate_generic_method_full): Initialize it
2976         when a fully-open method is instantiated.
2977         * metadata.c (inflated_method_equal, inflated_method_hash): Update
2978         to new field.
2979         * reflection.c (inflate_mono_method): Don't create a temporary context.
2980
2981 2008-02-20  Raja R Harinath  <harinath@hurrynot.org>
2982
2983         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
2984         Compute correct value, to prepare for imethod->reflection_info going away.
2985
2986 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
2987
2988         * class.c (mono_class_setup_vtable_general): Ignore static methods in interfaces.
2989
2990 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2991
2992         * verify.c: Implement skip visibility flag.
2993
2994 2008-02-18 Rodrigo Kumpera  <rkumpera@novell.com>
2995
2996         * verify.h: Added MONO_VERIFY_SKIP_VISIBILITY and struct MonoVerifyInfoExtended
2997         which contains an extra field to tell the kind of exception that should be thrown.
2998
2999         * verify.c: Use MonoVerifyInfoExtended instead of MonoVerifyInfo.
3000
3001 2008-02-17  Raja R Harinath  <harinath@hurrynot.org>
3002
3003         * loader.c (mono_method_get_param_names): Initialize 'klass' after
3004         'method' is updated.
3005
3006 2008-02-11  Zoltan Varga  <vargaz@gmail.com>
3007
3008         * class.c (mono_class_layout_fields): Set class->min_align for classes using
3009         explicit layout as well. Fixes #360375.
3010
3011 2008-02-11  Geoff Norton  <gnorton@novell.com>
3012
3013         * loader.c: Guard and dereference against inflated generic methods
3014
3015 2008-02-10  Gert Driesen  <drieseng@users.sourceforge.net>
3016
3017         * class.c: Include Retargetable spec in assembly name.
3018         * assembly.c: Always include PublicKeyToken spec in assembly name
3019         (with value "null" if assembly is not signed), and include
3020         Retargetable spec.
3021         * icall-def.h: Added icall for Assembly.get_fullname.
3022         * icall.c: Added icall returning the fullname of an assembly.
3023
3024 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
3025
3026         * class.c (mono_class_setup_vtable_general): Add a missing call to
3027         mono_class_setup_methods () which is needed in the AOT case.
3028
3029 2008-02-08 Rodrigo Kumpera  <rkumpera@novell.com>
3030
3031         * verify.c (mono_type_get_stack_name): Added. Return the name for the
3032         stack type of the given MonoType.
3033
3034         * verify.c (verify_type_compatibility_full): Handle the void type.
3035
3036         * verify.c (is_compatible_boxed_valuetype): Changed to fit the
3037         way stack merging works.
3038
3039         * verify.c (store_local): Improved verification message.
3040
3041         * verify.c (do_branch_op): If the merging is invalid, the method
3042         is unverifiable and not invalid. Improved error message.
3043
3044         * verify.c (merge_stacks): Properly merge a boxed valuetype and
3045         a reference type diferent than System.Object. Improved error
3046         message.
3047
3048 2008-02-07 Rodrigo Kumpera  <rkumpera@novell.com>
3049
3050         * verify.c (mono_type_is_enum_type): Added. Test if a type is an enum.
3051
3052         * verify.c (mono_type_get_underlying_type_any): Added. Return the underlying
3053         type of an enum even if the argument is byref.
3054
3055         * verify.c: Replace all explicit uses of enumtype and enum_basetype
3056         to calls to mono_type_is_enum_type and mono_type_get_underlying_type_any.
3057
3058         * verify.c: Check for an enum in all cases of MONO_TYPE_GENERICINST.
3059
3060         *verify.c (verify_type_compatibility_full): Make enum types
3061         compatible with their base types.
3062
3063         * verify.c (is_compatible_boxed_valuetype): Added. Check if both
3064         types are compatible for the special case of a boxed valuetype and
3065         System.Object.
3066
3067         * verify.c (verify_stack_type_compatibility): The function
3068         is_compatible_boxed_valuetype was extracted from here.
3069
3070         * verify.c (push_arg): Only set ctx->has_this_store if the method
3071         is not static.
3072
3073         * verify.c (do_ldelem): Fixed a typo in an error message and added
3074         strict check for mixing int32 and native int as the array type
3075         and ldelem type.
3076
3077         * verify.c (merge_stacks): Consider boxed valuetypes in the
3078         compatibility checks.
3079
3080 2008-02-07  Massimiliano Mantione  <massi@ximian.com>
3081         * profiler.h: (MonoGCEvent): Added start-stop the world events.
3082
3083 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
3084         *class.c: use_new_interface_vtable_code: renamed the env var to have
3085         a "MONO_" prefix, and fix the logic to enable it by default.
3086
3087 2008-02-06  Massimiliano Mantione  <massi@ximian.com>
3088         *class.c:
3089         mono_class_setup_vtable_general: rewrote the way in which interface
3090         methods are added to vtables. Makes bug-77127.exe pass, and hopefully
3091         makes the code more maintainable.
3092         For now the old code is still there, and can be activated setting
3093         the env var "USE_NEW_INTERFACE_VTABLE_CODE".
3094
3095 2008-02-06 Rodrigo Kumpera  <rkumpera@novell.com>
3096
3097         * verify.c: guarded some debug functions around and #ifdef.
3098
3099         * verify.c (merge_stacks): implement proper PIII 1.8.1.3 stack state merging.
3100
3101 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
3102
3103         * marshal.c (mono_marshal_get_runtime_invoke): Revert the direct_wrapper
3104         changes for now since they seem to break too many things.
3105
3106 2008-02-05  Mark Probst  <mark.probst@gmail.com>
3107
3108         * marshal.c, marshal.h (mono_marshal_find_bitfield_offset,
3109         mono_marshal_find_nonzero_bit_offset): Added macro and function
3110         for finding the byte- and bit-offset of a bitfield within a
3111         struct.
3112
3113 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * marshal.c (mono_marshal_get_ptr_to_struct): Make the signature non-pinvoke.
3116         (mono_marshal_get_struct_to_ptr): Ditto.
3117
3118         * marshal.c (mono_marshal_get_runtime_invoke): Fix the signature of 
3119         cctor_signature.
3120
3121 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
3122
3123         * marshal.c (mono_marshal_get_runtime_invoke): Fix sharing of runtime wrappers
3124         between methods for non-corlib types.
3125
3126 2008-02-02  Geoff Norton  <gnorton@novell.com>
3127
3128         * loader.c (mono_method_get_param_names): Populate the parameter name for 
3129         generic parameters as well. (Fixes #342536)
3130
3131 2008-01-31 Rodrigo Kumpera  <rkumpera@novell.com>
3132
3133         * verify.c (is_valid_bool_arg): Allow boxed values and null literals as well.
3134
3135         * verify.c (do_invoke_method): Fix for calling with byref structs.
3136
3137         * verify.c (do_cast): push a boxed value type based on the type token and not
3138         the type of stack.
3139
3140 2008-01-31  William Holmes  <billholmes54@gmail.com>
3141
3142         * process.c (process_module_string_read): Check the size returned form 
3143           VerQueryValue to avoid out of memory exception. 
3144
3145 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
3146
3147         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
3148         Handle properly modules which are not in the moduleref table. Fixes
3149         #356938.
3150
3151 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
3152
3153         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Remove
3154         the dynamic case which is now in managed code.
3155         (ves_icall_System_Reflection_Assembly_GetTypes): Ditto.
3156
3157         * marshal.c (mono_string_to_bstr): Fix a warning.
3158         (init_com_provider_ms): Ditto.
3159
3160         * appdomain.c (ves_icall_System_AppDomain_createDomain): Add some FIXMEs.
3161
3162         * exception.c (mono_get_exception_out_of_memory): New helper function.
3163
3164 2008-01-28  Jonathan Chambers  <joncham@gmail.com>
3165
3166         * marshal.c: Add support for BSTR marshalling
3167         using other COM systems.
3168
3169         Code is contributed under MIT/X11 license.
3170
3171 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
3172
3173         * object.c (mono_runtime_invoke_array): reverted previous
3174         commit as it breaks the build.
3175
3176 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
3177
3178         * object.c (mono_runtime_invoke_array): Verify arguments for
3179         invalid types. Fixes #348522.
3180
3181 2008-01-28 Rodrigo Kumpera  <rkumpera@novell.com>
3182
3183         * verify.c: added IL_CODE_CALL_NONFINAL_VIRTUAL to track calls to
3184         non-final virtual calls using call. 
3185
3186         * verify.c (do_invoke): fixed some TODOs.
3187
3188         * verify.c (push_arg): set has_this_store for "ldarga 0".
3189
3190 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * reflection.c (reflection_methodbuilder_to_mono_method): Allow DynamicMethods
3193         which belong to an inflated class. Fixes #356531.
3194
3195 2008-01-26  Robert Jordan  <robertj@gmx.net>
3196
3197         * file-io.c: Implement and use wrappers for GetFileAttribute|Ex ()
3198         which resort to FindFirstFile when a certain error condition
3199         (ERROR_SHARING_VIOLATION) occured. Fixes bug #325212.
3200         Code is contributed under MIT/X11 license.
3201
3202 2008-01-24  Jonathan Chambers  <joncham@gmail.com>
3203
3204         * marshal.c (emit_marshal_string): Fix out string marshalling
3205         to use specified encoding. Fixes #323900.
3206
3207         Code is contributed under MIT/X11 license.
3208
3209 2008-01-24  Raja R Harinath  <harinath@hurrynot.org>
3210
3211         * class.c (mono_class_inflate_generic_method_full): Don't modify
3212         iresult->context after cache check.
3213
3214 2008-01-23  Zoltan Varga  <vargaz@gmail.com>
3215
3216         * class.c (mono_class_inflate_generic_method_full): Change the
3217         struct assignments to memcpy for better visibility and add some comments.
3218
3219 2008-01-23  Dick Porter  <dick@ximian.com>
3220
3221         * threads.c (mono_threads_set_shutting_down): Simplify shutdown
3222         procedure, and make it work on windows.
3223
3224 2008-01-22  Zoltan Varga  <vargaz@gmail.com>
3225
3226         * object-internals.h (MonoReflectionGenericClass): Make the 'generic_type' field
3227         a MonoReflectionTypeBuilder since it is always of that type.
3228
3229         * reflection.c (mono_type_get_object): Remove an unneccesary check.     
3230
3231         * reflection.c (mono_generic_class_get_object): Simplify this a bit.
3232
3233         * reflection.c (mono_reflection_bind_generic_parameters): Ditto.
3234         
3235         * icall.c (ves_icall_MonoGenericClass_GetParentType): Ditto.
3236
3237         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Ditto.
3238
3239         * reflection.c (mono_reflection_create_runtime_class): Remove already created
3240         instantiations from the type cache.
3241
3242 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3243
3244         * verify.c (do_ldstr): fixed token verification. previous code was 100% broken.
3245
3246         * verify.c (do_unbox_value): push a controled mutability managed pointer.
3247
3248 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3249
3250         * verify.c (do_ldstr): added, verifies if the #US token is valid.
3251
3252         * verify.c (mono_method_verify): removed old TODO
3253
3254 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3255
3256         * verify.c (do_newobj): add visibility check.
3257
3258 2008-01-21 Rodrigo Kumpera  <rkumpera@novell.com>
3259
3260         * verify.c (do_load_function_ptr): add visibility check.
3261
3262 2008-01-21  Massimiliano Mantione  <massi@ximian.com>
3263         *class.c:
3264         mono_generic_class_get_class: hook profiler events.
3265         mono_field_get_offset: added to support heap-shot in the new profiler.
3266         *class.h: exported mono_field_get_offset.
3267         * reflection.c:
3268         mono_reflection_setup_internal_class: hook profiler events.
3269
3270 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
3271
3272         * marshal.c (mono_marshal_emit_native_wrapper): Add a 'check_exceptions' 
3273         argument here too and use it to avoid checking for pending exceptions if 
3274         possible.
3275
3276 2008-01-20  Gert Driesen  <drieseng@users.sourceforge.net>
3277
3278         * assembly.c (build_assembly_name): add arg for passing the assembly
3279         flags. Do not consider a PublicKey with value "null" valid.
3280         (mono_assembly_name_parse_full): added boolean argument that will be
3281         set if the assembly name contains a PublicKeyToken spec. Added support
3282         for the Retargetable spec for which only Yes or No are allowed as valid
3283         value. Consider assembly name invalid if Retargetable spec is set, but
3284         either version, culture or public key (token) are not specified.
3285         * metadata-internals.h: sync signature of mono_assembly_name_parse_full
3286         with implementation in assembly.c.
3287         * icall.c (fill_reflection_assembly_name): also copy assembly flags
3288         from MonoAssemblyName.
3289         (ves_icall_System_Reflection_AssemblyName_ParseName): use newly
3290         introduced argument for mono_assembly_name_parse_full to know if the
3291         assembly name has a PublicKeyToken spec, and if it has instruct
3292         fill_reflection_assembly_name to use default value for keyToken (if
3293         PublicKeyToken is null).
3294
3295 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
3296
3297         * verify.c (mono_method_verify): fixed ovf ops with
3298         float values. They are unverifiable now.
3299
3300 2008-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
3301
3302         * class.c (set_failure_from_loader_error): add BadImageException to the
3303         list of exceptions that can cause a type to fail to load.
3304
3305         * class.c (mono_class_get_exception_for_failure): same.
3306
3307 2008-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
3308
3309         * verify.c (in_any_exception_block): added, check if offset
3310         is part of any exception handling clause.
3311
3312         * verify.c (get_stack_type): added VAR and MVAR types.
3313
3314         * verify.c (do_stobj): better error messages.
3315
3316         * verify.c (do_cpobj): added, check cpobj.
3317
3318         * verify.c (do_initobj): added, check initobj.
3319
3320         * verify.c (do_sizeof): added, check sizeof.
3321
3322         * verify.c (do_localloc): added, check localloc.
3323
3324         * verify.c: adde proper verification for cpobj, initobj, sizeof and localloc.
3325
3326 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
3327
3328         * method-builder.c (mono_mb_emit_native_call): Get rid of the unused
3329         save_lmf/restore_lmf opcodes.
3330
3331         * threads.c (mono_threads_install_notify_pending_exc): New function to
3332         install a callback notifying the JIT there is a pending exception on a thread.
3333         (mono_thread_request_interruption): Call the new callback.
3334         (mono_thread_get_and_clear_pending_exception): New function to return the
3335         exception pending on a thread.
3336
3337         * marshal.c (mono_marshal_get_icall_wrapper): Add a check_exceptions argument
3338         to turn off checking for pending exceptions.
3339         (mono_marshal_get_native_wrapper): Ditto.
3340
3341 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
3342
3343         * threads-types.h: Get rid of the unnecessary extern declarations.
3344
3345 2008-01-16  Gert Driesen  <drieseng@users.sourceforge.net>
3346
3347         * icall.c (ves_icall_Type_GetField): if NonPublic flag is set, only
3348         return field from parent class if not private.
3349         (ves_icall_Type_GetFields_internal): if NonPublic flag is set, only
3350         returns fields from parent class if they are not private.
3351         (method_nonpublic): added function to determine if a given method
3352         should be considered non-public. Returns false for private methods
3353         on parent class, and internal methods from parent on the 1.0 profile.
3354         (ves_icall_Type_GetMethodsByName): if NonPublic flag is set, then
3355         use method_nonpublic function to determine whether method should be
3356         returned.
3357         (property_accessor_public): use newly introduced method_nonpublic
3358         function to determine whether accessor is non-public. 
3359         (ves_icall_MonoType_GetEvent): If NonPublic flag is set, only return
3360         event from parent class if not private. Only return static event if
3361         Static flag is set, and only return static event from parent class if
3362         FlattenHierarchy flag is set.
3363         (ves_icall_Type_GetEvents_internal): If NonPublic flag is set, only
3364         include non-private events from parent class.
3365
3366 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
3367
3368         * icall.c (ves_icall_System_NumberFormatter_GetFormatterTables): Fix a
3369         warning.
3370
3371 2008-01-16  Wade Berrier <wberrier@novell.com>
3372
3373         * security.c: Add assembly.h header to appease some warnings
3374
3375 2008-01-16  Dick Porter  <dick@ximian.com>
3376
3377         * process.c (process_module_string_read): Remove trailing null
3378         when saving string.
3379
3380 2008-01-16  Mark Probst  <mark.probst@gmail.com>
3381
3382         * class-internals.h: A new data structure describing the layout of
3383         a runtime generic context (MonoRuntimeGenericContextTemplate).
3384
3385         * metadata-internals.h: Added a hash table to MonoDomain that maps
3386         from open generic classes to their runtime generic context
3387         templates.
3388
3389         * object.c: Building of the runtime generic context, including
3390         proper handling of generic type arguments of superclasses.
3391         Building of the runtime generic context according to the template.
3392
3393 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
3394
3395         * class.c (mono_class_setup_fields): Set field.count for generic instances.
3396         Fixes #350856.
3397
3398         * image.c (do_mono_image_open): Pass TRUE as last_exists to 
3399         mono_portability_find_file (). Fixes #325466.
3400         (mono_image_get_public_key): Fix a warning.
3401
3402 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
3403
3404         * class.c (mono_class_from_name): Fix comments for NULL-ness of image parameter.
3405         Fixes #353550.
3406         (mono_class_from_name_case): Ditto.
3407
3408 2008-01-13  Eyal Alaluf <eyala@mainsoft.com>
3409
3410         * icall-def.h number-formatter.h icall.c: Implemented a cross app-domain
3411           common storage for the tables used in the System/NumberFormatter class.
3412
3413 2008-01-13  Zoltan Varga  <vargaz@gmail.com>
3414
3415         * marshal.c (mono_marshal_get_runtime_invoke): Fix a typo.
3416
3417 2008-01-11  Rodrigo Kumpera  <rkumpera@novell.com>
3418
3419         * verify.c (get_boxable_mono_type): check if the token is valid.
3420
3421         * verify.c (set_stack_value): changed to add an error if an
3422         invalid type is set on stack. Changed all callers due to signature change.
3423
3424         * verify.c (do_stobj): implement stobj validation.
3425
3426 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
3427
3428         * reflection.c (reflection_methodbuilder_to_mono_method): No need to
3429         set container->is_method, it was set earlier.
3430
3431         * metadata.c (type_in_image): Handle MVARs which belong to not finished
3432         generic methods.
3433
3434         * reflection.c (mono_reflection_initialize_generic_parameter): Set
3435         is_method of the generic container to TRUE for methods.
3436
3437 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
3438
3439         * metadata.c (type_in_image): Handle type parameters properly.
3440
3441         * class-internals.h (MonoGenericParam): Add an 'image' argument to track
3442         memory ownership of this structure.
3443
3444 2008-01-10  Rodrigo Kumpera  <rkumpera@novell.com>
3445
3446         * verify.c (get_boxable_mono_type): make typedref types been just
3447         unverifiable. check for void type.
3448
3449         * verify.c (do_unbox_any): added, verify opcode unbox.any.
3450
3451         * verify.c (do_load_function_ptr): accept method spec tokens.
3452
3453 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
3454
3455         * marshal.c (mono_class_native_size): Always set *align even if this is called
3456         recursively.
3457
3458 2008-01-09  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * verify.c (mono_verify_corlib): Remove this as it was not used and was 
3461         out-of-date.
3462
3463 2008-01-09  Rodrigo Kumpera  <rkumpera@novell.com>
3464
3465         * verify.c: removed some old unused tables. A huge bunch of small fixes
3466         to things found while testing the verifier with mono basic.
3467
3468         * verify.c (dump_stack_value): dump null literal flag to.
3469
3470         * verify.c (verify_type_compatibility_full): fix comparison
3471         for types that have a generic super type.
3472
3473         * verify.c (verify_stack_type_compatibility): fix compatibility
3474         between null literals and reference types. fix compatibility between
3475         boxed valuetypes and object. fix corner case test for enums.
3476
3477         * verify.c (do_cmp_op): proper verification of cgt.un in case
3478         of reference types.
3479
3480         * verify.c (do_invoke_method): fix error message.
3481
3482         * verify.c (do_store_indirect
3483
3484         * verify.c (check_is_valid_type_for_field_ops): proper verification
3485         of managed pointers to valuetypes and boxed valuetypes. proper verification
3486         of null literals.
3487
3488         * verify.c (do_unbox_value): expect valuetypes to be always boxed. don't
3489         allow token to be a reference type.
3490
3491         * verify.c (do_cast): proper handling of boxes valuetypes.
3492
3493         * verify.c (do_stelem): proper handling of storing a boxed valuetype
3494         in object[].
3495
3496         * verify.c (mono_method_verify): pass the opcode to do_cmp_op
3497         to handle cgt.un properly. Implement add/mul/sub ovf opcodes.
3498         fixed the decoding of unbox_any
3499
3500 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * boehm-gc.c (mono_gc_deregister_root): Fix the size passed to libgc.
3503
3504 2008-01-08  Rodrigo Kumpera  <rkumpera@novell.com>
3505
3506         * verify.c (do_newobj): do delegate verification.
3507
3508         * verify.c (verify_delegate_compatibility): perform delegate
3509         verification.
3510
3511         * verify.c (verify_ldftn_delegate): perform tests related to
3512         ldftn delegates.
3513
3514         * verify.c (mono_delegate_signature_equal): perform the
3515         slightly diferent signature comparison required by delegates.
3516
3517         * metadata.c (mono_metadata_type_equal_full): added and exported
3518         as MONO_INTERNAL. This is a version of mono_metadata_type_equal that
3519         allows signature only comparison.
3520
3521         * metadata-internal.h (mono_metadata_type_equal_full): added and exported
3522         as MONO_INTERNAL.
3523
3524 2008-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
3525
3526         * verify.c: added a bunch of stack_slot_* functions to
3527         make access to stack slot type easier. This is required to
3528         allow optional flags, like null literal, boxed value and
3529         this pointer.
3530         All access paths to IlStackDesc::stype have been changed 
3531         to use these new funcions.
3532         Removed a bunch of unused functions and cleared all warnings.
3533         This patch introduces the usage of the this pointer and 
3534         boxed value flags.
3535
3536 2008-01-07  Zoltan Varga  <vargaz@gmail.com>
3537
3538         * boehm-gc.c (mono_gc_deregister_root): Fix win32 build.
3539
3540 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
3541
3542         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Change signature to
3543         match managed version.
3544
3545         * appdomain.c: Bump corlib version.
3546         
3547         * appdomain.c (ves_icall_System_AppDomain_ExecuteAssembly): Check for a null
3548         argument.
3549
3550 2008-01-06  Gert Driesen  <drieseng@users.sourceforge.net>
3551
3552         * icall.c (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies)
3553         Set public key token to zero-length byte array if assembly is not
3554         strongnamed.
3555
3556 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
3557
3558         * icall.c (ves_icall_System_Array_SetValueImpl): Use a write barrier when
3559         writing a vtype array elem.
3560
3561 2007-01-05  Gert Driesen  <drieseng@users.sourceforge.net>
3562
3563         * assembly.c (build_assembly_name): return FALSE if length of token is
3564         not 16 (if not "null").
3565         (mono_assembly_name_parse_full): return FALSE if value of version,
3566         culture, token or key is 0.
3567         * icall.c (fill_reflection_assembly_name): add boolean arguments to
3568         specify whether public key and public key token must be set to default
3569         value (zero-length byte array) if not available. Set versioncompat to
3570         SameMachine. If public key is available or the default is set, then
3571         set PublicKey flag.
3572         (ves_icall_System_Reflection_Assembly_FillName): if no public key
3573         is available, use empty byte array as default value. On the 2.0
3574         profile, use default value for public key token if not set.
3575         (ves_icall_System_Reflection_InternalGetAssemblyName): on the 1.0
3576         profile, use default value for public key if not set. On the 2.0
3577         profile, use default value for public key token if not set.
3578         (ves_icall_System_Reflection_AssemblyName_ParseName): do not set
3579         default values for public key and public key token.
3580
3581 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
3582
3583         * object-internals.h (MonoReflectionAssemblyName): Add 'processor_architecture'
3584         field to keep it in synch with the managed object.
3585
3586         * marshal.c (emit_marshal_object): Add support for byref marshalling of
3587         delegates. Fixes #351520.
3588
3589         * sgen-gc.c (conservatively_pin_objects_from): Tell valgrind that the pin queue
3590         contains defined memory.
3591         
3592         * sgen-gc.c: Fix 64 bit warnings. Fix some typos. Update GC stats in mono_stats.
3593
3594         * sgen-gc.c (build_nursery_fragments): Handle half-constructed objects correctly.
3595         
3596         * sgen-gc.c (check_consistency): New helper function to do a consistency check
3597         of the GC data structures.
3598
3599         * gc-internal.h: Moved the REGISTER/UNREGISTER macros here from os/gc_wrapper.h.
3600
3601         * *.c: Include metadata/gc-internal.h instead of os/gc_wrapper.h.
3602         
3603         * object.c (mono_array_full_copy): Fix detection of whenever to use a write
3604         barrier.
3605         (mono_array_clone_in_domain): Ditto.
3606         (mono_array_clone_in_domain): Ditto.
3607
3608         * threads.c (start_wrapper): Register the thread start argument as a GC root.
3609         (cache_culture): Use a write barrier.
3610
3611         * icall.c (ves_icall_System_Array_SetValueImpl): Call a write barrier.
3612         (ves_icall_get_property_info): Ditto.
3613
3614         * object.h (MONO_STRUCT_SETREF): New macro.
3615
3616         * class-internals.h (MonoStats): Add some GC statistics.
3617
3618         * boehm-gc.c null-gc.c: Define mono_gc_deregister_root ().
3619
3620 2008-01-04  Andreas Faerber  <andreas.faerber@web.de>
3621
3622         * exception.c (mono_exception_from_name_two_strings):
3623         Break from loop after method is found.
3624
3625 2008-01-04  Dick Porter  <dick@ximian.com>
3626
3627         * process.c (process_module_string_read): Rename variable to
3628         reflect correct usage, after fixing bug 345972.
3629
3630 2008-01-03  Rodrigo Kumpera  <rkumpera@novell.com>
3631
3632         * verify.c (mono_type_create_fnptr_from_mono_method): 
3633         created a MonoType function pointer instance to be used during
3634         verification. The verifier releases this memory at end.
3635
3636         * verify.c (mono_method_is_constructor): extracted repeated
3637         checks for constructor into a single class.
3638
3639         * verify.c (do_push_field): use new extracted method
3640         for constructor check.
3641
3642         * verify.c (do_newobj): same.
3643
3644         * verify.c (do_ldftn): renamed to do_load_function_ptr
3645         and make it verify ldvirtftn too.
3646
3647         * verify.c (mono_method_verify: proper verification
3648         of ldvirtftn. release created MonoMethod instances.
3649
3650 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
3651
3652         * verify.c (token_bounds_check): added.
3653
3654         * verify.c (do_ldftn): added.
3655
3656         * verify.c (mono_method_verify): proper verificartion of ldftn.
3657
3658 2007-12-31  Rodrigo Kumpera  <rkumpera@novell.com>
3659
3660         * metadata.c (mono_metadata_decode_row): Assert if index is bigger
3661         than the table row count. It's the resposibility of the caller to
3662         make the bounds check and raise the correct error.
3663
3664         * metadata.c (mono_metadata_decode_row_col): Same.
3665
3666         * loader.c (mono_get_method_from_token): perform bounds check
3667         on token for methoddef table.
3668
3669 2007-12-29  Miguel de Icaza  <miguel@novell.com>
3670
3671         * icall.c
3672         (ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData): Turn the
3673         assert into a negative result, the managed code already coped with
3674         that.
3675
3676         Some folks on Windows reported this error. 
3677
3678 2007-12-28  Gert Driesen  <drieseng@users.sourceforge.net>
3679
3680         * appdomain.c: Bump corlib version.
3681         * icall.c:
3682         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies): Use
3683         CultureInfo.CreateCulture to create CultureInfo for name.
3684         (fill_reflection_assembly_name): Use CultureInfo.CreateCulture to
3685         create CultureInfo for name. Fixes bug #347174.
3686
3687 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
3688
3689         * verify.c: added IL_CODE_FLAG_STACK_INITED and IL_CODE_STACK_MERGED
3690         flags.
3691
3692         * verify.c (is_valid_branch_instruction): allow branching to the
3693         first instruction of the protected block.
3694
3695         * verify.c (is_valid_cmp_branch_instruction): same.
3696
3697         * verify.c (stack_init): use IL_CODE_FLAG_STACK_INITED flag to
3698         avoid double initialization.
3699
3700         * verify.c (merge_stacks): use IL_CODE_STACK_MERGED to
3701         detect which cases the eval stack should just be copied.
3702
3703         * verify.c (mono_method_verify): check if the eval stack
3704         is empty when entering a protected block.
3705
3706 2007-12-27  Rodrigo Kumpera  <rkumpera@novell.com>
3707
3708         * verify.c: added is_clause_in_range, is_clause_inside_range,
3709         is_clause_nested and verify_clause_relationship. They perform
3710         the verifications stated in P1 12.4.2.7.
3711
3712         * verify.c (mono_method_verify): remove some unused variables,
3713         add the new exception clause checks, add instruction border
3714         checks for protected block start/end, improved some error 
3715         messages and fixed a bug in the way invalid instruction access
3716         is detected.
3717
3718 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
3719
3720         * boehm-gc.c (mono_gc_register_thread): Use the new GC_register_my_thread () routine
3721         from GC 7.0 if available.
3722
3723         * object.c: Remove an unused define.
3724         
3725         * object.c (mono_class_compute_gc_descriptor): Fix a warning.
3726
3727         * boehm-gc.c (mono_gc_make_descr_for_array): Implement.
3728
3729         * null-gc.c (mono_gc_make_descr_for_array): Implement.
3730
3731         * object.c (mono_class_compute_gc_descriptor): Remove an #ifdef SGEN_GC.
3732
3733         * gc-internal.h: Change the signature of mono_gc_make_descr_for_string ()
3734         to take the same arguments as the other make_descr functions.
3735
3736         * boehm-gc.c null-gc.c: Add implementation for make_descr functions.
3737
3738         * objects.c: Get rid of the MAKE_DESCRIPTOR macros, call make_descr functions
3739         directly.
3740
3741         * boehm-gc.c (mono_gc_base_init): Moved the setting of GC_stackbottom here from
3742         mini.c.
3743
3744         * object.c (mono_class_compute_gc_descriptor): Move the GC_init_gcj_malloc () 
3745         call to boehm-gc.c.
3746
3747         * boehm-gc.c (mono_gc_register_root): Fix a warning.
3748
3749         * null-gc.c (mono_gc_register_root): Fix a warning.
3750
3751         * reflection.c (ALLOC_REFENTRY): Use mono_gc_alloc_fixed for boehm as well.
3752
3753         * boehm-gc.c (mono_gc_register_root): Moved definition here from gc_wrapper.h.
3754         (mono_gc_base_init): Call GC_init ().
3755
3756         * null-gc.c: Define mono_gc_register_root () as a no-op.
3757
3758         * domain.c appdomain.c: Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
3759
3760 2007-12-24  Rodrigo Kumpera  <rkumpera@novell.com>
3761
3762         * verify.c: add prototype for merge_stacks at top
3763
3764         * verify.c (do_switch): added.
3765
3766         * verify.c (merge_stacks): on some cases the stack merging
3767         was not happening properly. Unequal stack sizes at merge
3768         points should be invalid.
3769
3770         * verify.c (mono_method_verify): added more debug info on stack state.
3771         verify switch properly.
3772
3773 2007-12-24  Zoltan Varga  <vargaz@gmail.com>
3774
3775         * method-builder.h: New file, moved the mono_mb_ declarations here from 
3776         marshal.h.
3777
3778         * boehm-gc.c marshal.c: Include method-builder.h.
3779
3780         * marshal.c: Use mono_mb_emit_branch_label () in a few places.
3781
3782         * marshal.c: Remove some code which is now in method-builder.c.
3783
3784 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
3785
3786         * method-builder.c: New file, extraction of the method builder functionality 
3787         from marshal.c.
3788
3789         * marshal.c: Move the mb functions into method-builder.c.
3790
3791         * marshal.h marshal.c: Export some mono_mb_... functions.
3792
3793         * marshal.c: Use mono_mb_get_label () and mono_mb_patch_branch () in all places.
3794
3795         * loader.c (field_from_memberref): Remove the dynamic case, it is handled in
3796         the caller.
3797
3798         * class.c (mono_class_get_full): Check the token type in the dynamic case.
3799
3800         * loader.c (mono_field_from_token): Ditto.      
3801
3802         * loader.c (mono_get_method_from_token): Change the check so it checks memberref
3803         type as well.
3804         
3805         * loader.c (mono_get_method_from_token): Check the token type in the dynamic case.
3806         Fixes #342565.
3807
3808         * class-internals.h: Add new loader error type MONO_EXCEPTION_BAD_IMAGE plus
3809         a helper function for setting it.
3810
3811         * loader.c (mono_loader_error_prepare_exception): Handle MONO_EXCEPTION_BAD_IMAGE.
3812
3813         
3814         * assembly.c: Significally simplify code now that referenced assemblies are 
3815         loaded lazily. Get rid of the 'loading' hashtables. Hopefully fixes #347629.
3816
3817         * threads.h: Don't include  the internal threads-types.h header file. Fixes
3818         #349952.
3819
3820 2007-12-21  Rodrigo Kumpera  <rkumpera@novell.com>
3821
3822         * verify.c: added enum value IL_CODE_FLAG_WAS_TARGET, to represent
3823         instructions that were target of branches or are at protected block boundaries.
3824
3825         * verify.c (in_same_block): handle filter clauses.
3826
3827         * verify.c (is_valid_branch_instruction): added. checks the target of
3828         instructions br or brtrue/false.
3829
3830         * verify.c (is_valid_cmp_branch_instruction): added. checks the target of
3831         binary branch instructions such as beq and bge.
3832
3833         * verify.c (init_stack_with_value): renamed to init_stack_with_value_at_exception_boundary
3834         and made it pin the instruction as been part of the exception block.
3835
3836         * verify.c (do_boolean_branch_op): use is_valid_branch_instruction instead
3837         of in_same_block.
3838
3839         * verify.c (do_branch_op): use is_valid_cmp_branch_instruction instead
3840         of in_same_block.
3841
3842         * verify.c (do_ret): ret from a protected block is unverifiable and
3843         not invalid.
3844
3845         * verify.c (do_static_branch): verify br and br.s instructions.
3846
3847         * verify.c (merge_stacks): add extra param to support detection
3848         of branches in the middle of instructions.
3849         
3850         * verify.c (mono_method_verify): verify branches and exception blocks
3851         that target the middle of instructions. Proper verification of br and br.s.
3852
3853 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
3854
3855         * reflection.c (reflection_methodbuilder_from_ctor_builder): Initialize
3856         skip_visibility field.
3857         (reflection_methodbuilder_from_dynamic_method): Ditto.
3858
3859         * object.c (mono_class_compute_gc_descriptor): Remove more unused icall
3860         registrations. Fixes #348193.
3861
3862         * threads.h: Move the internal mono_thread_get_pending_exception () to
3863         threads-types.h and rename it to mono_thread_get_undeniable_exception ().
3864
3865 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
3866
3867         * object.c (mono_class_compute_gc_descriptor): Remove unused GC_gcj_fast_malloc
3868         icall registration. Fixes #348193.
3869
3870         * marshal.c (mono_marshal_get_runtime_invoke): Put all runtime invoke wrappers
3871         for corlib classes into object. Fixes #349621.
3872
3873 2007-12-20  Gert Driesen  <drieseng@users.sourceforge.net>
3874
3875         * icall.c (property_accessor_nonpublic): new function to determine
3876         whether an accessor allows a property to be considered non-public.
3877         Returns false for private accessor(s) from parent class, and internal
3878         accessor(s) from parent on 2.0 profile (and higher).
3879         (ves_icall_Type_GetPropertiesByName): Use newly introduced function
3880         to determine whether property should be included if NonPublic flag
3881         is set. Fixes bug #349078.
3882
3883 2007-12-20  Rodrigo Kumpera  <rkumpera@novell.com>
3884
3885         * verify.c (init_stack_with_value): added.
3886
3887         * verify.c (mono_method_verify): extracted common
3888         code for exception initialization into init_stack_with_value.
3889
3890         * verify.c (mono_method_verify): initialize the exception
3891         for handler clauses as well.
3892
3893         * verify.c (mono_method_verify): fix the exception clause
3894         ordering rules, it should use handler end offset and not
3895         start offset.
3896
3897 Thu Dec 20 12:27:24 CET 2007 Paolo Molaro <lupus@ximian.com>
3898
3899         * rawbuffer.c: remove useless warning.
3900
3901 Thu Dec 20 12:10:38 CET 2007 Paolo Molaro <lupus@ximian.com>
3902
3903         * threads.h, threads-types.h: move functions to the correct header
3904         (fixes bug#349952).
3905
3906 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3907
3908         * verify.c (mono_method_verify): proper verification
3909         of exception handling clauses ranges and fallthru in
3910         and out of protected blocks.
3911
3912 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3913
3914         * verify.c (mono_method_verify): fixed compilation issue.
3915
3916 2007-12-19  Rodrigo Kumpera  <rkumpera@novell.com>
3917
3918         * verify.c (mono_method_verify): a printf slipped in, changed
3919         to use verifier debug macro.
3920
3921 2007-12-18  Rodrigo Kumpera  <rkumpera@novell.com>
3922
3923         * verify.c (is_correct_leave): check for filter clauses.
3924
3925         * verify.c (do_filter): added.
3926
3927         * verify.c (mono_method_verify): property verification of leave.
3928
3929
3930 2007-12-18  Mark Probst  <mark.probst@gmail.com>
3931
3932         * threads.c: Disable calls to _wapi_thread_signal_self() to fix
3933         Win32 build, until we figure out how to do the proper thing on
3934         Win32.
3935
3936 2007-12-17  Zoltan Varga  <vargaz@gmail.com>
3937
3938         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Fix a crash introduced
3939         by the previous patch.
3940         
3941         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Avoid calling
3942         the assembly resolve handler for refonly assemblies.
3943
3944 2007-12-17  Mark Probst  <mark.probst@gmail.com>
3945
3946         * threads.c, thread-types.h, icall.c: New shutdown safeguards.
3947         Make sure only one thread is allowed to commence shutdown, and
3948         don't allow new threads to be started once shutdown is in
3949         progress.
3950
3951 2007-12-14  Rodrigo Kumpera  <rkumpera@novell.com>
3952
3953         * verify.c (is_correct_endfilter): added.
3954
3955         * verify.c (is_unverifiable_endfilter): added.
3956
3957         * verify.c (do_endfilter): added.
3958
3959         * verify.c (mono_method_verify): property verification of endfilter
3960         and fixed a corner case or endfinally.
3961
3962 2007-12-13  Rodrigo Kumpera  <rkumpera@novell.com>
3963
3964         * verify.h: new flags to support fail fast of unverifiable code and
3965         do non-strict verification. Non-strict verification is required to
3966         have MS runtime compatibility. There are a huge amount of unverifiable
3967         code that it accepts as verifiable. The strict mode verifies the code
3968         as the specs says.
3969         Non-strict mode will be required in cases where code needs to be
3970         accepted as verifiable but fails under strict mode.
3971
3972         * pedump.c: added support to fail fast and non-strict verification.
3973
3974         * verify.c: added support for both fail fast and non-strict verification.
3975
3976 2007-12-12  Rodrigo Kumpera  <rkumpera@novell.com>
3977
3978         * verify.c (is_correct_endfinally): added.
3979
3980         * verify.c (mono_method_verify): property verification of endfinally.
3981
3982 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3983
3984         * verify.c (in_any_block): check for filter clauses.
3985
3986         * verify.c (is_correct_rethrow): added.
3987
3988         * verify.c (mono_method_verify): property verification of rethrow.
3989
3990         * metadata.h: added MONO_OFFSET_IN_FILTER macro.
3991
3992 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
3993
3994         * verify.c (do_throw): added.
3995
3996         * verify.c (mono_method_verify): property verification of throw
3997
3998 2007-12-11  Zoltan Varga  <vargaz@gmail.com>
3999
4000         * assembly.c (mono_assembly_load_reference): Try an assembly resolve for ref-only
4001         assemblies. Fixes #346425.
4002
4003 2007-12-10  Zoltan Varga  <vargaz@gmail.com>
4004
4005         * reflection.c (mono_reflection_get_token): Call mono_image_create_token () for
4006         FieldBuilders.
4007
4008         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Fix a warning.
4009
4010         * class.c (mono_lookup_dynamic_token_class): Add a 'valid token' argument to
4011         prevent asserts when this is called with a token which might not be valid.
4012
4013         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Call
4014         lookup_dynamic_token_class with valid_token == FALSE.
4015
4016         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.       
4017
4018         * icall.c (ves_icall_System_Reflection_Module_ResolveStringToken): Ditto.
4019
4020         * icall.c (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
4021         
4022 2007-12-10  Mark Probst  <mark.probst@gmail.com>
4023
4024         * gc.c: Don't delay threadpool thread finalization unless Mono is
4025         shutting down.
4026
4027 Mon Dec 10 11:06:23 CET 2007 Paolo Molaro <lupus@ximian.com>
4028
4029         * threads.c: turn an assert into a non-fatal warning.
4030
4031 2007-12-09  Robert Jordan  <robertj@gmx.net>
4032
4033         * icall.c (GetVirtualMethod): Add missing argument validation.
4034
4035 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4036
4037         * verify.c (do_cast): added.
4038
4039         * verify.c (mono_method_verify): property verification of castclass and isinst.
4040
4041
4042 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4043
4044         * verify.c (mono_type_from_opcode): added opcodes for stelem.X.
4045
4046         * verify.c (do_stelem): added.
4047
4048         * verify.c (mono_method_verify): property verification of stelem.X.
4049
4050 2007-12-07  Mark Probst  <mark.probst@gmail.com>
4051
4052         * class.c, class-internals.h: Introduce an environment variable
4053         (MONO_GENERIC_SHARING) through which the extent of generic code
4054         sharing can be controlled (share all classes, share only corlib
4055         classes, or share nothing).
4056
4057         * object.c: Only create runtime generic context for classes for
4058         which sharing is enabled.
4059
4060 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4061
4062         * verify.c (do_ldelem): refactor it to work with ldelem.any.
4063
4064         * verify.c (mono_method_verify): property verification of ldelem.any.
4065
4066 2007-12-06  Rodrigo Kumpera  <rkumpera@novell.com>
4067
4068         * verify.c (get_indirect_op_mono_type): renamed to mono_type_from_opcode,
4069         added ldelem.X opcodes.
4070
4071         * verify.c (do_ldelema): fixed possible invalid usage of MonoType.
4072
4073         * verify.c: proper verification of ldelem.X 
4074
4075 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
4076
4077         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): Allow interface cctors to be called too.
4078
4079 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4080
4081         * verify.c (mono_method_verify): null literal requires special handling,
4082         the value pushed on stack need to be flagged as so.
4083
4084         * verify.c (do_ldelema): Verify ldelema properly.
4085
4086 2007-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
4087
4088         * verify.c: Verify ldlen properly.
4089
4090 2007-12-05  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * icall.c (ves_icall_MonoField_GetValueInternal): Check that the field belongs
4093         to the target object's type. Fixes #346160.
4094
4095 2007-12-05  Dick Porter  <dick@ximian.com>
4096
4097         * threadpool.c (socket_io_add_poll): Asynchronous connect() on
4098         Solaris needs the same workaround as BSD-derived systems.  Fixes
4099         bug 323524, patch by Burkhard Linke
4100         <burkhard.linke@CeBiTec.Uni-Bielefeld.DE>
4101
4102 2007-12-04  Gert Driesen  <drieseng@users.sourceforge.net>
4103
4104         * process.c: When ProcessStartInfo.ErrorDialog is true, pass window
4105         handle to use when error dialog is shown; otherwise, update mask
4106         to show no error dialog when an error occurs.
4107
4108 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * icall.c (ves_icall_MonoField_GetRawConstantValue): New icall.
4111
4112         * class.c (mono_class_get_field_default_value): New helper function to initialize
4113         field->def_type and field->data.
4114
4115 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
4116
4117         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Use the delegate trampoline instead of
4118         the general one.
4119
4120         * object.c (mono_runtime_create_delegate_trampoline): New helper function.
4121
4122         * marshal.c: Avoid depending on delegate->method_info being set.
4123
4124         * object.c (mono_delegate_ctor): Avoid initializing delegate->method_info.
4125         
4126         * object.c (mono_delegate_ctor): Set delegate->method.
4127
4128         * object-internals.h (struct _MonoDelegate): Add 'method' field.
4129
4130         * appdomain.c: Bump corlib version.
4131
4132 2007-11-27  Raja R Harinath  <harinath@gmail.com>
4133
4134         * metadata.c (mono_generic_inst_equal_full): Short-circuit
4135         equality check if we're comparing canonicalized MonoGenericInsts.
4136
4137 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
4138
4139         * class.c (generic_array_methods): Call mono_class_setup_methods () before
4140         accessing class->methods.
4141
4142 2007-11-22  Dick Porter  <dick@ximian.com>
4143
4144         * threads.c: Ensure that the synch_cs is set before trying to use
4145         it.
4146
4147 Thu Nov 22 12:34:04 CET 2007 Paolo Molaro <lupus@ximian.com>
4148
4149         * profiler.c: r89126 broke the statistial profiler, unbreak.
4150
4151 2007-11-22  Martin Baulig  <martin@ximian.com>
4152
4153         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 66.
4154
4155         * mono-debug.c
4156         (mono_debug_debugger_version): Bump to 3.
4157         (mono_debug_init): Hook `mono_debugger_class_loaded_methods_func'
4158         -> mono_debugger_class_initialized().
4159
4160         * mono-debug-debugger.c
4161         (mono_debugger_add_type): Renamed into mono_debugger_class_initialized().
4162
4163         * class.c
4164         (mono_debugger_start_class_init_func): Removed.
4165         (mono_debugger_class_loaded_methods_func): Added.
4166         (mono_class_setup_methods): Call it here.
4167
4168 2007-11-22  Martin Baulig  <martin@ximian.com>
4169
4170         * mono-debug.c
4171         (mono_debug_add_delegate_trampoline): New public method.
4172         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_DELEGATE_TRAMPOLINE'.
4173
4174         * mono-debug.h
4175         (MonoSymbolTable): Added `global_data_table'.
4176         (MonoDebuggerTypeKind): Removed.
4177
4178 2007-11-21  Zoltan Varga  <vargaz@gmail.com>
4179
4180         * marshal.c (mono_marshal_get_generic_array_helper): Skip visibility checks for
4181         these methods.
4182
4183         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
4184         
4185 Tue Nov 20 23:10:41 CET 2007 Paolo Molaro <lupus@ximian.com>
4186
4187         * object.c: some fields don't have a valid rva: ignore them (bug #343083).
4188
4189 2007-11-20  Martin Baulig  <martin@ximian.com>
4190
4191         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 65.
4192
4193         * mono-debug-debugger.c
4194         (mono_debugger_insert_method_breakpoint): Moved here from debug-mini.c
4195         (mono_debugger_remove_breakpoint): Likewise.
4196         (mono_debugger_check_breakpoints): Likewise.
4197         (mono_debugger_register_class_init_callback): New public method.
4198         (mono_debugger_remove_class_init_callback): Likewise.
4199         (mono_debugger_add_type): Likewise.
4200
4201         * mono-debug-debugger.h
4202         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_CLASS_INITIALIZED'.
4203
4204 Tue Nov 20 20:54:12 CET 2007 Paolo Molaro <lupus@ximian.com>
4205
4206         * class.c: more interface implementations needed for the
4207         array enumerator (fixes bug #341112).
4208
4209 2007-11-18  Gert Driesen  <drieseng@users.sourceforge.net>
4210
4211         * icall.c: Renamed arguments for ves_icall_System_Enum_ToObject to
4212         fix ParamName of ArgumentNullExceptions.
4213
4214 2007-11-17  Miguel de Icaza  <miguel@novell.com>
4215
4216         * reflection.c (mono_reflection_encode_sighelper): Generate the
4217         modopts and modreqs.   I have a useless test that crashes monodis,
4218         but that shows the code working.
4219
4220 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
4221
4222         * boehm-gc.c (create_allocator): Fix size calculation for the string allocator.
4223         (mono_gc_get_managed_allocator): Enable the string allocator on amd64.
4224
4225 2007-11-15  Dick Porter  <dick@ximian.com>
4226
4227         * threads.c (ves_icall_System_Threading_Thread_Join_internal):
4228         When joining a thread, it's the thread that's calling Join that
4229         gets WaitSleepJoin state not the target.  Fixes the standalone
4230         test case in bug 334740, and hopefully the whole bug too.
4231
4232 2007-11-15  Dick Porter  <dick@ximian.com>
4233
4234         * process.c: Read file version info from the files pointed at by
4235         process modules, not the current process.  Fixes bug 315969.
4236
4237         Use windows typedef names in some places to fix warnings on the
4238         windows build.
4239
4240 2007-11-15  Mark Probst  <mark.probst@gmail.com>
4241
4242         * image.c, metadata-internals.h: Added a generic_class_cache hash
4243         to MonoImage for looking up generic classes when sharing generics.
4244
4245 Thu Nov 15 16:11:30 CET 2007 Paolo Molaro <lupus@ximian.com>
4246
4247         * sgen-gc.c: warning cleanups.
4248
4249 2007-11-15  Zoltan Varga  <vargaz@gmail.com>
4250
4251         * icall.c (ves_icall_Type_GetPropertiesByName): Implement proper hiding of
4252         inherited properties.
4253
4254 2007-11-14  Mark Probst  <mark.probst@gmail.com>
4255
4256         * object.c, class-internals.h: Added more information to the
4257         runtime generic context.
4258
4259 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
4260
4261         * marshal.c (mono_marshal_get_delegate_invoke): Take a delegate as argument
4262         instead of just the target method. Generalize the abstract method handling to
4263         handle any non-static method.
4264
4265         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
4266         mono_marshal_get_delegate_invoke () signature change.
4267
4268 2007-11-13  Mark Probst  <mark.probst@gmail.com>
4269
4270         * class.c, class-internals.h: Made
4271         mono_type_get_basic_type_from_generic () public.  Fixed member
4272         access check for shared generics.
4273
4274         * loader.c: Don't insert field into field cache if it's part of a
4275         non-inflated generic class.
4276
4277         * domain.c, domain-internals.h: The generic sharing context is now
4278         part of the jit info data structure.  Added two accessor
4279         functions.
4280
4281 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
4282
4283         * marshal.c (mono_marshal_get_runtime_invoke): Create a non-shared wrapper for
4284         the array Get/Set/Address methods, since the JIT inlines them.
4285
4286         * metadata-internals.h (MonoImage): Add 'runtime_invoke_direct_cache'.
4287
4288         * image.c (mono_image_close): Free runtime_invoke_direct_cache.
4289         (mono_image_init): Initialize runtime_invoke_direct_cache.      
4290
4291         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): Update after
4292         mono_marshal_get_delegate_invoke signature change.
4293
4294         * marshal.c (mono_marshal_get_delegate_invoke): Receive the target_method as
4295         an additional argument. Add support for invoking abstract methods.
4296
4297         * metadata-internals.h (MonoImage): Add 'delegate_abstract_invoke_cache'.
4298
4299         * image.c (mono_image_close): Free delegate_abstract_invoke_cache.      
4300
4301 2007-11-09  Mark Probst  <mark.probst@gmail.com>
4302
4303         * class.c: Do field layout for open generic classes as well.
4304
4305 2007-11-09  Mark Probst  <mark.probst@gmail.com>
4306
4307         * gc.c, gc-internal.h: Don't finalize threadpool threads with
4308         other objects, because the threadpool is still around.  Put them
4309         in a list instead and after finalizing all other objects in the
4310         root domain shut down the thread pool and then finalize the
4311         threads.  Fixes bug #337383.
4312
4313         * threads.c, thread-types.h: New mono_thread_create_internal()
4314         function for marking a thread with the threadpool flag before it
4315         started.  Set synch_cs to NULL after freeing it.
4316
4317         * threadpool.c: Mark threadpool threads before they start.
4318
4319 Thu Nov 8 15:31:21 CET 2007 Paolo Molaro <lupus@ximian.com>
4320
4321         * reflection.h, reflection.c: don't export random functions
4322         and lazy load dbnull and missing objects.
4323
4324 2007-11-07  Jonathan Chambers <joncham@gmail.com>
4325
4326         * class.c: Initialize COM types if COM interfaces
4327         are present (not just COM classes).
4328         
4329         Code is contributed under MIT/X11 license.
4330
4331 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
4332         * reflection.c:
4333         create_dynamic_mono_image: hook module profiler events (dynamic case).
4334         mono_image_basic_init: hook assembly profiler events (dynamic case).
4335
4336 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
4337         * profiler.c:
4338         simple_appdomain_unload: completely terminate the profiler
4339         instead of only processing the statistical samples.
4340         simple_shutdown: make sure this is really called exactly once,
4341         even in multithreaded applications, and always listen to
4342         appdomain events.
4343         * gc.c (mono_domain_finalize): don't call mono_profiler_appdomain_event
4344         here, the "[un]load" functions will do it.
4345         Fixes bugs #333791 and #325261.
4346
4347 2007-11-07  Geoff Norton  <gnorton@novell.com>
4348
4349         * socket-io.c:  Use the configure defines for HAVE_SOCKADDR_IN(6)_SIN_LEN
4350         rather than depend on __APPLE__.
4351
4352 2007-11-07  Mark Probst  <mark.probst@gmail.com>
4353
4354         * icall.c: Safety checks in InitializeArray.  Fixes bug #324535.
4355
4356 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com> 
4357
4358         * object.c: Fix mono_string_to_utf8 to handle NULL values inside the
4359         UTF16 MonoString. Fix the crash from bug #335488
4360
4361 2007-11-06  Sebastien Pouliot  <sebastien@ximian.com>
4362
4363         * marshal.c: Correct (for non-Win32 OS) length != size in 
4364         mono_string_from_bstr. Fix #339530.
4365
4366 2007-11-06  Geoff Norton  <gnorton@novell.com>
4367
4368         * socket-io.c: Apple requires sin(6)_len to be set for getnameinfo
4369         to succeed
4370
4371 2007-11-05  Kornél Pál  <kornelpal@gmail.com>
4372
4373         * process.c: Added run-time GetProcessId API detection for Windows.
4374
4375 2007-11-04  Miguel de Icaza  <miguel@novell.com>
4376
4377         * reflection.c  (mono_param_get_objects): If a parameter has the
4378         attribute [System.Runtime.InteropServices.Optional] we should
4379         set the DefaultValue of the ParameterInfo to be
4380         System.Reflection.Missing instead of DBNull.
4381
4382         See bug #339013.
4383
4384         (mono_get_reflection_missing_object): New method,
4385         returns the System.Reflection.Missing.Value singleton instance.
4386
4387 2007-11-03  Atsushi Enomoto  <atsushi@ximian.com>
4388
4389         * culture-info-table.h : regenerated.
4390
4391 2007-11-02  Jonathan Chambers <joncham@gmail.com>
4392
4393         * icall.c: Use GetEnvironmentStrings on windows
4394         so we are using the same environment block as 
4395         GetEnvironmentVariable/SetEnvironmentVariable. Fixes
4396         #333740.
4397         
4398         Code is contributed under MIT/X11 license.
4399
4400 2007-10-31  Martin Baulig  <martin@ximian.com>
4401
4402         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 64.
4403
4404         * mono-debug-debugger.h
4405         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_TRAMPOLINE'.
4406
4407 2007-10-30  Zoltan Varga  <vargaz@gmail.com>
4408
4409         * reflection.c (mono_custom_attrs_from_class): Add support for dynamic inflated 
4410         classes.
4411
4412 2007-10-30  Atsushi Enomoto  <atsushi@ximian.com>
4413
4414         * culture-info-table.h : regenerated.
4415
4416 2007-10-30  Robert Jordan  <robertj@gmx.net>
4417
4418         * icall-def.h, icall.c:
4419         Add ves_icall_Remoting_RemotingServices_GetVirtualMethod ().
4420
4421         Code is contributed under MIT/X11 license.
4422
4423 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
4424
4425         * class.c (mono_class_setup_vtable): Find the inflated methods in the
4426         inflated class instead of inflating them again.
4427         
4428         * class.c (mono_class_setup_vtable): Inflate the override methods in the 
4429         dynamic case.
4430
4431         * class.c (mono_generic_class_get_class): Set klass->property.count as well.
4432         Call setup_supertypes () after klass->parent is set.
4433         (mono_class_setup_properties): Enable this to work on dynamic generic classes.
4434
4435         * reflection.c (mono_type_get_object): Only return a MonoGenericClass object
4436         for inflated instances of not yet created dynamic generic classes.
4437         (ctorbuilder_to_mono_method): Handle the case when this is called multiple
4438         times from inflated_method.
4439         (methodbuilder_to_mono_method): Ditto.
4440
4441 Mon Oct 29 21:02:53 CET 2007 Paolo Molaro <lupus@ximian.com>
4442
4443         * gc.c: code cleanup and removed old untested option of not creating the
4444         finalizer thread.
4445
4446 2007-10-29  Zoltan Varga  <vargaz@gmail.com>
4447
4448         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Avoid
4449         creating a jump trampoline for dynamic methods.
4450
4451 2007-10-29 Rodrigo Kumpera <rkumpera@novell.com>
4452
4453         * reflection.c (mono_image_create_token): Correctly encode methods and constructors of
4454         generic TypeBuilders when called from another method of the same type (bug #335131).
4455
4456
4457 2007-10-27  Zoltan Varga  <vargaz@gmail.com>
4458
4459         * reflection.c (methodbuilder_to_mono_method): Revert the last change as it
4460         doesn't seem to work perfectly.
4461         
4462         * reflection.c (ctorbuilder_to_mono_method): Handle the case when this is
4463         called multiple times.
4464         (methodbuilder_to_mono_method): Ditto.
4465         (resolve_object): Inflate FieldBuilder's.
4466
4467 Fri Oct 26 19:38:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4468
4469         * string-icalls.c, string-icalls.h, appdomain.c: patch from
4470         Tyler Larson <mono-devel@tlarson.com> to fix the handling of
4471         RemoveEmptyEntries in the string.Split implementation (bug #322375).
4472
4473 2007-10-26  Dick Porter  <dick@ximian.com>
4474
4475         * appdomain.c (MONO_CORLIB_VERSION): Bump version because of
4476         Thread initialisation changes
4477
4478 2007-10-26 Rodrigo Kumpera <rkumpera@novell.com>
4479
4480         * verify.c: fix compatibility check between arrays and System.Array
4481
4482 2007-10-26  Zoltan Varga  <vargaz@gmail.com>
4483
4484         * reflection.c (mono_reflection_get_custom_attrs_info): Handle MonoGenericClass
4485         too. Fixes #336999.
4486
4487 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * object.c (mono_value_box): Use typed allocation here.
4490
4491 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
4492
4493         * icall.c (ves_icall_System_Delegate_CreateDelegate_internal): Create a jump
4494         trampoline instead of compiling the method right away.
4495
4496         * class-internals.h object.c: Add a JIT callback to create a jump trampoline.
4497
4498 2007-10-21  Zoltan Varga  <vargaz@gmail.com>
4499
4500         * class.c (mono_generic_class_get_class): Avoid setting klass->size_inited and
4501         related fields for dynamic classes. Fixes #334493.
4502
4503 2007-10-20  Zoltan Varga  <vargaz@gmail.com>
4504
4505         * class.c (mono_generic_class_get_class): Set klass->field.count as well.
4506         
4507         * class.c (mono_class_layout_fields): Use 1 instead of TRUE for consistency.
4508
4509         * class.c (mono_class_layout_fields): Set size_inited for generic classes as well.
4510         (mono_class_setup_vtable): Obtain overrides for dynamic generic classes correctly.
4511
4512         * class.c (mono_class_setup_methods): Handle dynamic inflated classes correctly.
4513
4514         * reflection.c (create_generic_typespec): Initialize klass->generic_container
4515         if needed.
4516         (reflection_methodbuilder_to_mono_method): Set container->is_method to TRUE.
4517
4518 2007-10-18  Jonathan Chambers <joncham@gmail.com>
4519
4520         * marshal.c: Use correct key when removing item
4521         from ccw_hash.
4522         
4523         Code is contributed under MIT/X11 license.
4524
4525 2007-10-17  William Holmes  <billholmes54@gmail.com>
4526
4527         *marshal.c: Adding a case to marshal booleans to U1
4528
4529         Code is contributed under MIT/X11 license.
4530
4531 2007-10-18  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * class.c (mono_class_from_name): Search the modules compromising dynamic
4534         assemblies. Fixes #331601.
4535
4536 2007-10-16  Zoltan Varga  <vargaz@gmail.com>
4537
4538         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Throw an
4539         exception if the type name contains an assembly component. Fixes #334203.
4540
4541         * reflection.c (mono_reflection_get_type_with_rootimage): Search all the
4542         modules inside dynamic assemblies. Fixes #334200.
4543         
4544         * reflection.c: Set image->public_key and image->public_key_length;
4545
4546         * metadata-internals.h (MonoDynamicImage): Add public_key and public_key_len
4547         fields.
4548
4549         * image.c (mono_image_get_public_key): Handle dynamic assemblies. Fixes #334173.        
4550         
4551 2007-10-16  Mark Probst  <mark.probst@gmail.com>
4552
4553         * metadata.c: Implemented correct comparing of generic classes.
4554         An inflated generic class can be equal to a non-inflated one if it
4555         is inflated with generic type variables as type arguments.  Fixes
4556         bug #333798.
4557
4558 2007-10-15  Dick Porter  <dick@ximian.com>
4559
4560         * monitor.c (mono_monitor_try_enter_internal): Set thread state to
4561         WaitSleepJoin while it is waiting to acquire a lock.  Fixes bug
4562         81646.
4563
4564         * threads.c: Turn the thread synch_lock into a CRITICAL_SECTION,
4565         instead of a monitor lock.  This means that monitor_try_enter and
4566         co can set the thread state safely.
4567         (ves_icall_System_Threading_Thread_Interrupt_internal): Always set
4568         thread_interrupt_requested, so interrupt actually works.
4569
4570         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal,
4571         ves_icall_System_Net_Sockets_Socket_Select_internal): Use thread
4572         state accessor function
4573
4574 2007-10-15  Martin Baulig  <martin@ximian.com>
4575
4576         * mono-debug.h
4577         (MONO_DEBUGGER_VERSION): Bump to 63 to make it impossible to use
4578         the debugger with the current runtime.
4579
4580 Mon Oct 15 10:20:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
4581
4582         * object.c, object-internals.h: added the ability to set a single
4583         trampoline for all the slots in a vtable.
4584
4585 Fri Oct 12 17:50:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4586
4587         * marshal.c: deal with a possible race condition during multicast
4588         delegate invocation.
4589
4590 Fri Oct 12 13:31:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4591
4592         * class.c: ensure value type methods don't have the synchronized
4593         flag set.
4594
4595 Fri Oct 12 08:10:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
4596
4597         * string-icalls.c, string-icalls.h: reverted unapproved patch that
4598         breaks the build.
4599
4600 2007-10-11  Joel Reed  <joelwreed@comcast.com>
4601
4602         * string-icalls.c, string-icalls.h: modify System_String_InternalSplit
4603         to take an options parameter so that empty entries can be removed during
4604         the split procedure. Patch from: Tyler Larson <mono-devel@tlarson.com>
4605
4606 Thu Oct 11 20:16:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4607
4608         * marshal.c: make sure we don't store the signature from a dynamic
4609         method into the runtime invoke cache (bug #327189).
4610
4611 Thu Oct 11 18:22:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4612
4613         * marshal.c: make sure the wrapper methods are properly initialized.
4614
4615 2007-10-11  Mark Probst  <mark.probst@gmail.com>
4616
4617         * metadata.c, metadata-internals.h: Generalized
4618         mono_type_stack_size() to mono_type_stack_size_internal() which
4619         takes an additional argument specifying whether it allows open
4620         types.
4621
4622 2007-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
4623
4624         * verify.c (do_invoke_method): handle typedbyref params
4625         correctly and check for unverifiable return values.
4626
4627         * verify.c (do_newobj): fix a warning.
4628
4629 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4630
4631         * verify.c: don't tread typedbyref as allways unverifable,
4632         so uses, like (ld/st)loc.0 are valid. verify for the cases
4633         that it matters, like boxing related operations.
4634
4635 2007-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
4636
4637         * verify.c: add verification of the newobj opcode. verification
4638         of delegate instantation still missing due ldftn and virldftn not
4639         pushing the function type on stack
4640
4641 2007-10-08  Mark Probst  <mark.probst@gmail.com>
4642
4643         * class-internals.h: Runtime generic context data structure
4644         definition.
4645
4646         * object.c: Initialization of runtime generic context at runtime
4647         vtable creation time.
4648
4649 2007-10-08  Massimiliano Mantione  <massi@ximian.com>
4650         * class.c (mono_class_create_from_typedef,
4651         mono_class_from_generic_parameter, mono_ptr_class_get,
4652         mono_fnptr_class_get, mono_bounded_array_class_get)
4653         * domain.c (mono_domain_create, mono_domain_free)
4654         * assembly.c (mono_assembly_load_from_full, mono_assembly_close)
4655         * image.c (do_mono_image_load, mono_image_close):
4656         Hooked up load-unload profiler events.
4657
4658 Mon Oct 8 11:38:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
4659
4660         * domain.c: track statistics about the actual amount of native code
4661         allocated.
4662
4663 Sat Oct 6 10:01:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
4664
4665         * class.c: the valuetype enumerators don't have the additional
4666         supertypes interfaces.
4667
4668 Fri Oct 5 20:33:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
4669
4670         * class.c: need more interfaces setup for the IEnumerator<T>
4671         object created for arrays (tests/ienumerator-interfaces.2.cs).
4672
4673 2007-10-05  Zoltan Varga  <vargaz@gmail.com>
4674
4675         * class.c (mono_ldtoken): Handle methodspec tokens as well. Fixes #331097.
4676
4677 2007-10-05  Alp Toker  <alp@atoker.com>
4678
4679         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
4680         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
4681         #315863.
4682
4683 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
4684
4685         * verify.c (verify_type_compatibility_full): verification of
4686         compatibility improved, validates correctly non-strict checks between
4687         native int and I4 types different than (unsigned)int32.
4688
4689         * verify.c (do_store_indirect): added, do all verification of
4690         ldind.X opcodes. 
4691
4692         * verify.c (get_load_indirect_mono_type): renamed to
4693         get_indirect_op_mono_type, as it now returns the MonoType for 
4694         ldind.X and stind.X opcodes.
4695
4696 2007-10-04  Rodrigo Kumpera  <rkumpera@novell.com>
4697
4698         * reflection.c: Fix the encoding of generic type definition for
4699         TypeBuilders.
4700
4701         * reflection.c (mono_image_typedef_or_ref_full: do the same thing as
4702         mono_image_typedef_or_ref but allows to specify if typespec lookups should
4703         be made. Typespec check is done prior to typeref cache lookup.
4704
4705         * reflection.c (mono_image_typedef_or_ref): now just delegate to
4706         mono_image_typedef_or_ref_full.
4707
4708         * reflection.c (encode_generic_class): encode the generic class
4709         directly instead of calling encode_type.
4710
4711         * reflection.c (encode_type): encode the generic type definition
4712         MonoClass as a generic instantiation.
4713
4714         * reflection.c (create_typespec): cache typespec tokens in
4715         the assembly->typespec cache. Don't create typespec for a generic
4716         instance MonoClass. Create typespec for the generic type defintion.
4717
4718         * reflection.c (create_generic_typespec): encode the generic
4719         class directly instead of calling encode_type.
4720
4721         * reflection.c (mono_image_create_token): encode the generic
4722         type definition not using a typespec for MonoType instances.
4723
4724
4725 2007-10-04  Raja R Harinath  <rharinath@novell.com>
4726
4727         Fix #328812
4728         * class.c (mono_image_init_name_cache): Don't return nested
4729         'protected internal' classes.
4730         (mono_class_from_name_case): Likewise.
4731
4732 2007-10-04  Atsushi Enomoto  <atsushi@ximian.com>
4733
4734         * icall-def.h, icall.c : get_bundled_machine_config() is now the
4735           common function used by both DefaultConfig in System.dll and
4736           InternalConfigurationHost in System.Configuration.dll.
4737
4738 Wed Oct 3 17:26:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
4739
4740         * class.c: automatically add to vectors only a few essential explicit
4741         generic interfaces. The rest of the interfaces that arrays should
4742         provide are currently implicitly added (but still not lazily, see the
4743         design in the discussion of bug#325495 for the details of what is
4744         needed for that). Additionally, implicit interfaces are assigned the
4745         same vtable slot as the explicit interfaces (as they are compatible):
4746         this enables huge memory savings since we don't need to instantiate
4747         as many memthods and as large vtables anymore. Also, Since
4748         GetEnumerator<T> returns an instance of a type that is required to
4749         support a similarly large set of interfaces as arrays, we add
4750         implicit interfaces and interface offset sharing support to those
4751         types, too. This change adds all the required interfaces so that
4752         the anonarray.cs test case in the bug report works (we don't add
4753         all the interfaces to arrays of arrays 3-level deep and more because
4754         of the memory requirements explained in the bug and since they are much
4755         less common: the lazy-loading support will enabled them to work, too).
4756
4757 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
4758
4759         * verify.c (merge_stacks): major clean up, all type compatibility
4760         checks are done by verify_type_compatibility. This fix my earlier lack
4761         of understanding of the CLR type system and merge_stacks no longer looks
4762         scary.
4763
4764         * verify.c: fixed some bad spelling.
4765
4766 2007-10-02  Rodrigo Kumpera  <rkumpera@novell.com>
4767
4768         * verify.c (mono_type_from_stack_slot): added. returns the MonoType for
4769         a given stack slock.
4770         
4771         * verify.c: killed verify_type_compat in favor of verify_type_compatibility and
4772         verify_type_compatibility_full. This removed a near indentical function and fixed
4773         handling of Int32 and IntPtr across all opcodes.
4774
4775 Tue Oct 2 15:24:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
4776
4777         * class.c: only vectors have the additional generic interfaces.
4778
4779 2007-10-01  Jonathan Chambers <joncham@gmail.com>
4780
4781         * mono-config.c: Use g_strcasecmp instead of
4782         strcasecmp like everywhere else to fix
4783         compilation with MSVC.
4784         
4785         Code is contributed under MIT/X11 license.
4786
4787 Mon Oct 1 14:39:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
4788
4789         * object.c, object-internals.h: refactored the IMT code to enable
4790         building a single slot at a time and lazily creating the IMT trampolines
4791         and thunks.
4792
4793 2007-09-29  Zoltan Varga  <vargaz@gmail.com>
4794
4795         * loader.c (inflate_generic_signature): Allocate inflated signatures from the heap.
4796
4797         * metadata.c (mono_metadata_free_inflated_signature): Free the signature itself too.
4798         Fixes #328501.
4799         
4800 2007-09-29  Raja R Harinath  <harinath@gmail.com>
4801
4802         * loader.c (method_from_methodspec): Rearrange to avoid
4803         un-necessary exposition.  Don't assert out if the method's
4804         declaring type is a generic type definition.
4805
4806 2007-09-28  Martin Baulig  <martin@ximian.com>
4807
4808         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 61.
4809
4810 Fri Sep 28 20:15:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
4811
4812         * class-internals.h: optimize field layout of MonoClass to
4813         requires less cachelines at runtime and save a few bytes on 64 bit
4814         systems.
4815
4816 2007-09-28  Jb Evain  <jbevain@novell.com>
4817
4818         * reflection.c: when encoding type names in custom attributes,
4819         if the type is a closed generic type, its generic arguments
4820         have to be serialized as AssemblyQualifiedName, so that when
4821         they are deserialized, it's possible to re-create them properly.
4822         Fixes #329450.
4823
4824
4825 Fri Sep 28 19:19:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
4826
4827         * object.c, class-internals.h: added delegate-creation counter.
4828
4829 Fri Sep 28 18:07:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
4830
4831         * class.c: cleanup of the code that synthetizes interfaces for
4832         arrays in 2.0: saves quit a bit of corlib mempool memory.
4833         Code to fix bug #325495 ifdeffed out for now until the issues
4834         with memory usage and O(n^2) behaviour are fixed.
4835
4836 Fri Sep 28 17:19:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
4837
4838         * marshal.c: when possible, do not duplicate the name of the methods
4839         in the method builder and in the generated MonoMethod.
4840
4841 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
4842         * verify.c: added support for type checking ldind_* opcodes.
4843
4844 2007-09-27  Rodrigo Kumpera  <rkumpera@novell.com>
4845
4846         * class-internals.h (struct _MonoGenericClass): new field is_tb_open
4847         which is used to distinguish the fully open instantiation of a TypeBuilder
4848         with the rest. This temporary hack is required to restore the property that
4849         the fully open instantiation is the same type of the generic type definition.
4850
4851         * class-internals.h (mono_generic_class_is_generic_type_definition):
4852         new function as part of the internal API.
4853
4854         * class.c (inflate_generic_type): return NULL when the generic inst is
4855         fully open. The fully open generic type is now the same as the generic type
4856         definition for non TypeBuilder types.
4857
4858         * class.c (mono_generic_class_get_class): removed assert since it is
4859         no longer valid, gklass->cached_class can point to the generic type definition.
4860
4861         * class.c (mono_generic_class_is_generic_type_definition): new.
4862
4863         * metadata.c (mono_generic_class_hash): added is_tb_open field
4864         to the hash calculation.
4865
4866         * metadata.c (free_generic_class): if the generic class is associated
4867         with the generic type definition, its field will come from the mempool and
4868         must not be freed.
4869
4870         * metadata.c (mono_metadata_is_type_builder_generic_type_definition):
4871         new, this function identifies the corner case of a TypeBuilder fully open
4872         instantiation.
4873
4874         * metadata.c (mono_metadata_lookup_generic_class): use is_tb_open
4875         for lookup. Set gclass->cached_class to be the container class in case of
4876         the fully open instantiation of non TypeBuilder types.
4877
4878         * metadata.c (_mono_metadata_generic_class_equal): use is_tb_open
4879         to compare generic classes.
4880
4881         * reflection.c (method_encode_methodspec): remove assert that
4882         no longer is valid.
4883
4884         * reflection.c (mono_reflection_generic_class_initialize): add
4885         an aditional assert to ensure the proper type is used.
4886
4887 2007-09-26  Rodrigo Kumpera  <rkumpera@novell.com>
4888
4889         * verify.c: disabled all debug spew by default, define MONO_VERIFIER_DEBUG
4890         to enjoy it.
4891
4892 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
4893
4894         * verify.c (push_arg): Fixed support for ldarga
4895         * verify.c (set_stack_value): Removed superfluous parameter, fixed the
4896         MonoType used as first arg in case of instance calls.
4897
4898 2007-09-25  Rodrigo Kumpera  <rkumpera@novell.com>
4899
4900         * verify.c: Support for verifying VAR and MVAR types, 
4901
4902 2007-09-25  Zoltan Varga  <vargaz@gmail.com>
4903
4904         * icall.c (ves_icall_get_property_info): Set the reflected type of the
4905         accessors correctly.
4906
4907 Tue Sep 25 14:56:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
4908
4909         * threads.c: support OSX and other systems in
4910         mono_thread_get_stack_bounds (bug #328026).
4911
4912 2007-09-25  Martin Baulig  <martin@ximian.com>
4913
4914         * mono-debug.h
4915         (MonoDebugVarInfo): Replace `MonoClass *klass' with `MonoType *type'.
4916
4917 2007-09-24  Martin Baulig  <martin@ximian.com>
4918
4919         * mono-debug.h
4920         (MonoDebugClassEntry): Moved the definition of this struct into
4921         mono-debug.c to make it private.
4922
4923         * mono-debug.c
4924         (MonoDebugClassEntry): Removed `symfile_id'; since we now use one
4925         type table per symbol file, we don't need to store the symfile id
4926         any longer.
4927
4928 2007-09-24  Martin Baulig  <martin@ximian.com>
4929
4930         Create one type table per symbol file, since a `MonoClass *' gets
4931         invalid when its image is unloaded.
4932
4933         * mono-debug.h (MonoSymbolTable): Removed `type_table'.
4934         (MonoDebugHandle): Added `type_table'.
4935
4936 Mon Sep 24 17:25:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
4937
4938         * mempool.c, mempool.h: added mono_mempool_new_size () API
4939         to be able to specify a smaller initial size for the pool.
4940         Adjusted the code to slowly increase pool size before using
4941         the previous default size.
4942         * image.c: use a small initial size for image mempools.
4943
4944 2007-09-23  Zoltan Varga  <vargaz@gmail.com>
4945
4946         * marshal.c (emit_marshal_array): Generate valid IL for byref array case.
4947         Fixes ##320990.
4948
4949         * icall.c (ves_icall_System_Reflection_Assembly_get_ManifestModuleInternal): 
4950         Rename this to ves_icall_System_Reflection_Assembly_GetManifestModuleInternal.
4951
4952 2007-09-22  Zoltan Varga  <vargaz@gmail.com>
4953
4954         * metadata.c (mono_type_create_from_typespec): Remove an invalid
4955         free. Fixes #327438.
4956
4957 2007-09-21  Raja R Harinath  <harinath@gmail.com>
4958
4959         * metadata.c (type_in_image) <MONO_TYPE_SZARRAY>: Handle arrays of
4960         generic instantiations, etc.
4961         <MONO_TYPE_ARRAY>: Likewise.
4962
4963 2007-09-21  Martin Baulig  <martin@ximian.com>
4964
4965         * mono-debug.h (MonoSymbolFilePriv, MonoDebugHandlePriv): Removed;
4966         these structs were never defined.
4967         (MonoDebugHandle): Removed the `_priv' field, it was never used.
4968
4969 2007-09-21  Martin Baulig  <martin@ximian.com>
4970
4971         * mono-debug.h (MonoDebugVarInfo): Add `MonoClass *klass'.
4972
4973 Fri Sep 21 14:39:45 CEST 2007 Paolo Molaro <lupus@ximian.com>
4974
4975         * image.c: removed the guid hash tables: we can get the same info
4976         without the additional memory usage hit (partially fixes also bug #327052).
4977
4978 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
4979
4980         * profiler.h, profiler-private.h, profiler.c: add a new profiler
4981         event to handle unloading methods. After the event is called, the
4982         corresponding MonoMethod* must be considered invalid.
4983         * loader.c (mono_free_method): call the new mono_profiler_method_free
4984         event.
4985
4986 2007-09-20  Mark Probst  <mark.probst@gmail.com>
4987
4988         * domain-internals.h: New flag in MonoJitInfo which marks shared
4989         generic methods.  New hash table (shared_generics_hash) in
4990         MonoDomain to keep track of shared generic methods.  Prototypes
4991         for functions to register and lookup shared generic methods.
4992
4993         * domain.c: Support for registering and looking up shared generic
4994         methods via a hash table (shared_generics_hash) in MonoDomain.
4995
4996         * class-internals.h: New exception to signal failure of shared
4997         compilation of a generic method.  New counters for generics
4998         sharing in MonoStats.
4999
5000 Thu Sep 20 16:59:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
5001
5002         * image.c, metadata-internals.h: don't keep a file descriptor open
5003         for loaded assemblies (bug#325988).
5004
5005 2007-09-19  Raja R Harinath  <rharinath@novell.com>
5006
5007         * metadata.c (signature_in_image): New.  Carve out of type_in_image.
5008         (ginst_in_image, gclass_in_image): Simplify.  Change signature to
5009         use the corresponding datatypes.
5010         (type_in_image): Update to changes.
5011         (CleanForImageUserData): Simplify.
5012         (steal_gclass_in_image): Carved out of old 'gclass_in_image'.
5013         Avoid quadratic behaviour in handling the "stolen" list by
5014         separating the filter predicate out, and by prepending the stolen
5015         items rather than appending them.
5016         (steal_ginst_in_image): Likewise.
5017         (mono_metadata_clean_for_image): Update to changes.
5018
5019 2007-09-19  Martin Baulig  <martin@ximian.com>
5020
5021         * domain.c (mono_cleanup): Call mono_debug_cleanup() here.
5022
5023 2007-09-19  Martin Baulig  <martin@ximian.com>
5024
5025         * mono-debug.c (mono_debug_cleanup): Don't call
5026         mono_debugger_cleanup(); this is now called earlier from mini_cleanup().
5027
5028 2007-09-19  Raja R Harinath  <harinath@gmail.com>
5029
5030         Fix crash on 'make run-test' in mcs/errors
5031         * metadata.c (type_in_image): New.  Carve out of ginst_in_image.
5032         Avoid more potential allocations in mono_class_from_mono_type.
5033         (ginst_in_image): Update to changes.
5034         (gclass_in_image): Rearrange slightly.
5035
5036 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
5037
5038         * class.c (mono_class_init): Move the code that sets up class->methods to 
5039         mono_class_setup_methods () for inflated generic classes too. Ditto for properties.
5040
5041         * metadata.c (mono_metadata_get_inflated_signature): New function to return a
5042         canonical instance of an inflated generic signature.
5043         (mono_type_create_from_typespec): Remove an invalid free.
5044
5045         * loader.c (mono_method_get_signature_full): Use mono_metadata_get_inflated_signature.  
5046
5047 2007-09-18  Marek Habersack  <mhabersack@novell.com>
5048
5049         * domain-internals.h: added a declaration of the
5050         mono_assembly_load_full_nosearch internal function.
5051
5052         * assembly.c (mono_assembly_load_with_partial_name): use
5053         mono_try_assembly_resolve return value properly.
5054         (mono_assembly_load_full_nosearch): copied the function body from
5055         mono_assembly_load_full, without the code to invoke assembly
5056         search hooks.
5057         (mono_assembly_load_full): calls the above new function and if the
5058         assembly is not resolved, invokes the search hooks.
5059
5060         * appdomain.c (mono_runtime_init): restore the global postload
5061         assembly search handlers.
5062
5063 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
5064
5065         * class.c (mono_class_init): Make sure class->methods and class->properties
5066         are never NULL in the generics case.
5067
5068         * metadata.c (free_generic_class): Enable this again, skip the dynamic case.
5069
5070 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
5071
5072         * metadata.c (free_generic_class): Disable some code to fix the build.
5073
5074         * domain.c (mono_cleanup): Fix a crash introduced by a previous patch.
5075
5076         * marshal.c (mono_marshal_get_xappdomain_dispatch): Allocate a piece of data
5077         from the image mempool.
5078
5079         * metadata.c (free_generic_class): Free more data from the inflated class.
5080
5081         * class.c (mono_class_from_generic_parameter): Allocate memory from the mempool.
5082
5083         * metadata.c (mono_metadata_parse_generic_param): Allocate memory from the image
5084         mempool.
5085         (mono_type_create_from_typespec): Ditto.
5086
5087         * domain.c (get_runtimes_from_exe): Add an out parameter to return the opened
5088         MonoImage to the caller.
5089         (mono_init_internal): Save the opened image in a global variable.
5090         (mono_cleanup): Close the image opened in get_runtimes_from_exe.
5091
5092         * reflection.c (resolve_object): Fix a leak.
5093
5094         * metadata.c: Fix the freeing of data in the generics caches.
5095         
5096         * metadata.c (free_generic_inst): Comment this out to fix the build.
5097         (free_generic_class): Ditto.
5098
5099         * metadata.c: Free cached generic methods, instantinations and classes when
5100         they are removed from the caches.
5101         (mono_metadata_free_type): Free the type itself.
5102
5103         * class.c: Free the result of mono_class_inflate_generic_type () in a few
5104         places.
5105
5106 Mon Sep 17 16:14:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
5107
5108         * boehm-gc.c: restrict managed allocs to __thread supporting
5109         architectures.
5110
5111 2007-09-16  Zoltan Varga  <vargaz@gmail.com>
5112
5113         * class.c (mono_class_inflate_generic_type): Add a comment describing memory ownership.
5114         (mono_generic_class_get_class): Fix a leak.
5115
5116         * metadata.c (do_mono_metadata_parse_type): Remove an unneccesary call to
5117         mono_metadata_free_type ().
5118         (mono_metadata_inflate_generic_inst): Fix a leak.
5119
5120 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * mono-debug.c (free_header_data): Fix a leak missed earlier.
5123
5124         * metadata.c (mono_metadata_parse_array_full): Allocate memory from the image
5125         mempool.
5126
5127         * mono-debug.c (mono_debug_close_image): Fix call to 
5128         g_hash_table_remove ().
5129
5130 Fri Sep 14 19:36:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
5131
5132         * icall-def.h: redirect all the string ctor to the managed
5133         CreateString () methods.
5134         * string-icalls.c, string-icalls.h: removed dead code for string
5135         ctors and icalls.
5136
5137 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
5138
5139         * mono-debug.c: Fix memory leaks.
5140
5141 2007-09-14  Jonathan Chambers <joncham@gmail.com>
5142
5143         * threads-types.h: Implement mono_hazard_pointer_set and 
5144         mono_hazard_pointer_clear macros using do/while(0) to fix
5145         compilation with MSVC.
5146         
5147         Code is contributed under MIT/X11 license.
5148
5149 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
5150
5151         * gc.c (ves_icall_System_GCHandle_GetAddrOfPinnedObject): Use a return value of
5152         -2 to communicate to managed code that the handle is not pinned. Fixes #82848.
5153
5154 Fri Sep 14 14:04:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5155
5156         * icall-def.h, string-icalls.c: get rid of old, no longer used, string
5157         icalls.
5158
5159 Fri Sep 14 11:41:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5160
5161         * boehm-gc.c, gc-internal.h, object.c: allow strings to be
5162         managed-code allocated as well.
5163
5164 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
5165
5166         * class.c (mono_class_is_assignable_from): Add support for generic variance.
5167
5168 Thu Sep 13 11:55:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
5169
5170         * boehm-gc.c: fixed the build after the AOT changes.
5171
5172 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * wrapper-types.h: Add an ALLOC wrapper type.
5175
5176         * gc-internals.h boehm-gc.c null-gc.c sgen-gc.c: Add functions needed by AOT to
5177         reference managed allocator methods.
5178
5179 2007-09-12  Marek Safar  <marek.safar@gmail.com>
5180
5181         * icall.c (ves_icall_MonoType_GetGenericArguments): Create an instance
5182         of Type array and not MonoType, a fix suggested by Hari.
5183         
5184 2007-09-12  Jonathan Chambers <joncham@gmail.com>
5185
5186         * domain-internals.h, domain.c : Remove delegate_invoke_impl_with_target_hash
5187         and delegate_invoke_impl_no_target_hash from _MonoDomain struct.
5188         
5189         Code is contributed under MIT/X11 license.
5190
5191 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
5192
5193         * domain.c, object.c, mono-config.c, object-internals.h: Fixed  #82416.
5194
5195 2007-09-12  Marek Habersack  <mhabersack@novell.com>
5196
5197         * image.c (do_mono_image_open): if assembly file fails to open and
5198         MONO_IOMAP is in effect, try to find the path in a
5199         case-insensitive way.
5200
5201         * appdomain.c (mono_runtime_init): do not install postload hooks -
5202         tests show that MS.NET doesn't use anything of that sort to
5203         trigger the AppDomain.AssemblyResolve event.
5204         (mono_try_assembly_resolve): renamed from try_assembly_resolve and
5205         made non-static.
5206         (mono_runtime_init): init portability helpers here.
5207
5208         * assembly.c (mono_assembly_load_with_partial_name): if other   
5209         attempts fail, trigger the AppDomain.AssemblyResolve event handler
5210         to resolve the assembly.
5211
5212         * domain-internals.h: added mono_try_assembly_resolve and marked
5213         it as internal.
5214
5215 2007-09-11  Jb Evain  <jbevain@novell.com>
5216
5217         * object-internals.h (MonoReflectionDynamicMethod): add
5218         a `MonoReflectionType *owner` field. The owner is used
5219         * reflection.c:
5220         (mono_reflection_create_dynamic_method): use the owner of the dynamic
5221         method as the class declaring the dynamic method.
5222         (reflection_methodbuilder_from_dynamic_method): copy the owner of the
5223         dynamic method to the declaring type of the methodbuilder.
5224
5225 2007-09-11  Mark Probst  <mark.probst@gmail.com>
5226
5227         * icall.c (ves_icall_InternalInvoke): Enforce CoreCLR security
5228         rules for calling methods via reflection.
5229
5230 2007-09-11  Zoltan Varga  <vargaz@gmail.com>
5231
5232         * reflection.c (resolve_object): Add support for MonoGenericClass. 
5233         Inflate MonoType's.
5234
5235 Tue Sep 11 16:08:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
5236
5237         * gc-internal.h, boehm-gc.c, null-gc.c, sgen-gc.c: allow the GC to
5238         provide a managed method that does fast allocations without needing
5239         a managed->unmanaged transition. Boehm GC implementation currently
5240         enabled for ptrfree objects on sane architectures.
5241
5242 Tue Sep 11 16:00:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
5243
5244         * marshal.c, marshal.h: exported a couple of useful functions and
5245         added mono_mb_get_label () to easily handle backward branches.
5246
5247 2007-09-10  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * reflection.c (resolve_object): Inflate generic methods. Fixes #82782.
5250
5251 2007-09-10  Massimiliano Mantione  <massi@ximian.com>
5252
5253         * loader.c (find_method): Fixed the regression introduced while
5254         fixing bug #81466.
5255
5256 2007-09-09  Zoltan Varga  <vargaz@gmail.com>
5257
5258         * class.c (mono_lookup_dynamic_token_class): Pass along the context here as
5259         well.
5260         
5261         * class.c loader.c metadata.c object.c class-internals.h object-internals.h
5262         icall.c reflection.c: Pass a MonoGenericContext argument to 
5263         mono_lookup_dynamic_token ().
5264
5265         * reflection.c (resolve_object): Handle GenericTypeParameterBuilder. Fixes
5266         #82744.
5267         
5268 2007-09-09  Robert Jordan  <robertj@gmx.net>
5269
5270         * object.c (mono_class_proxy_vtable): Don't create remoting trampolines
5271         for generic methods.
5272
5273         * object.c (mono_object_get_virtual_method): Handle generic methods.
5274         Fixes bug #78882.
5275
5276         Code is contributed under MIT/X11 license.
5277
5278 Sat Sep 8 18:16:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
5279
5280         * image.c: fix locking in mono_image_load_file_for_image ().
5281
5282 Thu Sep 6 19:48:00 CEST 2007 Paolo Molaro <lupus@ximian.com>
5283
5284         * reflection.c, icall.c, icall-def.h: the methodinfos name field is
5285         used only as a cache: added an icall to fill it.
5286
5287 2007-09-16  Rodrigo Kumpera  <rkumpera@novell.com>
5288
5289         * reflection.h: exposed mono_reflection_free_type_info
5290         * reflection.c (mono_reflection_get_type_internal): type_args is always freed
5291         since mono_reflection_bind_generic_parameters makes a copy of it.
5292         * reflection.c (free_type_info): subinfos should be freed.
5293         * reflection.c (free_type_info): renamed to mono_reflection_free_type_info and 
5294         made non static.
5295         * icall.c (type_from_name and ves_icall_System_Reflection_Assembly_InternalGetType):
5296         replaced explicit cleanup of MonoTypeNameParse struct with a call to mono_reflection_free_type_info,
5297         this fixes #82695 and #81726.
5298    
5299
5300 2007-09-03  Atsushi Enomoto  <atsushi@ximian.com>
5301
5302         * process.h, process.c:  added support for user profile/info in
5303           ProcessStartInfo. For now only Windows works.
5304
5305 Fri Aug 31 17:30:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
5306
5307         * metadata.c: consider the generic arguments when comparing
5308         signatures (bug #82614).
5309
5310 Thu Aug 30 18:34:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
5311
5312         * cil-coff.h, image.c: updated assembly loader to cope with the
5313         PE32+ 64 bit file format.
5314
5315 Thu Aug 30 16:47:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
5316
5317         * assembly.c, class.c, domain.c, loader.c: remove useless
5318         inclusion of cil-coff.h.
5319
5320 2007-08-29  Jonathan Chambers  <joncham@gmail.com>
5321
5322         * marshal.c (cominterop_get_ccw): Walk up interface hierarchy
5323         if interface is marked with CoClassAttribute. 
5324    
5325         Code is contributed under MIT/X11 license.
5326
5327 Wed Aug 29 19:27:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
5328
5329         * sgen-gc.c: ensure no object from the to space is copied again or finalized
5330         if it's seen twice in major collections.
5331
5332 Wed Aug 29 18:46:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
5333
5334         * sgen-gc.c: big objects are not copied to the gray area, but they
5335         need to be considered for scanning, too, if they are brought alive
5336         by an object ready for finalizations or a survived one.
5337
5338 Wed Aug 29 18:43:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
5339
5340         * sgen-gc.c: properly account the number of disappearing links when
5341         they are nullified.
5342
5343 Wed Aug 29 18:37:37 CEST 2007 Paolo Molaro <lupus@ximian.com>
5344
5345         * sgen-gc.c: share the code to scan the registered roots between the
5346         different types of collections.
5347
5348 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
5349
5350         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunModuleConstructor): New icall.
5351
5352 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
5353
5354         * object.c (mono_class_proxy_vtable): Use max_interface_id instead of
5355         class->max_interface_id in a one place. Fixes transparentproxy.exe test on ia64.
5356
5357 2007-08-28  Mark Probst  <mark.probst@gmail.com>
5358
5359         * security-manager.c (mono_security_manager_get_methods):
5360         LinkDemandSecurityException now has 2 arguments instead of 3.
5361
5362 2007-08-27  Zoltan Varga  <vargaz@gmail.com>
5363
5364         * class.c (mono_class_layout_fields): Only do the struct alignment hack on
5365         platforms which need it.
5366
5367 Mon Aug 27 18:29:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
5368
5369         * sgen-gc.c: unregister thread data structures with a pthread_key_t
5370         dtor.
5371
5372 Mon Aug 27 18:27:35 CEST 2007 Paolo Molaro <lupus@ximian.com>
5373
5374         * threads.c: free the thread static data on thread exit.
5375
5376 Mon Aug 27 10:55:54 CEST 2007 Paolo Molaro <lupus@ximian.com>
5377
5378         * class.c: walk the hierarchy to find the generic definition for
5379         a class (fixes runtime part of bug #82498).
5380
5381 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * assembly.c (mono_assembly_close): Move the closing of the referenced assemblies to
5384         ...
5385
5386         * image.c (mono_image_close): Here. Hopefully fixes #82510.
5387
5388 2007-08-24  Mark Probst  <mark.probst@gmail.com>
5389
5390         * monodiet.c (handle_cattrs): Fixed a custom attr leak.
5391
5392 2007-08-24  Robert Jordan  <robertj@gmx.net>
5393
5394         * appdomain.c: don't perform the ':'->';' substitution on Win32.
5395
5396 2007-08-24  Jb Evain  <jbevain@novell.com>
5397
5398         * class.c (mono_type_get_name_recurse): fix AssemblyQualifiedName
5399         for byref types.
5400
5401 2007-08-24  Mark Probst  <mark.probst@gmail.com>
5402
5403         * threads.c: Make sure a thread gets cleaned up only once.  Fixes
5404         #82286.
5405
5406 2007-08-24  Zoltan Varga  <vargaz@gmail.com>
5407
5408         * assembly.c: Fix a warning.
5409         
5410 2007-08-23  Marek Habersack  <mhabersack@novell.com>
5411
5412         * appdomain.c: parse the <runtime> section looking for the probing
5413         element with the 'privatePath' attribute, which sets additional
5414         directories in which the runtime should look for assemblies.
5415
5416 2007-08-23  Robert Jordan  <robertj@gmx.net>
5417
5418         * marshal.c (Marshal_ReAllocHGlobal) : Fix GlobalReAlloc's flags.
5419         Fixes #82499.
5420
5421 2007-08-23  Martin Baulig  <martin@ximian.com>
5422
5423         * mono-debug.[ch]: Rename mono_debug_init_corlib() into
5424         _mono_debug_init_corlib() and remove it from the header file.
5425
5426 2007-08-23  Martin Baulig  <martin@ximian.com>
5427
5428         * mono-debug-debugger.c
5429         (mono_debugger_unhandled_exception): Ignore `ThreadAbortException';
5430         don't notify the debugger about it.
5431
5432         * mono-debug-debugger.h
5433         (MonoDebuggerEvent): Removed `THREAD_ABORT'.
5434
5435 2007-08-23  Robert Jordan  <robertj@gmx.net>
5436
5437         * icall-def.h, process.*: implemented Get|SetPriorityClass icalls.
5438         Code is contributed under MIT/X11 license.
5439
5440 Wed Aug 22 18:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
5441
5442         * sgen-gc.h, sgen-gc.c: abstracted most of the OS-specific code.
5443
5444 2007-08-22  Martin Baulig  <martin@ximian.com>
5445
5446         * mono-debug.c: Store debugging info on a per-domain basis and
5447         free it on domain unload.  Add support for unloading symbol files.
5448
5449         * mono-debug.h
5450         (MonoDebugList): New typedef.
5451         (MonoSymbolTable):
5452         - add `data_tables and `type_table'.
5453         - replace 'symbol_files' and `num_symbol_files' with a
5454           `MonoDebugList *'.
5455         (mono_debug_data_table): Removed.
5456         (mono_debug_list_add): New public function.
5457         (mono_debug_list_remove): New public function.
5458         (mono_debug_init_1): Renamed into mono_debug_init_corlib().
5459         (mono_debug_init_2_memory): Renamed into
5460         mono_debug_open_image_from_memory().
5461         (mono_debug_close_image): New public function.
5462         (mono_debug_domain_create): Likewise.
5463         (mono_debug_domain_unload): Likewise.
5464         (MONO_DEBUGGER_VERSION): Bump to 60.
5465
5466         * mono-debug-debugger.h
5467         (MonoDebuggerEvent):
5468         - remove `RELOAD_SYMTABS' and `METHOD_COMPILED'.
5469         - rename `ADD_MODULE' into `LOAD_MODULE'; add `UNLOAD_MODULE'.
5470         - add `DOMAIN_CREATE' and `DOMAIN_UNLOAD'.
5471         - rename `THREAD_CREATED' and `THREAD_EXITED' into
5472           `GC_THREAD_CREATED' and `GC_THREAD_EXITED'.
5473         - re-add `THREAD_CREATED' and `THREAD_EXITED'; with different
5474           meaning.
5475         (mono_debugger_add_symbol_file): Removed.
5476         (mono_debugger_add_type): Removed.
5477         (mono_debugger_lookup_type): Removed.
5478         (mono_debugger_lookup_assembly): Removed.
5479
5480         * domain.c
5481         (mono_domain_create): Call mono_debug_domain_create().
5482         (mono_init_internal): Call mono_debug_init_corlib().
5483
5484         * assembly.c
5485         (mono_assembly_close): Call mono_debug_close_image().
5486
5487 Wed Aug 22 17:26:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
5488
5489         * sgen-gc.c: use the mono-mmap facilitites instead of hard-coding the
5490         mmap call.
5491
5492 Wed Aug 22 17:17:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
5493
5494         * sgen-gc.c: ensure section->pin_queue_end is initialized
5495         correctly when non pinning objects in the section have been found.
5496
5497 2007-08-22  Marek Habersack  <mhabersack@novell.com>
5498
5499         * appdomain.c (set_domain_search_path): cope with PrivateBinPath
5500         containing a list of directories separated by ':'. MSDN docs say
5501         the directories should be separated with ';'. Part of a bugfix for
5502         bug #81446
5503
5504 2007-08-21  Rodrigo Kumpera  <rkumpera@novell.com>
5505
5506         * class.c (mono_type_retrieve_from_typespec) : fixed the return type
5507         it should MonoType and not MonoClass.
5508
5509 2007-08-21  Atsushi Enomoto  <atsushi@ximian.com>
5510
5511         * culture-info-table.h : regenerated.
5512
5513 2007-08-20  William Holmes  <billholmes54@gmail.com>
5514
5515         *file-io.c: Added ves_icall_System_IO_MonoIO_ReplaceFile
5516          to call ReplaceFile Kernel32 on windows or in io-layer.
5517         *file-io.h: Added deceleration for ves_icall_System_IO_MonoIO_ReplaceFile
5518         *icall-def.h: Register ves_icall_System_IO_MonoIO_ReplaceFile
5519          as an internal call.
5520
5521         Code is contributed under MIT/X11 license.
5522
5523 2007-08-20  Jb Evain  <jbevain@novell.com>
5524
5525         * class-internals: add definitions for MONO_EXCEPTION_METHOD_ACCESS
5526         and MONO_EXCEPTION_FIELD_ACCESS.
5527
5528         * debug-helpers.[c|h]: new mono_field_full_name function.
5529
5530 2007-08-20  Mark Probst  <mark.probst@gmail.com>
5531
5532         * class.c: Removed class_security_level() and moved it to
5533         security-core-clr.c.
5534
5535         * security-core-clr.c, security-core-clr.h: class_security_level()
5536         is now public and renamed to mono_security_core_clr_class_level().
5537         It also looks for security attributes in the classes a class is
5538         nested in.
5539
5540 2007-08-20  Mark Probst  <mark.probst@gmail.com>
5541
5542         * security-core-clr.c, security-core-clr.h: CoreCLR security
5543         utility functions.
5544
5545         * Makefile.am: Added security-core-clr.[ch].
5546
5547         * security-manager.c, security-manager.h: Functions and enum for
5548         setting and getting the security mode.
5549
5550         * class.c: CoreCLR security checks.
5551
5552 Mon Aug 20 12:38:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
5553
5554         * icall-def.h, process.c, process.h: implemented icall to get
5555         user/system processor times.
5556
5557 2007-08-17  Mark Probst  <mark.probst@gmail.com>
5558
5559         * domain.c, threads.c, class-internals.h, domain-internals.h: New
5560         reader-lock-free jit_info_table.
5561
5562 2007-08-17  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_CUSTOM.
5565
5566         * marshal.c (mono_marshal_type_size): Ditto. Fixes #82465 and #82466.   
5567
5568         * object-internals.h (MonoException): Add missing _data member.
5569
5570 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
5571
5572         * loader.c (find_method, find_method_in_class): Fixed bug #81466,
5573         checking that only methods with matching qname or fqname are picked
5574         from implemented interfaces.
5575
5576 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5577
5578         * verify.c (do_newarr):added, do type verification of
5579         newarr ops, push the right value on the eval stack.
5580         * verify.c (mono_method_verify): use do_newarr
5581
5582
5583 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5584
5585         * verify.c (do_ldobj_value, do_unbox_value and do_box_value):
5586         factored the common code into get_boxable_mono_type, which
5587         is now using mono_type_get_full, this fixed byref related tests.
5588
5589 2007-08-16  Rodrigo Kumpera  <rkumpera@novell.com>
5590
5591         * class.c: added mono_type_get_full, this function has the same
5592         behavior of mono_class_get_full but the returned MonoType has
5593         all metadata of the associated token in case of a typespec token.
5594         * class.c: added mono_type_retrieve_from_typespec, used by 
5595         mono_type_get_full to retrieve the token type.
5596         * class.c (mono_class_create_from_typespec): changed to use
5597         mono_type_retrieve_from_typespec.
5598         * class.c (mono_ldtoken): changed to use mono_type_get_full
5599         for MONO_TOKEN_TYPE_(DEF|REF|SPEC).
5600         * class-internals.h: exported mono_type_get_full for internal use.
5601
5602 2007-08-16  Jb Evain  <jbevain@novell.com>
5603
5604         * domain.c (supported_runtimes): add entry for
5605         the 'moonlight' runtime version.
5606
5607 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5608
5609         * verify.c (mono_method_verify): small typo sliped in.  
5610
5611 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5612
5613         * verify.c (do_unbox_value): added, do type verification of
5614         unboxing ops
5615         * verify.c (mono_method_verify): use do_unbox_value
5616
5617
5618 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5619
5620         * verify.c (dump_stack_value): fixed typo, was printing string
5621         instead of object on stack.
5622         * verify.c (do_box_value): moved the byref check up as it leads
5623         to invalid code and should be done earlier.
5624         * verify.c: improved error messages for and ldobj
5625
5626 2007-08-15  William Holmes  <billholmes54@gmail.com>
5627
5628         * marshal.c (emit_marshal_custom): Omit the call to 
5629           marshal_native_to_managed when calling native to managed 
5630           and the argument is specified as an out argument.
5631
5632         Code is contributed under MIT/X11 license.
5633
5634 2007-08-15  Rodrigo Kumpera  <rkumpera@novell.com>
5635
5636         * verify.c: fixed the type checks for generics, function pointers and vectors.
5637         Added type verification for ldobj and ldtoken. The verifier
5638         would segfault if header or signature of a method contained references
5639         to non-existant types.
5640
5641 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
5642
5643         * marshal.c (cominterop_get_ccw): Patch from
5644         Bill Holmes to no walk up interface hierarchy. 
5645         All parent methods should be present in the interface for COM.
5646    
5647         Code is contributed under MIT/X11 license.
5648
5649 2007-08-15  Jonathan Chambers  <joncham@gmail.com>
5650
5651         * marshal.c (emit_marshal_com_interface): Patch from
5652         Bill Holmes to handle COM Interfaces as return values
5653         for native->managed calls.
5654    
5655         Code is contributed under MIT/X11 license.
5656
5657 2007-08-14  Jonathan Chambers  <joncham@gmail.com>
5658
5659         * marshal.c (cominterop_get_idispatch_for_object): Implement
5660         for runtime callable wrappers.
5661    
5662         Code is contributed under MIT/X11 license.
5663
5664 2007-08-13  Rodrigo Kumpera  <rkumpera@novell.com>
5665
5666         * pedump.c (main): changed from mono_init to mono_init_from_assembly
5667         so 2.0 types are accessible
5668
5669
5670 2007-08-13  Miguel de Icaza  <miguel@novell.com>
5671
5672         * domain.c (mono_init_internal): Call mono_assembly_load_friends
5673         once we load mscorlib.   Due to the order in which we initialize,
5674         the mono_assembly_load_full routine that loads mscorlib did not
5675         load friends.   We now load it once we load the
5676         mono_defaults.internals_visible_class class. 
5677
5678         * assembly.c: Expose the mono_load_friend_assemblies method.
5679
5680 2007-08-11  Rodrigo Kumpera  <rkumpera@novell.com>
5681
5682         * verify.c: improved the handling of boxing, better
5683         type checking for unary ops and conversion. Fix bug
5684         regarding managed pointer compatibility checking
5685
5686 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
5687
5688         * icall.c (ves_icall_System_Array_SetGenericValueImpl): New icall.
5689
5690         * threads.c threads-types.h: Export mono_thread_get_stack_bounds.
5691
5692 2007-08-09  Raja R Harinath  <rharinath@novell.com>
5693
5694         * reflection.c (dup_type): Remove.
5695         * class.c (dup_type): Remove.
5696         (mono_metadata_signature_deep_dup): Use 'mono_metadata_type_dup'
5697         instead of the dodgy 'dup_type'.
5698         (inflate_generic_type): Likewise.  Fix the VAR/MVAR cases to
5699         handle the case where 'dup_type' needed the second argument.
5700
5701 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
5702
5703         * domain.c: Fix a warning.
5704
5705 2007-08-08  Massimiliano Mantione  <massi@ximian.com>
5706
5707         * class.c (mono_class_setup_vtable_general): Fixed bug #77127,
5708         checking that methods with the same fqname are not overridden
5709         with a method from an ancestor.
5710
5711 2007-08-07  Zoltan Varga  <vargaz@gmail.com>
5712
5713         * threads.c (free_thread_static_data_helper): Avoid a crash if
5714         thread->static_data is not yet set.
5715
5716 2007-08-07  Jonathan Chambers  <joncham@gmail.com>
5717
5718         * marshal.c: Use correct image when emitting
5719         native wrapper for COM calls.
5720    
5721         Code is contributed under MIT/X11 license.
5722
5723 2007-08-07  Atsushi Enomoto  <atsushi@ximian.com>
5724
5725         * icall-def.h, security.c, security.h :
5726           added icall wrapper to ProtectedMemory.[Unprotect|Protect]Data().
5727
5728 2007-08-07  Martin Baulig  <martin@ximian.com>
5729
5730         * mono-debug-debugger.h
5731         (MonoDebuggerEvent): Add `MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD'.
5732
5733         * domain.c (mono_domain_free): Call
5734         `mono_debugger_event (MONO_DEBUGGER_EVENT_DOMAIN_UNLOAD)'.
5735
5736 2007-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
5737
5738         * verify.c (check_underflow, check_overflow): error message now returns IL offset
5739         * verify.c (in_same_block): code should test if either offset is inside the clauses
5740         * verify.c (mono_method_verify): push the exception into the eval stack of exception
5741         and filter blocks
5742
5743 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
5744
5745         * image.c (mono_image_close): Fix a leak.
5746
5747         * object.c (mono_runtime_invoke_array): Avoid using alloca.
5748
5749         * icall.c (ves_icall_FieldInfo_SetValueInternal): Ditto.        
5750
5751 Fri Aug 3 19:54:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
5752
5753         * domain.c, threads.c, threads-types.h: fix memory retention issue
5754         with thread static variables not being cleared on domain unload.
5755         Reuse thread static slots after domain unload.
5756
5757 2007-08-03  Zoltan Varga  <vargaz@gmail.com>
5758
5759         * object.c (mono_runtime_invoke_array): Handle the case when the receiver is a
5760         nullable type.
5761
5762         * marshal.c (mono_marshal_get_runtime_invoke): Revert the previous change, it is
5763         now done in mono_runtime_invoke_array.
5764
5765         * marshal.c (mono_marshal_get_runtime_invoke): Handle the case when the 
5766         receiver is a nullable type.
5767
5768         * class.c (mono_class_is_assignable_from): Handle the case when klass is a 
5769         generic parameter.
5770
5771 2007-08-03  Jonathan Chambers  <joncham@gmail.com>
5772
5773         * marshal.c: Implement COM Objects as return type for 
5774         managed->unmanaged calls. Added Release calls for COM Object
5775         out/return values in managed->unmanaged calls.
5776
5777         Code is contributed under MIT/X11 license.
5778
5779 Fri Aug 3 17:00:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
5780
5781         * threads.h, threads-type.h: move the hazard pointer declarations
5782         to the private header.
5783
5784 Fri Aug 3 13:13:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
5785
5786         * file-io.c, appdomain.c: memory leak fixes.
5787
5788 2007-08-02  Dick Porter  <dick@ximian.com>
5789
5790         * socket-io.c
5791         (ves_icall_System_Net_Sockets_Socket_Socket_internal): Move the
5792         SO_REUSEADDR setting into io-layer/sockets.c.
5793
5794 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
5795
5796         * icall.c (ves_icall_Type_GetMethodsByName): Return the members inherited
5797         from Object when called on a generic parameter. Fixes #82211.
5798
5799 2007-08-01  Dick Porter  <dick@ximian.com>
5800
5801         * file-io.c (convert_share): Test FileShare values bit-by-bit.
5802         Fixes bug 79250 yet again.
5803
5804 2007-07-30  Martin Baulig  <martin@ximian.com>
5805
5806         Merged the `debugger-dublin' branch.
5807
5808         * mono-debug.h
5809         (MonoDebugDataTable): New typedef.
5810         (MonoDebugMethodAddressList): New typedef.
5811         (MonoDebugWrapperData): Removed.
5812         (MonoDebugSymbolTable): Removed `current_data_table',
5813         `current_data_table_size', `current_data_table_offset'.
5814         (MonoDebugDataItemType): Moved into mono-debug.c.
5815         (MonoDebugMethodJitInfo): Remove `address'.
5816         (mono_debug_data_table): New global variable.
5817         (mono_debug_lookup_method_addresses): New public function.
5818         (mono_debug_find_method): Take a `MonoMethod *', not a
5819         `MonoDebugMethodInfo *'.
5820
5821         * mono-debug.c: Drop support for the old symbol tables.
5822
5823 2007-06-28  Martin Baulig  <martin@ximian.com>
5824
5825         * mono-debug.c (mono_debug_debugger_version): New public variable.
5826
5827 2007-07-31  William Holmes  <billholmes54@gmail.com>
5828
5829         * metadata.c Changed mono_type_create_from_typespec to not insert
5830           the type into the hash map until after
5831           do_mono_metadata_parse_type has completed.
5832         Fixes Bug #82194
5833         Code is contributed under MIT/X11 license.
5834
5835 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
5836
5837         * icall.c (ves_icall_Type_GetMethodsByName): Avoid a crash when called on a
5838         generic parameter. Fixes #82211.
5839
5840 2007-07-27  Jb Evain  <jbevain@novell.com>
5841
5842         * pedump.c (dump_metadata, dump_metadata_header): dump
5843         versions contained in the metadata header.
5844
5845 Fri Jul 27 17:07:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
5846
5847         * threads.c: register small_id_table with the GC.
5848
5849 2007-07-27  Mark Probst  <mark.probst@gmail.com>
5850
5851         * threads.c, threads.h, class-internals.h, object-internals.h:
5852         Hazard pointers, to be used by lock-free parallel algorithms.
5853
5854 2007-07-26  Dick Porter  <dick@ximian.com>
5855
5856         * appdomain.c (mono_runtime_cleanup): Invoke io-layer cleanup
5857         routine on non-windows platforms, as I've not managed to think of
5858         a non-kludgy way of doing this.  Finishes off bug 78739.
5859
5860 Wed Jul 25 18:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
5861
5862         * object.c: properly setup interface_bitmap in proxy vtables.
5863
5864 2007-07-25  Marek Habersack  <mhabersack@novell.com>
5865
5866         * appdomain.c (get_shadow_assembly_location): do not use TickCount
5867         to create unique shadow copy target directories, use the domain's
5868         serial number instead. Each domain gets a unique target directory
5869         that way.
5870
5871         * domain.c (mono_domain_create): added code to increment domain
5872         shadow copy serial number and cache the value in the current
5873         domain structure.
5874
5875         * domain-internals.h (struct _MonoDomain): added a new field -
5876         shadow_serial to hold the serial number used in generation of
5877         shadow-copy directories. This is to make sure that the directory
5878         name is unique for each and every domain created. We avoid a race
5879         condition with overriding assemblies already in use by other app
5880         domains.
5881
5882 2007-07-24  Rodrigo Kumpera  <rkumpera@novell.com>
5883
5884         * class.c (mono_bounded_array_class_get): fixed memory leak when 
5885         binding generic parameters.
5886
5887 2007-07-24  Raja R Harinath  <rharinath@novell.com>
5888
5889         * metadata.c (do_mono_metadata_parse_generic_class): Use
5890         mono_metadata_lookup_generic_class.  Don't g_assert on a metadata
5891         error.
5892
5893 Tue Jul 24 15:15:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
5894
5895         * loader.c, class-internals.h, reflection.c: removed the per-method
5896         generics hashtable: we use the global one through the call of
5897         mono_class_inflate_generic_method ().
5898
5899 Mon Jul 23 19:43:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
5900
5901         * class.c, metadata.c, class-internals.h: introduce yet another
5902         generics global cache for inflated methods (fixes 98% of the perf
5903         issue in bug #81806).
5904
5905 2007-07-23  Raja R Harinath  <rharinath@novell.com>
5906
5907         Fix #81035 -- avoid allocating MonoGenericInsts willy-nilly
5908         * metadata.c (mono_metadata_lookup_generic_inst): Kill.
5909         (mono_metadata_get_generic_inst): New.  Given a list of MonoType*,
5910         return a MonoGenericInst containing (a copy) of those types.
5911         (mono_metadata_inflate_generic_inst): Update to changes.
5912         (mono_metadata_parse_generic_inst): Likewise.
5913         (mono_get_shared_generic_inst): Likewise.
5914         * reflection.c (mono_class_bind_generic_parameters): Likewise.
5915         (mono_reflection_bind_generic_method_parameters): Likewise.
5916         * metadata-internals.h: Likewise.
5917         * icall.c (free_generic_context): Kill.
5918         (init_generic_context_from_args): Use mono_metadata_get_generic_inst.
5919
5920         * reflection.c (reflection_methodbuilder_to_mono_method): Use
5921         mono_metadata_type_dup.
5922         * marshal.c (mono_mb_create_method): Likewise.
5923
5924         * metadata.c (mono_metadata_type_dup): Rename from
5925         mono_metadata_type_dup_mp.  Take an optional mempool instead of a
5926         MonoImage.  Handle a few more cases, esp. when no mempool is given.
5927         * marshal.c, metadata-internals.h: Update to changes.
5928
5929 Mon Jul 23 11:43:31 CEST 2007 Paolo Molaro <lupus@ximian.com>
5930
5931         * class.c: fixed a small leak for array classes and removed warning.
5932
5933 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * loader.c (mono_method_get_param_token): Make this work on generic methods.
5936         Return 0x8000000 for return parameters. Fixes #82161.
5937
5938 2007-07-21  Marek Habersack  <grendello@gmail.com>
5939
5940         * appdomain.c (get_shadow_assembly_location): append the current
5941         ticks value to the path. Avoids overwriting the same assemblies by
5942         several threads at the same time.
5943
5944 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5945         and Raja R Harinath  <rharinath@novell.com>
5946
5947         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
5948         Simplify slightly.
5949         (ves_icall_MonoMethod_GetGenericMethodDefinition): Update
5950         property for testing if a method is a generic method definition.
5951
5952 2007-07-20  Atsushi Enomoto  <atsushi@ximian.com>
5953
5954         * domain-internals.h : added 2.0 member fields to MonoAppDomainSetup.
5955
5956 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5957
5958         * verify.c: used function from private branch, reverted to the one in class.h 
5959
5960 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5961
5962         * verify.c: a typo slipped in and the code wont compile
5963
5964 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5965
5966         * verify.c: now all code use IS_MANAGED_POINTER and UNMASK_TYPE macros.
5967         disabled box instruction as it is doing the wrong thing
5968         improved stack dump messages, now it is easier to debug type related issues
5969
5970
5971 2007-07-19  Juraj Skripsky  <js@hotfeet.ch>
5972
5973         * icall.c (ves_icall_System_MonoType_getFullName): Fix a leak. 
5974
5975 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5976
5977         * verify.c: changed MONO_TYPE_TYPEDBYREF stack type from 
5978         TYPE_COMPLEX to TYPE_PTR, it did not make any sense to be
5979         grouped with class and valuetype. This change will simply 
5980         the code as it should be handled just like unmanaged pointers.
5981
5982 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5983
5984         * class.c (concat_two_strings_with_zero): Fixed a silly bug.
5985
5986 2007-07-19  Rodrigo Kumpera  <rkumpera@novell.com>
5987
5988         * verify.c: several stack merge issues fixed, reference comparisons now
5989         check the type size. strict type check now works correctly.
5990         added more uses of IS_MANAGED_POINTER macro.
5991         fixed issues pointed by running the test suite against .net.
5992         
5993
5994 2007-07-19  Mark Probst  <mark.probst@gmail.com>
5995
5996         * class.c, loader.c, class-internals.h: Removed the
5997         MonoLoaderErrorKind enum and replaced it with the MONO_EXCEPTION_
5998         defines.
5999
6000         * icall.c: Better error checking in some internal reflection
6001         methods.
6002
6003 2007-07-18  William Holmes  <billholmes54@gmail.com>
6004
6005         * filewatcher.c : removed unused variable 'filename' in 
6006           ves_icall_System_IO_FSW_SupportsFSW
6007
6008 Mon Jul 16 19:36:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
6009
6010         * reflection.c, class.c, icall.c, loader.c: mono_get_inflated_method () is
6011         obsolete, removed.
6012
6013 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
6014
6015         * icall.c (ves_icall_System_Reflection_FieldInfo_GetTypeModifiers): New icall.
6016         
6017         * icall.c (ves_icall_System_Reflection_Module_ResolveSignature): New icall.
6018
6019 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
6020
6021         * icall.c (ves_icall_System_Reflection_Module_ResolveMethodToken): 
6022         Implement generics support.
6023         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
6024
6025         * icall.c (ves_icall_System_Reflection_Module_ResolveTypeToken): Add new
6026         type_args and method_args arguments.
6027         (ves_icall_System_Reflection_Module_ResolveMethodToken): Ditto.
6028         (ves_icall_System_Reflection_Module_ResolveFieldToken): Ditto.
6029         (ves_icall_System_Reflection_Module_ResolveMemberToken): Ditto.
6030
6031 2007-07-13  Rodrigo Kumpera  <rkumpera@novell.com>
6032
6033         * reflection.c: patch from Thong Nguyen to fix atribute resolution.
6034           It adds a rootimage parameter to mono_reflection_get_type_internal,
6035           adds new function mono_reflection_get_type_with_rootimage and use
6036           the rootimage to resolve the types instead of the current image
6037
6038 2007-07-13  Rolf Bjarne Kvinge  <RKvinge@novell.com>
6039
6040         * culture-info-table.h: Forgot to update after r78304.
6041
6042 2007-07-13  Raja R Harinath  <rharinath@novell.com>
6043
6044         * class.c (mono_class_is_open_constructed_type)
6045         <MONO_TYPE_GENERICINST>: Don't recompute a computed field.
6046
6047 2007-07-12  Rodrigo Kumpera  <rkumpera@novell.com>
6048
6049         * class.c (mono_bounded_array_class_get):  method fails if used with
6050         an incomplete TypeBuilder enum (no basetype field), fixed it by 
6051         avoiding calculating the size for such array as it cannot be instantiated.
6052         Fix bug #82015
6053
6054 2007-07-12  Raja R Harinath  <rharinath@novell.com>
6055
6056         * class-internals.h (_MonoGenericInst::is_reference): Remove bogus
6057         field.
6058         * metadata.c, reflection.c: Update to changes.
6059
6060 2007-07-11  Rodrigo Kumpera  <rkumpera@novell.com>
6061
6062         * class.c, class-internal.h: added mono_type_is_valid_enum_basetype and
6063         mono_class_is_valid_enum, they are used to valide a enum when loading.
6064         * reflection.c: used new functions to throw TypeLoadException when and
6065         invalid enum is build with TypeBuilder. Fixes #82018
6066   
6067 Wed Jul 11 14:47:07 CEST 2007 Paolo Molaro <lupus@ximian.com>
6068
6069         * object.c: forgot commit of mono_class_setup_methods () to access
6070         iface->methods.
6071         * object-internals.h: added a few more handy fields to
6072         MonoIMTCheckItem.
6073
6074 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * object.c (build_imt): Call mono_class_setup_methods () before accessing 
6077         iface->methods.
6078
6079 Tue Jul 10 16:49:01 CEST 2007 Paolo Molaro <lupus@ximian.com>
6080
6081         * class-internals.h, object-internals.h, object.c: IMT-based
6082         interface invocation core from Massimiliano Mantione
6083         (massi@ximian.com) with a reworked arch-specific interface,
6084         bsearch implementation and a few bugfixes and memory savings by me.
6085
6086 2007-07-10  Rodrigo Kumpera  <rkumpera@novell.com>
6087
6088         * class.c (mono_class_create_from_typedef): mono would segfault if 
6089         an enum did not have a __value field. It now throws a TypeLoadException
6090         for such cases. Fix bug #82022
6091
6092 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * marshal.c (mono_marshal_string_to_utf16_copy): Fix allocation size.
6095
6096 2007-07-09  Mark Probst  <mark.probst@gmail.com>
6097
6098         * class.c (mono_class_init): If a class is already inited but has
6099         an exception_type set, return FALSE, not TRUE.  Fixes: 82050.
6100
6101 2007-07-09  Mark Probst  <mark.probst@gmail.com>
6102
6103         * class.c: Properly handle the case of an unimplemented interface
6104         method.  Fixes: 81673.
6105
6106 Mon Jul 9 16:21:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
6107
6108         * class-internals.h, object.c: cleanup patch from massi: use
6109         MonoVTable->interface_bitmap since the vtable interfaces offset array
6110         is going away.
6111
6112 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
6113
6114         * icall-def.h icall.c: Remove Module:get_MDStreamVersion icall and add a new
6115         GetMDStreamVersion icall instead.
6116
6117 Mon Jul 9 11:34:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
6118
6119         * filewatcher.c: patch from Thong Nguyen <tum@veridicus.com> to
6120         not use mono_dl_build_path() with a full library name: makes
6121         fallbacks to libgaim and libfam work.
6122
6123 2007-07-06  William Holmes  <billholmes54@gmail.com>
6124
6125         * assembly.c: Added a continue statement in probe_for_partial_name when
6126          parse_assembly_directory_name fails.  Fixes : 82002
6127
6128 2007-07-06  Rodrigo Kumpera  <rkumpera@novell.com>
6129
6130         * verify.c (check_unmanaged_pointer_type): renamed to check_unverifiable_type
6131         and added a verification  for TYPEDBYREF.
6132         * verify.c (verify_stack_type_compatibility): fix handling of byref types,
6133         make native int interchangeable with int32 and some small cleanup and formating.
6134         * verify.c (push_arg): only ldarg on invalid argument is valid (but not verifiable) and
6135         handle byref of byref.
6136         * verify.c (push_local): handle byref of byref.
6137         * verify.c (do_binop): invalid mix of values is unverifiable
6138         * verify.c (do_invoke_method): fixed the handling of bad params on stack and
6139         added visibility checks
6140         * verify.c (field related method): added visibility checks
6141         * verify.c (do_push_field): cannot take the address of a temporary valuetype field
6142
6143 2007-07-06  Zoltan Varga  <vargaz@gmail.com>
6144
6145         * marshal.c (mono_marshal_string_to_utf16_copy): Null terminate the
6146         string.
6147
6148 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
6149
6150         * profiler.c (mono_profiler_load): Fix an off-by-one error.
6151
6152         * marshal.c (emit_marshal_string): When returning a string from managed code,
6153         allways make a copy even for unicode strings. Fixes #81990.
6154
6155 Wed Jul 4 11:53:57 CEST 2007 Paolo Molaro <lupus@ximian.com>
6156
6157         * object.c: cleaned up mono_runtime_invoke_array () and fixed handling
6158         of byref generic inst types (bug #81997).
6159
6160 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
6161
6162         * class.c: moved methods mono_method_can_access_field and mono_method_can_access_method from mini/mini.c
6163         * class.h: added declarations of mono_method_can_access_field() and mono_method_can_access_method()
6164
6165 2007-07-02  Zoltan Varga  <vargaz@gmail.com>
6166
6167         * marshal.c (emit_marshal_string): Add support for unicode strings in
6168         MARSHAL_ACTION_MANAGED_CONV_RESULT. Fixes #81990.
6169
6170 2007-07-02 Rodrigo Kumpera  <rkumpera@novell.com>
6171
6172         * verify.c: field load/store are now verified, missing only access checks now
6173
6174 2007-06-28  Martin Baulig  <martin@ximian.com>
6175
6176         * mono-debug.c (mono_debug_debugger_version): New public variable.
6177
6178 2007-06-24  Gert Driesen  <drieseng@users.sourceforge.net>
6179
6180         * locales.c: When constructing DateTimeFormat or NumberFormat for
6181         MonoCultureInfo, inherit readonly bit from MonoCultureInfo. The
6182         MonoCultureInfo contructed from the current locale is always
6183         read-only and has UseUserOverride set to true. All MonoCultureInfo
6184         instances returned for GetCultures have both IsReadOnly and
6185         UseUserOverride set to true. Fixes part of bug #81930.
6186
6187 2007-06-22  Jonathan Chambers  <joncham@gmail.com>
6188
6189        * icall-def.h: Update System.__ComObject icalls
6190        * marshal.c: Avoid managed transition (and object creation)
6191        when looking up COM interface in RCW.
6192        * marshal.h: Ditto.
6193        
6194        Code is contributed under MIT/X11 license.
6195
6196 2007-06-22  Zoltan Varga  <vargaz@gmail.com>
6197
6198         * marshal.c (mono_marshal_get_runtime_invoke): Cache in the method image for now
6199         to avoid crashes during assembly unloading.
6200
6201 2007-06-22  Raja R Harinath  <rharinath@novell.com>
6202
6203         Fix MethodInfo.IsGenericMethodDefinition
6204         * reflection.c (mono_reflection_bind_generic_method_parameters):
6205         Rearrange code to ensure we always uses a generic method definition.
6206         * class.c (mono_class_inflate_generic_method_full): Set
6207         'generic_container' field only for generic method definitions.
6208         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition):
6209         Use presense of 'generic_container' field as indication of being a
6210         generic method definition.
6211
6212 2007-06-21  Zoltan Varga  <vargaz@gmail.com>
6213
6214         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6215
6216         * object-internals.h: Reflect changes in the layout of the managed Delegate
6217         class.
6218         
6219         * object-internals.h reflection.c icall-def.h: Applied patch from Robert
6220         Jordan (robertj@gmx.net). Add a dtor to dynamic methods which frees up the
6221         runtime memory used by the dynamic method. Fixes #77146.
6222
6223 2007-06-21  Dick Porter  <dick@ximian.com>
6224
6225         * file-io.h: 
6226         * file-io.c (convert_share): Cope with FileShare.Delete.  Patch
6227         from Wojtek Krawczyk <krawczyk.wojciech@gazeta.pl>, fixes bug
6228         81767.
6229
6230 2007-06-21  Raja R Harinath  <rharinath@novell.com>
6231
6232         * reflection.c (method_encode_methodspec): Add a tripwire.
6233         * class.c (inflate_generic_type): The fully open generic type is
6234         not the same as the generic type definition.
6235
6236 2007-06-21  Martin Baulig  <martin@ximian.com>
6237
6238         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 59.
6239
6240         * mono-debug-debugger.h
6241         (MonoDebuggerBreakpointInfo): Removed.
6242         (mono_debugger_insert_breakpoint_full): Moved to ../mini/debug-mini.h.
6243         (mono_debugger_remove_breakpoint): Likewise.
6244         (mono_debugger_breakpoint_callback): Likewise.
6245         (mono_debugger_start_add_type): Renamed into mono_debugger_add_type().
6246
6247 2007-06-21  Raja R Harinath  <rharinath@novell.com>
6248
6249         * metadata.c (mono_metadata_lookup_generic_class): The fully open
6250         generic type is not the same as the generic type definition.
6251         * class.c (mono_generic_class_get_class): Likewise.
6252
6253 2007-06-20  Geoff Norton  <gnorton@customerdna.com>
6254
6255         * icall.c: The second argument to 
6256         System.Reflection.MethodBase.GetMethodFromHandleInternalType
6257         is a MonoType not a MonoClass.
6258
6259 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
6260
6261         * verify.c: support for function pointers in the verifier
6262
6263 2007-06-20  Rodrigo Kumpera  <kumpera@gmail.com>
6264
6265         * verify.c: unmanaged pointer verification checks (loading unmanaged pointers is unverifiable)
6266
6267 Wed Jun 20 10:22:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
6268
6269         * assembly.c: removed Mono.Data.SqliteClient from the list of
6270         forward-compatible assemblies as it breaks the ABI (bug #81899).
6271
6272 2007-06-19  Raja R Harinath  <rharinath@novell.com>
6273
6274         * metadata.c (mono_metadata_lookup_generic_class): Protect cache
6275         lookup/update with the loader lock.
6276         * reflection.c (mono_class_bind_generic_parameters): No need to
6277         protect mono_metadata_lookup_* with the loader lock.
6278         * class.c (inflate_generic_type): Likewise.
6279         
6280         * metadata.c (ginst_in_image): Avoid mono_class_from_mono_type
6281         on a generic instantiated type.
6282
6283 2007-06-18  Rodrigo Kumpera <kumpera@gmail.com>
6284
6285         *verify.c: produce meanfull error messages on verification error
6286         *verify.c: fixed some cases of verification errors reported as validation errors
6287         *pedump.c: fixed the error name array, now it shows validation errors properly
6288         *verify.h: fixed the contant that should be used for verification errors
6289
6290 Mon Jun 18 17:07:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
6291
6292         * metadata.c, image.c, metadata-internals.h: part of the fixes needed
6293         for bug #77596, 81858 and 80743 (generics data structures on domain
6294         unload).
6295
6296 2007-06-15  Raja R Harinath  <rharinath@novell.com>
6297
6298         Avoid allocating 'MonoGenericContext' on the heap.
6299         * class-internals (_MonoMethodInflated::context): Make field
6300         inline, not a pointer.
6301         * loader.c (method_from_methodspec): Allocate 'new_context' on the
6302         stack.  Use the context embedded within the inflated method as the
6303         hash key, rather than 'new_context'.
6304         * class.c (inflate_generic_context): Simplify.  Return a struct
6305         rather than allocating on the heap.
6306         (mono_class_inflate_generic_method_full): Update to changes.  Now,
6307         doesn't salt away a copy of the context -- simplifying the
6308         lifetime rules of a 'MonoGenericContext *'.
6309         (mono_method_get_context): Return pointer to embedded context.
6310         (setup_generic_array_ifaces): Allocate temporary context on stack.
6311         * reflection.c (inflate_mono_method): Likewise.
6312         (mono_reflection_bind_generic_method_parameters): Likewise.
6313         Use the context embedded within the inflated method as the hash key.
6314
6315         Avoid a source of allocation of 'MonoGenericContext'.
6316         * class-internals.h (_MonoGenericClass::context): Combine 'inst'
6317         and 'cached_context' fields into embedded 'MonoGenericContext' field.
6318         * class.c: Update to changes.
6319         (mono_generic_class_get_context): Simplify drastically.  Now just
6320         returns a pointer to the field.
6321         * metadata-internals.h (mono_metadata_generic_context_hash): Mark
6322         argument as a const pointer.
6323         (mono_metadata_generic_context_equal): Likewise.
6324         * metadata.c, loader.c, icall.c, reflection.c, verify.c:
6325         Update to changes.
6326
6327 2007-06-14  Rodrigo Kumpera  <kumpera@gmail.com>
6328
6329         * verify.c improved the handling of brtrue/brfalse, factored out common code
6330
6331 2007-06-14  Raja R Harinath  <rharinath@novell.com>
6332
6333         Kill MonoGenericMethod.
6334         * class-internals.h (MonoGenericContext::method_inst): Rename from
6335         'gmethod' and convert to a MonoGenericInst.
6336         (MonoGenericMethod): Remove.
6337         * metadata.h (MonoGenericMethod): Note that the name is obsolete.
6338         * loader.c (method_from_methodspec): Update to changes.  Use a
6339         MonoGenericContext as the key to the hashtable.
6340         * metadata.c (mono_metadata_generic_context_equal): Rename from 
6341         'mono_metadata_generic_method_equal' and take MonoGenericContext.
6342         (mono_metadata_generic_context_hash): Likewise from
6343         'mono_metadata_generic_method_hash'.  Change hash function.
6344         (mono_metadata_load_generic_params): Update to changes.
6345         (mono_get_shared_generic_method): Remove.
6346         * metadata-internals.h (mono_get_shared_generic_method): Remove.
6347         * class.c (inflate_generic_type) [MONO_TYPE_MVAR]: Update to changes.
6348         (inflate_generic_context): Likewise.
6349         (mono_class_inflate_generic_method_full): Likewise.
6350         (setup_generic_array_ifaces): Likewise.
6351         (mono_class_create_from_typespec): Likewise.
6352         * reflection.c (encode_generic_method_sig): Take a MonoGenericContext.
6353         (method_encode_methodspec): Update callsite.
6354         (reflection_methodbuilder_to_mono_method): Update to changes.
6355         (mono_reflection_bind_generic_method_parameters): Likewise.  Use a
6356         MonoGenericContext as the key to the hashtable.
6357         (inflate_mono_method): Update to changes.
6358
6359         * class-internals.h (MonoGenericMethod::container): Remove.
6360         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
6361
6362 Thu Jun 14 12:40:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
6363
6364         * profiler-private.h, profiler.c, profiler.h: added API to profile
6365         exception events.
6366
6367 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
6368
6369         * verify.c: Fixed pointer type handling, some code and message formating and two invalid assigments 
6370
6371 2007-06-13  Rodrigo Kumpera  <kumpera@gmail.com>
6372
6373         * verify.c: method invocation is now validated, now we verify parameter types on stack.
6374         Fixed overflow and underflow not aborting the verification process.
6375
6376 2007-06-13  Mark Probst  <mark.probst@gmail.com>
6377
6378         * class-internals.h (MonoStats): Added stats entries for dynamic
6379         code allocations.
6380
6381 2007-06-12  Zoltan Varga  <vargaz@gmail.com>
6382
6383         * loader.c (mono_free_method): Free header->locals and header->clauses.
6384
6385         * marshal.c (mono_mb_create_method): Make a copy of the locals as well in the
6386         dynamic case.
6387
6388         * threads.c (mono_thread_get_stack_bounds): Fix memory leak.
6389
6390         * class.c (setup_interface_offsets): Allocate memory from the image mempool.
6391
6392 2007-06-12  Raja R Harinath  <rharinath@novell.com>
6393
6394         * verify.c (TYPE_MAX): Set it to 8 to match the dimensions of all
6395         the tables.
6396
6397 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
6398
6399         *pedump.c (main): return error code 4 if assembly cannot be loaded instead of segfaulting
6400
6401 2007-06-11  Raja R Harinath  <harinath@gmail.com>
6402
6403         MonoGenericMethod on a diet
6404         * class-internals.h (_MonoMethodInflated::reflection_info): Move
6405         here ...
6406         (_MonoGenericMethod::reflection_info): ... from here.
6407         * icall.c (ves_icall_MonoMethod_GetGenericMethodDefinition):
6408         Update to changes.
6409         * reflection.c (inflate_mono_method): Likewise.
6410         (mono_reflection_bind_generic_method_parameters): Likewise.
6411
6412 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
6413
6414         *verify.c: all debu printf statements are now guarded by VERIFY_DEBUG
6415         *verify.c: factored long ldarg forms to share code with short forms
6416
6417 2007-06-11  Rodrigo Kumpera  <kumpera@gmail.com>
6418
6419         *verify.c: fixed code formating factored some duplicate code
6420         into a new function
6421
6422         *verify.h: fixed binary incompatibility introduced earlier
6423
6424         *pedump.c: fixed formating
6425
6426 2007-06-11  Raja R Harinath  <harinath@gmail.com>
6427
6428         Fix assertion when disassembling Mono.C5.dll
6429         * loader.c (method_from_methodspec): Avoid inflating a method
6430         twice with the same context.  If the methodref is inflated, use
6431         the declaring method instead.
6432
6433         * class.c (mono_class_from_generic_parameter): Fix case similar to
6434         bug #81830 handled below, but for method containers.
6435
6436 2007-06-10  Raja R Harinath  <harinath@gmail.com>
6437
6438         * class.c (inflate_generic_type) [MONO_TYPE_CLASS]: Don't call
6439         get_shared_generic_class.  Directly inflate the instance.
6440         [MONO_TYPE_GENERICINST]: Inline inflate_generic_class.
6441         (inflate_generic_class): Delete.
6442         (get_shared_generic_class): Delete.  Move setting of
6443         'cached_class' and 'cached_context' ...
6444         * metadata.c (mono_metadata_lookup_generic_class): ... here.
6445
6446         * metadata.c (mono_metadata_lookup_generic_class): Change
6447         signature to take the components of a MonoGenericClass rather than
6448         an allocated MonoGenericClass.  Change semantics to be intern-like.
6449         * reflection.c (mono_class_bind_generic_parameters): Update to
6450         changes.  Make locking region tighter.
6451         * class.c (inflate_generic_class): Update to changes.
6452         (get_shared_generic_class): Likewise.
6453         * metadata-internals.h: Likewise.
6454
6455         * reflection.c (mono_class_bind_generic_parameters): Take and
6456         return a MonoClass*, not a MonoType*.  Add 'is_dynamic' parameter.
6457         (mono_reflection_bind_generic_parameters): Use
6458         'mono_class_bind_generic_parameters' rather than duplicate the code.
6459         * class.c (mono_bounded_array_class_get): Update to changes.
6460         * object-internals.h: Likewise.
6461
6462         * reflection.c (mono_class_bind_generic_parameters): Only support
6463         parameterizing generic type definitions.  Remove support for other
6464         open types.
6465
6466 2007-06-08  Zoltan Varga  <vargaz@gmail.com>
6467
6468         * loader.c (mono_free_method): Free method->signature as well. Fixes #81832.
6469
6470         * marshal.c (mono_marshal_get_managed_wrapper): Allocate the signature using malloc
6471         in the dynamic case.
6472
6473 2007-06-08  Gert Driesen  <drieseng@users.sourceforge.net>
6474
6475         * threads.c: When cleaning up thread, reset the Background bit.
6476         Fixes bug #81720.
6477
6478 2007-06-08  Jonathan Chambers  <joncham@gmail.com>
6479
6480        * metadata.c: Move variable declarations to top of scope.
6481        * verify.c: Move variable declarations to top of scope.
6482
6483        Code is contributed under MIT/X11 license.
6484
6485 2007-06-08  Raja R Harinath  <rharinath@novell.com>
6486
6487         * reflection.c (mono_class_bind_generic_parameters): Replace
6488         open-coded loop with mono_metadata_inflate_generic_inst.
6489
6490         * class.c (get_shared_generic_class): Don't call
6491         mono_get_shared_generic_inst.  Use the container's own
6492         'class_inst'.
6493
6494         * metadata.c (mono_metadata_load_generic_params): Move
6495         initialization of 'context' field here from ...
6496         * class.c (mono_class_create_from_typedef): ... here, and ...
6497         * loader.c (mono_get_method_from_token): ... here.
6498
6499         * class.c (get_shared_generic_class): Rename from
6500         mono_get_shared_generic_class and make static.
6501         (mono_get_shared_generic_inst): Move to metadata.c.
6502         * loader.c (mono_get_shared_generic_method): Likewise.
6503         * class-internals.h, metadata-internals.h: Update to changes.
6504
6505         Fix #81830
6506         * class.c (mono_class_from_generic_parameter): Don't assume a
6507         generic container owner exists.  Generic containers from monodis
6508         don't have any.
6509
6510 2007-06-06  Rodrigo Kumpera  <kumpera@gmail.com>
6511
6512         * pedump.c: pedump exists with 2 if assembly is not verifiable and 3 if invalid
6513         * verify.h: new typedefs to returns the non-verifiable status
6514         * verify.c: initial implementation of generics, stack merging and object compatibility check
6515
6516 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6517
6518         * class.c, image.c, class-internals.h (MonoImage): class_cache is
6519         a MonoInternalHashTable again (fixed bug in internal hash table
6520         code).
6521
6522 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6523
6524         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
6525         MonoInternalHashTable again (fixed bug in internal hash table
6526         code).
6527
6528 2007-06-06  Mark Probst  <mark.probst@gmail.com>
6529
6530         * class.c, image.c, class-internals.h, domain.c,
6531         domain-internals.h (MonoImage): Reverting MonoInternalHashTable
6532         changes.  Have to figure out what makes them break the SWF
6533         regression.
6534
6535 2007-06-04  Mark Probst  <mark.probst@gmail.com>
6536
6537         * class.c, image.c, class-internals.h (MonoImage): class_cache is
6538         a MonoInternalHashTable now.
6539
6540 2007-06-04  Mark Probst  <mark.probst@gmail.com>
6541
6542         * domain.c, domain-internals.h (MonoDomain): jit_code_hash is a
6543         MonoInternalHashTable now.
6544
6545 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
6546
6547         * domain-internals.h (MonoDomain): Add two new hash tables to store delegate
6548         invoke_impl code.
6549
6550         * object-internals.h (_MonoDelegate): Reflect changes to managed object layout.
6551
6552         * object.c (mono_delegate_ctor): Initialize invoke_impl field with an arch
6553         dependent trampoline.
6554
6555         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
6556
6557         * icall.c (ves_icall_System_Delegate_SetMulticastInvoke): New icall.
6558
6559 2007-05-29  Robert Jordan  <robertj@gmx.net>
6560
6561         * marshal.[c|h]: add mono_win32_compat_* wrappers. Fixes #81754.
6562
6563 2007-05-28  Zoltan Varga  <vargaz@gmail.com>
6564
6565         * icall.c (ves_icall_get_method_info): Handle loader errors. Fixes #81724.
6566
6567 2007-05-25  Jonathan Chambers  <joncham@gmail.com>
6568
6569        * marshal.c: Fix interface lookup loops for
6570        cominterop_get_com_slot_for_method and 
6571        cominterop_get_method_interface. Only need to lookup
6572        if type is a class, else use interface type method is on.
6573
6574        Code is contributed under MIT/X11 license.
6575
6576 2007-05-25  Sebastien Pouliot  <sebastien@ximian.com>
6577
6578         * reflection.c: HasSecurity can be present even if no specially 
6579         encoded (CAS) attributes are available (e.g. SuppressUnmanagedCode
6580         SecurityAttribute). Fix CAS regression tests on buildbot.
6581
6582 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
6583
6584        * appdomain.c: Add configure checks for header files.
6585        * image.c: Add configure checks for header files.
6586        * file-io.c: Add configure checks for header files.
6587        * debug-mono-symfile.c: Add configure checks for header files.
6588        * threadpool.c: Add configure checks for header files.
6589        * console-io.c: Add configure checks for header files.
6590        * profiler.c: Add configure checks for header files.
6591        * rawbuffer.c: Add configure checks for header files.
6592        * icall.c: Add configure checks for header files.
6593        * rand.c: Add configure checks for header files.
6594        * socket-io.c: Add configure checks for header files.
6595
6596        Code is contributed under MIT/X11 license.
6597
6598 2007-05-24  Zoltan Varga  <vargaz@gmail.com>
6599
6600         * reflection.c (mono_custom_attrs_from_builders): Remove the 
6601         assertion as it breaks the build.
6602         
6603         * reflection.c (mono_custom_attrs_from_builders): Add an assertion.
6604
6605         * reflection.c (lookup_custom_attr): Make a copy here too.
6606
6607         * image.c (mono_image_check_for_module_cctor): Avoid accessing metadata in
6608         dynamic images.
6609
6610         * class.c (mono_class_init): Avoid accessing the metadata in dynamic
6611         images.
6612
6613         * reflection.c (mono_custom_attrs_from_param): Make a copy of the dynamic attr
6614         info.
6615
6616 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
6617
6618         * reflection.c (encode_cattr_value): Fix yet another object cattr encoding issue.
6619         (load_cattr_value): Ditto.
6620
6621 2007-05-20  Zoltan Varga  <vargaz@gmail.com>
6622
6623         * marshal.c (mono_marshal_get_delegate_invoke): Improve the generated IL a little.
6624
6625 2007-05-19  Gert Driesen  <drieseng@users.sourceforge.net>
6626
6627         * threads.c: In "start_wrapper", set apartment_state to MTA if
6628         apartment_state is Unknown and we're running on 2.0 profile or
6629         higher.
6630         * object.c: In "mono_runtime_exec_main", if STAThread is not applied
6631         to main method, then set apartment_state to Unknown on 1.0 profile,
6632         and MTA on 2.0 profile.
6633
6634 2007-05-16  Jb Evain  <jb@nurv.fr>
6635
6636         * class-internals.h (MonoDefaults): Add an attribute_class and
6637           customattribute_data_class.
6638         * domain.c (mono_init_internal): Populate them.
6639         * reflection.c: Use them to remove duplicates. Make a vew
6640         MonoClass variables `static'.
6641
6642 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
6643
6644         * class-internals.h: Added "MonoVTable.interface_bitmap" as a next
6645         step in implementing IMT, so that all isinst checks now can go
6646         through the bitmap.
6647         This was needed because vtables for TransparentProxy need to look
6648         like the vtable of the "target" class, so they need to point to
6649         its interface bitmap directly.
6650
6651         * object.c: inside "mono_class_create_runtime_vtable" and
6652         "mono_class_proxy_vtable", initialize "MonoVTable.interface_bitmap".
6653
6654 2007-05-15  Atsushi Enomoto  <atsushi@ximian.com>
6655
6656         * object-internals.h
6657           culture-info.h : added territory field in MonoCulture and
6658           CultureInfoEntry foreach. Added lcid field in RegionInfoEntry.
6659         * locales.c : fill territory field above too.
6660         * culture-info-table.h : regenerated.
6661
6662 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
6663
6664         * class-internals.h (_MonoGenericContainer): Widen type_argc filed to 31 bits.
6665         Fixes #81599.
6666
6667 2007-05-11  Jonathan Chambers  <joncham@gmail.com>
6668
6669         * object.c: Always initialize apartment, even if 
6670         there is no custom attributes on entry point.
6671         
6672         Code is contributed under MIT/X11 license.
6673
6674 2007-05-10  Jonathan Chambers  <joncham@gmail.com>
6675
6676         * marshal.c: LPTSTR == LPWSTR on Win32. Fixes #81370.
6677         * metadata.c: If no encoding is set, check for unicode
6678         on class.
6679         
6680         Code is contributed under MIT/X11 license.
6681
6682 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
6683
6684         * threads.c: Handle if mono_thread_current returns NULL 
6685         
6686         Code is contributed under MIT/X11 license.
6687
6688 2007-05-09  Jonathan Chambers  <joncham@gmail.com>
6689
6690         * threads.c: Initialize Thread.AprtmentState and set on Thread.Start
6691         in start_wrapper. Added mono_thread_init_apartment_state and
6692         mono_thread_cleanup_apartment_state.
6693         * object.c: Initialize thread apartment state on main thread
6694         by checking for STAThreadAttribute on entry point.
6695         * object-internals.h: Add apartment_state field to MonoThread.
6696         * threads-types.h: Add unmanaged definition of 
6697         System.Threading.ApartmentState, MonoThreadApartmentState.
6698         
6699         Code is contributed under MIT/X11 license.
6700         
6701 2007-05-08  Jonathan Chambers  <joncham@gmail.com>
6702
6703         * class.c: Fix windows build.
6704         * class-internals.h: Fix windows build.
6705         
6706         Code is contributed under MIT/X11 license.
6707
6708 2007-05-08  Robert Jordan  <robertj@gmx.net>
6709
6710         * process.c (CreateProcess_internal):
6711         Pass CREATE_NO_WINDOW to CreateProcess when ProcessStartupInfo
6712         .CreateNoWindow was specified. Fixes #81496.
6713
6714 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
6715
6716         * class-internals.h: Removed "MonoClass.interface_offsets" as a first
6717         step in implementing IMT, replaced it with two compact arrays
6718         (interfaces_packed and interface_offsets_packed) and a bitmap that
6719         is used for isinst checks (interface_bitmap).
6720
6721         * class.c: (compare_interface_ids): compare function to pass to
6722         bsearch when looking for an interface with a given id.
6723         (mono_class_interface_offset): reimplemented using bsearch on
6724         interfaces_packed, getting the offset from interface_offsets_packed.
6725         (print_implemented_interfaces): utility debugging function.
6726         (setup_interface_offsets): reworked to initialize interfaces_packed,
6727         interface_offsets_packed and interface_bitmap.
6728
6729         * object.c: replaced all accesses to "MonoClass.interface_offsets"
6730         with uses of interfaces_packed and interface_offsets_packed.
6731
6732 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
6733
6734         * class-internals.h: Added MONO_CLASS_IMPLEMENTS_INTERFACE macro and
6735         mono_class_interface_offset prototype to wrap all accesses to
6736         "MonoClass.interface_offsets".
6737
6738         * class.c: Implemented mono_class_interface_offset, and wrapped all
6739         accesses to "MonoClass.interface_offsets".
6740
6741         * monodiet.c, object.c, marshal.c, icall.c: wrapped all accesses to
6742         "MonoClass.interface_offsets".
6743
6744 Tue May 8 13:02:09 CEST 2007 Paolo Molaro <lupus@ximian.com>
6745
6746         * icall.c, icall-def.h: implemented new GetFieldFromHandle and
6747         GetMethodFromHandle overloads (bug #78637).
6748
6749 Tue May 8 12:22:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
6750
6751         * assembly.c: parse ProcessorArchitecture in assembly name and ignore
6752         it for now (see mono-devel, from Marek Sieradzki <marek.sieradzki@gmail.com>).
6753
6754 2007-05-01  Zoltan Varga  <vargaz@gmail.com>
6755
6756         * icall.c (custom_attrs_get_by_type): Handle loading errors gracefully. Fixes
6757         #81498.
6758
6759         * reflection.c (mono_reflection_get_custom_attrs_by_type): Handle loading errors
6760         gracefully.
6761         (mono_custom_attrs_from_index): Ditto.
6762
6763         * icall.c (ves_icall_InternalInvoke): Allow calling ctors of abstract classes. 
6764         Fixes #81501.
6765
6766 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
6767
6768         * metadata.c (mono_metadata_parse_type_full): Avoid an invalid free since the type
6769         is now allocated from a mempool.
6770
6771 2007-04-28  Zoltan Varga  <vargaz@gmail.com>
6772
6773         * threads.c (build_wait_tids): Do not call mono_monitor_enter () here since the
6774         caller holds threads_lock, leading to deadlocks. Fixes #81476.
6775
6776 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
6777
6778         * loader.c (mono_loader_error_prepare_exception): Fix crash caused by calling
6779         mono_loader_clear_error () too late. Fixes #81463.
6780
6781 2007-04-26  Atsushi Enomoto  <atsushi@ximian.com>
6782
6783         * culture-info-table.h : regenerated.
6784
6785 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * appdomain.c (add_assemblies_to_domain): Fix crash when an assembly reference
6788         is missing.
6789
6790 2007-04-25  Dick Porter  <dick@ximian.com>
6791
6792         * Makefile.am: Put the mingw enforced-optimisation back into the
6793         PLATFORM_WIN32 section.
6794
6795 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
6796
6797         * reflection.c (mono_image_load_module_dynamic): Fix crash introduced by previous
6798         patch.
6799
6800         * image.c (mono_image_load_module): New API function to load a module reference.
6801
6802         * image.c (load_modules): Load modules lazily. Fixes #80812.
6803
6804         * class.c (mono_class_from_typeref): Use mono_image_load_module.
6805         
6806         * reflection.c (mono_image_load_module_dynamic): Copy image->modules_loaded too.
6807
6808         * object-internals.h reflection.c icall-def.h (mono_image_load_module): Rename this 
6809         to mono_image_load_module_dynamic.
6810
6811 2007-04-23  Jonathan Chambers  <joncham@gmail.com>
6812
6813         * marshal.c: Fix calling convention for CCW on non-windows
6814         platforms. STDCALL on windows, CDECL everywhere else to work 
6815         with XPCOM and MainWin COM.
6816         
6817         Code is contributed under MIT/X11 license.
6818
6819 2007-04-23  Martin Baulig  <martin@ximian.com>
6820
6821         Fix #80969.
6822
6823         * loader.c
6824         (method_from_memberref): Added `gboolean *used_context' argument.
6825         (mono_get_method_from_token): Likewise.
6826         (mono_get_method_full): Don't insert the method in the cache when
6827         `used_context' is true.
6828
6829 2007-04-23  Raja R Harinath  <rharinath@novell.com>
6830
6831         * monodiet.c (add_types_from_method): Fix "wrong type" warning.
6832
6833         * reflection.c (mono_reflection_bind_generic_parameters): Don't
6834         create new MonoTypes for returned types.
6835         * class.c (mono_generic_class_get_class): Export mono-internal.
6836         * class-internals.h: Update to changes.
6837
6838 Thu Apr 19 16:45:55 CEST 2007 Paolo Molaro <lupus@ximian.com>
6839
6840         * threadpool.c, threadpool.h, icall-def.h: patch from
6841         Robert Jordan to implemnt ThreadPool.SetMaxThreads.
6842
6843 2007-04-18  Zoltan Varga  <vargaz@gmail.com>
6844
6845         * threads.c (mono_thread_get_stack_bounds): Fix windows build.
6846         
6847         * threads.c (mono_thread_get_stack_bounds): Remove an assert which can be triggered.
6848
6849         * threads.c (mono_thread_get_stack_bounds): New helper function.
6850
6851         * threads.c (mono_thread_attach): Applied patch from horst.reiterer@fabasoft.com.
6852         Correctly compute stack bounds when attaching. Fixes #81394.
6853
6854 Wed Apr 18 18:28:41 BST 2007 Paolo Molaro <lupus@ximian.com>
6855
6856         * reflection.c: fix handling of doubles in custom attributes
6857         for the arm-fpa format (bug #81368).
6858
6859 2007-04-18  Raja R Harinath  <rharinath@novell.com>
6860
6861         * reflection.c (assembly_add_win32_resources): Mildly relax an
6862         bounds check to let the end pointer point just past the end of the
6863         allocated buffer.  (may fix #81384)
6864
6865 2007-04-17  Atsushi Enomoto  <atsushi@ximian.com>
6866
6867         * culture-info-table.h : regenerated.
6868
6869 2007-04-07  Zoltan Varga  <vargaz@gmail.com>
6870
6871         * threads.c (start_wrapper): Call push_appdomain_ref () earlier to fix races where
6872         the thread is aborted early.
6873
6874 2007-04-05  Dick Porter  <dick@ximian.com>
6875
6876         * file-io.c (ves_icall_System_IO_MonoIO_GetFileSystemEntries): use
6877         FindFirstFile()/FindNextFile() to find entries.  This lets the
6878         io-layer versions use MONO_IOMAP compatibility helpers.  Fixes bug
6879         81038.
6880
6881         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the usage of
6882         the parameters of
6883         ves_icall_System_IO_MonoIO_GetFileSystemEntries() has changed.
6884
6885 2007-04-04  Martin Baulig  <martin@ximian.com>
6886
6887         * debug-helpers.c
6888         (mono_method_desc_full_match): Add support for nested classes.
6889
6890 2007-04-02  Zoltan Varga  <vargaz@gmail.com>
6891
6892         * marshal.c (cominterop_get_managed_wrapper_adjusted): Fix warnings.
6893
6894 2007-04-01  Zoltan Varga  <vargaz@gmail.com>
6895
6896         * threads.c (abort_appdomain_thread): Avoid handle leakage if we are
6897         waiting for too many threads.
6898
6899 2007-03-28  Sebastien Pouliot  <sebastien@ximian.com>
6900
6901         * environment.c: Fix return value check on uname so we can get the 
6902         executing version on Solaris operating systems.
6903
6904 2007-03-28  Jb Evain  <jbevain@gmail.com>
6905
6906         * class.c (mono_type_get_name_recurse): Complete the
6907         fix for the creation of assembly qualified names for
6908         pointer types. Fixes #81208.
6909
6910 2007-03-27  Dick Porter  <dick@ximian.com>
6911
6912         * appdomain.c (MONO_CORLIB_VERSION): Increment, as the signature
6913         of ves_icall_System_Threading_Mutex_ReleaseMutex_internal() has
6914         changed.
6915
6916         * threads.c
6917         (ves_icall_System_Threading_Mutex_ReleaseMutex_internal): Return
6918         the value of ReleaseMutex().
6919
6920 2007-03-27  Dick Porter  <dick@ximian.com>
6921
6922         * socket-io.c (ipaddress_to_struct_in_addr): IPAddress is stored
6923         in little-endian order, not network endian, so must be converted
6924         to host endian here.  Fixes bug 80593.
6925
6926 2007-03-22  Jb Evain  <jbevain@gmail.com>
6927
6928         * class.c (mono_type_get_name_recurse): Fix the creation of assembly
6929         qualified names for pointer types. Fixes #81208.
6930
6931 2007-03-21  Jonathan Chambers  <joncham@gmail.com>
6932
6933         * marshal.c: Add support for PreserveSigAttribute. 
6934         
6935         Code is contributed under MIT/X11 license.
6936
6937 2007-03-14  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * process.c: Fix endianness issues. Fixes #81126.
6940
6941         * reflection.c (mono_reflection_create_dynamic_method): Fix the last change so
6942         multiple circular calls made from the same DynamicMethod work. Fixes #81141.
6943
6944         * image.c (mono_image_lookup_resource): Make this work on big-endian
6945         machines.Change API contract so the caller needs to free the return value.
6946         
6947         * process.c (process_get_fileversion): Adapt to mono_image_lookup_resource ()
6948         API change.
6949         
6950 2007-03-14  Martin Baulig  <martin@ximian.com>
6951
6952         * debug-helpers.c (mono_type_get_desc): In `MONO_TYPE_ARRAY', use
6953         mono_type_get_desc() as well.
6954
6955 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
6956
6957         * icall.c:  Fix environ access in VS.  
6958         
6959 2007-03-13  Alp Toker  <alp@atoker.com>
6960
6961         * icall.c (ves_icall_MonoType_GetElementType): For enums, return null
6962         rather than the underlying type. Based on a patch by Ben Maurer. Fixes
6963         #63841.
6964
6965 2007-03-12  Zoltan Varga  <vargaz@gmail.com>
6966
6967         * reflection.c (mono_reflection_create_dynamic_method): Add support for 
6968         circular references among dynamic methods. Fixes #81091.
6969
6970         * object-internals.h (MonoReflectionDynamicMethod): Add 'referenced_by' field.
6971
6972 2007-03-09  Martin Baulig  <martin@ximian.com>
6973
6974         * reflection.c (encode_constant): Add support for MONO_TYPE_GENERICINST.
6975
6976 2007-03-09  Jonathan Chambers  <joncham@gmail.com>
6977
6978         * appdomain.c:  Fix shadow copy on Windows. Use g_snprintf instead
6979         of snprintf as it doesn't exist on Win32 (VS build); also for uniformity.  
6980         
6981         Code is contributed under MIT/X11 license.
6982         
6983 2007-03-09  Gert Driesen  <drieseng@users.souceforge.net>
6984
6985         * loader.c: Reapply patch for bug #79424.
6986
6987 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6988
6989         * metadata.c (mono_type_to_unmanaged): Only convert object to
6990         MARSHAL_CONV_SAFEHANDLE on the 2.0 profile.
6991
6992 Tue Mar 6 15:39:48 CET 2007 Paolo Molaro <lupus@ximian.com>
6993
6994         * class-internals.h, class.c, metadata.c, reflection.c: removed unused
6995         (and incorrectly set) is_reference field from MonoGenericInst.
6996
6997 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
6998
6999         * assembly.c (mono_assembly_load_from_full): Call mono_assemblies_unlock ()
7000         a little earlier.
7001
7002         * icall.c (ves_icall_type_Equals): Rename this to ves_icall_System_Type_EqualsInternal.
7003
7004         * icall-def.h: Rename Type:Equals to Type:EqualsInternal.
7005
7006 2007-03-05  Miguel de Icaza  <miguel@novell.com>
7007
7008         * file-io.c (ves_icall_System_IO_MonoIO_Open): Use the new
7009         FileOptions.1 value to mean "temporary", map that to
7010         FILE_ATTRIBUTE_TEMPORARY and use that to signal 600 permissions.
7011
7012         Fixes 80688
7013
7014 2007-03-03  Marek Habersack  <mhabersack@novell.com>
7015
7016         * appdomain.c: implement MS .Net style shadow copying. Copies of
7017         the assemblies are made in a subdirectory of the dynamic base
7018         directory, the assembly names are preserved.
7019         Copy .mdb and .config files along with the assemblies being shadowed.
7020
7021 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
7022
7023         * marshal.c (emit_object_to_ptr_conv): Emit valid IL for handling HandleRefs.
7024         (emit_marshal_handleref): Ditto.
7025
7026         * profiler.c: Applied patch from Tor Lillqvist (tml@novell.com) to fix output
7027         on Visual C++. Fixes #80671.
7028
7029 Wed Feb 28 16:53:40 CET 2007 Paolo Molaro <lupus@ximian.com>
7030
7031         * boehm-gc.c, null-gc.c, object.h, object.c: sgen gc fixes
7032         for clone operations.
7033
7034 2007-02-28  Zoltan Varga  <vargaz@gmail.com>
7035
7036         * marshal.c: Fix warnings.
7037
7038 Fri Feb 23 15:06:57 CET 2007 Paolo Molaro <lupus@ximian.com>
7039
7040         * loader.c: allow case-insensitive matching of the dll name
7041         in dllmap handling when prefixed with "i:".
7042
7043 2007-02-20  Jonathan Chambers  <joncham@gmail.com>
7044
7045         * threads.c: Fix #ifdef for dummy_apc function for VS.
7046
7047 Tue Feb 20 11:59:42 CET 2007 Paolo Molaro <lupus@ximian.com>
7048
7049         * threads.c: don't throw in MemoryBarrier (), use lock/unlock.
7050
7051 2007-02-19  Massimiliano Mantione  <massi@ximian.com>
7052         * class.c (mono_class_setup_vtable_general): Fix bug 75903,
7053         giving precedence to the methods with a fully qualified name
7054         (InterfaceName.MethodName) when building the interface sections
7055         of the vtable.
7056
7057 2007-02-16  Dick Porter  <dick@ximian.com>
7058
7059         * threadpool.c (append_job): Fix fast-path array handling, so it's
7060         less likely the array will grow exponentially when the load is
7061         heavy.
7062
7063 Fri Feb 16 19:17:30 CET 2007 Paolo Molaro <lupus@ximian.com>
7064
7065         * metadata-internals.h, loader.c: fix dllmap lookup order
7066         for non-function maps, too, and prepare for fallback code.
7067
7068 2007-02-12  Robert Jordan  <robertj@gmx.net>
7069
7070         * marshal.c, marshal.h, icall-def.h: rename mono_marshal_realloc
7071         to ves_icall_System_Runtime_InteropServices_Marshal_ReAllocHGlobal
7072         and use GlobalReAlloc on WIN32 to be in sync with GlobalAlloc,
7073         GlobalFree. Fixes a part of bug #77075.
7074
7075 Mon Feb 12 21:10:07 CET 2007 Paolo Molaro <lupus@ximian.com>
7076
7077         * loader.c: implemented typedef parent in field memberref.
7078
7079 2007-02-11  Jonathan Chambers  <joncham@gmail.com>
7080
7081         * marshal.c: Fix warnings and remember to call Release on
7082         IUnknown of RCW.
7083         
7084         Code is contributed under MIT/X11 license.
7085
7086 2007-02-10  Miguel de Icaza  <miguel@novell.com>
7087
7088         * class-internals.h: Add MonoHandleRef definition, and
7089         handleref_class to mono_defaults. 
7090
7091         * metadata.c (mono_type_to_unmanaged): If we find HandleRefs in a
7092         structure, use new conversion MONO_MARSHAL_CONV_HANDLEREF.
7093
7094         * marshal.c (emit_ptr_to_object_conv): Add support for HandleRefs
7095         (do nothing on this stage)
7096         (emit_object_to_ptr_conv): Extract the handle from the HandleRef.  
7097         (emit_marshal_handleref): New method, used for argument handling
7098         of HandleRefs. 
7099
7100 2007-02-08  Jonathan Chambers  <joncham@gmail.com>
7101
7102         * class.c (mono_class_setup_parent): Lazily init com types.
7103         * domain.c (mono_init_internal, mono_init_com_types): Lazily 
7104         init com types.
7105         * object.c (mono_remote_class_vtable): Lazily init com types.
7106         * class-internals.h: Add iunknown and idispatch to MonoDefaults.
7107         * object-internals.h: Add MonoComInteropProxy and MonoReflectionGuidAttribute.
7108         * domain-internals.h: Expose mono_init_com_types.
7109         * icall-def.h: Add icalls for ComInteropProxy, __ComObject, and Marshal.
7110         * marshal.c: Add mutex for cominterop use. Init locals for wrapper methods.
7111         Add support for COM Callable Wrapper marshalling.
7112         * marshal.h: Add icall definitions.
7113         * gc.c: Handle freeing of CCWs in finalizer code.
7114         
7115         Code is contributed under MIT/X11 license.
7116
7117 Thu Feb 8 12:46:18 CET 2007 Paolo Molaro <lupus@ximian.com>
7118
7119         * reflection.c: changed all the signature encoding code to use
7120         a variable-sized buffer.
7121
7122 Wed Feb 7 20:37:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7123
7124         * marshal.c: locking fixes: never take the loader lock
7125         or other runtime locks when holding the marshal lock
7126         (fixes bug#80664).
7127
7128 Wed Feb 7 18:49:10 CET 2007 Paolo Molaro <lupus@ximian.com>
7129
7130         * marshal.c: make the delegate function pointer mapping
7131         work for the moving GC.
7132
7133 Mon Jan 29 11:30:46 CET 2007 Paolo Molaro <lupus@ximian.com>
7134
7135         * marshal.c: fix from Robert Jordan (robertj@gmx.net)
7136         for bug #80618.
7137
7138 Fri Jan 26 12:49:23 CET 2007 Paolo Molaro <lupus@ximian.com>
7139
7140         * image.h, loader.c, metadata-internals.h: use mono-dl instead of
7141         gmodule.
7142
7143 Fri Jan 26 12:00:45 CET 2007 Paolo Molaro <lupus@ximian.com>
7144
7145         * threadpool.c: made the code moving-GC safe.
7146
7147 Thu Jan 25 20:31:41 CET 2007 Paolo Molaro <lupus@ximian.com>
7148
7149         * assembly.c, boehm-gc.c, class-internals.h, class.c,
7150         debug-mono-symfile.c, domain.c, locales.c, marshal.c, metadata.c,
7151         monitor.c, mono-debug.c, mono-debug.h, object.c, profiler.c:
7152         warning cleanup.
7153         * reflection.c: warning cleanup, some threading and moving GC fixes.
7154
7155 Thu Jan 25 16:22:36 CET 2007 Paolo Molaro <lupus@ximian.com>
7156
7157         * class.c, loader.c: create the needed Set/Get/Address array methods
7158         as well as the .ctors in mono_class_init (), fixes bug #80567.
7159
7160 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
7161
7162         * class.c (mono_class_layout_fields): When force-aligning a field, make sure
7163         we doesn't decrease its alignment. Should fix the sparc build.
7164
7165 2007-01-24  Dick Porter  <dick@ximian.com>
7166
7167         * socket-io.c
7168         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
7169         Create the returned object if we need to ignore an unsupported
7170         socket option.  Fixes a segfault reported by Atsushi.
7171
7172 Tue Jan 23 18:09:21 CET 2007 Paolo Molaro <lupus@ximian.com>
7173
7174         * class.c, object.c: restrict GC-tracked fields to
7175         UIntPtr fields used inside corlib, so we provide better
7176         type info to the GC and also allow broken packing as in
7177         bug #80580.
7178
7179 Mon Jan 22 11:24:27 CET 2007 Paolo Molaro <lupus@ximian.com>
7180
7181         * sgen-gc.c: removed duplicated function.
7182
7183 2007-01-19  Miguel de Icaza  <miguel@novell.com>
7184
7185         *  socket-io.c (convert_sockopt_level_and_name): return -2 as a
7186         value that means that the value is not supported, but that we
7187         should not return a failure, but instead report this as a
7188         successful operation.
7189
7190 2007-01-19  Raja R Harinath  <rharinath@novell.com>
7191
7192         Fix tests/bug79956.2.il
7193         * class.c (mono_type_get_underlying_type): Handle genericinst enums.
7194         (mono_generic_class_get_class): If the generic definition in an
7195         enum, copy over other fields related to it.
7196
7197 Thu Jan 18 18:37:28 CET 2007 Paolo Molaro <lupus@ximian.com>
7198
7199         * metadata.h: fix MONO_TYPE_ISSTRUCT() to not consider
7200         genericinst enums (bug #79215).
7201
7202 2007-01-17  Massimiliano Mantione  <massi@ximian.com>
7203         * class.c: Fix bug 80307.
7204
7205 Wed Jan 17 17:09:20 CET 2007 Paolo Molaro <lupus@ximian.com>
7206
7207         * image.c: if the file table is not present, try to load
7208         all the modules, since we don't have info about them
7209         having or not metadata (bug #80517).
7210         * assembly.c: allow mono_assembly_load_references () to
7211         work for netmodules.
7212
7213 Wed Jan 17 14:28:30 CET 2007 Paolo Molaro <lupus@ximian.com>
7214
7215         * image.c, metadata-internals.h, object.c: execute module
7216         cctors when running on the 2 runtime if present (bug #80487).
7217
7218 Tue Jan 16 15:32:53 CET 2007 Paolo Molaro <lupus@ximian.com>
7219
7220         * icall.c: optimized InitializeArray() on bigendian.
7221
7222 Tue Jan 16 13:18:51 CET 2007 Paolo Molaro <lupus@ximian.com>
7223
7224         * icall.c: fix for the broken ARM FPA double format.
7225
7226 Tue Jan 16 12:51:16 CET 2007 Paolo Molaro <lupus@ximian.com>
7227
7228         * icall.c: handle endian issues for r4 and r8 types, too, in
7229         the InitializeArray() icall.
7230
7231 2007-01-15  Miguel de Icaza  <miguel@novell.com>
7232
7233         * loader.c (mono_loader_error_prepare_exception): Clear the error
7234         once we have extracted the information from it, do this before we
7235         call into the JIT's class loading mechanisms.
7236
7237         * object.c (mono_class_create_runtime_vtable): Do not clear the
7238         loader error before calling mono_class_get_exception_for_failure
7239         as the loader error is needed inside
7240         mono_class_get_exception_for_failure to throw the error (thinko).
7241
7242         Fixes #80521
7243         
7244 Mon Jan 15 10:27:31 CET 2007 Paolo Molaro <lupus@ximian.com>
7245
7246         * reflection.c: align fields rva data so it's faster to load at
7247         runtime.
7248
7249 2007-01-12  Raja R Harinath  <rharinath@novell.com>
7250
7251         Prepare to simplify GenericMethod handling.
7252         * class-internals.h (mono_method_get_context): New accessor function.
7253         * class.c, icall.c, loader.c, reflection.c, verify.c: Use accessor
7254         rather than directly accessing '->context' field.
7255
7256         * class-internals.h (_MonoGenericParam.method): Move ...
7257         (_MonoGenericContainer): ... here.  Add into union with klass field.
7258         * class.c, icall.c, loader.c, metadata.c, reflection.c:
7259         Update to changes.
7260
7261 Fri Jan 12 11:58:52 CET 2007 Paolo Molaro <lupus@ximian.com>
7262
7263         * Makefile.am, class-internals.h, debug-helpers.c: consolidate
7264         the wrapper type enum and reduce relocations.
7265
7266 2007-01-12  Raja R Harinath  <rharinath@novell.com>
7267
7268         * reflection.c (inflate_mono_method): Reuse method instantiation
7269         from the generic method, if available.
7270
7271 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
7272
7273         * marshal.c (emit_marshal_variant): Fix conv_arg
7274         type in last commit, based on whether parameter is byref.
7275         
7276 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
7277
7278         * marshal.c (emit_marshal_variant): Handle unmanaged->managed
7279         marshalling.
7280         (mono_marshal_emit_managed_wrapper): Convert byref arguments of type
7281         MONO_TYPE_OBJECT back for VARIANT support.
7282
7283 2007-01-11  Jonathan Chambers  <joncham@gmail.com>
7284
7285         * marshal.c, marshal.h, icall-def.h: Implement 
7286         Marshal.ReAllocCoTaskMem.
7287
7288 Thu Jan 11 19:00:03 CET 2007 Paolo Molaro <lupus@ximian.com>
7289
7290         * marshal.c: memory retention fixes: use the proper
7291         image cache for runtime_invoke method lookups.
7292
7293 Thu Jan 11 18:53:19 CET 2007 Paolo Molaro <lupus@ximian.com>
7294
7295         * mempool.c: added code to help debug mempool allocations.
7296
7297 2007-01-11  Dick Porter  <dick@ximian.com>
7298
7299         * socket-io.c (convert_sockopt_level_and_name): Add DontFragment
7300         support (experimenting with faking it with IP_MTU_DISCOVER for
7301         systems that don't have IP_DONTFRAGMENT.)
7302         (ves_icall_System_Net_Sockets_Socket_Disconnect_internal): New
7303         icall.
7304
7305         * icall-def.h: new System.Net.Sockets.Disconnect icall.
7306
7307         * socket-io.h: Add new fields to MonoSocketAsyncResult
7308         corresponding to the new ones in Socket.cs.
7309
7310 2007-01-11  Raja R Harinath  <rharinath@novell.com>
7311
7312         Fix IronPython regression mentioned in #80249
7313         * metadata.c (do_mono_metadata_parse_generic_class): Clear
7314         'cached_context' field, since it may have been initialized as a
7315         side-effect of metadata parsing.
7316
7317         * class-internals.h (_MonoGenericClass.is_inflated): Remove.
7318         (_MonoGenericClass.cached_class): Move here and rename from lone
7319         remaining field of ...
7320         (_MonoInflatedGenericClass): ... this.  Remove.
7321         * metadata.h, class.c, reflection.c, metadata.c, icall.c: Update
7322         to changes.
7323
7324         Fix mcs/tests/test-128.cs regression.
7325         * reflection.c (encode_cattr_value) [MONO_TYPE_SZARRAY]: Revert
7326         2007-01-10 change below.
7327         [MONO_TYPE_OBJECT]: Recurse into array case.
7328
7329 2007-01-11  Raja R Harinath  <harinath@gmail.com>
7330
7331         * class-internals.h (mono_get_inflated_generic_class): Remove.
7332         * class.c (mono_get_inflated_generic_class): Remove.
7333         (mono_generic_class_get_class): Rename from
7334         mono_class_create_generic.
7335         (mono_class_from_mono_type) [GENERICINST]: Use it.
7336         * reflection.c, metadata.c: Update to changes.  Use
7337         'mono_class_from_mono_type'.
7338
7339 Wed Jan 10 16:19:54 CET 2007 Paolo Molaro <lupus@ximian.com>
7340
7341         * reflection.c: use passed type when encoding an array element
7342         in custom attributes (patch from David Mitchell, dmitchell@logos.com).
7343
7344 2007-01-09  Robert Jordan  <robertj@gmx.net>
7345
7346         * marshal.c (mono_delegate_end_invoke): Add check for unpaired asyc
7347         result arguments (someDelegate.EndInvoke (unrelatedAres)).
7348         Fixes bug #80392.
7349
7350 2007-01-09  Raja R Harinath  <rharinath@novell.com>
7351
7352         * class-internals.h (_MonoInflatedGenericClass.is_initialized): Remove.
7353
7354         * object.c (set_value): Avoid aliasing between type->data.klass
7355         and type->data.generic_class.
7356
7357         * class.c (mono_class_create_generic): Don't use 'is_initialized' field.
7358
7359 2007-01-08  Raja R Harinath  <rharinath@novell.com>
7360
7361         * marshal.c (mono_marshal_get_runtime_invoke): Avoid aliasing
7362         between type->data.klass and type->data.generic_class.
7363
7364 2007-01-08  Lluis Sanchez  <lluis@ximian.com>
7365
7366         * marshal.c: In MS.NET, StringBuilder objects are not copied by
7367         value in out parameters.
7368
7369 2007-01-08  Raja R Harinath  <rharinath@novell.com>
7370
7371         Simplify invariant for MonoGenericClass::klass field.
7372         * class.c (mono_class_create_generic): Verify 'klass' is null.
7373         * metadata.c (do_mono_metadata_parse_generic_class): Don't
7374         initialize 'klass' field.
7375
7376 2007-01-05  Raja R Harinath  <rharinath@novell.com>
7377
7378         Ongoing work to avoid redundant data and simplify invariants.
7379         * class-internals.h (_MonoGenericMethod.class_inst): Rename from
7380         'generic_class', and change type to a GenericInst.
7381         (_MonoGenericContext.class_inst): Likewise, rename from 'gclass'.
7382         * class.c, loader.c, metadata.c, reflection.c: Update to changes.
7383
7384 2007-01-05  Atsushi Enomoto  <atsushi@ximian.com>
7385
7386         * class.c : skip io-layer under PLATFORM_WIN32.
7387
7388 2007-01-03  Tor Lillqvist  <tml@novell.com>
7389
7390         Fix #80305: In a bundled executable, look in the bundled exe
7391         assembly to determine the runtime version. Add the possibility to
7392         bundle also the machine.config file.
7393         
7394         * assembly.c (mono_assembly_open_from_bundle): Make
7395         non-static. Allow being called even if we have no bundled
7396         assemblies, and return NULL right away in that case.
7397
7398         * domain-internals.h: Declare mono_assembly_open_from_bundle()
7399         here.
7400
7401         * domain.c (app_config_parse): Take an assembly exe file name as
7402         parameter instead of a config file name. Check for a bundled
7403         config file for that assembly by calling
7404         mono_config_string_for_assembly_file() (see below) before looking
7405         for one in the file system.
7406         (get_runtimes_from_exe): Corrsponding change to call of
7407         app_config_parse().
7408         (get_runtimes_from_exe): Check for bundled assembly exe file first
7409         by calling mono_assembly_open_from_bundle(). If no bundled
7410         assembly exe file is found, call mono_image_open() as before to
7411         look it up in the file system.
7412
7413         * mono-config.c: Add variable bundled_machinec_onfig.
7414         (mono_config_string_for_assembly_file): New function.
7415         (mono_config_for_assembly): Move code snippet that looks for a
7416         bundled assembly .config file into the above new function. Call
7417         it.
7418         (mono_register_machine_config, mono_get_machine_config): New
7419         functions to set and retrieve
7420
7421         * assembly.h: Declare mono_register_machine_config().
7422
7423         * mono-config.h: Declare mono_get_machine_config() and
7424         mono_config_string_for_assembly_file().
7425
7426         * icall.c: No declaration of environ necessary on Win32. It is
7427         declared (as a macro expanding to a function call) in stdlib.h.
7428         (ves_icall_System_Configuration_DefaultConfig_get_bundled_machine_config):
7429         New internal mono function. Returns the value of
7430         mono_get_machine_config() as a Mono string.
7431
7432         * icall-def.h: Add get_bundled_machine_config().
7433
7434 2007-01-04  Raja R Harinath  <rharinath@novell.com>
7435
7436         Remove redundant field
7437         * class-internals.h (_MonoGenericContext.container): Remove field.
7438         * loader.c (mono_method_get_signature_full): Don't parse a
7439         "container" for a signature parse when the signature is inflated
7440         immediately.
7441         (method_from_methodspec): Likewise, for a generic_inst.
7442         * class.c, metadata.c, reflection.c: Update to changes.
7443
7444 2006-01-04  Raja R Harinath  <rharinath@novell.com>
7445
7446         * class-internals.h (_MonoGenericClass): Rename 'context' field to
7447         'cached_context', and change semantics -- it starts off NULL, and
7448         is initialized on demand.
7449         * class.c (mono_generic_class_get_context): New accessor to
7450         replace 'context' field accesses.
7451         (mono_class_get_context): New helper.
7452         (*): Update to changes.
7453         * icall.c, loader.c, metadata.c, reflection.c: Update to changes.
7454
7455 2007-01-03  Miguel de Icaza  <miguel@novell.com>
7456
7457         * marshal.c (mono_string_to_byvalstr): Fix thinko, shorten len
7458         before the memcpy.   Fixes Marshal2 regression.
7459
7460 2007-01-02  Jb Evain  <jbevain@gmail.com>
7461
7462         * blob.h: add a MONO_TYPE_ENUM definition
7463         * reflection.c (load_cattr_value, create_custom_attr, create_custom_attr_data):
7464         fix the encoding of arrays of enums in custom attributes.
7465
7466         Fixes #79666.
7467
7468 2007-01-01  Miguel de Icaza  <miguel@novell.com>
7469
7470         * marshal.c (mono_string_to_byvalwstr): Fix this routine.   The
7471         string is null terminated, but only cut the string short if it
7472         overflows the buffer.   
7473         
7474         (mono_string_to_byvalstr): Also fix this routine.   The code here
7475         was not properly terminating a string (it was only terminated
7476         because of the previous catch-all memset). 
7477
7478         I left the memset, because I do not know if applications expect
7479         the runtime to clear this region. 
7480
7481         Fixes #79944.
7482
7483         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType):
7484         Clear the error before returning to unmanaged code to prevent the
7485         runtime from being confused later on (fixes  80420).
7486         (ves_icall_type_from_name): Always call mono_loader_clear_error
7487         after parsing a type that could have failed.
7488         (ves_icall_System_Reflection_Assembly_GetTypes): ditto.
7489
7490         * loader.c (mono_loader_clear_error): Fix indentation.
7491
7492 2006-12-28  Martin Baulig  <martin@ximian.com>
7493
7494         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 58.
7495
7496 Fri Dec 22 20:04:57 CET 2006 Paolo Molaro <lupus@ximian.com>
7497
7498         * reflection.c: patch from Rolf Bjarne Kvinge to fix
7499         getting a token for an EnumBuilder.
7500
7501 Fri Dec 22 19:49:07 CET 2006 Paolo Molaro <lupus@ximian.com>
7502
7503         * reflection.c: be more careful in case resource generation
7504         fails to create the data array.
7505
7506 Fri Dec 22 18:17:40 CET 2006 Paolo Molaro <lupus@ximian.com>
7507
7508         * sgen-gc.c: write barrier for clone and fix unregister handles.
7509
7510 Fri Dec 22 18:15:33 CET 2006 Paolo Molaro <lupus@ximian.com>
7511
7512         * reflection.c: some fixes needed in the generics code for the moving GC.
7513
7514 2006-12-22  Robert Jordan  <robertj@gmx.net>
7515
7516         * icall.c (ves_icall_System_Array_SetValueImpl): Take enums into
7517         account. Fixes bug #80299.
7518
7519 2006-12-21  Raja R Harinath  <rharinath@novell.com>
7520
7521         Fix WaitHandle usage in delegates.
7522         * object-internals.h (mono_wait_handle_get_HANDLE): Declare.
7523         * object.c (mono_wait_handle_new): Use the property set method to
7524         initialize the handle.
7525         (mono_wait_handle_get_handle): New.
7526         * threadpool.c (mono_async_invoke): Use it.
7527         * threads.c (ves_icall_System_Threading_WaitHandle_WaitAll_internal):
7528         Likewise.
7529         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Likewise.
7530
7531 2006-12-21  Jonathan Chambers  <joncham@gmail.com>
7532
7533         * marshal.c (emit_marshal): Call emit_marshal_variant and
7534         emit_marshal_com_interface when applicable.
7535         (emit_marshal_variant, emit_marshal_com_interface): Add
7536         methods for this case and remove if's from emit_marshal_object.
7537         
7538 Wed Dec 20 11:03:56 CET 2006 Paolo Molaro <lupus@ximian.com>
7539
7540         * filewatcher.c: updated to use the mono-dl API instead of gmodule.
7541
7542 2006-12-19  Jonathan Chambers  <joncham@gmail.com>
7543
7544         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocHGlobal,
7545         ves_icall_System_Runtime_InteropServices_Marshal_FreeHGlobal): Use GlobalAlloc
7546         and GlobalFree on Windows. Remove FIXME.
7547
7548 Tue Dec 19 16:18:16 CET 2006 Paolo Molaro <lupus@ximian.com>
7549
7550         * mono-mlist.h, mono-mlist.c, Makefile.am: linked list
7551         implementation for managed objects.
7552
7553 Tue Dec 19 14:28:03 CET 2006 Paolo Molaro <lupus@ximian.com>
7554
7555         * object.c: implemented code to be used for checking
7556         that no reference field overlaps with non-references.
7557
7558 Tue Dec 19 14:10:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7559
7560         * threadpool.c: fix queue code to be compatible with the
7561         moving GC.
7562
7563 2006-12-18  Miguel de Icaza  <miguel@novell.com>
7564
7565         * marshal.c (emit_object_to_ptr_conv): Handle null safehandles
7566         in structures by throwing ArgumentNullException.
7567
7568         (emit_marshal_safehandle): Also when they are null parameters.
7569
7570         (emit_marshal_safehandle): Add support for ref
7571         SafeHandles parameters
7572
7573 Mon Dec 18 19:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
7574
7575         * profiler.c: updated to use the mono-dl API instead of
7576         gmodule.
7577
7578 Mon Dec 18 19:02:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7579
7580         * profiler.c: updated to use the mono-dl dynamic loading
7581         API instead of gmodule.
7582
7583 Mon Dec 18 18:16:22 CET 2006 Paolo Molaro <lupus@ximian.com>
7584
7585         * profiler.c: use readlink, older versions of glib don't have
7586         g_file_read_link ().
7587
7588 Mon Dec 18 16:40:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7589
7590         * profiler.c: try to detect the path to mono if libc fails to provide
7591         a useful name (bug #80286).
7592
7593 2006-12-16  Raja R Harinath  <rharinath@novell.com>
7594
7595         Fix #80242
7596         * icall.c (ves_icall_Type_GetNestedType): If the type is a generic
7597         instance, use the generic type definition instead.
7598         (ves_icall_Type_GetNestedTypes): Likewise.
7599         * class.c (mono_class_create_generic): Always set the
7600         nested_classes of a generic instance to NULL, even if the generic
7601         type definition has nested types.
7602
7603 2006-12-15  Jonathan Chambers  <joncham@gmail.com>
7604
7605         * marshal.c (mono_string_from_bstr): Revert previous Windows change
7606         and fix on Linux.
7607         
7608 2006-12-15  Miguel de Icaza  <miguel@novell.com>
7609
7610         * marshal.c (mono_string_from_bstr): Jon Chambers pointed out that
7611         my arguments were in the wrong order.   I also fixed the Windows
7612         version which seems to have had the same issue.
7613
7614         (mono_free_bstr): On Unix, this is g_free.
7615         (mono_string_from_bstr, mono_string_to_bstr): Implement bstr
7616         conversions (for the tests in corlib to pass).
7617
7618 2006-12-14  Miguel de Icaza  <miguel@novell.com>
7619
7620         * marshal.c (emit_ptr_to_object_conv): For now, ignore
7621         MONO_MARSHAL_CONV_SAFEHANDLE on return values (we need to throw an
7622         exception if a ref SafeHandle in a struct has changed).
7623         
7624         (emit_struct_conv): Do not perform layout checks for classes
7625         derived from SafeHandle, as those are specially handled. 
7626
7627         (emit_object_to_ptr_conv): Add support for
7628         MONO_MARSHAL_CONV_SAFEHANDLE conversion. 
7629
7630         (emit_marshal_safehandle): Implement conversion of return values
7631         of safehandles (MARSHAL_ACTION_CONV_RESULT).
7632         
7633         * threads.c: WaitHandle now is compiled with two different handles
7634         "IntPtr os_handle" for 1.x and "SafeWaitHandle safe_wait_handle"
7635         for 2.0.
7636         
7637         (ves_icall_System_Threading_WaitHandle_WaitAll_internal) 
7638         (ves_icall_System_Threading_WaitHandle_WaitAny_internal): Adjust
7639         these routines to cope with both kinds of fields.
7640
7641 2006-12-12  Miguel de Icaza  <miguel@novell.com>
7642
7643         * metadata.c (mono_type_to_unmanaged): Handle the case where
7644         type->data.klass is a SafeHandle, and in that case, return the
7645         size of a pointer (MONO_NATIVE_INT) and set the conversion to be
7646         MONO_MARSHAL_CONV_SAFEHANDLE. 
7647
7648 2006-12-11  Miguel de Icaza  <miguel@novell.com>
7649
7650         * marshal.c (emit_marshal): Hook up to the MONO_TYPE_CLASS and
7651         MONO_TYPE_OBJECT cases and check for a SafeHandle here before
7652         calling emit_marshal_object.
7653
7654         (emit_marshal_safehandle): Implement marshalling of
7655         SafeHandle parameters (no ref support yet).
7656
7657         (MarshalAction): Document the defines as I implement
7658         them for SafeHandle.
7659
7660         (emit_marshal_object): indentation police.
7661
7662         * class-internals.h: Define MonoSafeHandle.
7663         Add safehandle_class to MonoDefaults type.
7664
7665         * verify.c: Add System.Runtime.InteropServices.SafeHandle to the
7666         list of classes to check for fields. 
7667
7668         * domain.c (mono_init_internal): Add SafeHandle to the list of
7669         mono_defaults loaded.
7670
7671 2006-12-15  Raja R Harinath  <rharinath@novell.com>
7672
7673         Fix #80253
7674         * reflection.c (mono_reflection_bind_generic_parameters): If the
7675         generic type definition is a type builder, ensure that it is fully
7676         initialized before instantiating it.  Kill some dead code.
7677
7678 Thu Dec 14 17:02:59 CET 2006 Paolo Molaro <lupus@ximian.com>
7679
7680         * object.c: clear the loader_error () before loading
7681         more metadata stuff (bug #80258).
7682
7683 Thu Dec 14 12:49:47 CET 2006 Paolo Molaro <lupus@ximian.com>
7684
7685         * icall.c, icall-defs.h: type modifiers icalls for
7686         parameters and properties.
7687
7688 Wed Dec 13 19:29:50 CET 2006 Paolo Molaro <lupus@ximian.com>
7689
7690         * object.c, icall.c: fixed warnings.
7691
7692 Mon Dec 11 11:03:10 CET 2006 Paolo Molaro <lupus@ximian.com>
7693
7694         * marshal.c: fixed a couple of leaks and coding style in a few places.
7695
7696 2006-12-08  Dick Porter  <dick@ximian.com>
7697
7698         * process.c: Cope with NULL ProcessStartInfo arguments on windows
7699         too.  Patch from Jonathan Chambers <joncham@gmail.com>, fixes bug
7700         80173.
7701
7702 Thu Dec 7 15:20:31 CET 2006 Paolo Molaro <lupus@ximian.com>
7703
7704         * process.c: ProcessStartInfo may have only filename set and
7705         arguments can be NULL.
7706
7707 Tue Dec 5 19:19:34 CET 2006 Paolo Molaro <lupus@ximian.com>
7708
7709         * icall.c: fix leak found by Robert Jordan.
7710
7711 Tue Dec 5 17:53:10 CET 2006 Paolo Molaro <lupus@ximian.com>
7712
7713         * marshal.c, marshal.h: generate managed method to access an element
7714         of a multi-dimensional array.
7715
7716 2006-11-30  Paolo Molaro (lupus@ximian.com)
7717
7718         * metadata.c, marshal.c: locking fixes when writing to image->mempool.
7719
7720 Thu Nov 30 11:11:37 CET 2006 Paolo Molaro <lupus@ximian.com>
7721
7722         * icall.c: back out GetFields () fix until the serialization code is
7723         fixed to not depend on the incorrect behaviour.
7724
7725 Wed Nov 29 22:01:46 CET 2006 Paolo Molaro <lupus@ximian.com>
7726
7727         * profiler.c: provide defaults if none are set.
7728
7729 Tue Nov 28 12:54:51 CET 2006 Paolo Molaro <lupus@ximian.com>
7730
7731         * Makefile.am, attrdefs.h: new public header file with
7732         constants for attributes for use by embedders.
7733
7734 Tue Nov 28 11:44:52 CET 2006 Paolo Molaro <lupus@ximian.com>
7735
7736         * icall.c: GetFields () fix for bug #80064.
7737
7738 Tue Nov 28 10:56:01 CET 2006 Paolo Molaro <lupus@ximian.com>
7739
7740         * filewatcher.c, filewatcher.h, icall-def.h, icall.c, locales.c:
7741         removed long unused icalls.
7742
7743 2006-11-27  Jonathan Chambers  <joncham@gmail.com>
7744   
7745         * marshal.c: 
7746                 (mono_marshal_emit_managed_wrapper): Level of indirection for 
7747                 mono_marshal_get_managed_wrapper so that a wrapper for a managed method
7748                 can be generated without a delegate class.
7749                 (mono_marshal_get_managed_wrapper): Move wrapper logic to mono_marshal_emit_managed_wrapper.
7750         
7751         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
7752
7753 2006-11-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
7754
7755         * console-io.c: add the 'signal' call removed by mistake. Fixes bug
7756         #80069.
7757
7758 Mon Nov 27 19:29:13 CET 2006 Paolo Molaro <lupus@ximian.com>
7759
7760         * boehm-gc.c, null-gc.c, sgen-gc.c, mono-gc.h, icall.c,
7761         icall-def.h: added icalls needed by System.GC.
7762
7763 Thu Nov 23 20:01:12 CET 2006 Paolo Molaro <lupus@ximian.com>
7764
7765         * loader.c: ensure the class in catch clauses is handled
7766         correctly for generics methods (fixes bug#79980).
7767
7768 Thu Nov 23 17:31:58 CET 2006 Paolo Molaro <lupus@ximian.com>
7769
7770         * monitor.h, monitor.c: added mono_locks_dump () function
7771         to help debug deadlocks involving managed locks.
7772
7773 2006-11-13  Dick Porter  <dick@ximian.com>
7774
7775         * file-io.c (get_file_attributes): If the file is a symlink try
7776         and get the stat data for the target, but also add the
7777         FILE_ATTRIBUTE_REPARSE_POINT flag.  This is an attempt to follow
7778         the specs for the windows symlink support, but will probably have
7779         to be reworked when I have test data from a vista machine.  Fixes
7780         bug 79887.
7781
7782 2006-11-13  Dick Porter  <dick@ximian.com>
7783
7784         * gc.c (mono_domain_finalize): 
7785         * marshal.c (mono_delegate_begin_invoke): 
7786         * threadpool.c (socket_io_init, mono_thread_pool_init)
7787         (mono_thread_pool_finish): 
7788         * monitor.c (mono_monitor_try_enter_internal): 
7789         * threads.c (mono_thread_resume, mono_thread_init)
7790         (mono_thread_suspend_all_other_threads)
7791         (mono_thread_execute_interruption): 
7792         * appdomain.c (mono_domain_unload): Check for NULL error returns
7793         from CreateThread(), CreateEvent() and CreateSemaphore().  See bug
7794         75733.
7795
7796 2006-11-11  Miguel de Icaza  <miguel@novell.com>
7797
7798         * process.c
7799         (ves_icall_System_Diagnostics_Process_CreateProcess_internal):
7800         Only close the handle if the value of the handle is not
7801         INVALID_HANDLE_VALUE.  This just makes the process a bit more
7802         robust.
7803
7804         Improvement for #75733, so that we do not run into this problem. 
7805
7806         
7807         * assembly.c (check_path_env, check_extra_gac_path_env): Do not
7808         include empty directories from MONO_PATH or MONO_GAC_PREFIX in our
7809         internal variables.  Fixes #79462 
7810         
7811
7812 2006-11-09  Dick Porter  <dick@ximian.com>
7813
7814         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
7815         Use poll() not select().  Fixes bug 79397.
7816
7817 2006-11-09  Raja R Harinath  <rharinath@novell.com>
7818
7819         Fix #79872
7820         * assembly.c (mono_assembly_load_from_full): Check that the given
7821         image has an assembly manifest.
7822
7823 2006-11-09  Ankit Jain  <jankit@novell.com>
7824
7825         * tabledefs.h (ASSEMBLYREF_RETARGETABLE_FLAG):
7826         (ASSEMBLYREF_ENABLEJITCOMPILE_TRACKING_FLAG):
7827         (ASSEMBLYREF_DISABLEJITCOMPILE_OPTIMIZER_FLAG): Add AssemblyRef flags.
7828
7829 2006-11-07  Dick Porter  <dick@ximian.com>
7830
7831         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
7832         Put the old resolver behaviour back for pre-2.0 profiles.
7833
7834 Tue Nov 7 16:56:24 CET 2006 Paolo Molaro <lupus@ximian.com>
7835
7836         * threadpool.c: precise GC and locking fixes.
7837
7838 Tue Nov 7 11:02:42 CET 2006 Paolo Molaro <lupus@ximian.com>
7839
7840         * class.c: don't load types that have an explicit unaligned
7841         managed reference. Provide better info in the TypeLoad exception.
7842         Part of the fix for bug #79744.
7843         * object.c: use the correct check for class type load issues.
7844
7845 Mon Nov 6 17:07:43 CET 2006 Paolo Molaro <lupus@ximian.com>
7846
7847         * class.c: enforce alignment of fields with managed references
7848         even when Pack=1 is forced by the user (bug #77788).
7849
7850 2006-11-03  Dick Porter  <dick@ximian.com>
7851
7852         * socket-io.c (ves_icall_System_Net_Dns_GetHostByAddr_internal):
7853         If the address reverse lookup fails, return it as the hostname
7854         anyway.  Fixes bug 79721.
7855
7856 2006-11-03  Dick Porter  <dick@ximian.com>
7857
7858         * threads.c (ves_icall_System_Threading_Thread_SpinWait_internal):
7859         Fix build on Windows.
7860
7861 2006-11-02  Dick Porter  <dick@ximian.com>
7862
7863         * icall-def.h: 
7864         * object-internals.h: 
7865         * exception.c (mono_get_exception_thread_interrupted): 
7866         * threads.c: Implement Thread.Interrupt and Thread.SpinWait.
7867         Fixes bug 74525.
7868
7869         * monitor.c (ves_icall_System_Threading_Monitor_Monitor_wait):
7870         Check for pending Thread.Interrupt.
7871
7872 2006-10-27  Massimiliano Mantione  <massi@ximian.com>
7873         * loader.c: Fixed bug 79684.
7874
7875 2006-10-27  Dick Porter  <dick@ximian.com>
7876
7877         * file-io.c (get_file_attributes): Force symlinks to directories
7878         to be returned as a regular file.  Fixes bug 79733.
7879 2006-10-26  Dick Porter  <dick@ximian.com>
7880
7881         * file-io.c (ves_icall_System_IO_MonoIO_Open): If we're calling
7882         CreateFile to open a directory then we need to set the
7883         FILE_FLAG_BACKUP_SEMANTICS flag.  Fixes bug 75285.
7884
7885 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
7886
7887         * reflection.c (mono_method_get_object): Cache the MonoMethod class and its
7888         friends.
7889
7890 Mon Oct 23 03:06:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
7891
7892         * sgengc.c: small cleanup of timer code.
7893
7894 Mon Oct 23 02:49:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
7895
7896         * sgen-gc.c: fix some warnings and start adding support for
7897         complete object removal on domain unload.
7898
7899 2006-10-22  Gert Driesen  <drieseng@users.sourceforge.net>
7900
7901         * assembly.c: build_assembly_name should not consider a version
7902         number without build or revision number invalid. Fixes bug #79715.
7903
7904 2006-10-18  Jonathan Chambers  <joncham@gmail.com>
7905
7906         * icall.c: Have ves_icall_System_Diagnostics_DefaultTraceListener_WriteWindowsDebugString
7907         call kernel32 function OutputDebugString directly.
7908         
7909         Signed-off-by: Jonathan Chambers <joncham@gmail.com>
7910         
7911 Tue Oct 17 16:59:59 CEST 2006 Paolo Molaro <lupus@ximian.com>
7912
7913         * reflection.c: small cleanup, using a function to insert a MonoString
7914         in the string heap.
7915
7916 Tue Oct 17 16:45:27 CEST 2006 Paolo Molaro <lupus@ximian.com>
7917
7918         * reflection.c: moving GC fixes.
7919
7920 Mon Oct 16 16:53:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
7921
7922         * sgen-gc.c, gc-internal.h, gc.c: added API to collect and remove
7923         all the objects with finalizers belonging to an unloading appdomain.
7924
7925 Mon Oct 16 15:08:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
7926
7927         * sgen-gc.c: added ability to allocate even when the nursery is fully
7928         pinned and fixed a couple of bugs.
7929
7930 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7931
7932         * threads.h: Revert the last change for now.
7933
7934         * threads.h (mono_thread_get_pending_exception): Rename this to
7935         mono_thread_get_undeniable_exception ().
7936
7937 2006-10-15  Gert Driesen  <drieseng@users.sourceforge.net>
7938
7939         * appdomain.c: Use mono_get_exception_bad_image_format2 to construct
7940         BadImageFormatException in ves_icall_System_Reflection_Assembly_LoadFrom
7941         when fname does not refer to valid assembly. This result in a more
7942         meaningful error message.
7943         * exception.c: added mono_get_exception_bad_image_format2 which 
7944         constructs a BadImageFormatException using the ctor taking a custom
7945         message and the file name. Passing in a NULL msg results in a default
7946         message.
7947         * exception.h: define mono_get_exception_bad_image_format2 function.
7948         * icall.c: in InternalGetAssemblyName, throw BadImageFormatException 
7949         when file name pointed to an invalid IL image. Use 
7950         mono_get_exception_file_not_found2 to construct FileNotFoundException,
7951         as this results in a more meaningful error message.
7952
7953 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
7954
7955         * reflection.c (encode_named_val): Implement proper encoding of arrays. Fixes
7956         #79465.
7957
7958 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * metadata.c (mono_type_size): Change the align parameter to guint32 for
7961         consistency with the other _size functions.
7962         (mono_type_stack_size): Ditto.
7963
7964         * class.c object.c icall.c: Fix warnings caused by the above change.
7965
7966         * class.c (mono_class_get_method_from_name_flags): Fix a typo.
7967
7968         * image.c (load_metadata_ptrs): Reenable loading of modules with uncompressed metadata.
7969
7970         * metadata.c class.c loader.c: Add proper support for uncompressed metadata.
7971
7972 Wed Oct 11 17:27:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
7973
7974         * console-io.h, filewatcher.h, locales.h, marshal.h, monitor.h,
7975         process.h, rand.h, rawbuffer.h, security-manager.h, security.h,
7976         socket-io.h, string-icalls.h, sysmath.h, threadpool-internals.h,
7977         threadpool.h, threads-types.h: mark more internal functions.
7978
7979 2006-10-11  Dick Porter  <dick@ximian.com>
7980
7981         * socket-io.c (ves_icall_System_Net_Sockets_Socket_Poll_internal):
7982         Fix typo spotted by Robert Jordan in bug 79352 (though I can't
7983         reproduce the bug even before applying the fix.)
7984
7985 Tue Oct 10 15:39:39 CEST 2006 Paolo Molaro <lupus@ximian.com>
7986
7987         * reflection.c: allow retrieving attributes for arguments in generic
7988         methods (bug #79241).
7989
7990 Tue Oct 10 11:45:50 CEST 2006 Paolo Molaro <lupus@ximian.com>
7991
7992         * debug-mono-symfile.c: properly check fopen () result (found by
7993         coverity).
7994
7995 Tue Oct 10 11:30:52 CEST 2006 Paolo Molaro <lupus@ximian.com>
7996
7997         * reflection.c: make error message clearer and fixed two
7998         issuelets found by Coverity.
7999
8000 2006-10-10  Zoltan Varga  <vargaz@gmail.com>
8001
8002         * object-internals.h: Remove duplicate definition of mono_method_get_signature_full ().
8003
8004 Mon Oct 9 19:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
8005
8006         * object-internals.h, gc-internal.h, profiler-private.h:
8007         mark internal functions.
8008
8009 Mon Oct 9 19:28:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
8010
8011         * reflection.c: put data in the text section.
8012         * icall.c: recognize more types in type_from_typename ().
8013         * process.c, marshal.c: added some GC FIXMEs.
8014
8015 Mon Oct 9 19:27:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8016
8017         * loader.c: check for NULL before initializing.
8018
8019 2006-10-09  Zoltan Varga  <vargaz@gmail.com>
8020
8021         * gc.c (finalizer_thread): Use a non-alertable wait here.
8022
8023         * class.c loader.c metadata.c: Revert the mono_metadata_decode_table_... changes,
8024         until the correct solution is found.
8025
8026 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
8027
8028         * reflection.c (mono_module_get_object): Avoid an assert when operating on
8029         modules with no metadata. Fixes #79596.
8030
8031         * image.c (load_metadata_ptrs): Put back the error message when
8032         the #- heap is encountered since the support is not complete yet.
8033
8034 Fri Oct 6 16:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
8035
8036         * gc.c: do not allow the user to SuppressFinalize () a
8037         delegate because it would leak the trampoline if present.
8038
8039 2006-10-06  Zoltan Varga  <vargaz@gmail.com>
8040
8041         * class.c metadata.c row-indexes.h blob.h: Applied patch from Jb. Add support for the
8042         PropertyPtr table.
8043
8044 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
8045
8046         * loader.c (mono_method_signature): Fix a use of MONO_TABLE_METHOD missed earlier.
8047
8048         * metadata.c (mono_metadata_get_param_attrs): Ditto.
8049
8050         * row-indexes.h: Add definitions for *Ptr tables.
8051
8052         * metadata-internals.h (MonoImage): Add an 'uncompressed_metadata' flag.
8053
8054         * metadata.c (mono_metadata_translate_token_index): New helper function to
8055         translate table indexes used in uncompressed metadata.
8056         (mono_metadata_decode_table_row): Ditto.
8057         (mono_metadata_decode_table_row_col): Ditto.
8058
8059         * metadata.c: Add table schema for *Ptr tables.
8060
8061         * class.c loader.c: Use the new helper function to access the affected metadata
8062         tables.
8063         
8064         * image.c (load_metadata_ptrs): Allow assemblies with uncompressed metadata. Fixes
8065         #38532.
8066         
8067 2006-10-04  Zoltan Varga  <vargaz@gmail.com>
8068
8069         * marshal.c (emit_object_to_ptr_conv): Avoid using short branches around IL
8070         sequences which can be unbounded in size. Fixes #79583.
8071
8072 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
8073
8074         * object.c (mono_runtime_class_init): Handle a corner case in handling failure of
8075         static initialization.
8076
8077         * domain-internals.h (MonoDomain): Add a 'type_init_exception_hash' field.
8078
8079         * class-internals.h (MonoVTable): Add an 'init_failed' flag.
8080
8081         * domain.c (mono_domain_free): Free up type_init_exception_hash.
8082
8083         * object.c (mono_runtime_class_init): Implement correct semantics when a static
8084         ctor fails, i.e. throw the same exception on subsequent accesses.
8085         
8086 2006-09-0  Jonathan Chambers  <joncham@gmail.com>
8087
8088         * domain.c, class-internals.h: Added ComInteropProxy class to MonoDefaults.
8089         * marshal.c: Return correct unmanaged size for object when MarshalAs.Struct.
8090         Emit exception rather than crash in case of COM Callable Wrapper (not yet implemented).
8091         Handle marshalling of interfaces and VARIANTs contained in structs.
8092         
8093         Code is contributed under MIT/X11 license.
8094         
8095 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
8096
8097         * marshal.c (emit_marshal_custom): Fix some corner cases. Fixes #79471.
8098         
8099         * marshal.c (mono_marshal_load_type_info): Allocate memory from the image
8100         mempool.
8101
8102 2006-09-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8103
8104         * console-io.c: ignore previous SIGINT handler.
8105
8106 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
8107
8108         * metadata.c class.c: Applied patch from Ricardo Fernandez Pascual 
8109         (ricardo.fernandez@st.com). Add some new MonoClass and MonoType accessors. Fixes
8110         #79460, #79461, #79485.
8111
8112         * class.c (mono_class_from_name_case): Fix incorrect comments. Fixes #79504.
8113
8114         * marshal.c (mono_marshal_load_type_info): Fix a typo which caused an assert. Fixes
8115         #79217.
8116
8117 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
8118
8119         * marshal.c (mono_marshal_get_delegate_invoke): Tweak the IL a little so better code
8120         could be generated from it.
8121
8122 Mon Sep 25 13:29:53 CEST 2006 Paolo Molaro <lupus@ximian.com>
8123
8124         * rand.c: fix read loop to correctly handle EINTR.
8125
8126 Mon Sep 25 11:33:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
8127
8128         * Makefile.am, icall-def.h, icall.c, verify.c: changed the way
8129         internal calls are defined to keep methods closer to the declaring
8130         type and allow a significant reduction in runtime relocations and
8131         memory usage.
8132
8133 2006-09-21 Gert Driesen  <drieseng@users.sourceforge.net>
8134
8135         * appdomain.c: Pass NULL to mono_get_exception_file_not_found2 as
8136         exception message to have FileNotFoundException use the default
8137         assembly load error message. Fixes bug #79426.
8138         * exception.c: Support NULL msg in mono_get_exception_file_not_found2.
8139
8140 2006-09-21 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8141
8142         * threadpool.c: (start_thread_or_queue) use the root domain when
8143         creating the thread instead of the async object one.
8144
8145 Thu Sep 21 19:30:04 CEST 2006 Paolo Molaro <lupus@ximian.com>
8146
8147         * class.c, object.c, class-internals.h, reflection.c:
8148         for arrays, store element_size inside MonoClass (speedup
8149         for array object creation).
8150
8151 Thu Sep 21 17:06:43 CEST 2006 Paolo Molaro <lupus@ximian.com>
8152
8153         * icall.c: fixed CodeBase to use the file name and not the module
8154         name (bug #79365).
8155
8156 Thu Sep 21 12:09:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
8157
8158         * mono-debug.c, mono-debug.h: export find_method as
8159         mono_debug_find_method ().
8160
8161 Wed Sep 20 19:59:06 CEST 2006 Paolo Molaro <lupus@ximian.com>
8162
8163         * debug-helpers.c, class-internals.h: added a few functions useful
8164         when debugging under gdb.
8165
8166 2006-09-19 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8167
8168         * console-io.[ch]: trigger the ConsoleCancelEvent and retrieve
8169         characters that need special handling.
8170
8171 Tue Sep 19 18:57:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
8172
8173         * mono-config.c: make the os/cpu specification more flexible,
8174         allowing lists and negation.
8175
8176 2006-09-18  Jonathan Chambers  <joncham@gmail.com>
8177
8178         * marshal.c: COM Interop fixes. Handle case where method->klass.
8179         is interface. Handle BSTR/MonoString when null. Use CDECL as 
8180         calling convention on non-windows platforms. This is for
8181         compatibility with XPCOM and MainWin COM.
8182         
8183         Code is contributed under MIT/X11 license.
8184         
8185
8186 2006-09-18  Zoltan Varga  <vargaz@gmail.com>
8187
8188         * marshal.c (mono_marshal_load_type_info): Handle concurrent and recursive calls
8189         correctly. Fixes #79217.
8190
8191         * class-internals.h (MonoClass): Remove unused marshal_info_init_pending field.
8192
8193 Mon Sep 18 16:59:54 CEST 2006 Paolo Molaro <lupus@ximian.com>
8194
8195         * mono-config.c: allow both an os and cpu attribute for dllmap
8196         and dllentry elemnets to enable a single config file to be used
8197         for multiple architectures.
8198
8199 2006-09-18  Gert Driesen  <drieseng@users.sourceforge.net>
8200
8201         * loader.c: MonoLoaderError was cleared too soon on load failure.
8202         Fixes bug #79424.
8203
8204 Mon Sep 18 15:37:13 CEST 2006 Paolo Molaro <lupus@ximian.com>
8205
8206         * icall.c: use the defining class vtable when accessing a
8207         static field, not a pobblibly derived class.
8208
8209 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
8210
8211         * icall.c string-icalls.c: Remove references to unicode.h.
8212
8213         * unicode.h unicode.c Makefile.am: Remove these unused source files.
8214
8215         * NOTES: Moved to ../../docs and renamed to thread-safety.txt.
8216
8217         * marshal.c (mono_marshal_emit_native_wrapper): Add an 'image' argument, 
8218         indicating the image where custom marshaller types should be looked up.
8219         (mono_ftnptr_to_delegate): Use the image of the delegate type to look up
8220         custom marshallers, instead of corlib. Fixes #79425.
8221
8222 2006-09-14  Zoltan Varga  <vargaz@gmail.com>
8223
8224         * marshal.c (emit_marshal_object): Fix marshalling of blittable classes and null.
8225
8226 2006-09-14  Jonathan Chambers  <joncham@gmail.com>
8227
8228         * environment.c (ves_icall_System_Environment_get_ProcessorCount): 
8229         Implement Environment.ProcessorCount.
8230         
8231         * environment.h (ves_icall_System_Environment_get_ProcessorCount): 
8232         Implement Environment.ProcessorCount.
8233         
8234         * icall.c: 
8235         Add Environment.ProcessorCount icall.
8236         
8237         Patch by Jason McFall.
8238
8239 2006-09-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8240
8241         * assembly.c: don't append .exe/.dll when the filename already contains
8242         one of those extensions.
8243
8244 2006-09-12  Martin Baulig  <martin@ximian.com>
8245
8246         * class.c (mono_bounded_array_class_get): Also add `IList<object>'
8247         to array interfaces.
8248
8249 2006-09-11  Martin Baulig  <martin@ximian.com>
8250
8251         * reflection.c (mono_image_build_metadata): Create the
8252         MethodImpl's after emitting all types and methods, so we don't
8253         need another fixup pass for them.
8254
8255 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
8256
8257         * class.c (mono_class_from_name_case): Fix regression introduced by the last
8258         change.
8259
8260 Mon Sep 11 12:57:15 CEST 2006 Paolo Molaro <lupus@ximian.com>
8261
8262         * gc-internal.h, appdomain.c, gc.c: force-destroy GC handles on domain
8263         unload.
8264
8265 2006-09-10  Zoltan Varga  <vargaz@gmail.com>
8266
8267         * object.c (mono_method_return_message_restore): Avoid a crash if one of the out
8268         args is not set. Fixes #78926.
8269
8270 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
8271
8272         * class.c (mono_class_init): Init class->no_special_static_fields from the cached info.
8273
8274         * image.c (load_class_names): Move this to class.c, and rename it to 
8275         'mono_image_init_name_cache'.
8276         (load_modules): Fix a warning.
8277
8278         * class.c icall.c image.c: Initialize image->name_cache lazily.
8279
8280         * class-internals.h (MonoGetClassFromName): New hook function to find a class based
8281         on its name using information in the AOT file.
8282
8283         * class.c (mono_class_from_name): Use the new hook function.
8284
8285 2006-09-06  Zoltan Varga  <vargaz@gmail.com>
8286
8287         * reflection.c (mono_param_get_objects): Handle enum default parameter values
8288         correctly.
8289
8290         * marshal.c (emit_marshal_object): Implement [In, Out] byval marshalling of classes.
8291         Fixes #79289.
8292         
8293 2006-09-06  Martin Baulig  <martin@ximian.com>
8294
8295         * icall.c (mono_lookup_internal_call): Small fix.
8296
8297 2006-09-05  Raja R Harinath  <rharinath@novell.com>
8298
8299         * debug-mono-symfile.c (mono_debug_open_mono_symbols): Remove
8300         double g_free.
8301
8302 2006-09-04  Sebastien Pouliot  <sebastien@ximian.com>
8303
8304         * debug-mono-symfile.c: Fix *some* memory leaks that happens only 
8305         when --debug is specified.
8306
8307 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
8308
8309         * class.c (setup_generic_array_ifaces): Fix a warning.
8310
8311 2006-09-04  Miguel de Icaza  <miguel@novell.com>
8312
8313         * Temporarily remove the patch to assemly.c that checks the
8314         assembly versions as it breaks our gacutil.
8315
8316 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
8317
8318         * metadata.c (mono_metadata_parse_mh_full): Fix an invalid free.
8319
8320         * assembly.c (mono_assembly_load_from_full): Avoid loading net 2.0 assemblies into
8321         a net 1.0 runtime.
8322
8323         * marshal.c (mono_string_builder_to_utf8): Fix marshalling of StringBuilders
8324         created using the default ctor. Fixes #79152.
8325         (mono_string_builder_to_utf16): Ditto.
8326
8327 2006-09-01  Martin Baulig  <martin@ximian.com>
8328
8329         Fix handling of the generic array interfaces.
8330
8331         * class-internals.h
8332         (MonoDefaults): Removed `generic_array_class' and added
8333         `generic_ilist' class.
8334
8335         * class.c
8336         (mono_bounded_array_class_get): Add the new generic array interfaces.
8337         (setup_generic_array_ifaces): New static method; create vtable
8338         entries for each method in the generic array interfaces.
8339
8340         * metadata.c
8341         (select_container): Allow "parent-less" generic methods.
8342
8343         * marshal.c
8344         (mono_marshal_get_generic_array_helper): New public method.
8345
8346         * icall.c
8347         (ves_icall_System_Array_InternalArray_GetGenericValueImpl):
8348         Renamed into ves_icall_System_Array_GetGenericValueImpl() and
8349         moved the interncall into System.Array.
8350
8351 2006-09-01  Raja R Harinath  <rharinath@novell.com>
8352
8353         A few more cases of avoiding work on types with ->byref set.
8354         Has the real fix for #79238
8355         * icall.c (is_generic_parameter): New helper.
8356         (ves_icall_Type_GetGenericParameterPosition): Use it.
8357         (ves_icall_Type_GetGenericParameterAttributes): Likewise.
8358         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
8359         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
8360         (ves_icall_Type_GetGenericTypeDefinition_impl): Return NULL on
8361         reference types.
8362         (ves_icall_Type_get_IsGenericTypeDefinition): Return FALSE on
8363         reference types.
8364         (ves_icall_Type_get_IsGenericInstance): Likewise.
8365         (ves_icall_Type_get_IsGenericType): Likewise.
8366
8367 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
8368
8369         * class.c (mono_class_setup_vtable_general): Share identical vtables with the parent
8370         class if possible.
8371
8372         * mempool.h (mono_mempool_get_allocated): New helper function.
8373
8374         * object.c (mono_class_create_runtime_vtable): Fix problem introduced by last
8375         change.
8376
8377         * mempool.c: Fix warnings and the calculation of stats.
8378
8379         * object.c (mono_class_create_runtime_vtable): Fix the AOT optimization.
8380
8381         * class.c (mono_class_setup_vtable): Update generic_vtable_count stat.
8382
8383         * loader.c (mono_get_method_from_token): Update method_count stat.
8384
8385         * class-internals.h (MonoStats): Add some stats.
8386
8387 2006-08-31 Robert Jordan  <robertj@gmx.net>
8388
8389         * icall.c: Replace the PtrToStringAuto, StringToHGlobalAuto icalls
8390         with managed variants.
8391         All code is contributed under the MIT/X11 license.
8392         
8393 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
8394
8395         * reflection.c (reflection_methodbuilder_to_mono_method): Set 
8396         method->skip_visibility based up the skipVisibility parameter of DynamicMethods.
8397
8398         * class-internals.h (MonoMethod): Add a 'skip_visibility' field.
8399
8400         * marshal.c (mono_marshal_load_type_info): Revert the last change as it can't cope
8401         with cycles in classes.
8402
8403         * icall.c (ves_icall_MonoType_get_Name): Add a '&' for byref types. Fixes #79110.
8404
8405         * marshal.c (emit_marshal_array): Avoid crash when a parameter with type array is 
8406         missing a [MarshalAs] directive. Fixes #79203.
8407
8408         * marshal.c (mono_marshal_load_type_info): Fix a race in initializing 
8409         klass->marshal_info. Fixes #79217.
8410
8411 2006-08-30  Martin Baulig  <martin@ximian.com>
8412
8413         Committing a patch from Joachim Ante <joe@otee.dk>:
8414         Add support for binary data symbol stores.
8415
8416         * debug-mono-symfile.c
8417         (mono_debug_open_mono_symbol_file): Renamed into
8418         mono_debug_open_mono_symbols() and added `raw_contents' and `size'
8419         arguments.
8420
8421         * mono-debug.c
8422         (mono_debug_open_image): Added `raw_contents' and `size' args.
8423         (mono_debug_init_2_memory): New public function.
8424
8425 Fri Aug 25 18:25:23 CEST 2006 Paolo Molaro <lupus@ximian.com>
8426
8427         * icall.c: handle TypedReference in GetTypeCode (bug #79150).
8428
8429 2006-08-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8430
8431         * appdomain.c: implement support for ShadowCopyFiles.
8432
8433 2006-08-22  Sebastien Pouliot  <sebastien@ximian.com>
8434
8435         * string-icalls.c: Add shortcut in ves_icall_System_String_ctor_charp
8436         when value is NULL (and should remove CID #51).
8437
8438 2006-08-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8439
8440         * image.c: moved 2 functions to ../utils.
8441
8442 Tue Aug 22 15:53:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
8443
8444         * gc.c: cope with the target object of a GC handle being NULL
8445         (bug #78877).
8446
8447 Tue Aug 22 11:10:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
8448
8449         * class.c: recursively check parent's explicit implementations
8450         of interface methods (fixes bug #79125).
8451
8452 2006-08-19  Miguel de Icaza  <miguel@novell.com>
8453
8454         * filewatcher.c: Avoid warnings when building, do not redefine
8455         constants that are defined.
8456
8457         Remove warnings.
8458
8459 2006-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8460
8461         * image.c: don't fail when the link points to an absolute path.
8462
8463 2006-08-18  Sebastien Pouliot  <sebastien@ximian.com>
8464
8465         * decimal.c: Remove dead code (unrequired check) in mono_decimalIncr.
8466         Fix CID #3.
8467
8468 2006-08-17  Miguel de Icaza  <miguel@novell.com>
8469
8470         * image.c (full_path): A new method used to obtain the actual path
8471         of an assembly even in the presence of symbolic links.  
8472
8473         This is necessary for the case where we are running a binary that
8474         has been GACed, but we are using the "published" path name
8475         ($prefix/mono/1.0/blah.exe) which happens to point to the real
8476         file in the GAC.
8477
8478         This was the source of the failure for the `xsp' command with the
8479         recent AppDomain changes, as far as the runtime was concerned,
8480         there were two different assemblies: $prefix/mono/1.0/blah.exe and
8481         $prefix/mono/gac/blah/version/blah.exe.
8482
8483         (do_mono_image_open): use full path
8484
8485 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8486
8487         * object.c (mono_class_create_runtime_vtable): Add a FIXME.
8488
8489 2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
8490
8491         * marshal.c: Fix mono_marshal_check_domain_image if an invalid 
8492         domain_id is supplied. Fix CID #241 and corlib's unit tests.
8493
8494 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8495
8496         * class.c (mono_class_layout_fields): Set min_align to a bigger value for
8497         small structures. Fixes #78990.
8498
8499 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
8500
8501         * marshal.c (mono_marshal_get_xappdomain_invoke): Use the new helper functions here.
8502
8503         * appdomain.c (ves_icall_System_AppDomain_createDomain): Fix a warning.
8504
8505 2006-08-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8506
8507         * appdomain.c:
8508         * marshal.c: don't load all the assemblies from a domain into newly
8509         created ones. The new domains might have different rules and load
8510         assemblies from different locations. Fixes bug #76757.
8511
8512         Patch by Lluis. Conflicts resolved by Brian Crowell.
8513
8514 2006-08-16  Alp Toker  <alp@atoker.com>
8515
8516         * socket-io.c: First half of the fix for #79084.
8517         Set sa_size to the length of the content, not that of the struct.
8518         Don't add NULL suffix to the content, this should be done in
8519         managed code if needed.
8520
8521 2006-08-14  Raja R Harinath  <rharinath@novell.com>
8522
8523         Fix part of #79012
8524         * metadata.c (do_mono_metadata_parse_generic_class): Don't SEGV if
8525         mono_metadata_parse_type returns NULL.
8526
8527 2006-08-13  Atsushi Enomoto  <atsushi@ximian.com>
8528
8529         * normalization-tables.h : new file for string normalization data.
8530         * locales.c, locales.h, icall.c :
8531           added load_normalization_resource() for string normalization,
8532           and icall as well.
8533         * Makefile.am : added normalization-tables.h to the sources.
8534
8535 2006-08-13  Zoltan Varga  <vargaz@gmail.com>
8536
8537         * marshal.c: Add more helper functions to reduce code duplication and use them
8538         everywhere.
8539
8540 2006-08-12  Zoltan Varga  <vargaz@gmail.com>
8541
8542         * marshal.c: Fix non-x86 stdcall warnings.
8543         
8544         * marshal.c marshal.h: Add some helper functions to emit/patch branches, and use 
8545         them everywhere.
8546
8547 2006-08-11  Jonathan Chambers  <joncham@gmail.com>
8548
8549         * class.c (mono_bounded_array_class_get): Fix if statement that caused incorrect
8550         type check on multi-dimensional arrays. Fixes #79000.
8551
8552 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
8553
8554         * class.c (mono_class_setup_parent): setup is_com_object during class initialization.
8555         * object.c (mono_remote_class_vtable/mono_object_new_specific): Changed checks
8556         to use is_com_object instead of MONO_CLASS_IS_IMPORT() macro.
8557         * class-internals.h: add is_com_object to class structure.
8558         * marshal.c: Fixed marshalling for IDispatch and IUnknown, added
8559         null checks to COM object marshalling. Fix .ctor call on RCW.
8560         * icall.c: Added icall implementation for MonoType.IsCOMObjectImpl.
8561         
8562         All code is contributed under the MIT/X11 license.
8563
8564 2006-08-09  Dick Porter  <dick@ximian.com>
8565
8566         * monitor.c (mono_monitor_cleanup): mono_monitor_cleanup() is
8567         racing mono_monitor_allocator_lock() somewhere, so don't delete
8568         the critical section for now.  Found by running and exiting
8569         monodevelop.
8570
8571 2006-08-10  Zoltan Varga  <vargaz@gmail.com>
8572
8573         * marshal.c (cominterop_get_native_wrapper): Fix a warning.
8574         (ves_icall_System_ComObject_FindInterface): Ditto.
8575         (ves_icall_System_ComObject_CacheInterface): Ditto.
8576
8577         * metadata.c (do_mono_metadata_type_equal): Applied patch from Roberto Costa
8578         (roberto.costa@st.com). Add support for MONO_TYPE_FNPTR.
8579
8580 2006-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8581
8582         * threadpool.c: treat pipes from process asynchronous reads as sockets
8583         when reading from them, so we get select/poll or epoll to wait for
8584         data.
8585
8586 2006-08-07  Sebastien Pouliot  <sebatien@ximian.com>
8587
8588         * loader.c: Fix a typo (CID #233) in the null check.
8589
8590 2006-08-07  Zoltan Varga  <vargaz@gmail.com>
8591
8592         * appdomain.c (mono_domain_unload): Close the thread handle of the unload thread.
8593         Hopefully fixes #78949.
8594         
8595         * metadata.c (mono_metadata_parse_method_signature_full): Applied patch from 
8596         Roberto Costa (roberto.costa@st.com). Handle vararg signatures without SENTINEL
8597         bytes. Fixes #78972.
8598
8599 2006-08-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8600
8601         * filewatcher.c: we need to set errno here.
8602
8603 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8604
8605         * filewatcher.c: let Win32Exception get the error value.
8606
8607 2006-08-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8608
8609         * filewatcher.c: translate errno into win32 errors for Win32Exception
8610         to know what happened.
8611
8612 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
8613
8614         * threadpool.c: Fix more warnings.
8615
8616         * assembly.c (search_loaded): Fix warnings.
8617
8618         * threadpool.c (mono_thread_pool_finish): Fix warnings.
8619         (mono_async_invoke): Ditto.
8620
8621 2006-07-28  Jonathan Chambers  <joncham@gmail.com>
8622
8623         * object.c (mono_remote_class_vtable): Need to create proxy vtable
8624         entries for __ComObject type in addition to ComImport types.
8625         * marshal.c: Added support for marshalling COM RCWs. Fixed warning
8626         about hash table.
8627         
8628         All code is contributed under the MIT/X11 license.
8629
8630 Fri Jul 28 19:04:34 CEST 2006 Paolo Molaro <lupus@ximian.com>
8631
8632         * image.c: avoid tentative loading of modulerefs that contain
8633         no metadata (P/Invoke library names).
8634
8635 2006-07-28  Dick Porter  <dick@ximian.com>
8636
8637         * loader.c (mono_loader_cleanup): mono_loader_cleanup() is racing
8638         mono_loader_lock() somewhere, so don't delete the critical section
8639         for now.  Found by running and exiting monodevelop.
8640
8641 2006-07-26 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8642
8643         * filewatcher.c: define the inotify syscalls when we're building on
8644         linux and have sys/syscall.h. The build system might not have support
8645         for inotify but the target system might have it.
8646
8647 2006-07-26  Miguel de Icaza  <miguel@novell.com>
8648
8649         * domain.c: Documentation updates.
8650
8651         * loader.c (mono_free_method): Do not release the method
8652         information if we are being profiled, as profilers will use this
8653         information at shut down to present some data to the user.
8654
8655         This is needed so that the profiler does not crash, as the
8656         profiler tends to keep MonoMethods around, and they might become
8657         invalid if we free these.
8658
8659         (mono_get_method_constrained): Return the original CIL stream
8660         method as well, so verification can be performed against it.
8661
8662 2006-07-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8663
8664         * filewatcher.[ch]: support for inotify file system watcher.
8665         * icall.c: add new internal calls for the inotify file system watcher.
8666
8667 2006-07-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
8668
8669         * threadpool.c: Windows also misbehaves on async. connects. Fixes bug
8670         #78888.
8671
8672 2006-07-20  Dick Porter  <dick@ximian.com>
8673
8674         * file-io.c (ves_icall_System_IO_MonoIO_Seek): Fix signed/unsigned
8675         warning.
8676
8677 2006-07-20  Dick Porter  <dick@ximian.com>
8678
8679         * threads.c (start_wrapper): Do the thread cleanup while we still
8680         hold a reference to its object.  Fixes bug 78123.
8681
8682 2006-07-18  Kornél Pál  <kornelpal@gmail.com>
8683
8684         * class-internals.h: Added MONO_WRAPPER_MANAGED_TO_MANAGED wrapper type.
8685         * debug-helpers.c: Map MONO_WRAPPER_MANAGED_TO_MANAGED to
8686           "managed-to-managed".
8687         * icall.c: Redirect string constructors that take sbyte* to
8688           ves_icall_System_String_ctor_RedirectToCreateString.
8689         * marshal.c: Redirect ves_icall_System_String_ctor_RedirectToCreateString
8690           to CreateString () methods with matching signature.
8691         * reflection.c: Use original security informations for
8692           MONO_WRAPPER_MANAGED_TO_MANAGED.
8693         * security-manager.c: Use original security informations for
8694           MONO_WRAPPER_MANAGED_TO_MANAGED.
8695         * string-icalls.c: Added ves_icall_System_String_ctor_RedirectToCreateString
8696           that is a placeholder and only its address should be used.
8697         * string-icalls.h: Added ves_icall_System_String_ctor_RedirectToCreateString
8698           that is a placeholder and only its address should be used.
8699
8700 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
8701
8702         Begin implementing COM Interop.
8703         * appdomain.c: Increment corlib version.
8704         * class.c: Set ComImport classes' parent to __ComObject.
8705         * loader.c: Mark cominterop methods as such.
8706         * domain.c: Add __ComObject class to MonoDefaults structure.
8707         * image.c: Add 2 hashtables to the image for COM Interop related methods
8708         * metadata.c: Added mono_metadata_type_dup_mp to duplicate a type
8709         using the mempool allocator
8710         
8711         * metadata-internals.h: Add 2 hashtables to the image for COM Interop related methods
8712         * metadata.h: Added cominterop field to _MonoMethodSignature struct and
8713         declaration for mono_metadata_type_dup_mp.
8714         
8715         * debug-helpers.c: Added strings for two additional wrapper types
8716         * object.c: Create proxy objects for ComImport classes
8717         * class-internals.h: Define 2 new method wrapper types, COM Interop remoting target,
8718         and added __ComObject class to MonoDefaults structure.
8719         
8720         * object-internals.h: Finish MonoRealProxy definition, and add definition of
8721         MonoComInteropProxy and MonoComObject.
8722         
8723         * marshal.c: Added support for COM Interop
8724         (signature_cominterop): Converts managed signature to corresponding
8725         unmanaged COM signature.
8726         (cominterop_get_function_pointer): gets unmanaged function pointer via
8727         COM object vtable
8728         (cominterop_get_com_slot_for_method): returns vtable slot in COM interface of method
8729         (cominterop_get_method_interface): returns interface type that method is defined on
8730         (mono_mb_emit_cominterop_call): emits native call to function pointer
8731         gotten from vtable
8732         (cominterop_get_native_wrapper_adjusted): actual wrapper around unmanaged COM call
8733         that matches signature of unmanaged function.
8734         (cominterop_get_native_wrapper): wrapper around adjusted method call.
8735         (cominterop_get_invoke): forwards call from proxy to __ComObject
8736         (ves_icall_System_Runtime_InteropServices_Marshal_AddRef): Implements Marshal.AddRef 
8737         (ves_icall_System_Runtime_InteropServices_Marshal_QueryInterface): Implements Marshal.QueryInterface 
8738         (ves_icall_System_Runtime_InteropServices_Marshal_Release): Implements Marshal.Release 
8739         
8740         * marshal.h: Added Marshal icall declarations.
8741         * icall.c: Added __ComObject icalls. Need to store interfaces in unmanaged code
8742         so we can access them in finalizer
8743         
8744 2006-07-14  Dick Porter  <dick@ximian.com>
8745
8746         * object.c (mono_type_initialization_cleanup): Fix a race
8747         condition by temporarily commenting out the critical section
8748         deletion.
8749
8750 2006-07-14  Zoltan Varga  <vargaz@gmail.com>
8751
8752         * reflection.c (create_custom_attr): Fix some warnings.
8753         (create_custom_attr_data): Ditto.
8754         (typebuilder_setup_properties): Save custom attrs for properties in dynamic
8755         types. Fixes #78855.
8756
8757 2006-07-11  Zoltan Varga  <vargaz@gmail.com>
8758
8759         * class.c (mono_type_get_name_recurse): Fix the name of 1 dimensional non-szarrays.
8760
8761         * reflection.c (mono_custom_attrs_free): Fix freeing of dynamic cattr info.
8762
8763 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
8764
8765         * reflection.c (resolve_object): Add support for DynamicMethod.
8766
8767         * domain.c appdomain.c threads.c monitor.c object.c gc.c: Applied patch from
8768         Joachim Ante (joe@otee.dk). Fix some shutdown leaks.
8769
8770 2006-07-06  Sebastien Pouliot  <sebastien@ximian.com>
8771
8772         * process.c: In ves_icall_System_Diagnostics_Process_GetModules_internal 
8773         don't leak GPtrArray's pdata has we have no use (nor free) for it.
8774
8775 2006-07-01  Zoltan Varga  <vargaz@gmail.com>
8776
8777         * marshal.c (mono_marshal_get_runtime_invoke): Fix passing of generic valuetypes.
8778         Fixes #77888.
8779
8780 2006-06-30  Raja R Harinath  <rharinath@novell.com>
8781
8782         * icall.c (ves_icall_MonoMethod_get_base_definition): Simplify
8783         slightly: remove a shadow local variable.
8784
8785 2006-06-29  Raja R Harinath  <rharinath@novell.com>
8786
8787         * icall.c (ves_icall_MonoMethod_get_base_definition): Return the
8788         definition that introduces the virtual function slot.
8789         Also fix Coverity #105.
8790
8791 2006-06-29  Zoltan Varga  <vargaz@gmail.com>
8792
8793         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Fix support
8794         for dynamic assemblies. Fixes #78724.
8795
8796 2006-06-28  Zoltan Varga  <vargaz@gmail.com>
8797
8798         * marshal.c (mono_string_to_byvalwstr): Fix this completely broken function.
8799         Fixes #78722.
8800
8801 2006-06-21  Martin Baulig  <martin@ximian.com>
8802
8803         * reflection.c
8804         (method_encode_clauses): Don't assert on `ex_info->handlers' here;
8805         fixes #76484.
8806
8807 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
8808
8809         * object.h (mono_array_setref): Cast value to (MonoObject*) to fix warnings.
8810
8811 2006-06-20  Raja R Harinath  <rharinath@novell.com>
8812
8813         Make 'mono_class_get_full' only inflate TYPESPECs, not TYPEDEFs
8814         nor TYPEREFs.
8815         * class.c (mono_class_create_from_typespec): Add 'context' argument.
8816         Inflate result if necessary.
8817         (mono_class_get_full): Remove old version.  Rename from
8818         'mono_class_get' and add 'context' argument.  Pass it to
8819         ..._create_from_typespec.
8820         (mono_class_get): New.  Simple wrapper to mono_class_get_full.
8821         (mono_ldtoken): Revert change below.
8822
8823 2006-06-20  Martin Baulig  <martin@ximian.com>
8824
8825         * class.c (mono_ldtoken): Don't pass the generic context to
8826         mono_class_get_full() for MONO_TOKEN_TYPE_DEF/REF.  Fixes #78053.
8827
8828 2006-06-15  Zoltan Varga  <vargaz@gmail.com>
8829
8830         * marshal.c (mono_ftnptr_to_delegate): Avoid allocating signature from mempool
8831         and later freeing it. Fixes #78638.
8832
8833 2006-06-15  Miguel de Icaza  <miguel@novell.com>
8834
8835         * icall.c (mono_class_get_throw): Revert over-zealous error
8836         throwing, the caller for mono_class_get_throw will cope with
8837         errors when classes are not properly initialized already.
8838
8839         The code still copes with loader exceptions though.
8840
8841         Fixes the regression in reftype1 and reftype3 from the CAS tests.
8842         
8843 2006-06-14  Miguel de Icaza  <miguel@novell.com>
8844
8845         Fixes the `make run1' version of RuntimeAbort (to be commited,
8846         source is in Bugzilla).
8847         
8848         * metadata.c (mono_metadata_interfaces_from_typedef_full): Return
8849         FALSE on class loading failure instead of returning true.
8850
8851         * class.c (mono_class_create_from_typedef): It is possible for
8852         mono_metadata_interfaces_from_typedef_full to fail if a class is
8853         not found, cope with this.
8854         
8855
8856 2006-06-14  Dick Porter  <dick@ximian.com>
8857
8858         * socket-io.c: 
8859         * process.c: Fix a bunch of signed/unsigned warnings from gcc
8860         4.1.1
8861
8862 2006-06-12  Atsushi Enomoto  <atsushi@ximian.com>
8863
8864         * culture-info-table.h : oops, forgot to make it nsync with r61548.
8865
8866 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
8867
8868         * icall.c: Another fix for building mono in Visual Studio.
8869
8870 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
8871
8872         * marshal.c icall.c: Minor fixes for building mono in Visual Studio.
8873         
8874 2006-06-09  Martin Baulig  <martin@ximian.com>
8875
8876         * debug-mono-symfile.c: Put this back and really fix it this
8877         time. Sorry for all the trouble.
8878
8879 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
8880
8881         * icall.c (mono_class_get_throw): Fix a warning.
8882         (ves_icall_System_Reflection_Assembly_GetTypes): Allways throw 
8883         ReflectionTypeLoadException if needed. Fixes #78606.
8884
8885         * class.c (mono_class_setup_vtable_general): Handle loader errors a bit better.
8886         (mono_class_init): Ditto.
8887
8888         * loader.c (mono_loader_set_error_assembly_load): Display a separate warning for
8889         ref_only exceptions.
8890         (mono_loader_clear_error): Make this work even if there is no error.
8891
8892 2006-06-08  Jonathan Chambers  <jonathan.chambers@ansys.com>
8893
8894         * object-internals.h marshal.c marshal.h icall.c: Implement method 
8895         Marshal.GetComSlotForMethodInfo using internal call.
8896
8897 2006-06-07  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * class-internals.h: Add a new kind of loader error LOADER_ERROR_ASSEMBLY plus
8900         a function for signalling it.
8901
8902         * class.c (mono_class_from_typeref): Use the new kind of loader error when
8903         a referenced assembly is not found.
8904
8905         * loader.c (mono_loader_error_prepare_exception): Add support for 
8906         LOADER_ERROR_ASSEMBLY. Fix formatting.
8907
8908 2006-06-05  Jonathan Chambers  <jonathan.chambers@ansys.com>
8909
8910         * domain.c appdomain.c class-internals.h marshal.c: Add support 
8911         for VARIANT marshalling on windows and increment corlib version
8912         since Variant struct was added.
8913
8914 2006-06-03  Miguel de Icaza  <miguel@novell.com>
8915
8916         * debug-mono-symfile.c: Revert Martin's previous patch which broke
8917         stack trace line information:
8918
8919         (Martin) (mono_debug_symfile_lookup_location): Fix the algorithm:
8920         (Martin) when looking up B which is between A and C, return A not C.
8921
8922         Bug is #78573.
8923
8924         Thanks to Alexander Olk for tracking this down.
8925
8926 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
8927
8928         * marshal.c (mono_marshal_set_last_error_windows): Fix build.
8929         
8930         * marshal.c (mono_marshal_emit_native_wrapper): Call GetLastError () early and without a wrapper to
8931         avoid clobbering its value.
8932         (mono_string_to_lpstr): Fix a warning on windows.
8933
8934 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8935
8936         * class-internals.h (MonoClass): Removed obsolete 'dummy' flag.
8937
8938         * reflection.c loader.c: Removed references to 'dummy' flag.
8939
8940         * loader.c (mono_loader_error_prepare_exception): Fix a warning.
8941
8942         * threadpool.c: Make ASyncCall a copy of the managed MonoAsyncCall class so
8943         it gets GC tracking.
8944
8945         * object-internals.h (MonoAsyncResult): Add an 'object_data' field which has
8946         GC tracking.
8947         
8948         * object.c (mono_async_result_new): Add an additional parameter 'object_data'.
8949
8950         * marshal.c threadpool.c: Update callers of mono_async_result_new.
8951
8952         * appdomain.c: Bump corlib version.
8953
8954 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8955
8956         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8957         CEE_STIND_REF when working with object references.
8958
8959 2006-05-31  Zoltan Varga  <vargaz@gmail.com>
8960
8961         * class.c (mono_class_setup_fields): Call mono_class_init () for class->parent.
8962         Fixes #78539.
8963
8964 2006-05-30  Miguel de Icaza  <miguel@novell.com>
8965
8966         * loader.c (method_from_memberref): Fix argument value for
8967         mono_loader_set_error_method_load (I was passing the MonoClass
8968         instead of the class name char *).
8969
8970 2006-05-30  Zoltan Varga  <vargaz@gmail.com>
8971
8972         * marshal.c: Use mono_mb_emit_stloc in more places. Use CEE_LDIND_REF and
8973         CEE_STIND_REF when working with object references.
8974
8975 2006-05-30  Martin Baulig  <martin@ximian.com>
8976
8977         * mono-debug.c (mono_debug_print_stack_frame): Reverted the
8978         mono_method_full_name() change and replace the ':' with a '.'
8979         here.
8980
8981 2006-05-30  Martin Baulig  <martin@ximian.com>
8982
8983         * debug-mono-symfile.c
8984         (mono_debug_symfile_lookup_location): Fix the algorithm:
8985         when looking up B which is between A and C, return A not C.
8986
8987 2006-05-29  Martin Baulig  <martin@ximian.com>
8988
8989         * mono-debug.h
8990         (MonoDebugMethodInfo): Make the typedef public.
8991         (MonoDebugSourceLocation): New public struct.
8992
8993         * mono-debug.c
8994         (mono_debug_source_location_from_address): Removed.
8995         (mono_debug_source_location_from_il_offset): Removed.
8996         (mono_debug_il_offset_from_address): Removed.
8997         (mono_debug_address_from_il_offset): Removed.
8998         (mono_debug_lookup_method): New public function.
8999         (mono_debug_lookup_source_location): New public function; replaces
9000         the old mono_debug_source_location_from_*() functions; see the
9001         inline documentation.
9002         (mono_debug_free_source_location): New public function.
9003         (mono_debug_print_stack_frame): New public function; see the
9004         inline documentation.
9005
9006         * debug-mono-symfile.c
9007         (mono_debug_find_source_location): Renamed into
9008         mono_debug_symfile_lookup_location(); only take a
9009         `MonoDebugMethodInfo *' and an `offset' argument; added inline
9010         documentation.
9011         (mono_debug_find_method): Renamed into
9012         mono_debug_symfile_lookup_method().
9013
9014 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
9015
9016         * assembly.c (mono_assembly_open_full): Dont overwrite the status
9017         returned by mono_image_open_full ().
9018
9019         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Convert
9020         MONO_IMAGE_IMAGE_INVALID into a BadImageFormatException. Fixes
9021         #78517.
9022
9023         * object.c (compute_class_bitmap): Use class->class_size for static fields. Fixes
9024         #78518.
9025
9026 2006-05-27  Miguel de Icaza  <miguel@novell.com>
9027
9028         * class.c (mono_class_from_typeref): handle missing images
9029         earlier, deals with bug #78418.   Refactor code; 
9030
9031         Fix a warning introduced in my previous commit (some stale code
9032         from before I revisited my patch).
9033
9034         * class.c (mono_class_create_from_typedef): On failure, remove the
9035         class from the MonoImage->class_cache as the class is not
9036         initialized;   Fixes the leak pointed out by Paolo.
9037
9038 2006-05-25  Dick Porter  <dick@ximian.com>
9039
9040         * threads.c (mono_thread_cleanup): Build fix.  Comment out the
9041         DeleteCriticalSections until I figure out which one may still be
9042         sometimes locked when mono_thread_cleanup is called.
9043
9044 2006-05-24  Dick Porter  <dick@ximian.com>
9045
9046         * threads.c (mono_thread_cleanup): Move the threading cleanup out
9047         of mono_thread_manage and back into its own function, so it can be
9048         called after the finalizer thread has finished.
9049
9050         * appdomain.c (mono_runtime_cleanup): Call mono_thread_cleanup
9051
9052 2006-05-24  Zoltan Varga  <vargaz@gmail.com>
9053
9054         * assembly.c (mono_assembly_open_full): Fix typo introduced by a previous change.
9055         Fixes #78495.
9056
9057         * marshal.c (emit_ptr_to_object_conv): Implement marshalling of byval arrays
9058         with non-blittable elements.
9059         (emit_object_to_ptr_conv): Ditto. Fixes #78492.
9060
9061 2006-05-24  Martin Baulig  <martin@ximian.com>
9062
9063         * mono-debug-debugger.h (MonoDebuggerEvent): Added
9064         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE'.    
9065
9066         * mono-debug-debugger.c (mono_debugger_cleanup): Send a
9067         `MONO_DEBUGGER_EVENT_FINALIZE_MANAGED_CODE' and then set
9068         `mono_debugger_event_handler' to NULL.
9069
9070 2006-05-24  Martin Baulig  <martin@ximian.com>
9071
9072         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 57.
9073
9074 2006-05-24  Martin Baulig  <martin@ximian.com>
9075
9076         * mono-debug-debugger.h
9077         (mono_debugger_create_notification_function): Added
9078         `MonoCodeManager *' argument.
9079
9080 Tue May 23 16:05:47 CEST 2006 Paolo Molaro <lupus@ximian.com>
9081
9082         * boehm-gc.c, null-gc.c: fix compilation on 64 bit systems.
9083
9084 Tue May 23 13:44:11 CEST 2006 Paolo Molaro <lupus@ximian.com>
9085
9086         * Makefile.am, gc-internal.h, reflection.c: updates for the new GC.
9087         * sgen.-gc.c, sgen-gc.h: simple generational compacting GC
9088         implementation.
9089
9090 Tue May 23 13:40:30 CEST 2006 Paolo Molaro <lupus@ximian.com>
9091
9092         * icall.c: precise GC support: objects can't be stored in unmanaged
9093         memory anymore, even if they are kept alive by other references: since
9094         they can move the GC needs to be able to always find them.
9095
9096 Tue May 23 12:57:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
9097
9098         * object.c: precise GC support for static fields. Support
9099         for moving GCs: write barriers and pinned allocation for interned
9100         strings.
9101
9102 Tue May 23 12:41:44 CEST 2006 Paolo Molaro <lupus@ximian.com>
9103
9104         * domain.c, domain-internals.h: precise GC support for the MonoDomain
9105         structure.
9106
9107 Tue May 23 12:38:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
9108
9109         * class.c, gc.c: sgen and precise GC updates.
9110
9111 Tue May 23 12:33:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
9112
9113         * marshal.h, marshal.c: added write barrier wrapper and precise type
9114         fixes.
9115
9116 Tue May 23 12:31:22 CEST 2006 Paolo Molaro <lupus@ximian.com>
9117
9118         * object.h, null-gc.c, boehm-gc.c: more write barrier functions and
9119         support.
9120
9121 Tue May 23 12:27:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
9122
9123         * reflection.c: precise and sgen GC updates.
9124
9125 Tue May 23 12:21:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
9126
9127         * debug-helpers.c, class-internals.h: added write barrier wrapper type.
9128
9129 2006-05-22  Zoltan Varga  <vargaz@gmail.com>
9130
9131         * threads.c (start_wrapper): Fix a missed guint32 tid declaration.
9132
9133 2006-05-20  Zoltan Varga  <vargaz@gmail.com>
9134
9135         * reflection.c (encode_cattr_value): Fix yet another bug in the encoding of
9136         MONO_TYPE_OBJECT. Fixes #78462.
9137
9138 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
9139
9140         * marshal.c (emit_marshal_vtype): Add support for UnmanagedType.LPStruct 
9141         and blittable types.
9142
9143 2006-05-17  Miguel de Icaza  <miguel@novell.com>
9144
9145         * class.c (mono_class_get_exception_for_failure): Implement parts
9146         of a TODO: if the loader error is set (instead of the class
9147         error), we return a Loader exception that can be properly thrown
9148         elsewhere.
9149
9150         This was exposed by some Winforms 2.0 code that I tried to run
9151         (Atsushi pointed me to it).
9152
9153 2006-05-17  Zoltan Varga  <vargaz@gmail.com>
9154
9155         * marshal.c (mono_marshal_emit_native_wrapper): Make the marshalling code more
9156         uniform by moving stuff from this function to the proper emit_marshal_XXX functions.
9157         
9158         * marshal.c (emit_marshal_vtype): Add limited support for 
9159         UnmanagedType.LPStruct. Fixes #78427.
9160
9161         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure): 
9162         Applied a patch from kangaroo to fix #77523.
9163
9164 2006-05-17  Martin Baulig  <martin@ximian.com>
9165
9166         * threads.c
9167         (debugger_thread_vtable): Moved into ../mini/debug-debugger.c.
9168         (debugger_thread_created): Removed.
9169         (debugger_thread_exited): Removed.
9170
9171 2006-05-15  Zoltan Varga  <vargaz@gmail.com>
9172
9173         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
9174
9175         * object-internals.h (MonoReflectionResource): Sync with managed version.
9176
9177 2006-05-12  Wade Berrier <wberrier@novell.com>
9178
9179         * threads.c: Define G_GSIZE_FORMAT for systems with glib < 2.6
9180
9181 2006-05-12  Zoltan Varga  <vargaz@gmail.com>
9182
9183         * class.c (mono_fnptr_class_get): Set class->image to corlib for now, since other
9184         functions try to allocate from the image mempool.
9185
9186 2006-05-12  Dick Porter  <dick@ximian.com>
9187
9188         * threads.c (mono_thread_attach): Fix usage of GetCurrentThread().
9189
9190 2006-05-12  Lluis Sanchez  <lluis@ximian.com>
9191
9192         * object.c: The FieldGetter and FieldSetter methods require the full
9193         name of the class, not only the name. Fixes bug #78277.
9194
9195 2006-05-11  Miguel de Icaza  <miguel@novell.com>
9196
9197         * loader.c (method_from_memberref): Do not pass the NULL klass to
9198         mono_loader_set_error_() methods.  Pass the non-NULL value
9199         (class). 
9200
9201 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * assembly.c (mono_assembly_load_from_full): Fix a bunch of warnings.
9204         (mono_assembly_close): Null out assembly->image->references after freeing it.
9205
9206         * image.c (mono_image_close): Free image->references.
9207         
9208         * reflection.c (mono_image_basic_init): Fix a small memory leak.
9209
9210 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
9211
9212         * marshal.c: In function mono_mb_add_local don't use the mb pointer 
9213         before checking if it's NULL (g_assert).
9214
9215 2006-05-10  Martin Baulig  <martin@ximian.com>
9216
9217         * metadata.c (mono_type_size): Kill the g_assert() in MONO_TYPE_GENERICINST;
9218         I thought I already killed that two months ago, but now it somehow reappeared.
9219
9220 2006-05-10  Martin Baulig  <martin@ximian.com>
9221
9222         * mono-debug.c (mono_debug_add_method): Allow instantiated generic methods.
9223
9224 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
9225
9226         * reflection.c: Allocate memory for dynamically created methods in the image
9227         mempools.
9228
9229 2006-05-10  Sebastien Pouliot  <sebastien@ximian.com>
9230
9231         * appdomain.c: In ves_icall_System_AppDomain_[Get|Set]Data functions, 
9232         don't use the ad pointer before checking if it's NULL (g_assert).
9233
9234 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
9235
9236         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Remove
9237         a redundant (and incorrect) addref. Hopefully fixes sn.exe on windows.
9238
9239         * marshal.c: Allocate all signatures from mempools.
9240
9241         * marshal.c: Allocate some more signatures from mempools.
9242
9243 2006-05-09  Miguel de Icaza  <miguel@novell.com>
9244
9245         * object.c (mono_load_remote_field): The code used to provide a
9246         temporary variable for returning results if the user did not
9247         provide a result pointer.  But our temporary variable was allocted
9248         on the satck.
9249
9250         Fix calling code to always pass a result area.   Coverity ID 103.
9251
9252 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
9253
9254         * threads.c (ves_icall_System_Threading_Interlocked_Add_Int): Return the new
9255         value, not the old. Fixes #78312.
9256         (ves_icall_System_Threading_Interlocked_Add_Long): Ditto.
9257
9258         * class.c (mono_bounded_array_class_get): Allocate data from the image mempool.
9259         (mono_ptr_class_get): Ditto. Also change the cache from a global one to a 
9260         per-image cache.
9261
9262         * assembly.c (mono_assembly_close): Free image->references.
9263
9264         * assembly.c (mono_assembly_names_equal): Fix a warning.
9265         (mono_assemblies_cleanup): Cleanup more global data.
9266
9267         * metadata-internals.h (MonoImage): Add 'ptr_cache'.
9268
9269         * image.c (mono_image_close): Free up the contents of 'array_cache', free up
9270         ptr_cache and image->modules.
9271
9272         * image.c (mono_image_init): Allocate array_cache lazily.
9273         
9274 2006-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9275
9276         * assembly.c: use GetCurrentThreadId for the hash, as GetCurrentThread
9277         behavior was changed recently and has bad side effects.
9278
9279 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
9280
9281         * assembly.c (mono_assembly_open_full): Add a missing mono_image_close ().
9282         
9283         * assembly.c (mono_assembly_close): Remove a debug printf.
9284
9285         * profiler.c (create_profiler): Use mono_aligned_addr_hash.
9286
9287         * metadata-internals.h image.c assembly.c: Change the reference counting scheme
9288         to also allow for temporary references between mono_image_open ()/close ().
9289
9290         * domain.c (get_runtimes_from_exe): Add a FIXME.        
9291
9292 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
9293
9294         * marshal.c: Fix support for dynamic methods.
9295
9296         * appdomain.c (mono_runtime_cleanup): Call mono_marshal_cleanup ().
9297
9298         * marshal.c (mono_marshal_cleanup): New cleanup function.
9299
9300         * marshal.c: Rewrite the wrapper code to allocate most of its memory from the 
9301         image mempools.
9302
9303         * class.c (mono_class_init): Fix leaking class->nested_classes.
9304
9305         * metadata-internals.h (MonoImage): Add a couple of new wrapper caches.
9306
9307         * image.c (mono_image_init): Initialize the new cashes.
9308
9309         * image.c (mono_image_close): Destroy the new cashes.
9310
9311         * marshal.c: Get rid of most of the static caches in favor of per-image caches.
9312
9313         * mempool.c (mono_mempool_strdup): New helper function.
9314
9315         * class-internals.h: Add prototype for mono_loader_unlock ().
9316
9317         * domain.c (mono_jit_info_table_find): Fix a warning.
9318         (mono_debugger_check_runtime_version): Ditto.
9319
9320         * rawbuffer.h rawbuffer.c metadata-internals.h metadata.c class-internals.h 
9321         class.c loader.c image.h image.c assembly.h assembly.c: Add init () and cleanup ()
9322         functions to these modules.
9323
9324         * domain-internals.h domain (mono_cleanup): New internal method to cleanup most
9325         metadata modules.
9326         
9327         * marshal.c (mono_free_bstr): Fix a warning.
9328
9329         * assembly.c (mono_assembly_open_full): Fix another small leak.
9330
9331         * object.c: Fix some unload leaks in the remoting code.
9332
9333         * object-internals.h object-internal.c (mono_string_to_utf8_mp): New helper
9334         function.
9335
9336         * assembly.c (mono_assembly_close): Fix a leak when unloading dynamic assemblies.
9337
9338         * reflection.c: Fix some unload leaks in dynamic assemblies.
9339
9340 2006-05-02  Jonathan Chambers  <jonathan.chambers@ansys.com>
9341
9342         * marshal.c: Add BSTR support on Win32 (all changes under MIT X11)
9343         * marshal.h: Add BSTR support on Win32
9344         * icall.c: Add BSTR icalls
9345         * metadata.h: Add BSTR enums
9346
9347 2006-04-28  Miguel de Icaza  <miguel@novell.com>
9348
9349         Work to catch the crash from #76795 and turn it into an
9350         exception.   As I stubbed out pieces of the VisualBasic support,
9351         I found a number of places where the code was failing and I added
9352         checks to those places. 
9353         
9354         * metadata.c (do_mono_metadata_parse_generic_class): Make this
9355         function return a status code.  If we fail to parse the signature
9356         from mono_metadata_parse_generic_inst, return FALSE.
9357
9358         * loader.c (mono_get_method_from_token): If we fail to load the
9359         method (mono_class_get) return NULL.   
9360
9361         * (method_from_memberref): Return NULL if we are unable to parse
9362         the method signature
9363
9364         (mono_loader_error_prepare_exception): Since we now use the
9365         loader_error flag internally to stop processing, and obtaining
9366         exceptions that might be thrown will walk this code path the
9367         proper way of going from a MonoLoaderError into a
9368         MonoException was convoluted.   This new routine encapsulates the
9369         process of turning the error into an exception and *clearing* the
9370         error afterwards.
9371         
9372 2006-04-27  Miguel de Icaza  <miguel@novell.com>
9373
9374         Work to catch the crashes from 75075 (cope in Assembly.GetTypes
9375         with missing assemblies), and to cope with:
9376
9377                 * Missing fieldref from a non-existing assembly.
9378                 * Missing methodref from a non-existing assembly.
9379
9380         The first batch of work to address *some* of the issues from 76661.
9381         
9382         * object.c (mono_class_create_runtime_vtable): If we fail to
9383         initialize the class raise the exception here. 
9384
9385         * metadata.c (mono_class_get_overrides_full): If any methods fail
9386         to load return the failure to the caller.
9387
9388         * assembly.c: Use REFERENCE_MISSING instead of (gpointer) -1 for
9389         flagging assemblies that failed to load.   
9390
9391         Do not crash if we are unable to load the assembly.
9392
9393         (mono_assembly_close): Do nothing with REFERENCE_MISSING
9394         assemblies. 
9395
9396         * loader.c (mono_loader_set_error_type_load): Change the
9397         convention to always pass unallocated strings, so we make our own
9398         copies (I know our own code had duplicated strings before, but
9399         this keeps the normal conventions).
9400         (method_from_memberref): Call mono_loader_set_error_method_load
9401         for all possible failures of loading the class. 
9402         Remove assert, turn into a loader error.
9403
9404         (mono_loader_error_to_exception): Move this routine from mini
9405         (mini_loader_error_to_exception) there was no need to have that in
9406         mini. 
9407
9408         * class.c (mono_class_from_typeref): If we were not able to load
9409         the assembly with mono_assembly_load_reference, call the
9410         mono_loader_set_error_type_load to register the problem.
9411
9412         (mono_class_setup_fields): If we fail to load the type from
9413         mono_metadata_parse_type_full, call mono_class_set_failure and
9414         break from the loop.
9415
9416         If class->exception_type is set, we do not layout the fields as
9417         that might crash the runtime, and instead return (from breaking
9418         from the previous loop).
9419
9420         (mono_class_setup_vtable): This now returns a boolean indicating
9421         whether the table was properly setup.   The decision is driven by
9422         mono_class_get_overrides_full which might run into non-existing
9423         methods. 
9424         
9425         (mono_class_init): Returns TRUE on success or FALSE if there was a
9426         problem in loading the type (incorrect assemblies, missing
9427         assemblies, methods, etc).
9428
9429         When we call mono_class_setup_fields we also check for a potential
9430         error inside this call (either a class exception or a general
9431         loader exception).
9432
9433         (mono_class_create_from_typedef): If the parent fails to load
9434         (calling mono_class_get_full) return NULL.
9435         
9436         ** Important **
9437
9438         calls to mono_metadata_parse_type_full should be checked
9439         everywhere and set the mono_class_set_failure
9440         (MONO_EXCEPTION_TYPE_LOAD) if we are not able to get the type.
9441
9442         The current patch checks the places where my manually constructed
9443         tests show the errors are showing up, but we should do it
9444         everywhere. 
9445
9446         ** Important2 **
9447
9448         mono_class_init return values should be tested everywhere, like
9449         the previous case this is something that we should audit
9450         everywhere and not only on the cases exposed by the tests I
9451         created. 
9452
9453 2006-04-26  Miguel de Icaza  <miguel@novell.com>
9454
9455         * file-io.c (ves_icall_System_IO_MonoIO_Open): Remove `async'
9456         boolean parameter and instead pass the information on `options'
9457         parameter (FileOptions).
9458
9459         * icall.c: Register the new signature for MonoIO.Open.
9460
9461         * debug-helpers.c (dis_one): Trying to understand how coverity
9462         works.  Fix Run 5, item 78.
9463
9464 2006-04-26  Dick Porter  <dick@ximian.com>
9465
9466         * socket-io.c (hostent_to_IPHostEntry2): Explicitly check for NULL
9467         dereference.
9468
9469 2006-04-25  Martin Baulig  <martin@ximian.com>
9470
9471         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 56.
9472
9473         * threads.c (mono_thread_attach): Set `thread->stack_ptr' and call
9474         debugger_thread_created().
9475         (debugger_gc_push_all_stacks): Don't handle the main thread in any
9476         special way.
9477         (mono_debugger_init_threads): Removed the `main_thread_stack' arg.
9478         (mono_debugger_finalize_threads): New function; undo the effects
9479         of mono_debugger_init_threads().
9480         (mono_debugger_create_all_threads): Removed.
9481
9482 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
9483
9484         * image.c (mono_image_close): Tidy up trace messages.
9485
9486         * assembly.c (mono_assembly_close): Ditto.
9487
9488         * assembly.c (mono_assembly_close): Clear out image->assembly so the image
9489         no longer references an already freed assembly. Fixes #78168.
9490
9491 2006-04-21  Dick Porter  <dick@ximian.com>
9492
9493         * threads.c (mono_thread_detach): Fix reference counting when
9494         detaching threads.
9495
9496 2006-04-21  Zoltan Varga  <vargaz@gmail.com>
9497
9498         * icall.c (ves_icall_System_Enum_ToObject): Improve exception messages. Fixes
9499         #78155.
9500
9501 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
9502
9503         * marshal.c (mono_type_to_ldind): New helper function moved here from mini.c
9504         (mono_type_to_stind): Ditto.
9505
9506         * marshal.c: Use the new helper functions to simplify code.
9507
9508         * image.c (mono_image_close): Add some code for help debug assembly unloading
9509         problems.
9510
9511         * metadata.c (mono_metadata_parse_type_full): Allocate MonoType's from the
9512         image mempool.
9513
9514         * assembly.c (mono_assembly_open_full): Invoke the load hook when the
9515         assembly was already loaded in another appdomain. Fixes #78083.
9516
9517 2006-04-13  Zoltan Varga  <vargaz@gmail.com>
9518
9519         * assembly.c (mono_assembly_load_reference): Increase the refcount of the
9520         referenced assemblies.
9521         (mono_assembly_close): Decrease the refcount of the referenced assemblies.
9522
9523         * domain.c (mono_domain_free): Add a trace message.
9524
9525         * appdomain.c (add_assemblies_to_domain): Ditto.        
9526
9527         * metadata-internals.h: (_MonoAssembly): Modify the meaning of the ref_count
9528         field.  
9529
9530 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9531
9532         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): Fix image reference counting.
9533
9534 2006-04-12  Martin Baulig  <martin@ximian.com>
9535
9536         * threads.c: Use `MONO_DEBUGGER_SUPPORTED' as the conditional, not
9537         `USE_INCLUDED_LIBGC'.   
9538
9539 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
9540
9541         * image.c (canonicalize_path): Avoid calling strncpy on overlapping strings if
9542         the patch contains ../ and a small directory name later. Hopefully fixes
9543         #78035.
9544
9545 2006-04-10  Martin Baulig  <martin@ximian.com>
9546
9547         Clean up the debugger's thread-handling code.
9548
9549         The debugger's thread-handling code has been moved from
9550         ../mini/debug-debugger.c to threads.c.  We now iterate directly
9551         over the `threads' hash, keep track of exiting threads and also
9552         use proper locking.
9553
9554         We can now debug XSP and XSP based applications with the debugger.
9555
9556         * object-internals.h (MonoThread): Added `gpointer end_stack'.
9557
9558         * threads.h
9559         (MonoThreadCallbacks): Removed; this was only used by the debugger.
9560         (mono_install_thread_callbacks): Likewise.      
9561
9562         * threads.c (mono_thread_callbacks): Removed.
9563         (debugger_thread_created, debugger_thread_exited): New static functions.
9564         (start_wrapper): Call debugger_thread_created().
9565         (thread_cleanup): Call debugger_thread_exited().
9566         (mono_gc_stop_world, mono_gc_start_world): Removed; this was never used.
9567         (mono_debugger_init_threads): New public function.
9568         (debugger_thread_vtable): Moved here from debug-debugger.c; we now
9569         iterate directly over the `threads' hash and also use proper locking.
9570
9571         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped to 55.
9572
9573         * mono-debug-debugger.h
9574         (MonoDebuggerEvent): Added MONO_DEBUGGER_EVENT_THREAD_EXITED.
9575
9576 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
9577
9578         * reflection.c (encode_cattr_value): Fix handling of parameter type=object, 
9579         argument type=array. Fixes #78057.
9580
9581 2006-04-10  Atsushi Enomoto  <atsushi@ximian.com>
9582
9583         * culture-info-table.h : regenerated. Fixed bug #69652.
9584
9585 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
9586
9587         * loader.c metadata.c: Reapply a variant r59116.
9588         
9589         * loader.c metadata.c: Revert r59116 to see if it fixes the breakage.
9590
9591         * class.c (mono_class_setup_interface_offsets): New internal function.
9592
9593         * reflection.c (ensure_runtime_vtable): Setup interface offsets for dynamic
9594         interfaces too. Fixes #77398.
9595
9596         * reflection.c (encode_cattr_value): Add support for 
9597         parameter type=object, argument type=array.
9598         (load_cattr_value): Ditto. Fixes #77916.
9599
9600         * marshal.c (emit_object_to_ptr_conv): Add support for ARRAY_BYVALCHARARRAY.
9601         (emit_ptr_to_object_conv): Ditto. Fixes #77960.
9602
9603         * metadata.c (mono_type_to_unmanaged): Use ARRAY_BYVALCHARARRAY when converting
9604         a byval char array and CharSet is Ansi.
9605
9606         * metadata.h: Add new marshalling conversion ARRAY_BYVALCHARARRAY.
9607
9608 2006-04-06  Zoltan Varga  <vargaz@gmail.com>
9609
9610         * metadata.c: Add some locking comments.
9611         
9612         * metadata.c (mono_metadata_signature_alloc): Allocate signatures in the image
9613         mempool.
9614         (mono_metadata_free_method_signature): Don't free the signature itself.
9615
9616         * loader.c (mono_free_method): Don't free the signature in non-dynamic methods. 
9617
9618         * assembly.c (mono_assembly_open_full): Avoid the situation where two assemblies
9619         reference the same MonoImage.
9620         (mono_assembly_load_from_full): Add an assert.
9621
9622 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
9623
9624         * image.c (mono_image_close): Don't put the image we are about to free into the
9625         loaded_images_guid_hash.
9626
9627         * marshal.c (mono_mb_emit_ptr): Refactor a common code sequence into this function
9628         to reduce code duplication.
9629
9630         * marshal.c: Register the native functions called by this module as icalls, to
9631         somewhat centralize the creation of MonoMethodSignature's.
9632
9633         * loader.c (mono_method_signature): Add a cache for method signatures.
9634
9635         * metadata.c (mono_metadata_get_param_attrs): New helper function to return
9636         the parameter attributes of a method.
9637         (mono_metadata_parse_method_signature_full): Refactored the computation of
9638         parameter attributes into a separate function. Also avoid one allocation in
9639         most cases.
9640
9641         * assembly.c (mono_assembly_close): Ditto.
9642
9643         * image.c (mono_image_close): Log trace messages with INFO level.
9644
9645         * metadata-internals.h (MonoImage): Add a new 'method_signature' cache.
9646
9647         * image.c reflection.c: Correct reference counting of image modules.
9648         
9649         * metadata.c (mono_metadata_interfaces_from_typedef_full): Allocate the result
9650         of this function from the image mempool.
9651         
9652         (mono_metadata_parse_type_full): Remove the mode != MONO_PARSE_PARAM restriction
9653         to allow more cached types to be used.
9654
9655         * mono-debug.c (mono_debug_add_method): Appled patch from
9656         David S. Miller  <davem@sunset.davemloft.net>: Access 
9657         minfo->lexical_blocks[] entry elements using read32().
9658
9659 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * loader.c (mono_free_method): No longer free the method header for non-dynamic
9662         methods as it is allocated from the mempool.
9663
9664         * metadata.c (mono_metadata_parse_mh_full): Allocate method headers from the
9665         image mempool.
9666
9667         * metadata-internals.h: Add comments describing the reference counting scheme
9668         used for MonoImage and MonoAssembly.
9669
9670         * image.c assembly.c reflection.c: Rework reference counting of images and 
9671         assemblies so they are freed when the runtime is shut down. Free some 
9672         additional memory structures when an image is unloaded.
9673         
9674 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
9675
9676         * class.c loader.c reflection.c: Allocate more data structures in
9677         the image mempool.
9678
9679 2006-03-31  Miguel de Icaza  <miguel@novell.com>
9680
9681         * icall.c
9682         (ves_icall_System_Environment_InternalSetEnvironmentVariable): Fix
9683         build on pre glib 2.4 systems.
9684
9685 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
9686
9687         * icall.c (ves_icall_System_Environment_InternalSetEnvironmentVariable): New icall.
9688
9689         * icall.c: Fix some warnings.
9690
9691 2006-03-29  Atsushi Enomoto  <atsushi@ximian.com>
9692
9693         * culture-info-table.h : regenerated.
9694
9695 Wed Mar 29 18:24:42 CEST 2006 Paolo Molaro <lupus@ximian.com>
9696
9697         * threads.c, object-internals.h, verify.c: changed the culture caching
9698         code to use a normal MonoArray for storage so the GC can keep track of
9699         them easily. Fixed bits of the cache logic, too and simplified the
9700         code.
9701
9702 Wed Mar 29 17:18:16 CEST 2006 Paolo Molaro <lupus@ximian.com>
9703
9704         * gc-internal.h, null-gc.c, boehm-gc.c, gc.c: enable the finalizer
9705         thread for non-Boehm GCs.
9706
9707 Wed Mar 29 17:10:05 CEST 2006 Paolo Molaro <lupus@ximian.com>
9708
9709         * domain.c, object.c, domain-internals.h: reduce the amount of memory
9710         needed to keep track of the data for static fields.
9711
9712 2006-03-29  Raja R Harinath  <rharinath@novell.com>
9713
9714         Fix #75172
9715         * icall.c (ves_icall_Type_GetMethodsByName): Don't use vtable_size
9716         for interface classes.  Use 'num_methods' instead.
9717         (ves_icall_Type_GetPropertiesByName): Likewise.  Setup vtable
9718         before using '->vtable_size' field.
9719
9720 Wed Mar 29 12:53:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
9721
9722         * domain.c, object.c, domain-internals.h: proxy_vtable_hash
9723         doesn't contain managed pointers, so use a normal hashtable.
9724
9725 Mon Mar 27 11:15:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
9726
9727         * reflection.c, class-internals.h, domain.c: fixed handling of types
9728         used as values for objects in custom attributes (bug #77915):
9729
9730 2006-03-24  Martin Baulig  <martin@ximian.com>
9731
9732         * class.c (mono_class_setup_fields): Added support for generic
9733         instances; fixes #77580.
9734
9735 2006-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9736
9737         * assembly.c: publickeytoken is case insensitive. Fixes bug #77898.
9738
9739 2006-03-24  Dick Porter  <dick@ximian.com>
9740
9741         * file-io.c (get_file_attributes): More stat macro breakage.
9742         Fixes bug 77759.
9743
9744 Fri Mar 24 15:26:00 CET 2006 Paolo Molaro <lupus@ximian.com>
9745
9746         * profiler.c: added the file=filename option in the default profiler
9747         to output the profile data to filename.
9748
9749 2006-03-22 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9750
9751         * icall.c: CodeBase returns '/' instead of '\\' on windows. Fixes
9752         bug #77877.
9753
9754 2006-03-22  Martin Baulig  <martin@ximian.com>
9755
9756         * reflection.c (fieldbuilder_to_mono_class_field): Don't store the
9757         allocated `MonoClassField *' in `fb->handle'.
9758
9759 Tue Mar 21 17:19:37 CET 2006 Paolo Molaro <lupus@ximian.com>
9760
9761         * class.c, image.c, metadata-internals.h: implemented new mechanism to
9762         allocate interface ID to save memory and allow better ID reuse on
9763         appdomain unload. setup_generic_vtable () removal from Martin.
9764
9765 Tue Mar 21 15:54:30 CET 2006 Paolo Molaro <lupus@ximian.com>
9766
9767         * object.h, appdomain.c, domain.c, exception.c, icall.c,
9768         locales.c, marshal.c, object.c, reflection.c, threadpool.c,
9769         threads.c: introduced MONO_OBJECT_SETREF() macro to be able to insert
9770         write barriers for reference stores with managed objects accessed with
9771         C structures in the runtime and in embedding programs.
9772
9773 2006-03-20  Raja R Harinath  <rharinath@novell.com>
9774
9775         * icall.c (ves_icall_Type_GetInterfaces): Avoid using
9776         'interface_id' and 'max_interface_id' fields of MonoClasses
9777         representing open generic types.
9778
9779 Fri Mar 17 18:06:06 CET 2006 Paolo Molaro <lupus@ximian.com>
9780
9781         * object.h, object.c, icall.c: added functions to deal with
9782         storing valuetypes that contain references in managed objects.
9783         * reflection.c, string-icalls.c, threads.c, marshal.c: small
9784         fixes and comments around uses of mono_array_addr ().
9785
9786 Thu Mar 16 17:16:45 CET 2006 Paolo Molaro <lupus@ximian.com>
9787
9788         * object.h, icall.c, monitor.c: object.GetHashCode ()
9789         implementation that supports the moving garbage collector.
9790
9791 Wed Mar 15 16:31:38 CET 2006 Paolo Molaro <lupus@ximian.com>
9792
9793         * icall.c, threads-types.h, threads.c: implemented finalizer for
9794         LocalDataStoreSlot.
9795
9796 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
9797
9798         * metadata.c (mono_type_size): Add a fixme.
9799         (mono_type_stack_size): Ditto.
9800
9801         * object-internals.h (MonoReflectionAssemblyBuilder): Added 
9802         'type_forwarders' field.
9803
9804         * tabledefs.h (TYPE_ATTRIBUTE_FORWARDER): Added new (undocumented) type
9805         attribute from net 2.0.
9806
9807         * object.c (mono_vtable_get_static_field_data): Moved this to object.c
9808         from class.c.
9809
9810         * class.c (mono_class_setup_fields): Fix a warning.
9811         
9812         * class.c (mono_class_from_name): Add support for assemblyref entries
9813         in the EXPORTEDTYPE table.
9814
9815         * reflection.c: Add support for handling type forwarders under net 2.0.
9816
9817         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.       
9818         
9819 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Avoid
9822         overwriting entries in ModuleBuild->types, also clean up the code
9823         a little. Fixes #77774.
9824
9825 Tue Mar 14 20:21:18 CET 2006 Paolo Molaro <lupus@ximian.com>
9826
9827         * domain.c, assembly.c, metadata-internals.h, class-internals.h:
9828         load friend assembly info when present.
9829
9830 2006-03-14  Raja R Harinath  <rharinath@novell.com>
9831
9832         Fix crasher on gtest-158.cs.
9833         * metadata.c (mono_metadata_parse_type_full): Avoid canonicalizing
9834         the return value if the MonoClass we want is yet in an
9835         inconsistent state.
9836         * class.c (mono_class_create_from_typedef): Add an comment
9837         explaining an order dependency between mono_class_setup_parent and
9838         mono_class_setup_mono_type.
9839
9840 Mon Mar 13 21:13:27 CET 2006 Paolo Molaro <lupus@ximian.com>
9841
9842         * class.c: documentation updates and events bug fix.
9843
9844 Mon Mar 13 17:28:07 CET 2006 Paolo Molaro <lupus@ximian.com>
9845
9846         * class.c: some cleanup, locking fixes.
9847
9848 Mon Mar 13 10:46:17 CET 2006 Paolo Molaro <lupus@ximian.com>
9849
9850         * class.c: fix the generics code to setup nested
9851         type info to the instantiated type (bug #77770).
9852
9853 Sun Mar 12 16:21:31 CET 2006 Paolo Molaro <lupus@ximian.com>
9854
9855         * marshal.c: fixed a few type correctness issues.
9856
9857 Sat Mar 11 20:14:44 CET 2006 Paolo Molaro <lupus@ximian.com>
9858
9859         * loader.c: the Set/Get/Addrtess array methods should be public.
9860
9861 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
9862
9863         * icall.c (mono_register_jit_icall_wrapper): Fix a warning.
9864         
9865         * icall.c (mono_register_jit_icall_wrapper): Register the argument, not
9866         info->wrapper.
9867
9868 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
9869
9870         * icall.c (mono_register_jit_icall): Allocate the structure using g_new0.
9871
9872         * class-internals.h (MonoJitICallInfo): Add 'trampoline' field used by the JIT.
9873
9874         * mempool.c (mono_mempool_alloc): Speed this up a bit.
9875         (mono_mempool_alloc0): Ditto.
9876
9877 2006-03-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9878
9879         * socket-io.c:
9880         (create_object_from_sockaddr): it was allocating 4 extra bytes
9881         for the AF_UNIX data. Fixes bug #77747.
9882
9883 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
9884
9885         * icall.c (ves_icall_System_MonoMethodInfo_get_retval_marshal): New icall.
9886
9887 2006-03-09  Dick Porter  <dick@ximian.com>
9888
9889         * file-io.c (get_file_attributes): Use S_ISLNK not "& S_IFLNK".
9890         Fixes bug 76966 again.
9891
9892 2006-03-07  Peter Dennis Bartok  <pbartok@novell.com>
9893
9894         * verify.c (dtfinfo_fields): Updated to match new (serializable) field
9895         names from r57532
9896         * appdomain.c: Bumped corlib version to 48 (due to r57532)
9897
9898 2006-03-07  Martin Baulig  <martin@ximian.com>
9899
9900         * object.c
9901         (mono_field_get_value_object): Add support for MONO_TYPE_GENERICINST.
9902
9903 2006-03-07  Martin Baulig  <martin@ximian.com>
9904
9905         * class.c
9906         (mono_class_get_full): Don't inflate TYPEDEF entries; fixes the
9907         regression introduced in r56970; see gtest-252.cs.
9908
9909         * loader.c (mono_get_method_constrained): Correctly handle generic
9910         methods; see gtest-253.cs.
9911
9912 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
9913
9914         * icall.c (ves_icall_type_Equals): Handle NULLs. Fixes #77700.
9915
9916 2006-03-04  Martin Baulig  <martin@ximian.com>
9917
9918         * icall.c (ves_icall_MonoGenericClass_GetParentType): Dynamically
9919         compute the parent type at runtime, just like we're already doing
9920         it for interfaces.
9921
9922         * reflection.c
9923         (mono_reflection_bind_generic_parameters): Don't compute the
9924         parent type anymore.
9925
9926         * class-internals.h (MonoDynamicGenericClass): Removed `parent'.
9927
9928 2006-03-04  Martin Baulig  <martin@ximian.com>
9929
9930         * mono-debug-debugger.h
9931         (mono_debugger_create_notification_function): Allocate memory at
9932         runtime and return a pointer to it.
9933
9934 2006-03-03  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * assembly.c: Fix windows build.
9937         
9938         * assembly.c: Fix build.
9939
9940         * assembly.c: Move the contents of os/{unix,win32}/util.c to this file. 
9941
9942         * gc_wrapper.h: Move the contents of os/gc_wrapper.h to this file.
9943         
9944 2006-03-03  Dick Porter  <dick@ximian.com>
9945
9946         * process.c
9947         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
9948         Check parameters before dereferencing them.  Fixes Aaron's part of
9949         bug 77393.
9950
9951 2006-03-03  Raja R Harinath  <rharinath@novell.com>
9952
9953         Fix performance regression.
9954         * loader.c (find_method_in_class): Add 'from_class' argument.
9955         Rename 'klass' argument to 'in_class'.  The signature is compared
9956         against the method in 'in_class', and the corresponding method is
9957         returned from 'from_class'.
9958         (find_method): Walk both 'in_class' and 'from_class' in parallel.
9959         (method_from_memberref) [PARENT_TYPESPEC]: Use it to walk the
9960         type definition and generic instantiation in parallel.
9961         (mono_get_method_constrained): Update to changes.
9962
9963 Thu Mar 2 12:27:41 CET 2006 Paolo Molaro <lupus@ximian.com>
9964
9965         * threads.c: make sure the domain is correct, too when doing
9966         mono_thread_attach ().
9967
9968 2006-03-01  Zoltan Varga  <vargaz@gmail.com>
9969
9970         * class.c (mono_class_create_from_typedef): Mark classes using CharSet.Auto as unicode on
9971         windows. Fixes #77683.
9972
9973 Wed Mar 1 20:09:25 CET 2006 Paolo Molaro <lupus@ximian.com>
9974
9975         * object.h, *: introduced specific way to set elements of an array
9976         of references to be used as write barrier. Still need to audit the
9977         uses of mono_array_addr.
9978
9979 2006-03-01  Miguel de Icaza  <miguel@novell.com>
9980
9981         * object-internals.h: New field to cache the assmebly name, patch
9982         from Tambet Ingo (tambet@ximian.com)
9983
9984 Wed Mar 1 19:13:30 CET 2006 Paolo Molaro <lupus@ximian.com>
9985
9986         * decimal.h, class-internals.h, metadata-internals.h,
9987         file-io.h: mark a few function declarations as internal, to
9988         reduce the number of PLT entries.
9989
9990 2006-02-28 Gonzalo Paniagua Javier <gonzalo@ximian.com>
9991
9992         * file-io.c: fix typo in warning message.
9993
9994 Tue Feb 28 17:43:20 CET 2006 Paolo Molaro <lupus@ximian.com>
9995
9996         * loader.c: on unix, lookup the "*A" version of a function
9997         if charset is auto as a second option before failing.
9998
9999 2006-02-28  Raja R Harinath  <rharinath@novell.com>
10000
10001         * class.h (mono_class_inflate_generic_method): Revert to two
10002         argument version.
10003         * class-internals.h (MonoMethodInflated): Remove 'inflated' field.
10004         (mono_class_inflate_generic_method_full): Add.
10005         * class.c (mono_class_inflate_generic_method_full): Rename from
10006         'mono_class_inflate_generic_method'.  Don't set 'inflated' field.
10007         (mono_class_inflate_generic_method): New.  Wrapper around ..._full.
10008         * loader.c, reflection.c: Update to changes.
10009
10010 Sat Feb 25 17:57:21 CET 2006 Paolo Molaro <lupus@ximian.com>
10011
10012         * icall.c: const fixes and small improvements.
10013
10014 2006-02-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10015
10016         * threadpool.c: for asynchronous connect(), enable the same workaround
10017         for BSD 6 as for the Mac. Fixes bug #77637.
10018
10019 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
10020
10021         * marshal.c (mono_marshal_free_asany): Fix handling of blittable
10022         formatted classes. Fixes #77524.
10023
10024 2006-02-24  Raja R Harinath  <rharinath@novell.com>
10025
10026         * class.c (inflate_generic_type): Add a couple more
10027         micro-optimizations.
10028         (inflate_generic_context): Don't use the 'gmethod' from
10029         'inflate_with'.
10030         (mono_class_inflate_generic_method): If the method has generic
10031         parameters, but the passed-in context doesn't have a 'gmethod',
10032         create one.  Use the possibly simplified generic instantiation
10033         from the declaring class instead of the one passed in.
10034
10035 2006-02-24  Raja R Harinath  <harinath@gmail.com>
10036
10037         Make generic method signature and method header handling lazy.
10038         * class.c (mono_class_inflate_generic_signature): Move to loader.c.
10039         (inflate_generic_header): Likewise.
10040         (mono_class_inflate_generic_method): Rewrite.  Add a 'klass_hint'
10041         parameter to avoid inflating types.
10042         (mono_get_inflated_method): Empty out.
10043         * class.h (mono_class_inflate_generic_method): Update to changes.
10044         * loader.c (mono_get_method_from_token): Don't parse signature for
10045         generic methods, nor methods of generic classes.
10046         (mono_method_signature): Rename from 'mono_method_signature'.
10047         Inflate signature on demand.
10048         (mono_method_get_header): Inflate method header on demand.
10049         * reflection.c: Update to changes.
10050
10051 2006-02-23  Raja R Harinath  <rharinath@novell.com>
10052
10053         * metadata.c (mono_metadata_inflate_generic_inst): If the
10054         instantiation is closed, don't bother expanding it in the new
10055         context.
10056         * class.c (inflate_generic_class): If the generic instantiation
10057         doesn't change after inflation, return the argument itself.
10058         (inflate_generic_type) [MONO_TYPE_MVAR, MONO_TYPE_VAR]:
10059         Add bounds checks.
10060         (inflate_generic_context): If neither the generic class nor the
10061         generic method instantiations change, return the original context.
10062         * reflection.c (mono_method_get_object): Do
10063         'mono_get_inflated_method' before accessing the ->klass field.
10064         (inflate_mono_method): Don't create a MonoGenericMethod unless
10065         necessary.
10066         (inflate_method): Don't pass a constructed type as the declaring
10067         type of a methodbuilder.
10068
10069 Thu Feb 23 11:57:54 CET 2006 Paolo Molaro <lupus@ximian.com>
10070
10071         * object.c: fix memory overwrite.
10072
10073 2006-02-22  Dick Porter  <dick@ximian.com>
10074
10075         * threads.c: Don't use G_GNUC_PRETTY_FUNCTION in debug messages,
10076         it doesn't work any more.
10077         (mono_threads_request_thread_dump): Fix unused variable warnings.
10078
10079 Wed Feb 22 15:08:44 CET 2006 Paolo Molaro <lupus@ximian.com>
10080
10081         * metadata.h, metadata-internals.h, monodiet.c, debug-helpers.c,
10082         mono-debug.c, profiler.c: cleanup: move MonoMethodHeader out of
10083         the public header file.
10084
10085 2006-02-21  Zoltan Varga  <vargaz@gmail.com>
10086
10087         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Fix writing past memory. Fixes #77613.
10088
10089 Tue Feb 21 19:55:11 CET 2006 Paolo Molaro <lupus@ximian.com>
10090
10091         * class-internals.h, object.c: reduce the size of MonoVTable
10092         and store the interface_offsets array at negative offsets.
10093
10094 Tue Feb 21 19:53:26 CET 2006 Paolo Molaro <lupus@ximian.com>
10095
10096         * metadata.c: tweak table descriptors data structures to reduce
10097         size and runtime relocations.
10098
10099 Tue Feb 21 14:52:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10100
10101         * marshal.c: fix some types and opcodes to be type-safe
10102         in marshaling wrappers.
10103
10104 2006-02-21  Ankit Jain  <jankit@novell.com>
10105
10106         * metadata.h (mono_metadata_decode_signed_value): Add declaration.
10107
10108 2006-02-21  Raja R Harinath  <rharinath@novell.com>
10109
10110         * metadata.c (get_constraints): Relax debugging checks for monodis.
10111
10112 2006-02-21  Ankit Jain  <jankit@novell.com>
10113
10114         * metadata.c (mono_metadata_load_generic_params): Move the code
10115         checking for ambiguous generic params from here to mono/dis/get.c
10116         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Remove.
10117
10118 2006-02-21  Raja R Harinath  <harinath@gmail.com>
10119
10120         Fix assertion triggered when compiling nemerle.
10121         * class.c (mono_get_shared_generic_inst): Rename from
10122         get_shared_inst and make non-static.
10123         * loader.c (mono_get_shared_generic_method): New.  Used to create
10124         the MonoGenericContext-equivalent of a MonoGenericContainer.
10125         (mono_get_method_from_token): Initialize the 'context' field of
10126         the created MonoGenericContainer.
10127         * reflection.c (reflection_methodbuilder_to_mono_method): Likewise.
10128         * metadata.c (get_constraints): Add sanity check.
10129         * class-internals.h: Add new internal methods.
10130
10131         * reflection.c (verify_safe_for_managed_space): New sanity check.
10132         Currently checks that owner-less generic parameters aren't allowed
10133         in managed space.
10134         (mono_type_get_object): Use it.
10135         * icall.c (ves_icall_MonoType_GetGenericArguments): Remove checks
10136         that are now in mono_type_get_object.
10137         (ves_icall_MonoMethod_GetGenericArguments): Likewise.
10138
10139 2006-02-19  Raja R Harinath  <harinath@gmail.com>
10140
10141         * metadata.c (mono_type_create_from_typespec): Rename from
10142         mono_type_create_from_typespec_full.  Remove MonoGenericContainer*
10143         argument and caching of types in the generic container.
10144         (unwrap_arrays, find_generic_param): Remove.
10145         * metadata-internals.h: Update.
10146         * class-internals.h (_MonoGenericContainer): Remove 'types' field.
10147
10148 2006-02-18  Zoltan Varga  <vargaz@gmail.com>
10149
10150         * class.c (mono_class_get_exception_for_failure): Fix a warning.
10151
10152         * marshal.c (mono_marshal_emit_native_wrapper): Handle FNPTR args and
10153         return values. Fixes #77581.
10154
10155         * class.c (mono_fnptr_class_get): Switch name and name_space.
10156
10157         * marshal.c (mono_marshal_asany): Fix marshalling of blittable formatted
10158         classes and add support for [In, Out] attributes.
10159         (mono_marshal_free_asany): Ditto. Fixes #77524.
10160
10161 2006-02-18  Raja R Harinath  <harinath@gmail.com>
10162
10163         * class.c (mono_class_from_generic_parameter): Make more robust to
10164         incomplete MonoGenericContainers from monodis.
10165
10166 Fri Feb 17 16:10:34 CET 2006 Paolo Molaro <lupus@ximian.com>
10167
10168         * class-internals.h: added some more exception types.
10169         * class.c, metadata.c: added a few checks to handle missing
10170         types.
10171
10172 2006-02-17  Raja R Harinath  <rharinath@novell.com>
10173
10174         Use owner-less generic-params some more.
10175         * class.c (my_mono_class_from_generic_parameter): Remove.
10176         (mono_class_from_generic_parameter): Handle null image,
10177         param->name and param->owner.
10178         (mono_class_from_mono_type): Update.
10179         (mono_class_create_from_typespec): Remove 'container' parameter.
10180         If that parameter is non-null, the result is always inflated by
10181         'mono_class_get_full' anyway.
10182         (mono_class_get): Rename from _mono_class_get.  Remove 'container'
10183         parameter.
10184         (mono_class_get_full): Update.
10185
10186         * class.c (inflate_generic_type) [GENERICINST]: If the generic
10187         instance is not open, don't bother inflating.
10188         (mono_class_setup_fields): Hoist some loop-invariants.  Don't
10189         parse metadata for inflated classes.
10190         (_mono_class_get): Change GenericContext* parameter to
10191         GenericContainer*.
10192         (mono_class_create_from_typespec): Likewise.  Simplify, and
10193         implement trivially.  All the cases are handled in
10194         mono_class_from_mono_type.  Don't inflate returned class.
10195         (mono_class_get_full): Delegate GENERICINST optimization to
10196         inflate_generic_type.
10197         (mono_ldtoken) [TOKEN_TYPE_SPEC]: Use mono_class_get_full() here too.
10198
10199 2006-02-16  Dick Porter  <dick@ximian.com>
10200
10201         * socket-io.c (create_object_from_sockaddr): Fix typo.
10202         (create_sockaddr_from_object): Check array lengths before
10203         potentially accessing items off the end.
10204         (ves_icall_System_Net_Sockets_Socket_Receive_internal)
10205         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal)
10206         (ves_icall_System_Net_Sockets_Socket_Send_internal)
10207         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Fix buffer
10208         length checks to avoid wraparound overflows.
10209         (ves_icall_System_Net_Sockets_Socket_Select_internal): Check the
10210         contents of the array of sockets
10211         (hostent_to_IPHostEntry2)
10212         (addrinfo_to_IPHostEntry): IPv6 printed addresses can be 48 bytes.
10213         Check return value of inet_ntop ().
10214         (addrinfo_to_IPHostEntry): Fix typo
10215
10216 2006-02-16  Raja R Harinath  <rharinath@novell.com>
10217
10218         Type metadata parsing doesn't use generic-instantiation information.
10219         * metadata.c (mono_metadata_parse_array_full): Change
10220         MonoGenericContext* parameter to MonoGenericContainer*.
10221         (mono_metadata_parse_type_full): Likewise.
10222         (mono_type_create_from_typespec_full): Likewise.
10223         (mono_metadata_parse_mh_full): Likewise.
10224         (mono_metadata_parse_generic_inst): Likewise.
10225         (do_mono_metadata_parse_generic_class): Likewise.
10226         (do_mono_metadata_parse_type): Likewise.
10227         * metadata-internals.h: Update to changes.
10228         * class.c (mono_class_find_enum_basetype): Likewise.
10229         (mono_class_setup_fields): Likewise.
10230         (mono_class_create_from_typespec): Likewise.
10231         * loader.c (method_from_methodspec): Likewise.
10232         (mono_get_method_from_token): Likewise.
10233         (mono_method_get_header): Likewise.
10234
10235 Thu Feb 16 15:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
10236
10237         * marshal.c: handle additional GENERICINST case (patch from
10238         Thong Nguyen <tum@veridicus.com>).
10239         Fix a few cases where LDIND_I/STIND_I was used for references.
10240
10241 2006-02-16  Raja R Harinath  <rharinath@novell.com>
10242
10243         * reflection.c (mono_reflection_get_token): Remove unused variable.
10244
10245 2006-02-16  Martin Baulig  <martin@ximian.com>
10246
10247         * reflection.c (mono_reflection_get_token): Add support for fields
10248         in instantiated generic types.
10249
10250         * icall.c
10251         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): Removed.
10252
10253 2006-02-15  Martin Baulig  <martin@ximian.com>
10254
10255         * icall.c
10256         (ves_icall_MonoMethod_get_HasGenericParameters): Removed.
10257         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): Removed.
10258         (ves_icall_MonoMethod_get_IsGenericMethod): New icall.
10259         (ves_icall_MonoMethod_get_IsGenericMethodDefinition): New icall.
10260
10261 Wed Feb 15 16:19:24 CET 2006 Paolo Molaro <lupus@ximian.com>
10262
10263         * class.c, metadata.c, metadata.h, object.c, icall.c,
10264         marshal.c: changed mono_type_get_underlying_type () to do
10265         the sensible thing and introduced mono_type_generic_inst_is_valuetype().
10266         Fixed handling of instantiated generic valuetypes (bug #75479).
10267
10268 2006-02-15  Raja R Harinath  <rharinath@novell.com>
10269
10270         * metadata.c (mono_metadata_decode_signed_value): Simplify.
10271         Delegate to mono_metadata_decode_value, and work on the returned value.
10272
10273         * icall.c (ves_icall_MonoType_GetGenericArguments):
10274         Add consistency check here too.
10275         
10276 2006-02-15  Ankit Jain  <jankit@novell.com>
10277
10278         * metadata.c (mono_metadata_decode_signed_value): Use gint* instead of
10279         char/short etc.
10280
10281 2006-02-15  Ankit Jain  <jankit@novell.com>
10282
10283         * metadata.c (mono_metadata_decode_signed_value): New function to decode
10284         signed values, used only for representing lower bounds of arrays.
10285         (mono_metadata_parse_array_full): Use new
10286         mono_metadata_decode_signed_value to decode lower bounds.
10287
10288 2006-02-14  Martin Baulig  <martin@ximian.com>
10289
10290         * reflection.c
10291         (mono_reflection_get_token): Support "MonoGenericMethod" and
10292         "MonoGenericCMethod" and allow generic instances / methods.
10293
10294 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
10295
10296         * console-io.c (ves_icall_System_ConsoleDriver_GetTtySize): New icall
10297         to obtain the terminal size using an ioctl.
10298
10299         * object.c (mono_nullable_init): Revert this as nullable reference
10300         types are not valid.
10301         (mono_nullable_box): Ditto.
10302
10303 2006-02-09  Dick Porter  <dick@ximian.com>
10304
10305         * threads.c (mono_thread_detach): Drop a reference to the thread
10306         we're detaching.
10307
10308 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
10309
10310         * object.c (mono_nullable_init): Handle nullable reference types.
10311         (mono_nullable_box): Ditto. Fixes #77446.
10312
10313 2006-02-07  Martin Baulig  <martin@ximian.com>
10314
10315         * icall.c (ves_icall_MonoMethod_get_IsGenericMethodDefinition): Removed.
10316
10317 2006-02-07  Ankit Jain  <jankit@novell.com>
10318
10319         * socket-io.h (MonoSocketFlags): New. Copy of System.Net.Sockets.SocketFlags
10320         * socket-io.c (convert_socketflags): New. Convert SocketFlags to native ones.
10321         (ves_icall_System_Net_Sockets_Socket_Receive_internal): Convert flags using convert_socketflags.
10322         (ves_icall_System_Net_Sockets_Socket_ReceiveFrom_internal): Likewise.
10323         (ves_icall_System_Net_Sockets_Socket_Send_internal): Likewise.
10324         (ves_icall_System_Net_Sockets_Socket_SendTo_internal): Likewise.
10325
10326 2006-02-02  Zoltan Varga  <vargaz@gmail.com>
10327
10328         * class.c (mono_class_create_generic): Set type_token as well.
10329
10330         * object.c (mono_runtime_invoke_array): Fix handling of byref vtypes to be
10331         compatible with MS.
10332
10333 2006-02-02  Martin Baulig  <martin@ximian.com>
10334
10335         * threads.c, gc.c: Removed the `WITH_INCLUDED_LIBGC' section; it
10336         has never been used so far.
10337
10338 2006-02-02  Martin Baulig  <martin@ximian.com>
10339
10340         * mono-debug-debugger.h: Changed comment at the top of this file;
10341         the header is not installed, but it's safe to #include it from
10342         within the JIT.
10343
10344         * mono-debug.c: Don't #define _IN_THE_MONO_DEBUGGER.
10345         * mono-debug-debugger.c, debug-mono-symfile.c: Likewise.
10346
10347 2006-02-02  Martin Baulig  <martin@ximian.com>
10348
10349         * mono-debug.h
10350         (MonoSymbolTable): Removed the `metadata_info' field.
10351
10352         * mono-debug.c
10353         (mono_debug_init_1): Always set `mono_symbol_table->corlib'.
10354
10355         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
10356         (mono_debugger_add_builtin_types): Removed.
10357         (MonoDebuggerInfo): Moved into ../mini/debug-debugger.h.
10358         (mono_debugger_create_notification_function): We now operate on a
10359         pre-allocated area; take a `gpointer' and return `void'.
10360
10361         * mono-debug-debugger.c
10362         (MonoDebuggerMetadataInfo): Moved into ../mini/debug-debugger.h.
10363         (mono_debugger_add_builtin_types): Removed.
10364
10365 2006-02-02  Martin Baulig  <martin@ximian.com>
10366
10367         * threads.c (mono_debugger_create_all_threads): New public method.
10368
10369 Wed Feb 1 18:22:34 CET 2006 Paolo Molaro <lupus@ximian.com>
10370
10371         * gc-internal.h, boehm-gc.c, null-gc.c: back out the patch, since it
10372         breaks on several platforms.
10373
10374 2006-02-01  Sebastien Pouliot  <sebastien@ximian.com>
10375
10376         * assembly.c: the VS.NET build doesn't supply default values for
10377         MONO_ASSEMBLIES and MONO_CFG_DIR.
10378
10379 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
10380
10381         * gc-internal.h boehm-gc.c null-gc.c (mono_gc_unregister_thread): New
10382         helper function.
10383
10384         * threads.c (mono_thread_detach): Call mono_gc_unregister_thread ().
10385
10386         * loader.c (method_from_memberref): Fix a warning.
10387
10388         * metadata.c (mono_metadata_load_generic_params): Fix a warning.
10389
10390         * marshal.c (emit_struct_conv): Fix marshalling of embedded structs
10391         with explicit layout. Fixes #77433.
10392
10393 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
10394
10395         * icall.c (ves_icall_Type_GetInterfaceMapData): Make sure 
10396         max_interface_id is initialized before using it. Fixes #77398.
10397         (ves_icall_Type_GetInterfaces): Ditto.
10398
10399 2006-01-30  Raja R Harinath  <rharinath@novell.com>
10400
10401         * metadata.c (mono_metadata_parse_method_signature_full): Don't
10402         allocate memory for parameter attributes when parsing memberref
10403         signatures.
10404         * loader.c (mono_loader_set_error_method_load): Don't warn.
10405         (method_from_memberref): Ensure MissingMethodException gets thrown
10406         if method is not found.  Make warning more informative.
10407
10408 2006-01-29  Raja R Harinath  <harinath@gmail.com>
10409
10410         Fix #77397
10411         * icall.c (ves_icall_MonoType_get_IsGenericParameter): Don't
10412         return true if is byref.
10413         (ves_icall_TypeBuilder_get_IsGenericParameter): Likewise.
10414         (ves_icall_MonoType_get_DeclaringType): Return NULL on byref classes.
10415         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
10416
10417 2006-01-27  Raja R Harinath  <rharinath@novell.com>
10418
10419         Fix tests/find-method.2.il
10420         * loader.c (find_method, find_method_in_class): Remove is_inflated
10421         argument.  Revert 2006-01-18 change.
10422         (method_from_memberref) [MONO_MEMBERREF_PARENT_TYPESPEC]: If type
10423         is generic, search for method in its generic definition.
10424         * class.c (mono_class_setup_vtable_general): Print generic
10425         arguments of generic types in debugging printf.
10426
10427 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
10428
10429         * object-internals.h (MonoThread): Add 'thread_dump_requested' field.
10430
10431         * threads.c (mono_threads_request_thread_dump): New helper function.
10432
10433 2006-01-25  Raja R Harinath  <rharinath@novell.com>
10434
10435         * metadata.c (mono_type_create_from_typespec_full): Fix caching of types.
10436
10437 2006-01-25  Ankit Jain  <jankit@novell.com>
10438
10439         * metadata-internals.h (mono_generic_params_with_ambiguous_names): Add declaration and
10440         move definition to ..
10441         * metadata.c (mono_generic_params_with_ambiguous_names): .. here.
10442         
10443 2006-01-25  Ankit Jain  <jankit@novell.com>
10444             Raja R Harinath  <rharinath@novell.com>
10445
10446         * metadata-internals.h (mono_generic_params_with_ambiguous_names): New.
10447         * metadata.c (mono_metadata_load_generic_params): Fill mono_generic_params_with_ambiguous_names
10448         as necessary.
10449
10450 2006-01-25  Martin Baulig  <martin@ximian.com>
10451
10452         * mono-debug-debugger.h: Moved `MonoDebuggerManager' and
10453         `MonoDebuggerThread' into debug-debugger.c.
10454
10455 Tue Jan 24 18:53:35 CET 2006 Paolo Molaro <lupus@ximian.com>
10456
10457         * profiler.c: fix printing of data.
10458
10459 2006-01-24  Atsushi Enomoto  <atsushi@ximian.com>
10460
10461         * object.c, marshal.c : Fixed runtime part of bug #77315. Reject
10462           invalid surrogate in UTF7/UTF8 bytes and don't return NULL.
10463
10464 Tue Jan 24 09:56:16 CET 2006 Paolo Molaro <lupus@ximian.com>
10465
10466         * object.c: fix deadlock related to string interning.
10467
10468 2006-01-23  Martin Baulig  <martin@ximian.com>
10469
10470         * mono-debug-debugger.h (MonoDebuggerIOLayer): Removed.
10471
10472         * mono-debug-debugger.c (mono_debugger_io_layer): Removed.
10473
10474 2006-01-23  Martin Baulig  <martin@ximian.com>
10475
10476         * mono-debug.h: Moved the prototypes of some functions which are
10477         used by the JIT here from mono-debug-debugger.h.
10478
10479 2006-01-21  Martin Baulig  <martin@ximian.com>
10480
10481         * Makefile.am: Don't install mono-debug-debugger.h.
10482
10483 2006-01-21  Martin Baulig  <martin@ximian.com>
10484
10485         * mono-debug-debugger.h: Enforce the private status of this header
10486         file and removed unneccessary #include's in metadata/*.c and mini/*.c.
10487         Moved some stuff from mono-debugger-jit-wrapper.h here.
10488
10489 2006-01-20  Raja R Harinath  <rharinath@novell.com>
10490
10491         * class.c (mono_class_from_typeref): Add a sanity test to help
10492         catch lack of assembly load/search hooks.
10493
10494 2006-01-19  Zoltan Varga  <vargaz@gmail.com>
10495
10496         * marshal.c (emit_struct_conv): Relax the fields with same offset
10497         check even more. Fixes #77230.
10498
10499 2006-01-18  Martin Baulig  <martin@ximian.com>
10500
10501         * loader.c (find_method_in_class): Added `gboolean is_inflated'
10502         argument; if false, we compare the uninstantiated signatures.
10503         (method_from_memberref): Compare the uninstantiated signatures;
10504         fixes #76417.
10505
10506 2006-01-18  Robert Jordan  <robertj@gmx.net>
10507
10508         * boehm-gc.c, null-gc.c (mono_gc_weak_link_remove):
10509         Clear the weak link. Fixes bug #77170.
10510
10511         * gc.c (mono_gchandle_free):
10512         Reflect *-gc.c changes (tiny optimization).
10513
10514 2006-01-18  Zoltan Varga  <vargaz@gmail.com>
10515
10516         * metadata.c (mono_metadata_signature_dup): Applied patch from
10517         Aras Pranckevicius (aras@otee.dk). Fix crash when compiled with MSVC.
10518         Fixes #77288.
10519
10520 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
10521
10522         * marshal.c (emit_struct_conv): Allow fields with the same offset when
10523         marshalling from native to managed code. Fixes #77230.
10524
10525 2006-01-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10526
10527         * threadpool.c: fix problem (Mac only) when more than one asynchronous
10528         connect. Fixes bug #77020.
10529
10530 Mon Jan 16 19:20:43 CET 2006 Paolo Molaro <lupus@ximian.com>
10531
10532         * class.c: fixed id assignement for nested interfaces (bug #77275).
10533         Added also better info for --print-vtable debugging.
10534
10535 2006-01-12  Martin Baulig  <martin@ximian.com>
10536
10537         * icall.c (ves_icall_MonoGenericClass_GetInterfaces): Inflate the
10538         interfaces on-the-fly; fixes #76625.
10539
10540         * class-internals.h
10541         (MonoDynamicGenericClass): Removed `ifaces' and `count_ifaces'; we
10542         don't need that anymore.
10543
10544 2006-01-12  Miguel de Icaza  <miguel@novell.com>
10545
10546         * socket-io.c
10547         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
10548         To avoid initing the nested_classes when not needed I turned the
10549         PeerCredData as a toplevel internal class, as it has to be shared
10550         anyways. 
10551
10552         Fixes the CASA issue.
10553
10554 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
10555
10556         * domain.c: Accessors for MonoJitInfo
10557
10558         * profiler-private.h: Add jitinfo to the end jit hook
10559
10560         * profiler.[ch]: Define new hooks, called after jitting which give
10561         the MonoJitInfo that was compiled
10562
10563 2006-01-10  Martin Baulig  <martin@ximian.com>
10564
10565         * class.c (mono_class_setup_events): Add support for generic
10566         classes; fixes #76440.
10567
10568 2006-01-06  Raja R Harinath  <rharinath@novell.com>
10569
10570         Fix #77160.
10571         * icall.c (ves_icall_InternalInvoke): Use mono_get_inflated_method
10572         on passed-in method.
10573
10574 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10575
10576         * object.c (mono_runtime_invoke_array): Add Nullable support.
10577
10578         * icall.c (ves_icall_System_Activator_CreateInstanceInternal): Ditto.
10579
10580 2006-01-03  Sebastien Pouliot  <sebastien@ximian.com>
10581
10582         * file-io.c: Don't consider sockets as directory and avoid an endless
10583         loop. Fix bug #76966.
10584
10585 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
10586
10587         * object.c (mono_nullable_init): New helper function.
10588         (mono_nullable_box): Ditto.
10589
10590         * marshal.c (mono_marshal_get_runtime_invoke): Handle Nullables.
10591
10592         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle Nullables.
10593
10594         * icall.c (ves_icall_MonoField_GetValueInternal): Handle Nullables.
10595         
10596 2006-01-02  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * class.c (mono_class_is_assignable_from): Make T assignable to 
10599         Nullable<T>.
10600
10601 2005-12-23  Sebastien Pouliot  <sebastien@ximian.com>
10602
10603         * appdomain.c: Bump corlib version to 46.
10604         * icalls.c: Renamed CurrentTimeZone to CurrentSystemTimeZone (for
10605         serialization purpose) and changed ves_icall_System_Reflection_
10606         Assembly_get_code_base signature to accept a boolean (to escape, or 
10607         not, the assembly code base).
10608
10609 2005-12-23  Dick Porter  <dick@ximian.com>
10610
10611         * icall.c: 
10612         * threads-types.h: 
10613         * threads.c: Added OpenMutex, OpenSemaphore and OpenEvent icalls.
10614         CreateEvent icall now returns "created" boolean parameter.
10615
10616 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
10617
10618         * marshal.c (mono_mb_emit_restore_result): Add generics support. Fixes
10619         #76967.
10620
10621         * reflection.c (mono_custom_attrs_construct_by_type): Handle the case 
10622         when attr_klass is an interface. Fixes #77045.
10623
10624 2005-12-20  Zoltan Varga  <vargaz@gmail.com>
10625
10626         * marshal.c (emit_struct_conv): Fix previous patch.
10627         
10628         * marshal.c (emit_struct_conv): Add a check for fields with the same
10629         offset.
10630
10631 2005-12-20  Raja R Harinath  <rharinath@novell.com>
10632
10633         Fix regression in Mono.C5.
10634         * class.c (mono_class_create_generic): If 'klass' is an interface
10635         set up the interface offsets.
10636         (mono_class_is_assignable_from): Don't throw away generic arguments.
10637
10638 2005-12-19  Raja R Harinath  <rharinath@novell.com>
10639
10640         * icall.c (ves_icall_System_MonoType_getFullName): Return NULL for
10641         type parameters.
10642
10643 2005-12-15  Raja R Harinath  <rharinath@novell.com>
10644
10645         * metadata.c (mono_metadata_parse_method_signature_full): Remove a
10646         dead store.
10647         (do_mono_metadata_parse_generic_class): Don't pass the current
10648         generic context when parsing the type being instantiated: it
10649         cannot use it, anyway.
10650
10651         * loader.c (method_from_memberref): Don't inflate a signature if
10652         it doesn't contain any type parameters.
10653
10654 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
10655
10656         * class.c (mono_class_setup_vtable): Call mono_reflection_get_dynamic_overrides () to get the overrides in dynamic assemblies.
10657
10658 2005-12-14  Martin Baulig  <martin@ximian.com>
10659
10660         * class.c
10661         (mono_type_get_name_recurse): Don't return null for type
10662         parameters and open generic classes.
10663         (mono_class_setup_methods): Don't exclude generic instances.
10664         (mono_get_unique_iid): Use different IDs for different
10665         instantiations of the same generic type.
10666         (mono_class_setup_vtable): Only use setup_generic_vtable() for
10667         open generic instances; create a normal vtable for closed generic
10668         instances.
10669         (mono_class_setup_vtable_general): We're now also called for
10670         closed generic instances.
10671
10672         * reflection.c
10673         (mono_reflection_bind_generic_parameters): Correctly use
10674         mono_metadata_lookup_generic_inst() everywhere.
10675
10676 2005-12-14  Zoltan Varga  <vargaz@gmail.com>
10677
10678         * object.c (mono_class_create_runtime_vtable): Call 
10679         mono_class_setup_vtable ().
10680
10681         * reflection.c (mono_reflection_get_dynamic_overrides): New helper
10682         function.
10683         (ensure_runtime_vtable): Initialize the generic vtable lazily. Fixes
10684         #76959.
10685
10686         * loader.c (mono_loader_set_error_type_load): Print the type load
10687         warnings to the console so they are more visible to the user.
10688         (mono_loader_set_error_method_load): Ditto.
10689
10690         * reflection.c (ensure_runtime_vtable): Revert the last change as it
10691         is still broken.
10692         
10693         * reflection.c (ensure_runtime_vtable): Fix build.
10694
10695         * reflection.c (ensure_runtime_vtable): Disable an optimization which
10696         doesn't work in all cases.
10697
10698 2005-12-13  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * object.c (mono_array_new_full): Treat a single dimensional array
10701         with 0 lower bounds as an szarray. Fixes #76973.
10702
10703         * reflection.c (custom_attr_visible): Really fix this.
10704
10705 2005-12-12  Zoltan Varga  <vargaz@gmail.com>
10706
10707         * reflection.c (custom_attr_visible): Allow nested public attributes
10708         as well.
10709
10710         * class.c (mono_class_setup_vtable_general): Add missing != -1 to an
10711         interface check.
10712
10713 2005-12-12  Raja R Harinath  <harinath@gmail.com>
10714
10715         * class.c (set_generic_param_owner): Delete.
10716         (mono_class_create_from_typedef): Don't set ->owner field of
10717         generic parameters to "param containers" of enclosing classes.
10718         * reflection.c (mono_reflection_initialize_generic_parameter):
10719         Likewise.
10720
10721 2005-12-11  Zoltan Varga  <vargaz@gmail.com>
10722
10723         * reflection.c (custom_attr_visible): Fix build.
10724
10725 2005-12-10  Zoltan Varga  <vargaz@gmail.com>
10726
10727         * reflection.c (mono_custom_attrs_from_builders): Avoid returning
10728         private attributes.
10729         
10730         * reflection.c (reflection_methodbuilder_to_mono_method): Fix
10731         handling of null parameter defaults.
10732
10733 2005-12-09  Raja R Harinath  <rharinath@novell.com>
10734
10735         * class.c (mono_class_from_generic_parameter): Don't set
10736         klass->generic_container.
10737         (my_mono_class_from_generic_parameter): Likewise.
10738
10739 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
10740
10741         * reflection.c (load_public_key): Fix a warning.
10742         (method_encode_code): Fix unaligned accesses.
10743
10744 2005-12-07  Martin Baulig  <martin@ximian.com>
10745
10746         * object-internals.h (MonoReflectionGenericParam): Added `cattrs'.
10747
10748         * reflection.c
10749         (write_generic_param_entry): Encode our custom attrs.
10750
10751         * appdomain.c (MONO_CORLIB_VERSION): Bump to 45.
10752
10753 2005-12-07  Martin Baulig  <martin@ximian.com>
10754
10755         * reflection.c (encode_new_constraint): Removed; we don't use the
10756         `NewConstraintAttribute' anymore.
10757
10758 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
10759
10760         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): Do
10761         not fire a TypeResolve event when Assembly.GetType () is called.
10762
10763 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
10764
10765         Beginning of support for nullable types in the runtime. Parts of
10766         this patch are from Martin.
10767
10768         * appdomain.c (MONO_CORLIB_VERSION): Bump
10769
10770         * domain.c (mono_init_internal): get the nullable type
10771
10772         * class.c (mono_class_is_nullable): New method
10773         (mono_class_get_nullable_param): New mehod
10774         (mono_class_create_generic): In types T? set cast_class to T
10775
10776         * class-internals.h (MonoDefaults): new nullable default class
10777         (mono_class_get_nullable_param, mono_class_get_nullable_param):
10778         new methods.
10779
10780 2005-12-05  Raja R Harinath  <rharinath@novell.com>
10781
10782         * metadata.c (select_container): New.  Refactor code to select the
10783         appropriate GenericContainer given the type of generic parameter
10784         we are looking for.
10785         (mono_metadata_parse_generic_param): Take a MonoGenericContainer,
10786         not a MonoGenericContext.  Use select_container.  Update parameters.
10787         (do_mono_metadata_parse_type): Combine the code for MONO_TYPE_VAR
10788         and MONO_TYPE_MVAR.
10789         (unwrap_arrays): Remove duplicate tests.
10790         (find_generic_param): Rename from 'has_same_context'.  Now walks a
10791         generic instantiated class to find any arguments that are generic
10792         parameters.
10793         (mono_type_create_from_typespec_full): Use find_generic_param to
10794         avoid evicting some generic instantiations from the typespec
10795         cache.
10796
10797 Mon Dec 5 15:07:42 GMT 2005 Paolo Molaro <lupus@ximian.com>
10798
10799         * reflection.c: fixed writing of doubles on ARM FPA.
10800
10801 2005-12-02  Robert Jordan  <robertj@gmx.net>
10802
10803         * icall.c: Fixed EventInfo.ReflectedType (#76829).
10804
10805 2005-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10806
10807         * filewatcher.c: try loading libgamin-1.so.0 before libfam, since at
10808         least on SUSE 10 they are not the same (on debian, they are just the
10809         same thing).
10810
10811 2005-12-01  Raja R Harinath  <rharinath@novell.com>
10812
10813         * icall.c (ves_icall_MonoType_get_DeclaringType): Implement
10814         DeclaringType for VARs and MVARs.
10815         * class.c (set_generic_param_owner): Fix initialization of owner
10816         fields.
10817
10818 Wed Nov 30 15:48:22 CET 2005 Paolo Molaro <lupus@ximian.com>
10819
10820         * icall.c: fixed Enum.ToObject() to correctly convert the values.
10821
10822 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10823
10824         * threadpool.c: workaround for a bug that shows up on the Mac:
10825         select()+connect() on a blocking socket is not like it should
10826         be, so we proceed to connect() in that case, wasting the I/O
10827         threadpool thread until connect succeedes. Fixes bug #75436.
10828
10829 2005-11-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
10830
10831         * threadpool.c: fix typo when setting file descriptor states.
10832
10833 2005-11-28  Raja R Harinath  <rharinath@novell.com>
10834
10835         * class-internals.h (MonoGenericContainer.is_signature): Remove.        
10836         * metadata.c (mono_metadata_parse_method_signature_full): Don't
10837         create a temporary signature container.
10838         (mono_metadata_parse_generic_param): Update to changes.
10839         (mono_type_create_from_typespec_full): Update to changes.
10840         * loader.c (method_from_memberref): Don't use a
10841         MonoGenericContainer while parsing a memberref signature.
10842         (method_from_methodspec): Remove dead-store of the 'container'
10843         variable.  It's overwritten before use.
10844
10845         * metadata.c (mono_type_create_from_typespec_full): Make debugging
10846         checks tighter.
10847         (mono_metadata_parse_generic_param): Likewise.
10848         * loader.c (find_method_in_class): Does not need a
10849         MonoGenericContainer.  Use 'mono_method_signature' rather than
10850         'mono_method_signature_full'.
10851         (find_method, mono_get_method_constrained, method_from_memberref):
10852         Update to changes.
10853
10854         * metadata.c (mono_type_create_from_typespec_full): Ensure that
10855         owner-less generic-parameters are never evicted from the typespec
10856         cache.
10857
10858         * loader.c (method_from_memberref): Don't use the current context
10859         when parsing signatures.
10860         (method_from_methodspec, mono_get_method_from_token): Update to changes.
10861
10862         * metadata.c (do_mono_metadata_parse_generic_class): Avoid
10863         side-effects in g_assert.
10864         * loader.c (mono_get_method_from_token): Resolve klass earlier so
10865         that we don't potentially lose information.
10866
10867 2005-11-26  Dick Porter  <dick@ximian.com>
10868
10869         * icall.c:
10870         * threads.c: icalls to implement basic (ie, not named)
10871         System.Threading.Semaphore.
10872
10873 2005-11-24  Dick Porter  <dick@ximian.com>
10874
10875         * process.c
10876         (ves_icall_System_Diagnostics_Process_ShellExecuteEx_internal):
10877         Use GetProcessId() if it's available.
10878
10879 2005-11-23  Zoltan Varga  <vargaz@gmail.com>
10880
10881         * icall.c threads-types.h threads.c: Add Exchange<T> icall.
10882
10883 2005-11-23  Raja R Harinath  <rharinath@novell.com>
10884             Ankit Jain  <jankit@novell.com>
10885
10886         * loader.c (mono_get_method_from_token): Initialize 'method' field
10887         of all generic parameters before parsing the signature.  Remove
10888         code that "fixed"-up MVAR references.
10889
10890 2005-11-23  Ankit Jain  <jankit@novell.com>
10891
10892         * metadata.c (mono_metadata_has_generic_params):
10893         (mono_metadata_load_generic_param_constraints):
10894         (mono_metadata_load_generic_params): Move duplicate code ...
10895         (mono_metadata_get_generic_param_row): ... here. Returns the
10896         first row-id in GenericParam table for a given owner (token).
10897         * metadata-internals.h (mono_metadata_get_generic_param_row): Add
10898         prototype.
10899
10900 2005-11-23  Raja R Harinath  <rharinath@novell.com>
10901             Ankit Jain  <jankit@novell.com>
10902
10903         * metadata.c (mono_metadata_class_equal): Pass signature_only when
10904         comparing VARs too.
10905         * icall.c (ves_icall_MonoType_get_DeclaringMethod): Look at 
10906         type->data.generic_param only if the type is an MVAR.
10907         (ves_icall_MonoMethod_GetGenericArguments): Ensure that we don't
10908         leak owner-less VARs and MVARs into managed space.
10909
10910 2005-11-21  Martin Baulig  <martin@ximian.com>
10911
10912         * class-internals.h
10913         (MonoMethod): Moved the `generic_container' here from
10914         `MonoMethodNormal' since we now also need it for
10915         `MonoMethodPInvoke';
10916         (MonoMethodNormal): Moved the `generic_container' to `MonoMethod'.
10917         (MonoMethodInflated): Replaced the `MonoMethodNormal nmethod' with
10918         an union containing both `MonoMethodNormal' and
10919         `MonoMethodPInvoke'.
10920
10921         * loader.c
10922         (mono_get_method_from_token): Allow implementing generic methods
10923         as interncalls.
10924
10925         * threads.c
10926         (ves_icall_System_Threading_Interlocked_CompareExchange_T): New
10927         icall.
10928
10929 2005-11-17  Dick Porter  <dick@ximian.com>
10930
10931         * icall.c: 
10932         * process.h: 
10933         * process.c: Split the Process Start_internal icall into
10934         ShellExecuteEx_internal and CreateProcess_internal, which are
10935         called depending on whether UseShellExecute is true.  Fixes bug
10936         76670.
10937
10938         * appdomain.c (MONO_CORLIB_VERSION): Incremented
10939
10940 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
10941
10942         * marshal.c (emit_ptr_to_object_conv): Get rid of the 'usize' and
10943         'msize' parameters, use the information in 'mspec' instead.
10944         (emit_object_to_ptr_conv): Ditto.
10945
10946         * marshal.c (emit_struct_conv): Handle explicit layout structs with
10947         fields out of order. Fixes #76733.
10948
10949 2005-11-17  Ankit Jain  <jankit@novell.com>
10950
10951         * metadata.c (mono_type_create_from_typespec_full): Remove unnecessary g_assert.
10952
10953 2005-11-16  Atsushi Enomoto  <atsushi@ximian.com>
10954
10955         * icall.c : renamed MakeGenericMethod -> MakeGenericMethod_impl for
10956           bug #76575.
10957
10958 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10959
10960         * object.c (mono_class_compute_gc_descriptor): Disable typed allocation
10961         for types with non-auto layout. Fixes #76717.
10962
10963 2005-11-16  Ankit Jain  <jankit@novell.com>
10964
10965         * class.c (my_mono_class_from_generic_parameter): param->owner can be null.
10966         * metadata.c (mono_metadata_parse_generic_param): Create a dummy MonoGenericParam 
10967         if generic_context is null.
10968           (mono_metadata_generic_param_equal): param->owner can be null.
10969           (mono_type_create_from_typespec_full): Don't cache the MonoType if param->owner is
10970         null.
10971
10972 2005-11-16  Zoltan Varga  <vargaz@gmail.com>
10973
10974         * reflection.c (create_dynamic_mono_image): Set md_version_minor to
10975         the correct value.
10976
10977 2005-11-15  Martin Baulig  <martin@ximian.com>
10978
10979         * object.c (set_value): Use mono_class_from_mono_type() instead of
10980         the hack for generic instances; fixes #76136.
10981
10982 2005-11-15  Zoltan Varga  <vargaz@gmail.com>
10983
10984         * metadata-internals.h (_MonoImage): Add 'md_version_major/minor'
10985         fields.
10986
10987         * image.c (load_metadata_ptrs): Initialize the new fields.
10988
10989         * reflection.c (create_dynamic_mono_image): Ditto.
10990
10991         * reflection.c (build_compressed_metadata): Use the new fields.
10992
10993         * icall.c (ves_icall_System_Reflection_Module_get_MDStreamVersion): New
10994         icall.
10995
10996         * icall.c (mono_assembly_icalls): Remove obsolete get_MetadataToken
10997         icall.
10998         
10999 2005-11-15  Ankit Jain  <jankit@novell.com>
11000             Raja R Harinath  <harinath@gmail.com>
11001
11002         * class-internals.h (_MonoGenericContainer.types): New. Cache for MonoTypes.
11003         * metadata.c (mono_type_create_from_typespec_full): Use MonoType from the
11004         new per-generic_container cache if the cached MonoType's context matches
11005         the current context.
11006           (has_same_context): New. Check if the VARs or MVARs in a GENERIC_INST refer
11007         to the expected context.
11008           (unwrap_arrays): New. Get the element MonoType for an ARRAY/SZARRAY.
11009
11010 2005-11-14  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11011
11012         * appdomain.c: Update MONO_CORLIB_VERSION to 42, since
11013         we changed the signature of an icall.
11014         * icall.c: Modify to mono_double_ParseImpl return true/false 
11015         depending on the success, instead of throwing the exception. This will
11016         help us in Double.TryParse methods.
11017         
11018 2005-11-14  Zoltan Varga  <vargaz@gmail.com>
11019
11020         * marshal.c (emit_marshal_object): Throw an exception when
11021         marshalling 'object' instead of crashing. Fixes #76696.
11022
11023 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
11024
11025         * class-internals.h: Add prototype for mono_type_get_full_name ().
11026
11027 2005-11-11  Dick Porter  <dick@ximian.com>
11028
11029         * threads.c (mono_thread_manage): Make sure the main thread has
11030         abandoned all its mutexes when cleaning up.  Fixes bug 74680.
11031
11032 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
11033
11034         * loader.c (mono_loader_set_error_type_load): Log a warning to the
11035         console about the missing type.
11036         (mono_loader_set_error_method_load): Ditto.
11037
11038 2005-11-09  Miguel de Icaza  <miguel@novell.com>
11039
11040         * mono-config.c (mono_get_config_dir): Set the system defaults if
11041         none is specified.
11042
11043         * assembly.c (mono_set_dirs): New API entry point to set the
11044         assembly and the config directory in one call
11045
11046 2005-11-09  Zoltan Varga  <vargaz@gmail.com>
11047
11048         * marshal.c (mono_ftnptr_to_delegate): Throw a NotSupportedException if
11049         the ftnptr was created from a delegate in a domain other than the
11050         current domain. Fixes #75377.
11051
11052         * exception.h exception.c: Add mono_get_exception_not_supported ().
11053
11054 2005-11-08  Martin Baulig  <martin@ximian.com>
11055
11056         * mono-debug.h (MONO_DEBUGGER_VERSION): Bump to 53.
11057
11058 2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
11059
11060         * security-manager.h: Added definitions to deal with strongname key 
11061         pairs bigger (and smaller) than 1024 bits.
11062         * reflection.c: Remove hardcoded strongname size (128 bytes) and 
11063         adjust wrt the public key length being used.
11064
11065 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com>
11066
11067         * marshal.c, icall.c : reverted sig->pinvoke changes which broke
11068           Windows build (r51396-51397).
11069
11070 2005-11-03  Martin Baulig  <martin@ximian.com>
11071
11072         * class.c (mono_class_setup_vtable_general): Also add generic
11073         methods to the vtable; fixes #76581.
11074
11075 2005-11-01  Miguel de Icaza  <miguel@novell.com>
11076
11077         * string-icalls.c (ves_icall_System_String_ctor_encoding): Make
11078         sure that we lookup GetString method from the System.Text.Encoding
11079         class, not the derived class or we get an empty method.
11080
11081         Fixed class #76612.
11082
11083 2005-10-25  Miguel de Icaza  <miguel@novell.com>
11084
11085         * assembly.c (mono_assemblies_init): Do not set the Mono root dir
11086         if it has been previously set (embedders). 
11087
11088         Make mono_set_rootdir available also on Unix.
11089
11090 005-10-24  Robert Jordan  <robertj@gmx.net>
11091
11092         * assembly.c: fixed MONO_ASSEMBLIES to be NULL on cygwin as well.
11093
11094 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
11095
11096         * marshal.c icall.c: Clean up the usage of sig->pinvoke flag. Now
11097         only calls which are made to native code use this flag.
11098
11099         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): Remove the check for FieldBuilders as it is now done in managed code.
11100
11101 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
11102
11103         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal):
11104         Add support for FieldBuilders.
11105
11106 2005-10-29  Martin Baulig  <martin@ximian.com>
11107
11108         * mono-debug.c
11109         (mono_debug_using_mono_debugger): New public method; returns
11110         whether we're running inside the debugger.
11111
11112 2005-10-27  Zoltan Varga  <vargaz@gmail.com>
11113
11114         * reflection.c (mono_reflection_get_custom_attrs_info): Add support
11115         for Method/Constructor/FieldBuilders.
11116
11117 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * reflection.c (module_add_cattrs): Save custom attributes for global methods
11120         and fields as well.
11121
11122 2005-10-26  Martin Baulig  <martin@ximian.com>
11123
11124         * mono-debug-debugger.c
11125         (MonoDebuggerMetadataInfo): Added `klass_parent_offset'.
11126
11127 2005-10-24  Raja R Harinath  <harinath@gmail.com>
11128
11129         * icall.c (base64_to_byte_array): Don't pass an out-of-range
11130         integer to isspace.
11131
11132 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
11133
11134         * marshal.c (emit_marshal_vtype): Correctly handle [In,Out] modifiers
11135         when passing valuetypes byref. Fixes #76502.
11136
11137 2005-10-19  Jackson Harper  <jackson@ximian.com>
11138
11139         * profiler.c: Don't put a . in front of types that are not in a
11140         namespace.
11141
11142 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
11143
11144         * icall.c (ves_icall_Type_GetField): Applied patch from Robert Jordan (robertj@gmx.net). Fixes #75515.
11145
11146 2005-10-15  Zoltan Varga  <vargaz@freemail.hu>
11147
11148         * marshal.c: Add generics support to the ldfld/stfld wrappers. Fixes
11149         #76436.
11150         (mono_marshal_get_ldflda_wrapper): Fix a warning.
11151
11152 2005-10-13  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11153
11154         * assembly.c metadata-internals.h icall.c: Define an additional
11155         parameter for mono_assembly_name_parse_full, so we can avoid creating
11156         S.R.AssemblyName.Version when no version info wasn't passed.
11157         
11158 2005-10-09  Miguel de Icaza  <miguel@novell.com>
11159
11160         * class.c (mono_type_get_full_name): Reimplement method that was
11161         removed. 
11162
11163         * image.c: Some docs
11164
11165 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
11166
11167         * profiler.c (output_newobj_profile): Fix printing of Total memory
11168         on x86.
11169
11170 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
11171
11172         * profiler.c: Add support for allocations > 2GB. Fixes #74886.
11173
11174 2005-10-08  Gert Driesen  <drieseng@users.sourceforge.net>
11175
11176         * threads.c: remove debug output.
11177
11178 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
11179
11180         * threads.c (mono_thread_manage): Fix crashes if more than 64
11181         threads need to be aborted. Hopefully fixes #75899.
11182
11183         * assembly.c (mono_stringify_assembly_name): New helper function.
11184
11185         * class.c: Use mono_stringify_assembly_name instead of the similar
11186         static function.
11187
11188         * assembly.h assembly.c: Add support for calling a postload search 
11189         hook if an assembly cannot be loaded.
11190
11191         * appdomain.c: Register new search hooks which call the AssemblyResolve
11192         events in AppDomain. Fixes #75231
11193
11194 2005-10-07  Martin Baulig  <martin@ximian.com>
11195
11196         * mono-debug.c (mono_debug_add_method): Create a wrapper entry for
11197         methods without debug info.
11198
11199 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * class-internals.h debug-helpers.c marshal.h marshal.c: Add ldflda
11202         wrappers.
11203
11204 2005-10-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11205
11206         * file-io.c: now that we return symlinks, use lstat and, when the file
11207         is a symbolic link, stat, to get the file attributes. Also avoid the
11208         conversion to/from utf16/external.
11209
11210 2005-10-06  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * class.c (mono_class_layout_fields): Compute klass->has_references
11213         correctly if an embedded valuetype is not yet initialized. Fixes
11214         #76331.
11215
11216 2005-10-04  Martin Baulig  <martin@ximian.com>
11217
11218         * metadata.c
11219         (mono_metadata_load_generic_param_constraints): New public
11220         function; splitted the constraints loading out from
11221         mono_metadata_load_generic_params().
11222
11223         * class.c (mono_class_create_from_typedef): Call
11224         mono_metadata_load_generic_param_constraints() after setting up
11225         the type and creating our parent; fixes #75329.
11226
11227 2005-10-04  Martin Baulig  <martin@ximian.com>
11228
11229         * icall.c (ves_icall_MonoGenericClass_GetParentType): Allow
11230         non-dynamic parent classes.
11231
11232 2005-10-04  Atsushi Enomoto  <atsushi@ximian.com>
11233
11234         * file-io.c : win32 build fix (ETXTBSY seems not found).
11235
11236 2005-10-04  Martin Baulig  <martin@ximian.com>
11237
11238         * reflection.c
11239         (mono_image_get_methodspec_token): Make the cache actually work;
11240         fixes #75974.
11241
11242 2005-10-04  Martin Baulig  <martin@ximian.com>
11243
11244         * class.c (mono_class_name_from_token): Removed the unneccessary
11245         `MonoGenericContext *' argument.
11246
11247 2005-10-04  Martin Baulig  <martin@ximian.com>
11248
11249         * loader.c
11250         (method_from_methodspec): Make the caching work again; fixes the
11251         performance regression from #76262.
11252
11253 2005-10-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11254
11255         * file-io.c:
11256         * file-io.h:
11257         * icall.c: replace FindFirst/FindNext/FindClose calls with a new
11258         GetFileSystemEntries that performs the same work but without going
11259         into io-layer, locking, etc.
11260
11261 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * threads.c (ves_icall_System_Threading_Thread_Abort): Handle 
11264         ThreadState_Stopped as well. Fixes #76047.
11265
11266 2005-09-29  Martin Baulig  <martin@ximian.com>
11267
11268         * class.c
11269         (inflate_generic_context): If the new context has a `gmethod', set
11270         its `container' that that gmethod's `container'.
11271
11272         * metadata.c
11273         (mono_metadata_parse_generic_param): Simplify things;
11274         `generic_container = generic_context->container;' is just fine.
11275
11276         * loader.c (method_from_methodspec): Code cleanups.
11277
11278 Wed Sep 28 17:06:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
11279
11280         * decimal.c: fix warning (and let gcc generate correct
11281         code on ARM with optimizations).
11282
11283 2005-09-28  Martin Baulig  <martin@ximian.com>
11284
11285         * loader.c
11286         (method_from_memberref): Added `MonoGenericContext *class_context'
11287         argument; this is used when parsing a MONO_MEMBERREF_PARENT_TYPESPEC.
11288         (method_from_methodspec): If we're a memberref, use the enclosing
11289         context when parsing its parent.  Fixes #76262; see gtest-206.cs.
11290
11291 2005-09-28  Martin Baulig  <martin@ximian.com>
11292
11293         * object.c (mono_runtime_invoke_array): Added support for
11294         MONO_TYPE_GENERICINST; fixes #75917.
11295
11296 2005-09-27  Martin Baulig  <martin@ximian.com>
11297
11298         * reflection.c (encode_type): For `MONO_TYPE_CLASS/VALUETYPE', use
11299         `k->byval_arg.type' to determine the actual type.
11300
11301         * loader.c (method_from_methodspec): Removed some hacks.
11302
11303 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
11304
11305         * class-internals.h (mono_field_is_deleted): Do the test for
11306         rtspecialname before we check the actual name of the field. This
11307         prevents us from dereferencing a pointer into the string table,
11308         saving us from accessing a few pages
11309
11310         * *.c: Replace the use of {Enter,Leave}CriticalSection with
11311         macros. This will allow a deadlock debugger to easily be plugged
11312         in.
11313
11314 2005-09-27  Martin Baulig  <martin@ximian.com>
11315
11316         * loader.c (method_from_methodspec): Create a "signature"
11317         MonoGenericContainer and use mono_get_method_full().  Fixes #75584.
11318
11319 2005-09-27  Martin Baulig  <martin@ximian.com>
11320
11321         * class.c
11322         (inflate_generic_class): Correctly set the new context's
11323         container.
11324
11325         * loader.c
11326         (find_method, find_method_in_class): Take a `MonoGenericContainer *'
11327         instead of a `MonoGenericContext *'.
11328         (mono_method_signature_full): Take a `MonoGenericContainer *'
11329         instead of a `MonoGenericContext *'.
11330
11331         * metadata.c
11332         (mono_metadata_parse_signature_full): Take a `MonoGenericContainer *'
11333         instead of a `MonoGenericContext *'.
11334         (mono_metadata_parse_method_signature_full): Likewise.
11335
11336 2005-09-26  Martin Baulig  <martin@ximian.com>
11337
11338         * class.c
11339         (mono_class_from_generic_parameter): Set `klass->generic_container'
11340         (mono_class_from_generic_parameter): Likewise.
11341         (mono_bounded_array_class_get): We inherit the generic container
11342         from the element class.
11343
11344         * loader.c
11345         (find_method, find_method_in_class): Take a `MonoGenericContext *'
11346         argument rather than computing it here.
11347         (method_from_memberref): Correctly set the generic context before
11348         parsing the signature.  Fixes #75681.
11349
11350 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
11351
11352         * object.c (mono_class_has_special_static_fields): Fix warnings.
11353
11354 2005-09-26  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11355
11356         * assembly.c: Add parse_public_key function, to
11357         par the public keys. Also added mono_assembly_name_parse_full,
11358         to define it the parsed key should be freed or not.
11359         * icall.c: Added ves_icall_System_Reflection_AssemblyName_ParseName,
11360         to parse a long format assembly name.
11361         * metadata-internals.h: Keep mono_assembly_name_parse_full as
11362         private, since calling it to preserve the key requires
11363         freeing it manually.
11364         
11365 2005-09-26  Atsushi Enomoto  <atsushi@ximian.com>
11366
11367         * locales.c : removed HAVE_ICU part.
11368
11369 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
11370
11371         * object.c (mono_class_create_runtime_vtable): Avoid calling 
11372         field_is_special_static if the klass has no special static fields.
11373
11374         * class-internals.h (MonoClass): Add 'no_special_static_fields' flag.
11375         (MonoCachedClassInfo): Likewise.
11376
11377         * object.c (mono_class_has_special_static_fields): New helper function.
11378
11379 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11380
11381         * class.c (mono_class_create_from_typedef): Don't call 
11382         interfaces_from_typedef_full for enums.
11383         (mono_class_create_from_typedef): Compute the base types of enums directly
11384         without calling mono_class_setup_fields ().
11385         (mono_class_find_enum_basetype): New helper function.
11386
11387         * reflection.c (mono_image_build_metadata): Emit type names+namespaces at
11388         one place inside the string heap.
11389         
11390 Fri Sep 23 19:37:46 CEST 2005 Paolo Molaro <lupus@ximian.com>
11391
11392         * class.c: locking fixes, code cleanups, some docs added.
11393         Allocate some data structures in the image mempool.
11394
11395 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11396
11397         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
11398         the example code.
11399         
11400 Fri Sep 23 18:27:02 CEST 2005 Paolo Molaro <lupus@ximian.com>
11401
11402         * class-internals.h, class.c, reflection.c: reduce memory taken by
11403         MonoClass.
11404
11405 Fri Sep 23 17:56:21 CEST 2005 Paolo Molaro <lupus@ximian.com>
11406
11407         * metadata.c, metadata.h, loader.h: documentation updates, code and
11408         API cleanups.
11409
11410 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
11411
11412         * rawbuffer.c: Remove unneccessary set_n_pagefaults () routine and update
11413         the example code.
11414
11415         * rawbuffer.h rawbuffer.c: Add code and APIs to help determine the number of
11416         page faults caused by the runtime while reading metadata.
11417
11418 2005-09-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11419
11420         * socket-io.c: the field names were changed 3 months ago and no one
11421         realized until bug #76077 got filed!
11422
11423 2005-09-20  Martin Baulig  <martin@ximian.com>
11424
11425         * icall.c (assembly_icalls): Removed some unused debugger icalls.
11426
11427 2005-09-20  Martin Baulig  <martin@ximian.com>
11428
11429         * mono-debug.c (mono_debug_add_type): Ignore array types and don't
11430         write the rank into the class entry.
11431
11432 2005-09-20  Martin Baulig  <martin@ximian.com>
11433
11434         * mono-debug-debugger.c (MonoDebuggerMetadataInfo): Added some stuff.
11435
11436 2005-09-19  Zoltan Varga  <vargaz@gmail.com>
11437
11438         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11439
11440         * icall.c (custom_attrs_defined_internal): New icall.
11441
11442         * reflection.c (mono_reflection_get_custom_attrs_by_type): New helper
11443         function.
11444         (mono_custom_attrs_construct_by_type): New helper function.
11445
11446 2005-09-17  Zoltan Varga  <vargaz@freemail.hu>
11447
11448         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): Null
11449         terminate the resulting string. Fixes #76123.
11450
11451 2005-09-16  Martin Baulig  <martin@ximian.com>
11452
11453         * mono-debug.c
11454         (mono_debug_add_method): Ignore inflated methods for the moment.
11455
11456 2005-09-14  Martin Baulig  <martin@ximian.com>
11457
11458         * debug-mono-symfile.h (MONO_SYMBOL_FILE_VERSION): Bump version to 39.
11459
11460 2005-09-13  Zoltan Varga  <vargaz@gmail.com>
11461
11462         * metadata.c (mono_class_get_overrides_full): Modify signature to explicitly
11463         return a success/failure indication.
11464         (mono_metadata_interfaces_from_typedef_full): Ditto.
11465         (get_constraints): Ditto.
11466
11467 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
11468
11469         * marshal.c (emit_marshal_array): Fix handling of null arrays.
11470         
11471         * marshal.c (emit_marshal_array): Add support for returning string
11472         arrays from delegates. Fixes #76063.
11473
11474         * marshal.c: Use the emit_ldloc/stloc macros where possible.
11475
11476 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
11477
11478         * threads.c (ves_icall_System_Threading_Thread_MemoryBarrier): New
11479         icall.
11480
11481 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
11482
11483         * reflection.c icall.c: Fix after mono_get_exception_type_load
11484         signature change.
11485
11486         * assembly.c (mono_assembly_get_assemblyref): New helper function.
11487         (mono_assembly_load_reference): Use the new helper.
11488
11489         * class-internals.h (MonoLoaderError): New structure containing 
11490         information about type loading errors.
11491
11492         * class-internals.h loader.c: Add APIs to store per-thread loader
11493         error information.
11494
11495         * loader.c class.c: Set the loader error if needed.
11496
11497         * exception.h exception.c: Add functions to throw MissingMethod/MissingFieldExceptions.
11498
11499 Thu Sep 8 18:54:07 BST 2005 Paolo Molaro <lupus@ximian.com>
11500
11501         * decimal.c: fixed to handle the broken ARM fp format.
11502
11503 Wed Sep 7 22:17:58 BST 2005 Paolo Molaro <lupus@ximian.com>
11504
11505         * icall.c: on ARM use the libc strtod(), since bsd_strtod() seems
11506         broken.
11507
11508 2005-09-06  Martin Baulig  <martin@ximian.com>
11509
11510         * domain.c (supported_runtimes): Added v2.0.50727.
11511
11512 Tue Sep 6 11:40:24 CEST 2005 Paolo Molaro <lupus@ximian.com>
11513
11514         * culture-info.h: reduce the size of some structures.
11515
11516 2005-09-05  Martin Baulig  <martin@ximian.com>
11517
11518         Reflect latest API changes in the August CTP.
11519
11520         * icall.c
11521         ("Type.BindGenericParameters"): Renamed to "MakeGenericType".
11522         ("MonoType.HasGenericArguments"): Removed.
11523         ("MonoMethod.BindGenericParameters"): Renamed to
11524         "MakeGenericMethod".
11525         ("MethodBuilder.BindGenericParameters"): Renamed to
11526         "MakeGenericMethod".    
11527
11528 2005-09-05  Martin Baulig  <martin@ximian.com>
11529
11530         * mono-debug-debugger.c: Moved the debugger icalls into icall.c.
11531
11532 2005-09-05  Martin Baulig  <martin@ximian.com>
11533
11534         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11535
11536         * icall.c (ves_icall_Type_get_IsGenericType): Return true also if
11537         generic_container is non-NULL.
11538
11539 2005-09-05  Martin Baulig  <martin@ximian.com>
11540
11541         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11542
11543         * object.c (set_value): In MONO_TYPE_VALUETYPE, add generics support.
11544
11545 2005-08-29  Michal Moskal  <malekith@nemerle.org>
11546
11547         * reflection.c (encode_locals,
11548         mono_reflection_sighelper_get_signature_local): Increase buffer sizes
11549         for large generic types.
11550
11551 2005-09-05  Martin Baulig  <martin@ximian.com>
11552
11553         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11554
11555         * class.c (mono_dup_array_type): New public method.
11556         (mono_metadata_signature_deep_dup): New public method.
11557         (dup_type): Correctly duplicate array and function types.
11558
11559 2005-09-05  Martin Baulig  <martin@ximian.com>
11560
11561         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11562
11563         * reflection.c (get_default_param_value_blobs): Handle generic types
11564         and generic methods.
11565
11566 2005-09-02  Sebastien Pouliot  <sebastien@ximian.com>
11567
11568         * class.c: Fixed error reporting (method/class were inversed) for 
11569         inheritance demands.
11570         * security-manager.c|h: Added the AppDomain when calling the managed
11571         System.Security.SecurityManager.InheritanceDemand method.
11572
11573 2005-09-01  Raja R Harinath  <rharinath@novell.com>
11574
11575         * reflection.c (encode_marshal_blob): 'marshaltype' and
11576         'marshaltyperef' are alternate sources for the custom marshaler
11577         name.
11578
11579 Wed Aug 31 17:39:54 CEST 2005 Paolo Molaro <lupus@ximian.com>
11580
11581         * class.c: fix creation of array classes with rank == 1
11582         (patch by Ankit Jain <jankit@novell.com>).
11583
11584 Wed Aug 31 17:35:19 CEST 2005 Paolo Molaro <lupus@ximian.com>
11585
11586         * object.c: fix check for creating the bound data for arrays vs
11587         szarrays.
11588
11589 2005-08-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11590
11591         * object.c: configuration file name is now based on the executable name,
11592         not the image name. Fixes bug #75931.
11593
11594 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
11595
11596         * marshal.c (emit_thread_interrupt_checkpoint_call): Load the
11597         flag using LDIND_U4 since it leads to smaller and faster code on ia64.
11598
11599 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
11600
11601         * rand.c: Use wincrypt.h instead of WinCrypt.h.
11602
11603 2005-08-24  Ankit Jain  <jankit@novell.com>
11604             Raja R Harinath  <rharinath@novell.com>
11605
11606         * class.c (mono_class_from_typeref): Don't call mono_class_init as we might've been
11607           called by it recursively.
11608           (mono_class_init): Remove special case in pending_init handling, since it's
11609           superseded by the fix to mono_class_from_typeref.
11610
11611 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
11612
11613         * threads.c (ves_icall_System_Threading_Thread_Thread_internal): Remove the 
11614         BROKEN_THREAD_START stuff.
11615
11616 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
11617
11618         * class-internals.h object.c: Add a new kind of trampoline called a delegate 
11619         trampoline.
11620
11621         * domain-internals.h domain.c: Add a has for delegate trampolines to MonoDomain.
11622         
11623         * object.c (mono_delegate_ctor): Replace the original function address with
11624         a delegate trampoline.
11625
11626 2005-08-21 Gert Driesen <drieseng@users.sourceforge.net>
11627
11628         * icall.c: add boolean argument to base64_to_byte_array and 
11629         InternalFromBase64String to control whether a whitespace-only string
11630         is allowed (or should casue a FormatException to be thrown). We need
11631         this as the behavior has changed between MS.NET 1.x and 2.0, and we
11632         to match the MS behaviour in both profiles.
11633         * appdomain.c: Bump corlib version.
11634
11635 2005-08-20  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11636
11637         This patch implements a big portion of publisher policy
11638         support, used to bind assembly versions and redirect
11639         one assembly from version A to version B.
11640
11641         * assembly.c:
11642         New GSList loaded_assembly_bindings, for storing the cached
11643         assembly bindings.
11644         (assembly_binding_maps_name): New static function for checking if a 
11645         assembly binding information maps an assembly name.
11646         (mono_assembly_binding_info_free): New function for freeing
11647         assembly binding information resources.
11648         (get_publisher_policy_info): New static function for retrieving 
11649         assembly binding information from a MonoImage.
11650         (compare_versions): New static function for comparing an assembly
11651         binding information data and the version of an assembly name.
11652         (check_policy_versions): New static function for checking if an
11653         assembly binding info mapping an assembly name is valid for it.
11654         (mono_assembly_load_publisher_policy): New static function for
11655         loading the 'policy.major.minor.MyAssembly' image for an assembly
11656         with an assembly name 'aname'.
11657         (mono_assembly_bind_version): New static function for updating
11658         assembly redirection.
11659         (mono_assembly_apply_binding): New static function for applying
11660         assembly binding.
11661         (search_binding_loaded): New static function for searching 
11662         loaded assembly binding infos in the cache domain.
11663         (mono_assembly_load_full): Don't apply assembly binding for
11664         reflection only assemblies.
11665
11666         * metadata-internals.h: Add MonoAssemblyBindingInfo,
11667         which contains information about assembly binding. Also
11668         declare signature for mono_config_parse_publisher_policy ()
11669         function, used to retrieve pub policy info.
11670         
11671         * mono-config.c:
11672         (publisher_policy_start): New static function used to parse publisher 
11673         policy config files.
11674         (publisher_policy_parser): New static MonoParseHandler containing 
11675         the functions used when parsing config files.
11676         (mono_config_parse_publisher_policy): New function for parsing
11677         publisher policy files.
11678         
11679 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
11680
11681         * object.c (mono_delegate_ctor): Add support for IA64 function descriptors.
11682
11683         * marshal.c (mono_delegate_free_ftnptr): Ditto.
11684
11685         * object.c (mono_get_addr_from_ftnptr): New helper function.
11686
11687         * object.h (mono_array_addr): Fix unaligned access warnings on IA64.
11688
11689         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
11690
11691 2005-08-19  Dick Porter  <dick@ximian.com>
11692
11693         * threads.c, threads.h, appdomain.c, appdomain.h,
11694         profiler-private.h, monitor.c, object.c, object-internals.h,
11695         profiler.c, mono-debug-debugger.h, profiler.h: Use a gsize to
11696         store the thread ID, so it can hold a 64 bit value if needed.
11697
11698 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
11699
11700         * reflection.c (mono_reflection_create_dynamic_method): Store the
11701         handle class into the method references as well so ldtoken works in
11702         dynamic methods.
11703
11704         * icall.c (ves_icall_MonoField_GetValueInternal): Add support for generic
11705         types.
11706
11707 2005-08-19  Ankit Jain <jankit@novell.com>
11708
11709         Fix #75847.
11710         * marshal.c (mono_marshal_get_ptr_to_struct): Build method signature 
11711           here rather than using the method signature of a arbitrary function
11712           named 'System.Runtime.InteropServices.Marshal::PtrToStructure' with 
11713           two arguments.
11714           Hack done with Harinath.
11715
11716 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11717
11718         * threadpool.c: disable printing stack traces when we get a exception
11719         in a threadpool thread. I need to do more testing to figure out which
11720         cases actually print this. Fixes bug #75828.
11721
11722 2005-08-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11723
11724         * icall.c: there might be ignored whitespace after the last '='. This
11725         fixes length computation and bug #75840.
11726
11727 2005-08-18  Zoltan Varga  <vargaz@freemail.hu>
11728
11729         * assembly.c (mono_assembly_load_full): Consider .exe extension as
11730         well. Fixes #75809.
11731
11732         * reflection.c (create_custom_attr): Fix unmanaged memory leak. Fixes
11733         #75784.
11734         
11735         * reflection.c (create_custom_attr_data): Ditto.
11736
11737 2005-08-17  Atsushi Enomoto  <atsushi@ximian.com>
11738
11739         * locales.c, culture-info.h : removed RegionLCIDMap.
11740         * culture-info-tables.h : regenerated.
11741
11742 2005-08-16  Martin Baulig  <martin@ximian.com>
11743
11744         * class.c (mono_type_get_name_recurse): Small fix.
11745
11746 2005-08-16  Atsushi Enomoto  <atsushi@ximian.com>
11747
11748         * locales.c : indentation fixie.
11749
11750 2005-08-15  Atsushi Enomoto  <atsushi@ximian.com>
11751
11752         * object-internals.h,
11753           locales.h,
11754           locales.c,
11755           culture-info.h,
11756           icall.c : added RegionInfo table support.
11757         * culture-info-table.h : regenerated for region support.
11758
11759 2005-08-14  Kamil Skalski  <nazgul@nemerle.org>
11760
11761         * reflection.c (resolve_object): handle all kinds of MonoMethod
11762         including generic ones
11763
11764 2005-08-12  Ankit Jain <jankit@novell.com>
11765
11766         * get.c (dis_stringify_variant_type): New. Stringify MonoMarshalVariant.
11767           (dis_stringify_marshal_spec): Add new case for MONO_NATIVE_SAFEARRAY. 
11768
11769 2005-09-12  Lluis Sanchez  <lluis@ximian.com>
11770
11771         * process.c: Don't close a thread handle when it's NULL. This is a
11772         workaround for bug #75733.
11773
11774 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
11775
11776         * marshal.c (mono_marshal_get_string_encoding): Fix handling of CharSet.Auto. Fixes #75769.
11777
11778 2005-08-10  Zoltan Varga  <vargaz@freemail.hu>
11779
11780         * icall.c (ves_icall_Type_get_IsGenericType): New icall.
11781
11782 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
11783
11784         * threadpool.c: if a work item in the thread pool has a callback that
11785         catches a exception, don't propagate it after invoking the callback.
11786         Fixes bug #75336.
11787
11788 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
11789
11790         * class.c (class_compute_field_layout): Rename this to mono_class_setup_fields.
11791
11792         * class-internals.h (MonoCachedClassInfo): Add some new fields.
11793
11794         * class.c (mono_class_init): Load field info lazily in the AOT case.    
11795
11796         * reflection.c (mono_image_load_module): Fix error checking. Fixes #75660.
11797
11798 2005-08-03  Ankit Jain  <jankit@novell.com>
11799
11800         Fix #75683.
11801         * loader.c (mono_method_signature_full): Use MONO_CALL_DEFAULT if
11802           PInvoke calling convention is 0.
11803
11804 2005-08-02  Zoltan Varga  <vargaz@freemail.hu>
11805
11806         * socket-io.c (convert_sockopt_level_and_name): Applied patch from 
11807         Julien Puydt (julien.puydt@laposte.net). Add check for IPV6_PKTINFO.
11808
11809 Mon Aug 1 16:52:12 CEST 2005 Paolo Molaro <lupus@ximian.com>
11810
11811         * gc-internal.h, threads.c, null-gc.c, boehm-gc.c: added interface
11812         to handle threads not started by the GC (patch by Michael Meeks
11813         <michael.meeks@novell.com>).
11814
11815 2005-07-31  Kamil Skalski  <nazgul@omega.pl>
11816
11817         * reflection.c: Make buffer used in emitting types larger for some
11818         big generic types (patch by Michal Moskal).
11819
11820 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
11821
11822         * mono-debug.c: Fix some (not all) alignment problems.
11823
11824 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11825
11826         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw):
11827         Invoke mono_image_load_from_data_full passing the refonly
11828         parameter.
11829
11830         * assembly.c
11831         (mono_assembly_open_from_bundle): Add the refonly argument, 
11832         in order to pass it to other methods it calls to.
11833         (do_mono_assembly_open): Add the refonly argument, in order 
11834         to pass it to other methods it calls to.
11835         (mono_assembly_open_full): Invoke do_mono_assembly_open passing
11836         the refonly parameter to it.
11837
11838         * image.c: Add loaded_images_refonly_hash and
11839         loaded_images_refonly_guid_hash to cache the reflection
11840         only loaded images.
11841         (mono_images_init): Initialize the hash tables used for
11842         caching the reflection only images.
11843         (load_modules): Invoke mono_image_open_full passing the refonly
11844         parameter to load the modules the correct way.
11845         (build_guid_table): Add the refonly argument, to re-build the 
11846         correct hash table.
11847         (do_mono_image_open): Added the refonly argument, in order to
11848         define it for the loaded image.
11849         (mono_image_loaded_full): New function, which receives an
11850         additional parameter to look for the image in the refonly or
11851         non-refonly section.
11852         (mono_image_loaded): Updated, using mono_image_loaded_full.
11853         (mono_image_loaded_by_guid_full): The same case that happens
11854         with mono_image_loaded_full.
11855         (mono_image_loaded_by_guid): Likewise.
11856         (register_image): Use the ref_only variable inside MonoImage
11857         to decide in which hash table store the current image.
11858         (mono_image_open_from_data_full): Rename
11859         mono_image_open_from_data to mono_image_open_from_data_full,
11860         adding the refonly argument, to define the ref_only variable 
11861         inside MonoImage.
11862         (mono_image_open_from_data): Return 
11863         mono_image_open_from_data_full.
11864         (mono_image_open_full): Rename mono_image_open to
11865         mono_image_open_full, receiving the new refonly argument,
11866         to pass it to inner methods.
11867         (mono_pe_file_open): Update this function, to open
11868         a MonoImage as a non-refonly image.
11869         (mono_image_close): Use the refonly variable inside
11870         MonoImage to remove the image from the correct caches.
11871
11872         * image.h: Add the signatures of mono_image_open_full,
11873         mono_image_open_from_data_full, mono_image_loaded_full,
11874         mono_image_loaded_by_guid_full.
11875
11876         * metadata-internals.h: Add the ref_only field to 
11877         MonoImage.
11878         
11879 2005-07-29  Carlos Alberto Cortez <calberto.cortez@gmail.com>
11880
11881         * icall.c (ves_icall_System_Reflection_GetReferencedAssemblies):
11882         Fix the last behavior, which used to load the assemblies and
11883         extract MonoReflectionAssemblyName information, instead of
11884         extract it from the metadata tables. Needed for Reflection
11885         Only assemblies.
11886         
11887 2005-07-29  Martin Baulig  <martin@ximian.com>
11888
11889         * mono-debug-debugger.c
11890         (mono_debugger_lock, mono_debugger_unlock): g_assert() if we're
11891         not initialized.
11892
11893         * mono-debug.c
11894         (mono_debug_address_from_il_offset): Check whether we have
11895         debugging support before attempting to take the lock.
11896         (mono_debug_source_location_from_address): Likewise.
11897         (mono_debug_source_location_from_il_offset): Likewise.
11898         (mono_debug_il_offset_from_address): Likewise.
11899         (mono_debug_address_from_il_offset): Likewise.
11900
11901 2005-07-29  Zoltan Varga  <vargaz@freemail.hu>
11902
11903         * class.c (mono_class_from_name_case): Add support for dynamic images.
11904         Fixes #75650.
11905
11906         * object.c (mono_class_compute_gc_descriptor): Add a workaround
11907         for #75479.
11908
11909 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11910         
11911         * reflection.c (mono_method_get_object): Fix warning.
11912
11913 2005-07-28  Martin Baulig  <martin@ximian.com>
11914
11915         * mono-debug.c
11916         (mono_debug_add_wrapper): Also write the wrapper type.
11917
11918 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
11919
11920         * class-internals.h (MonoCachedClassInfo): Add has_nested_classes field.
11921         
11922         * class.c (mono_class_init): Avoid reading nested classes if the AOT
11923         data indicates the class has none.
11924
11925 2005-07-26  Ben Maurer  <bmaurer@ximian.com>
11926
11927         * mono-debug.c, debug-mono-symfile.c: Replace the use of the
11928         loader lock with the debugger lock. Prevents deadlocks for beagle.
11929
11930         Beagle can now run on an smp box for a weekend without any
11931         issues. Woohoo!
11932
11933 2005-07-26  Zoltan Varga  <vargaz@freemail.hu>
11934
11935         * class.c (mono_bounded_array_class_get): Avoid crash if eclass is
11936         in a module. Fixes #75629.
11937
11938 2005-07-26  Martin Baulig  <martin@ximian.com>
11939
11940         * mono-debug.c (mono_debug_add_wrapper): New static method.
11941         (mono_debug_add_method): Call mono_debug_add_wrapper() if we're an
11942         interncall or a wrapper.
11943
11944         * mono-debug.h (MonoDebugWrapperData): New public typedef.
11945         (MonoDebugDataItemType): Added `MONO_DEBUG_DATA_ITEM_WRAPPER'.
11946         (MONO_DEBUGGER_VERSION): Bump to 51.
11947
11948         * mono-debug-debugger.c
11949         (mono_debugger_add_type): Removed this empty function.
11950         (mono_debugger_add_method): Likewise.
11951
11952 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
11953
11954         * icall.c (ves_icall_Type_GetMethodsByName): Call setup_vtable () 
11955         before accessing method->slot.
11956
11957 2005-07-21  Jb Evain  <jbevain@gmail.com>
11958
11959         * reflection.c (method_encode_clauses/class): Handle filters clauses.
11960         Fixes #75010.
11961
11962 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
11963
11964         * marshal.c (emit_marshal_custom): Implement byref marshalling. Fixes
11965         #75587.
11966
11967 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
11968
11969         * image.h image.c: Add mono_image_get_guid () API function.
11970
11971 2005-07-19  Ben Maurer  <bmaurer@ximian.com>
11972
11973         There were issues when multiple threads tried to load
11974         assemblies. A deadlock was created between assemblies_mutex and
11975         mono_domain_assemblies_lock. This fixes the issue by making the
11976         assembly ref counting be lock free. See bug 75586.
11977         
11978         * image.c (mono_image_close): The add ref function here was using
11979         Interlocked operations while the unref was using a mutex and a
11980         --. I don't think this was ever a bug that would be exposed in a
11981         non-pendantic way (ie, by an embedder doing a ref on one thread
11982         and an unref on another), but for the sake of correctness, this is
11983         now Interlocked.
11984
11985         * assembly.c (mono_assembly_addref): Use InterlockedIncrement
11986         (mono_assembly_load_reference): Call mono_assembly_addref rather
11987         than touching the refcount ourselves.
11988         (mono_assembly_close): Use InterlockedDecrement to unref the
11989         assembly. Don't acquire the lock unless it is actually needed.
11990
11991 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
11992
11993         * class.c (mono_class_layout_fields): Fix calculation of has_references
11994         for generic types.
11995
11996 2005-07-12  Martin Baulig  <martin@ximian.com>
11997
11998         Applying a patch from Michal Moskal <malekith@nemerle.org>.
11999
12000         * metadata.c
12001         (mono_type_hash): Provide better hashing for generic instances.
12002         (mono_generic_inst_hash): Improve hashing.
12003         (mono_generic_class_hash): Likewise.
12004
12005         * reflection.c (mymono_metadata_type_hash): Improve hashing for
12006         generic instances.
12007
12008 2005-07-12  Martin Baulig  <martin@ximian.com>
12009
12010         * reflection.c (mono_reflection_create_runtime_class): Remove the
12011         hack for generic type definitions and non-`Run' assemblies.
12012         (mono_reflection_bind_generic_parameters): Also use
12013         `klass->wastypebuilder' to check for TypeBuilders.
12014
12015 2005-07-12  Zoltan Varga  <vargaz@freemail.hu>
12016
12017         * class.c (mono_class_layout_fields): Fix calculation of has_references
12018         for generic types.
12019
12020         * class.c (inflate_generic_class): Fix a leak.
12021         (mono_class_init): Fix calculation of gchimpl and has_finalize fields
12022         for generic types.
12023
12024 2005-07-11  Martin Baulig  <martin@ximian.com>
12025
12026         * icall.c (ves_icall_Type_BindGenericParameters): Don't crash here
12027         on error.
12028
12029 2005-07-11  Martin Baulig  <martin@ximian.com>
12030
12031         * loader.c (find_method): Also lookup in
12032         `mono_defaults.object_class' if we're an interfaces; fixes #75460.
12033
12034 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
12035
12036         * appdomain.c (mono_domain_unload): Don't free the error message
12037         before passing it to mono_get_exception_...
12038
12039         * reflection.c (CACHE_OBJECT): Fix the race introduced by the previous patch.
12040         
12041 Thu Jul 7 19:59:31 CEST 2005 Paolo Molaro <lupus@ximian.com>
12042
12043         * threads.c: try to better guess an available RT signal (bug #75387).
12044
12045 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
12046
12047         * reflection.c (CACHE_OBJECT): Don't hold the domain lock between CHECK_OBJECT
12048         and CACHE_OBJECT.
12049
12050 2005-07-07  Martin Baulig  <martin@ximian.com>
12051
12052         * class.c (mono_type_get_name_full): Return NULL for
12053         MONO_TYPE_NAME_FORMAT_FULL_NAME if we have any generic parameters;
12054         fixes #75408.
12055
12056 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
12057
12058         * threads.c (mono_threads_abort_appdomain_threads): Wait for threads to
12059         exit the appdomain as well being aborted.
12060
12061         * threadpool.c: Create all threadpool threads inside the root appdomain, and
12062         change back to the root domain after calling managed code. This enables
12063         appdomains using threadpools to be unloaded.
12064
12065 2005-07-07  Martin Baulig  <martin@ximian.com>
12066
12067         * class-internals.h
12068         (MonoInflatedGenericClass): Moved the `MonoType *parent' field
12069         into `MonoDynamicGenericClass' since we only need it for dynamic
12070         types.
12071
12072         * reflection.c (mono_class_bind_generic_parameters): We don't need
12073         to compute the `parent' here.
12074
12075 2005-07-07  Atsushi Enomoto  <atsushi@ximian.com>
12076
12077         * culture-info-table.h : regenerated.
12078
12079 2005-07-06  Martin Baulig  <martin@ximian.com>
12080
12081         * icall.c
12082         (ves_icall_FieldInfo_SetValueInternal): Add MONO_TYPE_GENERICINST.
12083
12084         * object.c (set_value): Add MONO_TYPE_GENERICINST; fixes #75299.
12085
12086 2005-07-06  Martin Baulig  <martin@ximian.com>
12087
12088         * metadata.c (mono_metadata_class_equal): Add MONO_TYPE_SZARRAY if
12089         we're doing a signature-only comparision; fixes #74945.
12090
12091 2005-07-06  Martin Baulig  <martin@ximian.com>
12092
12093         * class-internals.h (MonoGenericClass): Moved some things out into
12094         a new `MonoInflatedGenericClass' type.  
12095         (MonoInflatedGenericClass): New type; the `klass' of a
12096         `MonoGenericClass' is now computed lazyly in
12097         mono_get_inflated_generic_class().      
12098
12099         * class.c (mono_get_inflated_generic_class): New public function.
12100         (mono_class_inflate_generic_method): Removed the unused
12101         `MonoClass *' argument.
12102         (setup_generic_vtable): Don't call mono_get_inflated_method() on
12103         all the methods.
12104         (mono_class_create_generic): Make this static and merge it with
12105         mono_class_create_generic_2(); we're now called automatically from
12106         mono_get_inflated_generic_class().
12107
12108         * loader.c (mono_method_signature): Call
12109         mono_get_inflated_method() here.
12110
12111 2005-07-06  Zoltan Varga  <vargaz@freemail.hu>
12112
12113         * object.c (mono_class_create_runtime_vtable): Allow MONO_TYPE_FNPTR as
12114         type of fields with RVA.
12115
12116         * class.c (mono_class_from_generic_parameter): Avoid calling mono_class_init ()
12117         for this pseudo class.
12118         (my_mono_class_from_generic_parameter): Likewise.
12119         (mono_class_init): Allow interfaces to have cctors.
12120
12121 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
12122
12123         * domain-internals.h domain.c: Add functionality to create MonoJitInfo structures
12124         lazily for AOT methods.
12125
12126 2005-07-05  Martin Baulig  <martin@ximian.com>
12127
12128         * loader.c (mono_lookup_pinvoke_call): g_ascii_strcasecmp()
12129         returns FALSE for a successful match, not TRUE.
12130
12131 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
12132
12133         * loader.c (mono_method_get_index): Optimize this a bit.
12134
12135 2005-07-04  Martin Baulig  <martin@ximian.com>
12136
12137         * class.c
12138         (class_compute_field_layout): Move the check for generic type
12139         definitions into mono_class_layout_fields().  Fixes #74684.
12140         (mono_class_from_generic_parameter): Correctly compute
12141         `klass->parent'; fixes #75457.
12142
12143         * reflection.c (register_assembly, register_module): Make sure
12144         `domain->rejobject_hash' is already created.
12145
12146 2005-07-02  Martin Baulig  <martin@ximian.com>
12147
12148         * class-internals.h
12149         (MonoGenericClass): Move `count_ifaces' and `ifaces' into
12150         `MonoDynamicGenericClass'.      
12151
12152 2005-07-01  Lluis Sanchez  <lluis@ximian.com>
12153
12154         * icall.c: In ves_icall_InternalExecute() dont't assert if the value
12155         returned by a field getter is null, since null is a valid value.
12156
12157 2005-07-01  Martin Baulig  <martin@ximian.com>
12158
12159         * reflection.c (mono_reflection_generic_class_initialize): Update
12160         the `dgclass->fields [i].parent' to the correct class.
12161         (mono_image_get_fieldref_token): Use the declaring type, not the
12162         reflected type.
12163
12164 2005-07-01  Martin Baulig  <martin@ximian.com>
12165
12166         * loader.c (find_method): Also look in the interfaces; fixes #75429.
12167
12168 2005-06-30  Ben Maurer  <bmaurer@ximian.com>
12169
12170         * threads.c (thread_cleanup): assert that thread != NULL
12171         (wait_for_tids_or_state_change): We were using the wrong variable
12172         when accessing wait->threads. `i' was always out of the bounds of
12173         the array.
12174
12175 2005-06-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12176
12177         * loader.c: map user32 and kernel32 to libMonoSupportW
12178
12179 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
12180
12181         * appdomain.c (unload_thread_main): Mark this as WINAPI.
12182
12183 2005-06-28  Martin Baulig  <martin@ximian.com>
12184
12185         * loader.c (method_from_methodspec): Fix #75334.
12186
12187 2005-06-28  Martin Baulig  <martin@ximian.com>
12188
12189         Fix #74953 - Arrays now implement the generic IList<T> interface
12190         on the 2.0 platform.
12191
12192         * class-internals.h (MonoDefaults): Added `generic_array_class'.
12193
12194         * reflection.c (mono_class_bind_generic_parameters): New public
12195         function; similar to mono_reflection_bind_generic_parameters(),
12196         but operates on a `MonoType *' and not on a `MonoReflectionType *'.
12197
12198         * domain.c (mono_init_internal): Try to initialize.
12199         `mono_defaults.generic_array_class' here; this'll only succeed if
12200         we're using the 2.0 corlib.
12201
12202         * icall.c
12203         (ves_icall_System_Array_InternalArray_GetGenericValueImpl): Added
12204         interncall for "System.Array/InternalArray`1:GetGenericValueImpl".
12205         (mono_lookup_internal_call): Added support for nested classes.
12206
12207         * loader.c
12208         (mono_get_method_from_token): Set `result->signature->pinvoke' if
12209         we're an interncall and have generic arguments.
12210
12211         * class.c
12212         (mono_class_inflate_generic_methods): Allow interncalls and PInvoke.
12213         (mono_bounded_array_class_get): If we're on the 2.0 corlib, use an
12214         instance of System.Array.InternalArray<T> for arrays, so they
12215         implement the generic IList<T> interface.
12216
12217 2005-06-27  Zoltan Varga  <vargaz@freemail.hu>
12218
12219         * marshal.c (emit_marshal_string): Applied patch from Itamar Rogel
12220         (chastamar@yahoo.com). Fixes #75374.    
12221
12222 2005-06-27  Atsushi Enomoto <atsushi@ximian.com>
12223
12224         * culture-info-table.h: regenerated.
12225
12226 2005-06-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12227
12228         * icall.c: handle spaces correctly for base64 strings.
12229
12230 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
12231
12232         * *.c: Kill some warnings.
12233
12234 2005-06-23  Duncan Mak  <duncan@novell.com>
12235
12236         * socket-io.c (is_loopback): Cast 'ptr' to 'struct in6_addr *' so
12237         that this builds on Solaris 10 (x86).
12238
12239 2005-06-23  Martin Baulig  <martin@ximian.com>
12240
12241         * class.c
12242         (mono_type_get_name_recurse): Don't use a duplicate '[', ']' for
12243         generic type definitions.
12244
12245 2005-06-23  Martin Baulig  <martin@ximian.com>
12246
12247         Fix #75331.
12248
12249         * metadata.c (mono_class_get_overrides): Renamed to
12250         mono_class_get_overrides_full() and added a `MonoGenericContext *'.
12251         (method_from_method_def_or_ref): Added `MonoGenericContext *' and
12252         pass it to mono_get_method_full().
12253
12254 2005-06-22  Ben Maurer  <bmaurer@ximian.com>
12255
12256         * reflection.c (mono_reflection_create_runtime_class): take the
12257         mono_domain_lock in this method. Prevents deadlocks
12258
12259 2005-06-22  Martin Baulig  <martin@ximian.com>
12260
12261         * loader.c (method_from_methodspec): Fix #75330.
12262
12263 2005-06-22  Martin Baulig  <martin@ximian.com>
12264
12265         * reflection.c (type_get_qualified_name): Use
12266         mono_type_get_name_full() with MONO_TYPE_NAME_FORMAT_REFLECTION.
12267         (_mono_reflection_get_type_from_info): Added `MonoImage *image'
12268         argument; use it if we don't have an assembly name.
12269
12270 2005-06-22  Lluis Sanchez Gual  <lluis@novell.com>
12271
12272         * object.c: In mono_message_init, set "copy out" flag for in
12273         parameters with the [Out] flag.
12274
12275 2005-06-21  Martin Baulig  <martin@ximian.com>
12276
12277         * class.c
12278         (mono_type_get_name_recurse): Correctly handle MONO_TYPE_SZARRAY
12279         and MONO_TYPE_PTR.
12280
12281 2005-06-21  Martin Baulig  <martin@ximian.com>
12282
12283         * class.c (mono_class_init): Don't initialize `class->fields' for
12284         generic instances since they're initialized again in
12285         compute_field_layout(). 
12286         (compute_field_layout): Set the field's `generic_info' here; fix
12287         #75320. 
12288
12289 2005-06-21  Martin Baulig  <martin@ximian.com>
12290
12291         * class-internals.h
12292         (MonoGenericMethod): Added `MonoGenericClass *generic_class'.
12293
12294         * metadata.c (mono_metadata_generic_method_equal): Also
12295         distinguish the `generic_class'; fixes #75334.
12296
12297 2005-06-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12298
12299         * domain.c:
12300         * appdomain.c:
12301         * domain-internals.h:
12302         * reflection.c: 'domain_assemblies' field is now protected by its own
12303         lock. Don't call into managed code to run the AssemblyLoad event if we
12304         now there are no registered delegates for it.
12305
12306 2005-06-20  Martin Baulig  <martin@ximian.com>
12307
12308         * class.c (mono_class_is_assignable_from): Use a custom version of
12309         mono_class_has_parent() to make things work for generic instances;
12310         fix #75300.
12311
12312 2005-06-20  Martin Baulig  <martin@ximian.com>
12313
12314         * loader.c (method_from_methodspec): Apply a patch from
12315         Kamil Skalski <nazgul@nemerle.org> to fix #75296.
12316
12317 2005-06-20  Martin Baulig  <martin@ximian.com>
12318
12319         * class.c (mono_class_init): Reverted Zoltan's last change; it
12320         breaks generics.
12321
12322 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
12323
12324         * threads.c (wait_for_tids_or_state_change): Add missing locking.
12325
12326 2005-06-18 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12327
12328         * socket-io.c: fix the index in the socket array for writable/error
12329         sockets. Fixes bug #75306.
12330
12331 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
12332
12333         * class.c (mono_class_init): Allow interfaces to have static ctors.
12334
12335 2005-06-17  Martin Baulig  <martin@ximian.com>
12336
12337         * loader.c (method_from_methodspec): Use `context->container' when
12338         parsing the `gmethod->inst'.
12339
12340 2005-06-17  Martin Baulig  <martin@ximian.com>
12341
12342         * class.c (mono_type_get_name_recurse): Don't add the assembly
12343         name for type arguments.
12344
12345 2005-06-15  Martin Baulig  <martin@ximian.com>
12346
12347         * reflection.c (mono_image_get_inflated_method_token): Encode
12348         correct klass; fixes #75260.
12349
12350 2005-06-13 Michal Moskal <malekith@nemerle.org>
12351
12352         * icall.c: Make GetCorrespondingMethod/Constructor take
12353         MonoReflectionMethod method not MonoMethod. Removed
12354         MonoType.GetCorrespondingField, and make
12355         MonoGenericType.GetCorrespondingField take name not
12356         MonoClassField.
12357
12358 2005-06-13  Michal Moskal <malekith@nemerle.org>
12359
12360         * reflection.c (field_encode_signature, encode_locals):
12361          Make sizes of buffers for types larger (for big generic types).
12362          (create_generic_typespec,
12363          mono_reflection_sighelper_get_signature_local,
12364          mono_reflection_sighelper_get_signature_field):
12365          Add asserts for too small buffers.
12366
12367 2005-06-15  Martin Baulig  <martin@ximian.com>
12368
12369         * icall.c (ves_icall_MonoGenericClass_GetParentType): Return NULL
12370         if our parent is not a dynamic type.
12371
12372 2005-06-15  Martin Baulig  <martin@ximian.com>
12373
12374         * class-internals.h (MonoTypeNameFormat): New enum.
12375
12376         * class.c
12377         (mono_class_get_name_full): Renamed to mono_type_get_name_full().
12378         (mono_type_get_full_name): Removed.
12379         (mono_type_get_name_full): Take a `MonoTypeNameFormat format'
12380         argument instead of the boolean's.
12381
12382         * icall.c (ves_icall_System_MonoType_getFullName):
12383         Added `gboolean assembly_qualified'.    
12384
12385         * reflection.h
12386         (MonoTypeNameParse): Added `GPtrArray *type_arguments'.
12387
12388         * reflection.c (mono_reflection_parse_type): Parse the new type
12389         name format.
12390
12391 2005-06-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12392
12393         * icall.c: no need to convert from utf16 to utf8 and then back again
12394         after the call to GetLogicalDrives.
12395
12396 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12397
12398         * icall.c: frombase64. Fix problems exposed by new tests.
12399
12400 2005-06-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12401
12402         * icall.c: added internal calls for converting char [] and strings in
12403         base64 into byte [].
12404
12405 2005-06-10  Martin Baulig  <martin@ximian.com>
12406
12407         * class.c (mono_class_create_generic_2): Read the nested classes
12408         from the metadata rather than from `gklass->nested_classes' since
12409         `gklass' might not be initialized yet.
12410
12411 2005-06-09  Duncan Mak  <duncan@novell.com>
12412
12413         * *.h: Added G_BEGIN_DECLS and G_END_DECLS where appropriate to
12414         all public headers. Fixes #74919.
12415
12416 2005-06-09  Lluis Sanchez Gual  <lluis@novell.com>
12417
12418         * domain.c: The key for proxy_vtable_hash is now a pointer
12419         array. Added new GHashFunc and GCompareFunc functions for this.
12420
12421         * class.h: The list of interfaces in MonoRemoteClass is known in
12422         advance and can't grow (we create a new MonoRemoteClass if needed),
12423         so now the interface array can be allocated together with
12424         MonoRemoteClass.
12425         
12426         * object.c: Added a new method create_remote_class_key.
12427         Fixed mono_remote_class so it does not depend on
12428         mono_upgrade_remote_class.
12429         Removed extend_interface_array.
12430         Added new method clone_remote_class(), which makes a copy of a remote
12431         class and adds a new interface or class to it.
12432         mono_upgrade_remote_class() now creates a new remote class (or gets
12433         it from the cache) if an vtable upgrade is needed. In this way
12434         we make sure that other objects sharing the same remote class
12435         don't get the new vtable with unwanted interfaces.
12436         
12437         * object-internals.h:
12438         * object.h: Moved mono_upgrade_remote_class to object-internals.h.
12439         
12440         * marshal.c: Track changes in mono_upgrade_remote_class().
12441
12442 2005-06-08  Kamil Skalski <nazgul@nemerle.org>
12443         * icall.c: Add runtime methods for obtaining members of inflated
12444         class, which were created from supplied non-inflated members. It
12445         is used in internal Get{Method,Constructor,Field} methods in
12446         System.Type
12447
12448 2005-06-09  Martin Baulig  <martin@ximian.com>
12449
12450         * reflection.c
12451         (mono_reflection_bind_generic_method_parameters): Fix #75169.
12452
12453 2005-06-08  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12454         * reflection.c (mono_image_basic_init): Define
12455         Version in MonoDynamicAssembly. 
12456         
12457 2005-06-08  Martin Baulig  <martin@ximian.com>
12458
12459         Fix #75136.
12460
12461         * loader.c
12462         (mono_method_signature_full): New public method; takes a
12463         `MonoGenericContext *'.
12464         (find_method): Use mono_method_signature_full() and pass the
12465         klass'es context to it.
12466
12467         * class.c (mono_class_is_inflated_method): Use
12468         mono_method_signature_full() and pass the context to it.
12469
12470 Wed Jun 8 19:26:38 CEST 2005 Paolo Molaro <lupus@ximian.com>
12471
12472         * object.c: add proper locking in mono_remote_class_vtable(),
12473         fixes possible memory corruption.
12474
12475 2005-06-08  Michael Meeks  <michael.meeks@novell.com>
12476
12477         * marshal.c (mono_remoting_marshal_init): set
12478         initialized after initialization.
12479
12480 2005-06-08  Atsushi Enomoto  <atsushi@ximian.com>
12481
12482         * locales.c : hush.
12483
12484 2005-06-06  Michael Meeks  <michael.meeks@novell.com>
12485
12486         * object.c (extend_interface_array): fix really silly
12487         memory corrupting / comparison bug.
12488
12489 2005-06-07  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12490
12491         * reflection.c: Functions added to support the creation
12492         of CustomAttributeData, which includes Attribute data
12493         used by ReflectionOnly methods.
12494
12495         * reflection.h:  mono_reflection_get_custom_attrs_data and
12496          mono_custom_attrs_data_construct added (functions exposed).
12497
12498          * icall.c: Added mono_reflection_get_custom_attrs_data
12499          as icall.
12500         
12501 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
12502
12503         * Makefile.am (libmonoruntime_la_SOURCES): Revert last change at
12504         lupus's request.
12505
12506 2005-06-06  Zoltan Varga  <vargaz@freemail.hu>
12507
12508         * icall.c (ves_icall_Mono_Runtime_GetDisplayName): Fix warning.
12509
12510         * reflection.c (reflection_methodbuilder_to_mono_method): Fix encoding of
12511         dynamic DllImportAttribute.
12512
12513         * icall.c (ves_icall_MonoMethod_GetDllImportAttribute): Fix decoding of 
12514         dynamic DllImportAttribute.
12515
12516         * Makefile.am (libmonoruntimeinclude_HEADERS): Export tabledefs.h too.
12517         Fixes #75162.
12518
12519 2005-06-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12520
12521         * threads.c: avoid segfault when an unstarted thread is aborted.
12522
12523 2005-06-05  Kornél Pál <kornelpal@hotmail.com>
12524
12525         * icall.c: Added ves_icall_Mono_Runtime_GetDisplayName:
12526         Returns the name and version of the runtime for reporting.
12527
12528 2005-06-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12529
12530         * appdomain.c: bump corlib version.
12531         * object-internals.h: new field in MonoReflectionAssembly.
12532
12533 2005-06-03 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12534
12535         * object-internals.h: Carlos forgot to add this field.
12536
12537 2005-06-03  Carlos Alberto Cortez <calberto.cortez@gmail.com>
12538
12539         * icall.c: Added create_version to create instances
12540         of Version of MonoReflectionAssemblyName. This change helps
12541         the AssemblyName tests to keep running fine.
12542         
12543 2005-06-03  Lluis Sanchez Gual  <lluis@novell.com>
12544   
12545         * object.c (mono_method_return_message_restore): A somehow less
12546         intrusive fix for #75138.
12547
12548 2005-06-03  Raja R Harinath  <rharinath@novell.com>
12549
12550         * object.c (mono_method_return_message_restore): Fix computation
12551         of expected number of out args.
12552
12553 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
12554
12555         * reflection.c (mono_image_get_method_info): Fix the case when the
12556         charset is empty.
12557
12558 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com> 
12559
12560         * object.c: Added missing null check in
12561           mono_method_return_message_restore.
12562
12563 2005-06-02  Zoltan Varga  <vargaz@freemail.hu>
12564
12565         * reflection.c (mono_image_get_method_info): Handle the case when
12566         dllentry is empty.
12567
12568 2005-06-02  Lluis Sanchez Gual  <lluis@novell.com>
12569
12570         * object.c: When creating the vtable for a proxy, take into account
12571         all inherited interfaces, not only the ones registered in
12572         iclass->interfaces. This fixs bug #74996.
12573         Also, in mono_method_return_message_restore, verify that the array
12574         of out args has the expected lengh.
12575
12576 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12577
12578         * socket-io.c: update the timeout in Poll when the call is interrupte.
12579
12580 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12581
12582         * socket-io.c: support abort/suspend in Select_internal after last
12583         change.
12584
12585 2005-06-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12586
12587         * threadpool.c: remove warning.
12588
12589 2005-06-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12590
12591         * icall.c:
12592         * socket-io.[ch]: Select_internal uses poll() now when available, thus
12593         removing the 1024 limit from select(). Runtime part of the fix for
12594         bug #71203.
12595
12596 2005-05-30 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12597
12598         * socket-io.c: when resolving the addresses for the same
12599         host returned by gethostname(), get the local IPs from the interface
12600         list. Loopback addresses are discarded if the are interfaces up with
12601         non-loopback ones. Fixes bug #63265.
12602
12603 2005-05-27  Vladimir Vukicevic  <vladimir@pobox.com>
12604
12605         * appdomain.c, verify.c, object-internals.h, reflection.c:
12606         bumped corlib number to 36, and added new extra_flags field
12607         to ReflectionMethodBuilder and friends.  Fixes #75060.
12608
12609 Fri May 27 14:45:56 CEST 2005 Paolo Molaro <lupus@ximian.com>
12610
12611         * gc.c: register a new weak link only if the object is non-null
12612         (fixes bug#75047).
12613
12614 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
12615
12616         * culture-info.h : short time pattern too.
12617
12618 2005-05-26  Atsushi Enomoto  <atsushi@ximian.com>
12619
12620         * culture-info.h : expand long time pattern string length.
12621
12622 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
12623
12624         * culture-info-table.h : update (more French date format; #72788).
12625
12626 2005-05-25  Zoltan Varga  <vargaz@freemail.hu>
12627
12628         * icall.c (ves_icall_InternalInvoke): Avoid type checks on this if
12629         the method is static. Fixes #75029.
12630
12631 2005-05-25  Lluis Sanchez Gual  <lluis@novell.com>
12632
12633         * reflection.c: Update the table_idx field of method builders after
12634         saving the module, since it can change. This is a workaround for
12635         bug #74914. 
12636
12637 2005-05-25  Atsushi Enomoto  <atsushi@ximian.com>
12638
12639         * culture-info-table.h : update (additional French date format).
12640
12641 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
12642
12643         * icall.c (ves_icall_type_Equals): Revert last change.
12644         
12645         * icall.c (ves_icall_type_Equals): Turn the g_print into an assert.
12646
12647         * icall.c (ves_icall_type_GetTypeCode): Rename the icall to GetTypeCodeInternal.
12648
12649 2005-05-20  Sebastien Pouliot  <sebastien@ximian.com>
12650
12651         * class-internals.h: Added executioncontext_class field to 
12652         MonoDefaults structure.
12653         * domain.c: Cache System.Threading.ExecutionContext class in 
12654         mono_defaults.
12655         * object.c: Capture the ExecutionContext for asynchroneous calls in
12656          mono_async_result_new.
12657         * object-internals.h: Added execution_context and original_context 
12658         fields to MonoAsyncResult. Added execution_context to MonoThread.
12659         * security-manager.c|.h: Added mono_get_context_capture_method to 
12660         return the capture method (if required by the security manager or by
12661         the framework version used).
12662         * threadpool.c: Apply capture (if present) ExecutionContext in 
12663         mono_async_invoke and revert to original context after it completes.
12664
12665 2005-05-19  Atsushi Enomoto  <atsushi@ximian.com>
12666
12667         * culture-info-table.h : updated (real hacky solution for zh-CHT).
12668
12669 2005-05-18  Atsushi Enomoto  <atsushi@ximian.com>
12670
12671         * culture-info-table.h : zh-CHT related workaround.
12672
12673 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
12674
12675         * marshal.c (emit_marshal_custom): Add some error checking and call the
12676         methods in the ICustomMarshaler interface. Fixes #74875.
12677         
12678         * marshal.c (emit_marshal_array): Implement [Out] marshalling in
12679         native->managed wrappers.
12680
12681 2005-05-12  Martin Baulig  <martin@ximian.com>
12682
12683         * mono-debug-debugger.cs (mono_debugger_lock/unlock): Always lock
12684         here and use the loader lock.
12685
12686         * mono-debug.c: Properly lock when the debugger is not attached.
12687         (mono_debug_init): Release the initial lock if we're not running
12688         in the debugger.
12689
12690 2005-05-12  Zoltan Varga  <vargaz@freemail.hu>
12691
12692         * marshal.c (emit_marshal_custom): Pass through NULL values without
12693         calling the custom marshalling routines.
12694
12695         * marshal.c (emit_ptr_to_object_conv): Implement ftnptr->delegate
12696         conversion in structures. Fixes #74882.
12697
12698 2005-05-12  Atsushi Enomoto  <atsushi@ximian.com>
12699
12700         * culture-info-table.h : zh-* cultures were missing.
12701
12702 2005-05-12  Lluis Sanchez Gual  <lluis@novell.com>
12703
12704         * threads.c: Added a new event background_change_event which is signaled
12705         when a thread changes its background mode.
12706         Moved here several checks previously done in managed code. The checks
12707         require the thread lock, and using the thread lock in managed code
12708         can result in deadlocks.
12709         Merged Start_internal and Thread_internal into a single method. Now 
12710         Thread_internal does all work of creating and starting a thread.
12711         Added icalls for setting and getting the state of the object. Moved from
12712         managed code to avoid locking there.
12713         Added wait_for_tids_or_state_change() which is called instad of
12714         wait_for_tids when waiting for non-backround threads to end. This method
12715         will return if one of the threads ends or the background_change_event
12716         is signaled.
12717         * threadpool.c: use ves_icall_System_Threading_Thread_SetState() to set
12718         the background mode. This method signals the background_change_event
12719         event.
12720         * icall.c:
12721         * threads-types.h: Added icalls for ClrState, SetState and GetState, and
12722         removed Start_internal.
12723         
12724 2005-05-11  Martin Baulig  <martin@ximian.com>
12725
12726         * mono-debug.h (MonoSymbolTable, MonoDebugMethodAddress): Changed
12727         to order of some fields to get proper alignment on 64-bit machines.
12728
12729 2005-05-11  Martin Baulig  <martin@ximian.com>
12730
12731         * mono-debug.c, mono-debug-debugger.c: Revert Paolo's locking
12732         changes as they're broken and completely fuck up the debugger.
12733
12734         * mono-debug.c (mono_debug_add_method): Properly unlock on error.
12735
12736 2005-05-10  Martin Baulig  <martin@ximian.com>
12737
12738         * reflection.c (mono_reflection_generic_class_initialize): Don't
12739         call mono_class_setup_parent() here.
12740
12741 2005-05-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12742
12743         * metadata/socket-io.c: on windows, getsockopt/setsockopt for
12744         send/receive timeout use an integer in milliseconds. We were using a
12745         struct timeval.
12746
12747 2005-05-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12748
12749         * locales.c:
12750         (internal_get_cultures): reserve the first slot of the array for the
12751         InvariantCulture, which will be filled in managed code.
12752
12753 2005-05-06  Zoltan Varga  <vargaz@freemail.hu>
12754
12755         * reflection.c (mono_image_fill_module_table): Initialize the
12756         GENERATION field as well.
12757
12758 2005-05-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12759
12760         * monitor.c: ignore calls to Monitor.Exit even if no one ever called
12761         Monitor.Enter on the object.
12762
12763 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
12764
12765         * threads.c: Enable the wait for running threads when exiting.
12766         * icall.c: Suspend all threads before exiting.
12767
12768 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
12769
12770         * assembly.c (mono_assembly_load_reference): Fix warning.
12771
12772 2005-05-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12773
12774         * threadpool.c: changed the default number of threads per cpu. From now
12775         on, the default will be 20 + (5 * number of cpus) instead of 50.
12776
12777 2005-05-04  Zoltan Varga  <vargaz@freemail.hu>
12778
12779         * loader.c (mono_method_get_signature_full): Add locking here.
12780
12781 2005-05-03  Lluis Sanchez Gual <lluis@novell.com>
12782
12783         * appdomain.c: Moved methods for parsing and freeing assembly
12784         names to assembly.c.
12785         * assembly.c, domain-internals.h: Created public methods for parsing
12786         assembly names. Fixed mono_assembly_load_with_partial_name:
12787         it now finds the best match, taking into account the version,
12788         token and culture specified in the partial name. Also return
12789         the latest version if no version information is specified.
12790
12791 Mon May 2 15:47:57 CEST 2005 Paolo Molaro <lupus@ximian.com>
12792
12793         * threadpool.c: replace check for SocketAsyncCall class.
12794
12795 2005-05-02 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12796
12797         * threadpool-internals.h:
12798         * Makefile.am: added threadpool-internals.h
12799
12800         * threadpool.c: call mono_unhandled_exception on exceptions not handled
12801         that happen in threadpool threads (tested on MS).
12802         (mono_thread_pool_remove_socket): new function that dispatch any pending
12803         AIO call on a socket that is closing. By now only epoll really needs it,
12804         as select/poll wake up when the socket closes.
12805
12806
12807         * socket-io.c: call mono_thread_pool_remove_socket in Close_internal.
12808
12809 2005-05-01  Zoltan Varga  <vargaz@freemail.hu>
12810
12811         * marshal.c (mono_marshal_get_managed_wrapper): Handle changing the calling convention.
12812
12813 2005-05-01  Lluis Sanchez Gual  <lluis@novell.com>
12814
12815         * gc.c: In mono_gc_cleanup(), wait for 2 seconds, not 2000 seconds.
12816
12817 2005-04-30  Lluis Sanchez Gual  <lluis@novell.com>
12818
12819         * threads.c: In mono_thread_suspend_all_other_threads, if a thread
12820         has an abort request, convert it into a suspend request.
12821
12822 2005-04-30  Ben Maurer  <bmaurer@ximian.com>
12823
12824         * marshal.c (mono_marshal_get_managed_wrapper): give a friendly
12825         warning for the usage of `UnmanagedFunctionPointerAttribute' which
12826         is not supported yet.
12827
12828 2005-04-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12829
12830         * image.c: register assemblies loaded from data (bundles) in the loaded
12831         assemblies hash. Fixes bug #74772.
12832
12833 2005-04-29  Martin Baulig  <martin@ximian.com>
12834
12835         * class.c (mono_type_get_name_recurse): Update to the new naming
12836         schema from the latest .NET 2.x beta2.
12837         (mono_class_setup_vtable_general): If we're a generic instance,
12838         copy the vtable from our generic type definition and inflate all
12839         the methods in it.
12840
12841         * loader.c (find_method): Update to the new naming schema from the
12842         latest .NET 2.x beta2.
12843
12844 2005-04-29  Raja R Harinath  <harinath@gmail.com>
12845
12846         * class.c (mono_class_init): Add a mono_loader_unlock to the
12847         #74734 fix.
12848
12849 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
12850
12851         * icall.c (ves_icall_System_Environment_Exit): Remove the 
12852         suspend_all_other_threads () call for the time being, since it can hang.
12853
12854         * threads.c (mono_thread_manage): Similarly, disable the waiting for
12855         the background threads to exit, since it can also hang.
12856
12857         * class.c (mono_class_init): Applied patch from Ankit Jain 
12858         (radical@gmail.com). Avoid pending init errors when a field refers
12859         to a nested class using a typeref. Fixes #74734.
12860
12861         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): Fix
12862         this for dynamic modules.
12863
12864 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12865
12866         * threads.c: don't wait for threads that are in the process of aborting
12867         or aborted. Set the 'shutting_down' flag before cleaning the threadpool
12868         and waiting for background threads to finish. This makes xsp and
12869         mod-mono-server exit without random length delays and/or hangs.
12870
12871 2005-04-27 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12872
12873         * icall.c: remove duplicate assignment from GetReferencedAssemblies.
12874
12875 2005-04-25  Zoltan Varga  <vargaz@freemail.hu>
12876
12877         * class.c (mono_class_is_assignable_from): Call is_assignable_to for
12878         dynamic types to prevent infinite loops. Fixes #74727.
12879
12880         * reflection.c (mono_reflection_call_is_assignable_from): Rename to
12881         ..._is_assignable_to.
12882
12883 2005-04-25  Sebastien Pouliot  <sebastien@ximian.com>
12884
12885         * security.c: Fixed #74698 where sysconf returned -1 on FreeBSD.
12886
12887 2005-04-25  Martin Baulig  <martin@ximian.com>
12888
12889         Upgrade to the latest .NET 2.x beta (Visual Studio 2005 Beta 2).
12890
12891         * domain.c
12892         (supported_runtimes): Change "v2.0.40607" -> "v2.0.50215".
12893
12894         * row-indexes.h (MONO_GENERICPARAM_KIND): Removed.
12895
12896         * reflection.c (build_compressed_metadata): Set metadata header
12897         version to 2.0.
12898
12899 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
12900
12901         * sysmath.c (ves_icall_System_Math_Round2): Use modf to decompose the
12902         number into an integral and a decimal part. Fixes #70473.
12903
12904         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): Ignore static fields. Fixes #74703.
12905
12906 2005-04-23  Atsushi Enomoto  <atsushi@ximian.com>
12907
12908         * culture-info-table.h : reflected the latest locale-builder output.
12909
12910 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12911
12912         * threadpool.c: check for SuspendRequested too when deciding if
12913         mono_thread_interruption_checkpoint should be called.
12914
12915 2005-04-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12916
12917         * appdomain.[ch]: added function to set the shutting_down flag to TRUE.
12918         * threads.c: remove interruption_mutex and use Interlocked instead. When
12919         suspending all the threads, wait for all the suspended events at once.
12920         If we're shutting down and get an APC that is going to be queued,
12921         call mono_thread_execute_interruption immediately, as the thread might
12922         be sleeping on a pthread condition or mutex.
12923
12924         * icall.c: call mono_runtime_set_shutting_down before suspending the
12925         threads.
12926
12927         Fixes bug #74693. And now xsp is happier when exiting.
12928
12929 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
12930
12931         * loader.c (mono_stack_walk): Fix #74690.
12932
12933 2005-04-22  Martin Baulig  <martin@ximian.com>
12934
12935         * mono-debug.h (MonoDebugMethodJitInfo): Added
12936         `MonoDebugMethodJitInfo *jit'.
12937
12938         * mono-debug.c (mono_debug_read_method): Cache the
12939         MonoDebugMethodJitInfo in `address->jit'.
12940         (mono_debug_free_method_jit_info): New public method.
12941
12942 2005-04-22  Martin Baulig  <martin@ximian.com>
12943
12944         * class.c (mono_class_is_assignable_from): Disallow
12945         type parameter -> interface.
12946
12947 2005-04-21  Dick Porter  <dick@ximian.com>
12948
12949         * threads.c (mono_thread_create): Turn an assertion into an error.
12950
12951 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
12952
12953         * threads.c object.c icall.c: Fix some gcc 4.0 warnings.
12954         
12955         * threads.c marshal.h marshal.c exceptions.h exceptions.c appdomain.c: 
12956         Fix some gcc 4.0 warnings.
12957
12958 Wed Apr 20 16:09:06 CEST 2005 Paolo Molaro <lupus@ximian.com>
12959
12960         * file-io.c: fix alt dir separator char on unix systems
12961         and cleanup (fixes bug #71214).
12962
12963 2005-04-19  Lluis Sanchez Gual  <lluis@novell.com>
12964
12965         * marshal.c: Use CALLVIRT instead of CALL when dispatching
12966         a call to a remote domain, since the method may be an
12967         interface method in the client domain. This fixes bug #74192.
12968
12969 2005-04-17 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12970
12971         * threadpool.c: recv/send are now performed before going back to managed
12972         code to save one transition.
12973
12974 2005-04-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12975
12976         * metadata/socket-io.c: fixed semantics in Socket.Blocking icall.
12977
12978         * metadata/threadpool.c: removed hack to workaround the bug above.
12979
12980         Fixes bug #74618.
12981
12982 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
12983
12984         * reflection.c reflection.h: Fix handling of parameter defaults in
12985         dynamic methods. Also fixes handling of parameter attributes.
12986         Fixes #74609.
12987
12988         * mono-debug.c (mono_debug_close_image): Fix warning.
12989
12990 2005-04-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
12991
12992         * socket-io.h: replaced old unused field with new 'blocking'.
12993         * threadpool.c: restore socket blocking state on windows(tm).
12994
12995 2005-04-14  Sebastien Pouliot  <sebastien@ximian.com>
12996
12997         * icall.c: don't return the codebase in the AssemblyName[] returned by
12998         ves_icall_System_Reflection_Assembly_GetReferencedAssemblies.
12999         * object-internals.h: Removed FIXME (fields were presents) and fixed
13000         versioncompat declaration.
13001
13002 2005-04-14 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13003
13004         * threadpool.c: sometimes we get EBADF from epoll but the epollfd is
13005         not closed, so don't cleanup when it happens.
13006
13007 2005-04-13  Chris Toshok  <toshok@ximian.com>
13008
13009         * mono-debug-debugger.h: change prototype for
13010         mono_debugger_lookup_type.
13011
13012         * mono-debug-debugger.c (mono_debugger_lookup_type): reinstate
13013         this function, although it should probably be named
13014         mono_debugger_init_type.
13015
13016 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13017
13018         * threadpool.c: fix non-AIO case.
13019
13020 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
13021
13022         * profiler.c (mono_profiler_install_simple): Add a 'jit' option to
13023         the built-in profiler to measure just JIT compilation times.
13024
13025 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13026
13027         * threadpool.c: the epollfd might be closed by another thread at
13028         any time, so ignore EBADF at treat it as a "we're closing" sign.
13029
13030 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13031
13032         * threadpool.c: release the semaphores with a count equals to the number
13033         of working threads in both IO and regular pools. Fixed typo that messed
13034         up the count of IO pool threads. Don't initialize the pipe handles if
13035         we're using epoll.
13036
13037 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13038
13039         * threadpool.c: some systems don't like a NULL when deleting the socket
13040         from epoll.
13041
13042 2005-04-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13043
13044         * threadpool.c: fix semaphore allocation.
13045
13046 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13047
13048         * threadpool.c: added epoll() based implementation for asynchronous IO
13049         that is used instead of the default poll() when available.
13050         It can be disabled by setting MONO_DISABLE_AIO.
13051
13052 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13053
13054         * threadpool.c: windows needs 'closesocket' and instead of returning
13055         0 when the stream is closed while in select, it returns -1. Fixes bug
13056         #74573.
13057
13058 2005-04-12  Zoltan Varga  <vargaz@freemail.hu>
13059
13060         * class.c (class_compute_field_layout): Fix the regression caused by
13061         the previous try.
13062
13063 2005-04-12 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13064
13065         * threadpool.c: separate pool for socket async. IO.
13066         * threadpool.h: mono_max_worker_threads is not a global any more.
13067
13068 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
13069
13070         * class.c (class_compute_field_layout): Fix #74549.
13071
13072 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13073
13074         * threadpool.c: select() on windows doesn't allow pipe handles, soooo
13075         use 2 connected sockets instead.
13076
13077 2005-04-08  Miguel de Icaza  <miguel@novell.com>
13078
13079         * mono-config.c: Add new entry point for mkbundle
13080         mono_config_parse_memory. 
13081
13082 2005-04-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13083
13084         * threadpool.c: removed another unused function.
13085
13086 2005-04-08  Ankit Jain  <radical@corewars.org>
13087
13088         * reflection.c (get_default_param_value_blobs): Add 'types'
13089         parameter to get the types encoded in the constant table.
13090         (mono_param_get_objects): Use the type from the constant table,
13091         not the type of the parameter, when creating default values.
13092         Handle null default values correctly.
13093
13094 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13095
13096         * file-io.c:
13097         * file-io.h:
13098         * threadpool.c:
13099         * threadpool.h:
13100         * icall.c:
13101         * socket-io.c: removed dead code for async IO.
13102
13103 2005-04-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13104
13105         * socket-io.h: 2 more fields in MonoSocketAsyncResult.
13106
13107         * threadpool.c: intercept socket async. calls and pass them to a thread
13108         that is polling and dispatching the job items to the threadpool as
13109         socket become ready. Fixes bugs #71217, #71933.
13110
13111         * icall.c: Removed AsyncReceive and AsyncSend. Speed up for copies
13112         between char and short/ushort arrays.
13113
13114         * socket-io.c: remove dead code.
13115
13116 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
13117
13118         * locales.c,
13119           icall.c : removed InternalToUpper_Comp() and
13120           InternalToLower_Comp().
13121
13122 2005-04-06  Atsushi Enomoto  <atsushi@ximian.com>
13123
13124         * char-conversions.h : The tables were incorrectly generated. Should
13125           be generated against invariant culture.
13126
13127 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
13128
13129         * object.c (mono_runtime_invoke_array): Fix return value when 
13130         passing pre-created valuetype objects to ctors.
13131
13132         * gc.c (mono_gchandle_is_in_domain): Applied patch from Jon Larimer 
13133         (jlarimer@gmail.com). Avoid crashes when the wrapper object is null.
13134         Fixes #74338.
13135
13136 2005-03-30  Sebastien Pouliot  <sebastien@ximian.com>
13137
13138         * domain.c: removed g_assert for runtimesecurityframe_class. This is 
13139         only used with --security and hides the wrong corlib version error.
13140
13141 2005-03-30  Joshua Tauberer  <tauberer@for.net>
13142
13143         * class.c: Changed mono_class_name_from_token so that types
13144         outside of a namespace don't have an initial period.  Improved
13145         the g_warning message used in _mono_class_get when loading
13146         fails.
13147         * assembly.c: In mono_assembly_load_reference, when an assembly
13148         can't be found, "No such file or directory" is misleading and
13149         unhelpful because a few paths were checked for the presence of
13150         the assembly.  When that happens (ENOENT), display a nicer
13151         message indicating the directories that were searched.  In all
13152         cases, the warning is made easier to read for non-hackers.
13153
13154 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
13155
13156         * assembly.c: Set MONO_ASSEMBLIES to NULL when compiling from a VS.NET
13157         project/solution.
13158         * appdomain.h|domain.c: Removed inline from functions.
13159         * appdomain.c: Reduced warnings when compiling on windows.
13160         * icall.c: Fixed output_debug declaration to gunichar2*.
13161         * mono-config.c: Reduced warnings when compiling on windows.
13162         * rand.c: Added missing "windows.h". Added missing return value.
13163         * rawbuffer.c: Added missing winsock2.h for windows.
13164         * sysmath.h: Added mono-compiler.h header to allow/ease 
13165         compilation with non-GCC compilers.
13166         * threads.c: Fixed declarations to compile with VS.NET C compiler.
13167         Removed cast warnings.
13168
13169         Adapted from the work of J Lothian (for VC6).
13170
13171 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
13172
13173         * assembly.c (mono_assembly_load_corlib): Do not try loading corlib
13174         from default_path.
13175
13176 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
13177
13178         * marshal.c (mono_marshal_get_managed_wrapper): Fix bogus assert on
13179         the 2.0 profile.
13180
13181 2005-03-27  Raja R Harinath  <harinath@gmail.com>
13182
13183         * Makefile.am (assembliesdir): Fix.  If it is arch-dependent it
13184         has to be in $(exec_prefix).  $(prefix) is for arch-independent
13185         stuff, and it would probably use $(prefix)/share rather than
13186         $(prefix)/lib.
13187
13188 2005-03-24 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13189
13190         * console-io.c: added 2 includes that might be missing.
13191
13192 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
13193
13194         * marshal.c (mono_marshal_get_managed_wrapper): Fix crashes in 2.0
13195         profile.
13196
13197         * reflection.c (create_custom_attr): Allocate the params array using
13198         alloca so it gets GC tracking.
13199
13200 2005-03-23  Chris Toshok  <toshok@ximian.com>
13201
13202         * mono-debug-debugger.c (mono_debugger_runtime_invoke): comment
13203         out some spew.
13204
13205 2005-03-24  Raja R Harinath  <rharinath@novell.com>
13206
13207         * Makefile.am (assembly.lo, mono-config.lo): Rebuild when Makefile
13208         changes to pick up any changes in prefix, etc.
13209
13210 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
13211
13212         * marshal.c (mono_marshal_get_managed_wrapper): Remove fixme.
13213         
13214         * marshal.c (mono_marshal_get_managed_wrapper): Remove debugging output.
13215         * marshal.c (mono_marshal_get_managed_wrapper): Add support for the modopt(CallConvCdecl).
13216
13217 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
13218
13219         * class-internals.h object-internals.h class.c reflection.c: Extend the
13220         mono_lookup_dynamic_token () function to return the class of the
13221         token as well. 
13222
13223         * class.c (mono_ldtoken): Handle MEMBERREFS in the dynamic case as
13224         well. Fixes #73848.
13225
13226 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
13227
13228         * security-manager.c: Skip inheritance checks for intra-corlib
13229         class inheritance and method overrides. This skips a lot of checks
13230         and (anyway) permissions cannot work until corlib is loaded.
13231
13232 2005-03-23  Martin Baulig  <martin@ximian.com>
13233
13234         * marshal.c (mono_marshal_get_stfld_wrapper): Add support for
13235         MONO_TYPE_GENERICINST.  
13236
13237 2005-03-23  Martin Baulig  <martin@ximian.com>
13238
13239         * metadata.c (mono_type_to_unmanaged): Add MONO_TYPE_GENERICINST.
13240
13241 Tue Mar 22 16:57:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13242
13243         * class.c: added locking comments to some functions.
13244         Cache the interface offsets arrays (saves about 20 KB
13245         of runtime memory in a typical app).
13246         Reduce the time overhead in mono_class_setup_supertypes ().
13247
13248 Tue Mar 22 16:35:57 CET 2005 Paolo Molaro <lupus@ximian.com>
13249
13250         * icall.c: speedup and fix leaks in GetMethodsByName and
13251         GetPropertiesByName.
13252
13253 Tue Mar 22 16:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13254
13255         * reflection.c: some locking fixes.
13256
13257 Tue Mar 22 15:13:54 CET 2005 Paolo Molaro <lupus@ximian.com>
13258
13259         * metadata.c: added missing break in case statement.
13260
13261 2005-03-22  Zoltan Varga  <vargaz@freemail.hu>
13262
13263         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
13264         typedbyref return values. Fixes #73941.
13265
13266 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
13267
13268         * security-manager.c|h: Added demandunmanaged method and 
13269         suppressunmanagedcodesecurity class to MonoSecurityManager.
13270         Renamed aptc class to allowpartiallytrustedcallers.
13271
13272 2005-03-17  Martin Baulig  <martin@ximian.com>
13273
13274         * class.c (inflate_generic_type): Add MONO_TYPE_ARRAY.
13275
13276 2005-03-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13277
13278         * file-io.c: disabled file async. IO using aio_*. It uses the
13279         threadpool now. Workaround for bug #73718.
13280
13281 Wed Mar 16 18:08:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13282
13283         * assembly.h, mono-config.c: added code to deal with bundled configs
13284         for bundled assemblies.
13285
13286 Wed Mar 16 16:34:38 CET 2005 Paolo Molaro <lupus@ximian.com>
13287
13288         * *.c, private.h: cleanup, removing old private.h header file.
13289
13290 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
13291
13292         * reflection.c (mono_image_get_method_info): Encode best_fit_mapping
13293         and throw_on_unmappable_char attributes.
13294
13295 2005-03-13  Sebastien Pouliot  <sebastien@ximian.com>
13296
13297         * process.c: Fix buffer length in ves_icall_System_Diagnostics_Process
13298         _ProcessName_internal.
13299
13300 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
13301
13302         * object.c (mono_array_new_full): Fix aligning of array size. Fixes
13303         #73631.
13304
13305         * icall.c threads.c threads-types.h: Remove slothash icalls as they
13306         are no longer used.
13307
13308 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
13309
13310         * object.c (compute_class_bitmap): Add support for generics. Fixes
13311         #73527.
13312
13313 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
13314
13315         * reflection.c (mono_reflection_create_runtime_class): Fix 2.0 build.
13316
13317 2005-03-10 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13318
13319         * filewatcher.c: commented out the code for windows watcher, as we don't
13320         use it (we use the managed implementation instead).
13321
13322 2005-03-10  Zoltan Varga  <vargaz@freemail.hu>
13323
13324         * object-internals.h (MonoThread): Remove 'unused1' field.
13325
13326         * appdomain.c: Bump corlib version.
13327
13328         * marshal.c: Remove calls to Reset/RestoreDataStoreStatus ().
13329
13330         * reflection.c (mono_reflection_create_runtime_class): Remove the
13331         AssemblyBuilder.Save optimization since it causes too many problems.
13332
13333 2005-03-10  Sebastien Pouliot  <sebastien@ximian.com>
13334
13335         * exception.c|h: Added mono_get_exception_reflection_type_load to
13336         create a ReflectionTypeLoadException object.
13337         * icall.c: Updated ves_icall_System_Reflection_Assembly_InternalGetType
13338         to return NULL is a InheritanceDemand fails during reflection. Updated
13339         ves_icall_System_Reflection_Assembly_GetTypes to throw a 
13340         ReflectionTypeLoadException if an InheritanceDemand fails during 
13341         reflection. Added icall mapping for GetLinkDemandSecurity.
13342         * security-manager.c|h: Added ves_icall_System_Security_
13343         SecurityManager_GetLinkDemandSecurity internal call to return the
13344         class and methods permissions set for a LinkDemand. Removed unused
13345         fields in MonoSecurityManager.
13346
13347 2005-03-10  Martin Baulig  <martin@ximian.com>
13348
13349         * class.c (mono_bounded_array_class_get): Initialize `eclass' if
13350         it's a generic instance.
13351
13352 2005-03-09  Zoltan Varga  <vargaz@freemail.hu>
13353
13354         * reflection.c (mono_get_object_from_blob): Applied patch from
13355         Ankit Jain (radical@gmail.com). Fix enum default values. Fixes #73457.
13356
13357         * class.c (mono_class_is_assignable_from): Another try at fixing 
13358         #73469 without breaking anything.
13359
13360 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
13361
13362         * class.c: (mono_class_is_assignable_from): Revert the last changes
13363         since they don't work with generics.
13364         
13365         * class.c (mono_class_is_assignable_from): Fix build bustage.
13366
13367         * class.c (mono_class_is_assignable_from): If oklass is dynamic, call
13368         the managed IsAssignableFrom method. Fixes #73469.
13369
13370         * reflection.c (mono_reflection_call_is_assignable_from): New helper
13371         function.
13372
13373 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
13374
13375         * object.c (mono_load_remote_field_new): Fix returning uninitialized
13376         memory when the remoting callback does not sets the out arguments.
13377         Fixes #73007.
13378
13379         * marshal.c (mono_delegate_free_ftnptr): Remove debug array checked in
13380         by mistake.
13381
13382         * string-icalls.c: Return String.Empty where needed. Fixes #73310.
13383
13384         * object-internals.h (MonoStackFrame): Sync with managed object layout.
13385
13386         * appdomain.c: Bump corlib version.
13387
13388 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
13389
13390         * gc-internal.h boehm-gc.c null-gc.c: Add mono_gc_is_gc_thread () API
13391         function.
13392
13393         * threads.c (mono_thread_attach): Detect threads which are not started
13394         by the GC pthread wrappers.
13395
13396 2005-03-03  Sebastien Pouliot  <sebastien@ximian.com>
13397
13398         * icall.c: Added new icall for RNG.
13399         * rand.c|h: Added new icall to open the RNG. This allows to share a 
13400         single handle on Linux to access /dev/urandom and fix #73183.
13401
13402 Thu Mar 3 17:53:17 CET 2005 Paolo Molaro <lupus@ximian.com>
13403
13404         * object.c: setting the new vtable in a transparent proxy object must
13405         not change the GC descriptor.
13406
13407 Thu Mar 3 12:11:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13408
13409         * object.c: fixed compilation without GCJ support.
13410         * reflection.c: for runtime-created types ensure klass->has_references
13411         is correct (bug #73215).
13412
13413 2005-03-02  Martin Baulig  <martin@ximian.com>
13414
13415         * class.c (mono_class_is_assignable_from): Make this work if
13416         `oklass' is a generic instance; fixes #72831.
13417
13418 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
13419
13420         * marshal.c (mono_marshal_get_managed_wrapper): Fix handling of methods
13421         with hasthis set.
13422         
13423         * marshal.c (emit_marshal_array): Emit native->managed marshalling of blittable arrays.
13424
13425         * marshal.c: Reorganize native->managed marshalling code to also use
13426         the emit_marshal_... functions.
13427
13428 Tue Mar 1 16:16:42 CET 2005 Paolo Molaro <lupus@ximian.com>
13429
13430         * object.c: typed allocs have issues with bitmap sizes > 30,
13431         so check for max_set >= 30.
13432
13433 2005-03-01  Zoltan Varga  <vargaz@freemail.hu>
13434
13435         * marshal.c (emit_marshal_array): Implement marshalling of arrays to
13436         managed code. Fixes #73012.
13437
13438         * metadata.h (MonoMarshalSpec): Add elem_mult field.
13439
13440         * metadata.c reflection.c: Load/Emit elem_mult as well.
13441         
13442         * metadata.h (MonoMarshalSpec): Add comment.
13443
13444         * metadata.h: Add MONO_MARSHAL_CONV_LPTSTR_STR.
13445
13446         * metadata.c (mono_metadata_parse_marshal_spec): Set param_num and
13447         num_elem to -1 if not given.
13448
13449         * object-internals.h (MonoReflectionMarshal): Add has_size field.
13450
13451         * reflection.c (encode_marshal_blob): Differentiate between 0 and not
13452         given values.
13453
13454 2005-03-01  Marek Safar  <marek.safar@seznam.cz>
13455
13456         * null-gc.c (mono_gc_free_fixed): Was not compilable.
13457
13458 2005-02-28  Zoltan Varga  <vargaz@freemail.hu>
13459
13460         * reflection.c (encode_marshal_blob): Encode param_num field as well.
13461
13462         * object-internals.h (MonoReflectionMarshal): Add param_num field.
13463
13464 Mon Feb 28 11:59:42 CET 2005 Paolo Molaro <lupus@ximian.com>
13465
13466         * object.c: generalized the reference bitmap creation
13467         and added hooks for the new GC.
13468         * class-internals.c: removed the gc_bitmap field from MonoClass.
13469
13470 Sat Feb 26 16:06:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13471
13472         * domain.c: help the compiler to produce better code
13473         in mono_jit_info_table_find ().
13474
13475 Fri Feb 25 16:50:14 CET 2005 Paolo Molaro <lupus@ximian.com>
13476
13477         * object.c: make all allocations look typed.
13478
13479 Fri Feb 25 16:18:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13480
13481         * socket-io.c: load Mono.Posix if it's not loaded already
13482         (fixes bug#73033).
13483
13484 2005-02-24  Martin Baulig  <martin@ximian.com>
13485
13486         * class.c (dup_type): Correctly duplicate MONO_TYPE_PTR.
13487         * reflection.c (dup_type): Likewise.
13488
13489 2005-02-24  Zoltan Varga  <vargaz@freemail.hu>
13490
13491         * gc.c (run_finalize): Set the domain for finalizing delegates as well.
13492         Thanks to Willibald Krenn and Scott Mohekey for tracking this down.
13493
13494 Thu Feb 24 15:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13495
13496         * domain.c, threads.c, object-internals.h: make the critical thread
13497         local vars use the fast access mode (even when we're compiled in
13498         a lib). Provide accessors to be used by the jit during codegen.
13499
13500 2005-02-24  Carlos Alberto Cortez <calberto.cortez@gmail.com>
13501
13502         * appdomain.c: Changed hook functios behavior to include
13503         support for the reflection only assemblies. Some icalls were changed
13504         to support the mentioned assemblies too. Signatures of static methods
13505         try_assembly_resolve and real_load now have an additional parameter:
13506         refonly.
13507
13508         * assembly.c: General changes to mono_assembly_ methods to support
13509         reflection only api. Functions mono_assembly_open, mono_assembly_load,
13510         mono_assembly_load_from and mono_assembly_loaded have got a '_full'
13511         suffix, to support an additional gbool parameter to specify whether
13512         the assembli is reflection only or not. Created some new hook functions 
13513         to add support for reflection only assemblies. Signatures of static 
13514         methods load_in_path, search_loaded, and mono_assembly_load_from_gac 
13515         have now an additional parameter: refonly.
13516
13517         * metadata-internals.h: MonoAssembly now has a gbool ref_only flag,
13518         indicating whether the assembly is reflection only or not.
13519
13520         * exception.c: Add mono_get_exception_invalid_operation.
13521
13522         * icall.c: Throw an InvalidOperationException when trying to invoke
13523         a property/method/event, or trying to set/get the value of a field.
13524         Also add an icall to retrieve the ref_only flag to the
13525         MonoReflectionAssembly.
13526
13527 2005-02-23  Chris Toshok  <toshok@ximian.com>
13528
13529         Part of fix for #72827.
13530         * mono-debug.c (mono_debug_add_method): add lexical block data to
13531         the info we write.  Kind of a hack at the moment - we copy the
13532         lexical block info from the MonoDebugMethodInfo to the
13533         MonoDebugMethodJitInfo here, before writing it.
13534         (mono_debug_read_method): read the lexical block info.
13535
13536         * mono-debug.h (_MonoDebugMethodJitInfo): add lexical block slots.
13537
13538         * debug-mono-symfile.h: add lexical block support.
13539
13540         * debug-mono-symfile.c (mono_debug_find_method): add lexical block
13541         support.
13542
13543 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
13544
13545         * loader.c (mono_lookup_pinvoke_call): Fix warning.
13546
13547         * object.c (mono_runtime_free_method): Call mono_free_method () and
13548         put the TODOs there.
13549
13550         * loader.c (mono_free_method): Free up most memory allocated for 
13551         dynamic methods.
13552
13553 Wed Feb 23 18:54:26 CET 2005 Paolo Molaro <lupus@ximian.com>
13554
13555         * reflection.c: properly flag a Type argument to a
13556         named custom attr value (bug #72248).
13557
13558 Wed Feb 23 18:32:35 CET 2005 Paolo Molaro <lupus@ximian.com>
13559
13560         * reflection.c: reduce code duplication in named custom
13561         attribute encoding.
13562
13563 Wed Feb 23 17:23:52 CET 2005 Paolo Molaro <lupus@ximian.com>
13564
13565         * reflection.c: properly encode custom attrs of type object
13566         (bug #72649).
13567
13568 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
13569
13570         * marshal.c (mono_delegate_free_ftnptr): Make this thread safe.
13571
13572 Tue Feb 22 21:54:47 CET 2005 Paolo Molaro <lupus@ximian.com>
13573
13574         * socket-io.c: load System.dll if it's not loaded already
13575         (bug #72850 and #70477).
13576
13577 2005-02-21  Martin Baulig  <martin@ximian.com>
13578
13579         * marshal.c (mono_marshal_get_runtime_invoke): Add support for
13580         generic instances.
13581
13582 2005-02-21  Martin Baulig  <martin@ximian.com>
13583
13584         * reflection.c (mono_image_build_metadata): We also need to
13585         "fixup" the MethodImpl table after we computed the final method
13586         indices.  Call fixup_methodimpl() to do that.
13587         (fixup_methodimpl): New private method.
13588
13589 Mon Feb 21 16:17:14 CET 2005 Paolo Molaro <lupus@ximian.com>
13590
13591         * assembly.c: special case mscorlib.dll (bug#72536),
13592         patch from Carlos Alberto Cortez.
13593
13594 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
13595
13596         * threads-types.h threads.c: Fix build bustage.
13597
13598         * threads.c: Use a union for long<->double conversions.
13599
13600         * threads-types.h threads.c icall.c: Implement the net 2.0 interlocked
13601         functions based on a patch by Luca Barbieri (luca.barbieri@gmail.com).
13602
13603         * marshal.c (emit_thread_interrupt_checkpoint_call): Mark the bblock 
13604         containing the checkpoint call with NOT_TAKEN.
13605         
13606         * marshal.c (mono_marshal_get_managed_wrapper): Emit interrupt 
13607         checkpoint before pushing the arguments, so they won't have to be
13608         spilled to stack.
13609
13610 Sat Feb 19 15:19:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13611
13612         * domain.c, assembly.c, domain-internals.h: make some data
13613         const and relocation-free.
13614
13615 Sat Feb 19 11:12:34 CET 2005 Paolo Molaro <lupus@ximian.com>
13616
13617         * object.c, appdomain.c, class-internals.h: introduce the
13618         MonoClassRuntimeInfo structure to hold the info needed to
13619         use a class at runtime. Made mono_class_vtable() lock-free
13620         for all the appdomains.
13621
13622 Sat Feb 19 11:11:12 CET 2005 Paolo Molaro <lupus@ximian.com>
13623
13624         * metadata-internals.h, image.c: introduce a per-image mempool to
13625         be used for memory that has the same lifetime as the image.
13626
13627 2005-02-18  Lluis Sanchez Gual  <lluis@novell.com>
13628
13629         * domain.c: In mono_init_internal(), instead of selecting the first
13630         runtime version supported by an executable, get a list of all
13631         supported versions and select the one for which an mscorlib exists
13632         (since even if the runtime supports a given version, it doesn't mean
13633         that the framework for that version is installed).
13634         Modified get_runtimes_from_exe to support this behavior.
13635         In supported_runtimes, added information about additional system
13636         assembly versions.
13637         
13638         * assembly.c: Added support for more than one system assembly version
13639         per runtime version. Updated the assembly list.
13640         In mono_assembly_remap_version, removed the initial version check,
13641         since we don't know to which version we need to compare until we
13642         get the version set on which the assembly is based.
13643         Moved the code for loading corlib into the new method
13644         mono_assembly_load_corlib(), so it can be used by the initialization
13645         code.
13646         
13647         * domain-internals.h: Updated data structures and added declaration
13648         for mono_assembly_load_corlib.
13649
13650 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
13651
13652         * reflection.c (resolve_object): Fix the creation of the signature in 
13653         the SignatureHelper case.
13654
13655         * assembly.c (mono_assembly_remap_version): Fix binary search.
13656         
13657 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com>
13658  
13659         * class.c: Added inheritance check when a method is overloaded (from a
13660         virtual method or when implementing an interface) and when a class is
13661         inherited. Added functions to set a failure for a class and to 
13662         retreive the exception from a failure.
13663         * class-internals.h: Added fields to MonoClass to keep the exception
13664         information status for inheritance (or other exceptions) to be thrown
13665         later (i.e. not at load time).
13666         * object.c: Throw the inheritance SecurityException when a type is to 
13667         be created with either class or method inheritance violations.
13668         * reflection.c|h: Fix when getting declsec from a class. Removed 
13669         unrequired code for class. Improved sanity in parameter naming.
13670         * security-manager.c|h: Added functions to check for class and method
13671         inheritance.
13672
13673 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
13674
13675         * reflection.c (mono_reflection_create_runtime_class): Set has_cctor
13676         and has_finalize in dynamic types as well.
13677
13678 2005-02-17  Atsushi Enomoto  <atsushi@ximian.com>
13679
13680         * culture-info-table.h : fixed currency format for en-GB (and so on).
13681
13682 Wed Feb 16 16:28:15 CET 2005 Paolo Molaro <lupus@ximian.com>
13683
13684         * gc.c: ensure the GC handles never have 0 as a value.
13685
13686 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
13687
13688         * marshal.c (emit_marshal_ptr): Raise an exception if trying to pass
13689         a pointer to a struct to unmanaged code. Fixes #72625.
13690
13691 2005-02-16  Martin Baulig  <martin@ximian.com>
13692
13693         * mono-debug.c (mono_debug_open_image): Ignore dynamic images.
13694
13695 2005-02-16  Zoltan Varga  <vargaz@freemail.hu>
13696
13697         * marshal.c (emit_marshal_array): Only marshal unicode char arrays as [Out].
13698
13699 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
13700
13701         * loader.c (mono_lookup_pinvoke_call): Fix stdcall name mangling.
13702
13703         * marshal.c (mono_ftnptr_to_delegate): If the delegate has the 
13704         UnmanagedFunctionPointerAttribute, use it for determining calling convention
13705         etc. Fixes #71471.
13706
13707         * reflection.c (mono_custom_attrs_get_attr): New helper function.
13708
13709         * object-internals.h: Add MonoReflectionUnmanagedFunctionPointerAttribute.
13710
13711 Tue Feb 15 18:03:41 CET 2005 Paolo Molaro <lupus@ximian.com>
13712
13713         * domain.c, appdomain.c, appdomain.h, object-internals.h, object.h:
13714         changes to make the current context a field in MonoThread.
13715
13716 2005-02-15  Zoltan Varga  <vargaz@freemail.hu>
13717
13718         * marshal.c (mono_marshal_get_native_wrapper): Fix a crash caused by
13719         the last change.
13720         
13721         * marshal.c (mono_marshal_emit_native_wrapper): New helper function
13722         extracted from mono_marshal_get_native_wrapper.
13723
13724         * marshal.c (mono_marshal_get_native_func_wrapper): New helper function
13725         to create wrappers around native functions.
13726
13727         * marshal.c (mono_ftnptr_to_delegate): Add support for creating 
13728         delegates for arbitrary function pointers. Fixes #71472.
13729
13730 Tue Feb 15 11:01:09 CET 2005 Paolo Molaro <lupus@ximian.com>
13731
13732         * threads.c: cleaned up the code a little.
13733
13734 2005-02-15  Martin Baulig  <martin@ximian.com>
13735
13736         * mono-debug.h (MonoSymbolTable): Allow variable-length chunks in
13737         the data table.
13738
13739         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Set to 32768; we may now
13740         allocate larger chunks if needed.
13741
13742 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
13743
13744         * threads.c (start_wrapper): Remove #ifdef PLATFORM_WIN32 probably left
13745         in by mistake.
13746
13747 Mon Feb 14 16:48:24 CET 2005 Paolo Molaro <lupus@ximian.com>
13748
13749         * domain.c: keep the domains in an array and ensure the domain ids
13750         are kept small, so they can be used as indexes to domain-specific data
13751         with a small memory overhead.
13752
13753 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
13754
13755         * icall.c: Handle byref types in Type icalls. Fixes #72544.
13756
13757 Mon Feb 14 15:39:56 CET 2005 Paolo Molaro <lupus@ximian.com>
13758
13759         * Makefile.am: remove libmetadata: we build just libmonoruntime now.
13760
13761 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
13762
13763         * tabledefs.h (MANIFEST_RESOURCE_VISIBILITY_MASK): Add flags for ManifestResource.
13764
13765         * loader.c (mono_lookup_pinvoke_call): Correct the search order used for different CharSet
13766         values.
13767
13768         * marshal.c (mono_marshal_get_string_encoding): CHAR_SET_AUTO means Unicode on windows.
13769         
13770 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
13771
13772         * domain-internals.h: add the hashtable here.
13773
13774         * class-internals.h: Remove `info' from MonoMethod
13775
13776         * domain.c: Add a new hashtable, jit_trampoline_hash
13777
13778 Fri Feb 11 17:11:20 CET 2005 Paolo Molaro <lupus@ximian.com>
13779
13780         * object.c: don't set the value of static fields
13781         (fixes bug#72494).
13782
13783 2005-02-11  Martin Baulig  <martin@ximian.com>
13784
13785         * mono-debug.c (DATA_TABLE_CHUNK_SIZE): Increase to 131072.
13786         (mono_debug_add_method): Silently ignore the method if it's too big.
13787         (mono_debug_add_type): Likewise.
13788
13789 Fri Feb 11 16:22:10 CET 2005 Paolo Molaro <lupus@ximian.com>
13790
13791         * threads.c, appdomain.c: remove #ifdefs from the code.
13792
13793 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
13794
13795         * metadata-internals.h: Added flags to MonoAssembly to cache the most
13796         common security informations. This allows us to stay in unmanaged code
13797         when doing LinkDemand and it's special cases (except for the first 
13798         time for initialization). The flags a very much used with --security.
13799         * reflection.c|h: Added code to get declarative security attributes 
13800         for LinkDemand and InheritanceDemand. This required to refactor the
13801         existing code for Demand.
13802         * security-manager.c|h: Added new method fields for the special cases
13803         of LinkDemand.
13804
13805 2005-02-10  Martin Baulig  <martin@ximian.com>
13806
13807         * icall.c (ves_icall_MonoDebugger_MakeArrayType): New interncall.
13808         (ves_icall_MonoDebugger_GetTypeToken): New interncall.
13809
13810 2005-02-10  Martin Baulig  <martin@ximian.com>
13811
13812         * mono-debug.c, mono-debug-debugger.c: Completely reworked the
13813         debugging code; this is almost a complete rewrite.
13814
13815         * icall.c (ves_icall_MonoDebugger_GetMethodIndex): New interncall.
13816
13817 Thu Feb 10 15:19:01 CET 2005 Paolo Molaro <lupus@ximian.com>
13818
13819         * domain.c, object.h: expose mono_string_equal () and 
13820         mono_string_hash ().
13821         * icall.c, string-icalls.c: remove the string.GetHashCode () icall,
13822         it's implemented in managed code.
13823
13824 Thu Feb 10 15:03:46 CET 2005 Paolo Molaro <lupus@ximian.com>
13825
13826         * icall.c, gc.c, gc-internal.h: make sure gchandles can't be used
13827         lo leak objects between appdomains.
13828
13829 Thu Feb 10 14:25:00 CET 2005 Paolo Molaro <lupus@ximian.com>
13830
13831         * assembly.c: old compilers compilation fix from 
13832         robertj@gmx.net (Robert Jordan).
13833
13834 2005-02-09  Ben Maurer  <bmaurer@ximian.com>
13835
13836         * class-internals.h: Little reminder for the future.
13837
13838         * debug-helpers.c: Fix up wrapper_type_names
13839
13840 Wed Feb 9 19:34:29 CET 2005 Paolo Molaro <lupus@ximian.com>
13841
13842         * image.c, metadata-internals.h: when loading an image from a file,
13843         mmap all of it and use the same codepaths as when using a
13844         in-memory image: the code is simpler and we use less memory
13845         (both writable and readonly).
13846
13847 Wed Feb 9 18:32:51 CET 2005 Paolo Molaro <lupus@ximian.com>
13848
13849         * gc-internal.h, null-gc.c, boehm-gc.c: added functions to the GC
13850         API to alloc runtime data structures that need to be tracked by the
13851         GC and contain pointers.
13852         * appdomain.c, threads.c, object.c, gc.c: use the above changes to
13853         make the code more readable and eventually use a different GC.
13854
13855 2005-02-09  Zoltan Varga  <vargaz@freemail.hu>
13856
13857         * marshal.c (emit_marshal_vtype): Don't do managed->native conversion
13858         for out arguments.
13859         
13860 2005-02-09  Lluis Sanchez Gual  <lluis@novell.com>
13861
13862         * object.c: In release_type_locks(), don't release the cctor lock
13863         if it has already been released. This fixes a crash in the
13864         thread5 test.
13865
13866 Tue Feb 8 19:02:59 CET 2005 Paolo Molaro <lupus@ximian.com>
13867
13868         * gc.c, marshal.c, icall.c: register a delegate for finalization
13869         only when the native function pointer has been allocated for it.
13870
13871 Tue Feb 8 18:12:27 CET 2005 Paolo Molaro <lupus@ximian.com>
13872
13873         * object.c: cleaned up some code, allocate objects that are
13874         pointer free with the atomic malloc variant. Allocate memory
13875         for static data from the mempool if it's pointer-free.
13876         Allocate the bounds array at the end of the array data, when needed.
13877         * object-internals.h, object.h: move a private function in a private
13878         header.
13879         * class.c: handle missing case in tracking references in fields.
13880
13881 Tue Feb 8 18:04:51 CET 2005 Paolo Molaro <lupus@ximian.com>
13882
13883         * class.c, class-internals.h: keep track if a type has
13884         reference fields in either the instance or static fields.
13885
13886 2005-02-07  Lluis Sanchez Gual  <lluis@novell.com>
13887
13888         * domain.c, domain-internals.h: Moved RuntimeInfo to domain-internals.h,
13889         and renamed to MonoRuntimeInfo. Added fields to store the expected
13890         framework assembly version. Changed mono_get_framework_version and
13891         mono_get_runtime_version for a single mono_get_runtime_info method.
13892         
13893         * assembly.c: Added method to remap system assembly versions to the
13894         current executing runtime version. Removed old mapping code.
13895         Remap assembly versions in mono_assembly_load and mono_assembly_loaded.
13896         
13897         * icall.c, reflection.c: Track api changes.
13898
13899 2005-02-06  Miguel de Icaza  <miguel@novell.com>
13900
13901         * loader.c (method_from_memberref): Improve error reporting,
13902         produce the class name instead of the typeref/typedef index. 
13903
13904 2005-02-07  Zoltan Varga  <vargaz@freemail.hu>
13905
13906         * marshal.c (mono_marshal_get_stfld_remote_wrapper): Fix wrapper type.
13907
13908 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13909
13910         * loader.c (mono_lookup_pinvoke_call): Allow for combination of
13911         stdcall and charset name mangling.  Reorganize the code and add
13912         some tracing stuff.
13913
13914 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13915
13916         * monodiet.c: More iters!
13917
13918         * marshal.c: Iter usage.
13919
13920         * icall.c: Iter usage.
13921
13922         * object.c: Use iters.
13923
13924         * debug-helpers.c: More iters
13925
13926 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13927
13928         * loader.c (mono_lookup_pinvoke_call): Add brute-force checking for mangled function names
13929         under win32.
13930
13931 2005-02-05  Ben Maurer  <bmaurer@ximian.com>
13932
13933         * mono-debug-debugger.c: use iters
13934
13935         * class.c, class-internals.h: mono_class_setup_events is static
13936         now
13937
13938         * All callers: use iters
13939
13940 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
13941
13942         * class.c string-icalls.c marshal.c reflection.c: Applied patch from
13943         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
13944
13945 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13946
13947         * object.c (mono_class_proxy_vtable): Add missing _setup () calls.
13948
13949         * marshal.h: Add prototypes for ldfld/stfld_remote.
13950
13951         * appdomain.c (mono_domain_fire_assembly_load): Handle the case when
13952         this is called during startup.
13953         
13954 Fri Feb 4 20:27:58 CET 2005 Paolo Molaro <lupus@ximian.com>
13955
13956         * appdomain.c, monitor.c, monitor.h, threads-types.h: made the
13957         MonoThreadsSync struct private in monitor.c. Changed the way
13958         MonoThreadsSync is allocated so it's faster and there is no
13959         need to keep track of it with a finalizer and it uses less memory.
13960         This also finally allows us to allocate mono objects as ptrfree when
13961         there are no reference fields.
13962
13963 Fri Feb 4 20:24:03 CET 2005 Paolo Molaro <lupus@ximian.com>
13964
13965         * gc.c, null-gc.c, boehm-gc.c, gc-internal.h: added functions to deal with
13966         disappearing link to the GC interface and use them to simplify
13967         the gchandles code.
13968
13969 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
13970
13971         * class-internals.h marshal.c: Add two new wrappers, ldfld_remote and
13972         stfld_remote which call mono_load/store_field_new. This allows methods
13973         calling ldfld/stfld wrappers to be AOTed.
13974
13975         * console-io.c: Include sys/filio.h under solaris.
13976         
13977         * console-io.c: Include curses.h if needed correctly.
13978
13979 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
13980         
13981         * icall.c (ves_icall_MonoMethod_get_base_definition): Initialize
13982         method->klass as well.
13983
13984         * class-internals.h (MonoCachedClassInfo): Add 'finalize_image' field.
13985
13986         * class.c (mono_class_init): Switch on lazy initialization of 
13987         methods.
13988
13989         * class.c (mono_class_get_finalizer): Handle the case when the 
13990         finalizer is inherited.
13991
13992 2005-02-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
13993
13994         * console-io.c: <curses.h> is needed by term.h on solaris.
13995
13996 2005-02-03  Ben Maurer  <bmaurer@ximian.com>
13997
13998         * icall.c, class-internals.h, monodiet.c, class.c: Remove
13999         mono_class_setup_properties where possible. Remove this ftn from
14000         the header file, and make it static.
14001
14002 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
14003
14004         * loader.c: Add missing setup_... call.
14005
14006         * class.c: Add missing setup_... calls.
14007
14008         * class.c (mono_class_init): Switch on lazy initialization of 
14009         the generic vtable.
14010         
14011         * class.c (mono_class_init): Fix generics broken by the recent changes.
14012
14013         * monodiet.c (handle_type): Add missing setup_... calls.
14014
14015         * class.c: Back out garbage in previous patch.
14016         
14017         * class.c: Add missing setup_... calls.
14018
14019         * class.c (mono_class_get_method_from_name_flags): Avoid calling
14020         mono_class_setup_methods () if possible.
14021
14022         * class-internals.h (MonoClass): Add 'has_cctor' flag.
14023
14024         * class-internals.h (MonoCachedClassInfo): New structure.
14025
14026         * class.c: Initialize properties and events fields of MonoClass lazily.
14027
14028         * class.c: Add infrastructure for lazily initializing the methods and
14029         vtable fields of MonoClass. Not yet used.
14030
14031         * class.c (mono_class_get_finalizer): New helper function.
14032
14033         * class.c: Add infrastructure for loading some class related data from
14034         an AOT file.
14035
14036         * object.c: Add infrastructure for initializing the vtable from data
14037         in the AOT file.
14038
14039         * gc.c (run_finalize): Use mono_class_get_finalizer ().
14040
14041         * class.c loader.c object.c icall.c gc.c reflection.c: Call the
14042         appropriate initialization function before accessing parts of the
14043         MonoClass structure.
14044
14045         * marshal.c: Fix warnings.
14046         
14047         * marshal.c (emit_marshal_array): Add missing 'break'. Fixes #72169.
14048
14049         * mono-debug-debugger.c (get_exception_message): Use 
14050         mono_class_get_method_from_name_flags ().
14051
14052 2005-02-02  Ben Maurer  <bmaurer@ximian.com>
14053
14054         * reflection.c, appdomain.c: Replace a few manual searches that
14055         Zoltan missed. (Paolo approved this part of my initial patch).
14056
14057 Wed Feb 2 16:32:08 CET 2005 Paolo Molaro <lupus@ximian.com>
14058
14059         * profiler.c: disable recording statistical events at report time.
14060
14061 Wed Feb 2 14:14:00 CET 2005 Paolo Molaro <lupus@ximian.com>
14062
14063         * icall.c: patch from Geoff Norton <gnorton@customerdna.com>
14064         to byteswap arrays of enum values, too (bug #72080).
14065
14066 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
14067
14068         * appdomain.c (set_domain_search_path): Allow this to be called if
14069         domain->setup is not yet set.
14070
14071         * loader.c (mono_method_get_index): New helper function.
14072
14073         * loader.c reflection.c: Use mono_method_get_index ().
14074
14075         * class.c (mono_class_get_method_from_name_flags): New helper method.
14076
14077         * debug-helpers.h debug-helpers.c (mono_find_method_by_name): Remove
14078         this.
14079
14080         * class.c (mono_class_get_cctor): New helper method.
14081
14082         * string-icalls.c object.c class.c marshal.c reflection.c: Use
14083         mono_class_get_method () to look up methods.
14084
14085 2005-02-01  Miguel de Icaza  <miguel@novell.com>
14086
14087         * console-io.c: Fix the build, this should work on Windows.
14088
14089 2005-01-31  Ben Maurer  <bmaurer@ximian.com>
14090
14091         * marshal.c (mono_marshal_xdomain_copy_out_value): cached_str must
14092         be set to null to keep things valid
14093
14094 2005-01-31 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14095
14096         * icall.c: added Console 2.0 icalls.
14097         * Makefile.am: added console-io.[ch]
14098         * console-io.[ch]: internal calls for Console 2.0 API.
14099
14100 Mon Jan 31 19:01:29 CET 2005 Paolo Molaro <lupus@ximian.com>
14101
14102         * class.c: make sure we consider all the interfaces
14103         when calculating max_interface_id (bug found by
14104         Jeroen Frijters running ikvm).
14105
14106 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
14107
14108         * icall.c (ves_icall_FieldInfo_SetValueInternal): Handle setting of
14109         valuetype fields to null.
14110
14111         * object.c (set_value): Ditto. Fixes #71669.    
14112
14113 2005-01-31  Martin Baulig  <martin@ximian.com>
14114
14115         * metadata.c (mono_metadata_has_generic_params): New public
14116         function; checks whether something is a generic method.
14117
14118 Sun Jan 30 20:19:48 CET 2005 Paolo Molaro <lupus@ximian.com>
14119
14120         * appdomain.c: fix infinite recursion when adding assemblies.
14121
14122 2005-01-30  Sebastien Pouliot  <sebastien@ximian.com>
14123
14124         * object.c: Fix small typo to return all items for Environment.
14125         GetCommandLineArgs.
14126
14127 Sun Jan 30 16:49:01 CET 2005 Paolo Molaro <lupus@ximian.com>
14128
14129         * domain.c, appdomain.c, assembly.c, image.c, domain-internals.h,
14130         reflection.c: more domain and assembly-unload related fixes
14131         and memory leaks plugs.
14132
14133 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
14134
14135         * 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.
14136
14137 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
14138
14139         * loader.c (mono_method_signature): Make this method lazy
14140         (mono_get_method_from_token): Don't computate the signature here.
14141
14142         Doing this saves quite a bit of memory. I got 90 kb on starting up
14143         monodoc. It should also save some disk reads on startup.
14144
14145         * *: MonoMethod->signature might be NULL now. You *MUST* use
14146         mono_method_signature.
14147
14148 2005-01-29  Zoltan Varga  <vargaz@freemail.hu>
14149
14150         * object.c (mono_runtime_get_main_args): Return an array from the
14151         current domain here. Fixes #71938.
14152
14153 Sat Jan 29 15:59:05 CET 2005 Paolo Molaro <lupus@ximian.com>
14154
14155         * monitor.c: formatting changes to comply with the
14156         mono coding style and remove #ifdefs from the code.
14157
14158 Sat Jan 29 15:18:54 CET 2005 Paolo Molaro <lupus@ximian.com>
14159
14160         * metadata.c, private.h: remove some unneeded data
14161         and use a more compact representation for table schemas.
14162
14163 Fri Jan 28 18:23:44 CET 2005 Paolo Molaro <lupus@ximian.com>
14164
14165         * metadata.c, metadata-internals.h: add mono_aligned_addr_hash()
14166         to get a better distribution in hash tables.
14167         * *.c: use mono_aligned_addr_hash() where appropriate.
14168         * assembly.c: make var static.
14169
14170 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
14171
14172         * domain-internals.h: Put MonoJitInfo on a diet.
14173
14174         * domain.c: Fix a warning.
14175
14176 Wed Jan 26 22:20:46 CET 2005 Paolo Molaro <lupus@ximian.com>
14177
14178         * gc.c: rework the gc handles code to reuse handles
14179         when freed.
14180
14181 Wed Jan 26 17:34:09 CET 2005 Paolo Molaro <lupus@ximian.com>
14182
14183         * domain.c: fixed long standing bug in mono_string_equal() which
14184         was brought to light with the ldstr changes.
14185
14186 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
14187
14188         * reflection.c: Remove warning by adding missing include for marshal.h
14189
14190 Tue Jan 25 18:06:00 CET 2005 Paolo Molaro <lupus@ximian.com>
14191
14192         * domain.c, object.c: change the ldstr_table to hold
14193         MonoString* as keys: makes the runtime isinterned lookup
14194         faster and simplifies memory management.
14195
14196 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com> 
14197  
14198         * icall.c: Renamed GetEnvironmentVariable so internal* so it was
14199         possible to add imperative security checks before calling the icall.
14200         * reflection.c: Return security attributes on the original MonoMethod
14201         (and not the wrapped one). This fix permissions on icalls.
14202
14203 2005-01-25  Dick Porter  <dick@ximian.com>
14204
14205         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Make
14206         the check for mktime() support actually test the mktime() return
14207         value.  "Fixes" bug 71682, though the output is still different to
14208         MS.
14209
14210 2005-01-25  Martin Baulig  <martin@ximian.com>
14211
14212         * class.c (mono_class_is_assignable_from): Make this work for
14213         generic instances.
14214
14215 2005-01-24  Ben Maurer  <bmaurer@ximian.com>
14216
14217         * marshal.c (mono_string_utf8_to_builder)
14218         (mono_string_builder_to_utf16): We might not have ownership of the
14219         string. In thise case, we need to create a new buffer.
14220
14221         * object-internals.h (mono_stringbuilder_capacity): sb->str might
14222         be null, in which case, use the default capacity.
14223
14224 Mon Jan 24 16:42:29 CET 2005 Paolo Molaro <lupus@ximian.com>
14225
14226         * gc-internal.h, null-gc.c, profiler.c, boehm-gc.c: hook the
14227         GC events to the profiler.
14228
14229 Mon Jan 24 15:59:54 CET 2005 Paolo Molaro <lupus@ximian.com>
14230
14231         * gc.c: remove valgrind detection nonsense. Set GC_DONT_GC
14232         if you don't want the GC to run.
14233
14234 Mon Jan 24 15:53:25 CET 2005 Paolo Molaro <lupus@ximian.com>
14235
14236         * Makefile.am, gc.c, mono-gc.h, boehm-gc.c, null-gc.c, gc-internal.h:
14237         start providing a GC API and keeping different implementations in
14238         their own file.
14239         * profiler.h, profiler.c, profiler-private.h: provide the GC events API.
14240
14241 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
14242
14243         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Use
14244         mmap rather than allocating a huge buffer.
14245         (mono_debug_close_mono_symbol_file): Free the buffer allocated
14246         above.
14247
14248 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
14249
14250         * icall.c: Add new internal calls for SecurityManager.SecurityEnabled
14251         and CheckExecutionRights.
14252         * reflection.c|h: Keep the index of the declarative security to be 
14253         used, instead of the pointer, when AOT compiler is used. Also add 
14254         class initialization when requesting demands.
14255         * security-manager.c|h: Implement SecurityManager.SecurityEnabled and
14256         CheckExecutionRights. Both properties are now FALSE by default, and
14257         unmodifiable, unless the --security option is used.
14258
14259 Fri Jan 21 15:29:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14260
14261         * domain.c, appdomain.c, assembly.c, image.c, metadata-internals.h,
14262         reflection.c: properly refcount images and assemblies, many leaks fixed.
14263
14264 2005-01-20 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14265
14266         * threadpool.c: increase the timeout for threads in the thread pool to
14267         10s.  Fixes bug #67159.
14268
14269 2005-01-20  Bernie Solomon  <bernard@ugsolutions.com>
14270
14271         * class-internals.h: Sun's compiler insists on explicit
14272         signed on bit fields to handle then correctly.
14273
14274 2005-01-19  Miguel de Icaza  <miguel@ximian.com>
14275
14276         * file-io.c (ves_icall_System_IO_MonoIO_get_InvalidPathChars):
14277         Make the size of the array fit only the number of invalid path
14278         chars that we have.
14279
14280         * class.c (_mono_class_get): Improve the error reporting when a
14281         class referenced is not found, to assist debugging. 
14282
14283 Wed Jan 19 19:57:43 CET 2005 Paolo Molaro <lupus@ximian.com>
14284
14285         * threads.c: fix off-by-one error.
14286         * domain.c: free data allocated in the domain.
14287
14288 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
14289
14290         * reflection.c (mono_method_body_get_object): Fill out exception info
14291         as well.
14292
14293         * object-internals.h: Add MonoReflectionExceptionHandlingClause 
14294         structure.
14295         
14296 2005-01-19  Martin Baulig  <martin@ximian.com>
14297
14298         * loader.c (mono_get_method_constrained): Make this work again.
14299
14300 2005-01-19  Zoltan Varga  <vargaz@freemail.hu>
14301
14302         * object-internals.h (_MonoReflectionMethodBody): Make local_index a 
14303         guint16 to match the managed side.
14304
14305         * reflection.c (mono_reflection_body_get_object): Fill out local
14306         variables array.
14307
14308         * reflection.c (mono_method_body_get_object): Fill out local_var_sig_token
14309         as well.
14310
14311         * object-internals.h (_MonoReflectionMethodBody): Rename 'sig_token' to
14312         'local_var_sig_token'.
14313
14314 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
14315
14316         * loader.c (mono_lookup_pinvoke_call): Revert the previous patch as it breaks 
14317         System.Drawing.
14318
14319         * reflection.c (mono_method_body_get_object): Handle abstract and
14320         runtime methods.
14321
14322 Mon Jan 17 19:22:39 CET 2005 Paolo Molaro <lupus@ximian.com>
14323
14324         * marshal.c, loader.c, class-internals.h, reflection.c:
14325         store the emthod data for a wrapper in an array instead of a list.
14326
14327 Mon Jan 17 18:48:53 CET 2005 Paolo Molaro <lupus@ximian.com>
14328
14329         * marshal.c: change the code to allocate memory more
14330         conservatively for method wrappers.
14331
14332 Mon Jan 17 18:03:30 CET 2005 Paolo Molaro <lupus@ximian.com>
14333
14334         * class-internals.h, marshal.c: move the str_to_ptr and ptr_to_str
14335         fields from MonoClass to the marshal info structure where they belong.
14336
14337 Mon Jan 17 16:14:46 CET 2005 Paolo Molaro <lupus@ximian.com>
14338
14339         * class.c, object.c, class-internals.h, marshal.c: rearrange
14340         some fields and tweak some types to lower memory usage.
14341
14342 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
14343
14344         * threads.c (signal_thread_state_change): Handle the case when the
14345         target thread is the current thread.
14346
14347         * marshal.c (mono_struct_delete_old): Do not free lpwstr fields.
14348
14349         * marshal.c: Rename emit_ptr_to_str_conv and its pair to 
14350         emit_ptr_to_object_conv. 
14351
14352         * marshal.c (emit_ptr_to_object_conv): Add support for lpwstr->str
14353         marshalling. Fixes #71352.
14354
14355 Mon Jan 17 10:59:20 CET 2005 Paolo Molaro <lupus@ximian.com>
14356
14357         * metadata.h, blob.h: move table enum to blob.h so it can be included
14358         in any header.
14359         * image.c, metadata.c, metadata-internals.h, pedump.c, reflection.c:
14360         cut the size of MonoImage/MonoDynamicImage.
14361
14362 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
14363
14364         * profiler.c (mono_profiler_install_simple): Fix default arguments.
14365
14366 Sun Jan 16 12:25:22 CET 2005 Paolo Molaro <lupus@ximian.com>
14367
14368         * reflection.c, reflection.h, icall.c: add a function to check
14369         if an attribute type is defined for a metadata object.
14370
14371 2005-01-14  Lluis Sanchez Gual  <lluis@novell.com>
14372
14373         * object-internals.h: Added some needed fields from StringBuilder class.
14374         * marshal.c: Set the maxCapacity when creating a StringBuilder.
14375
14376 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
14377
14378         * icall.c (ves_icall_System_Environment_Exit): Suspend all managed
14379         threads before shutting down the runtime.
14380
14381         * threads.c (mono_thread_suspend_all_other_threads): New helper function.
14382
14383 Thu Jan 13 18:16:35 CET 2005 Paolo Molaro <lupus@ximian.com>
14384
14385         * object-internal.h, threads.c: implement stacksize and 
14386         parameterized thread start functionality (requires
14387         matching corlib). Marked broken code for later removal.
14388
14389 2005-01-12  Martin Baulig  <martin@ximian.com>
14390
14391         * class-internals.h (MonoGenericClass): Moved the `initialized'
14392         flag to MonoDynamicGenericClass, removed `init_pending'.
14393         (MonoGenericInst): Added `is_reference' flag.
14394
14395 2005-01-12  Zoltan Varga  <vargaz@freemail.hu>
14396
14397         * reflection.c (mono_image_create_pefile): Only set the pe_offset
14398         inside the MSDOS header. Fixes #71201.
14399
14400         * gc.c (mono_gc_cleanup): Handle the case when this is called from the
14401         gc thread.
14402         (mono_domain_finalize): Ditto.
14403
14404 2005-01-12  Martin Baulig  <martin@ximian.com>
14405
14406         * class.c (mono_get_shared_generic_class): Use the cache for
14407         non-dynamic generic classes.
14408
14409         * class-internals.h (mono_class_create_generic_2): Removed
14410         function prototype, this function is now static inside class.c.
14411
14412         * class.c (mono_class_create_generic_2): Made this static, only
14413         call it from mono_class_init() and mono_class_setup_parent().
14414         (collect_implemented_interfaces_aux): Call mono_class_init() on
14415         the interfaces we collect.
14416         (mono_class_setup_vtable): Call mono_class_init (class->parent).
14417
14418 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14419
14420         * threads.c (mono_thread_attach): Call DuplicateHandle on the thread handle on win32 to make
14421         it a real thread handle.
14422
14423         * domain-internals.h: Move exvar_offset from MonoJitInfo to 
14424         MonoJitExceptionInfo, since each catch clause needs its own variable.
14425         
14426 2005-01-11  Dick Porter  <dick@ximian.com>
14427
14428         * image.c (mono_pe_file_open): New variant on mono_image_open()
14429         that does not set up the CLI metadata; used for FileVersionInfo so
14430         it can get the data for windows binaries too.
14431         
14432         * process.c (process_read_string_block): Don't read off the end of
14433         the StringTable block.
14434
14435         These both fix bug 70766.
14436
14437 Tue Jan 11 15:26:00 CET 2005 Paolo Molaro <lupus@ximian.comt>
14438
14439         * gc.c: set some fields to NULL at GC cleanup time.
14440         * threads.c: if we quit the main thread, call exit ().
14441
14442 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
14443
14444         * threads.c (interruption_request_apc): Decore APC callbacks with CALLBACK under win32.
14445
14446 Mon Jan 10 18:47:28 CET 2005 Paolo Molaro <lupus@ximian.com>
14447
14448         * threads.h, threads.c, object.c: added accessor and settor for
14449         main_thread. Handle it specially when exiting from it: wait
14450         for other foreground threads to exit.
14451
14452 Mon Jan 10 12:06:18 CET 2005 Paolo Molaro <lupus@ximian.com>
14453
14454         * process.c, verify.c: remove some bloat.
14455
14456 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
14457
14458         * loader.c (mono_lookup_pinvoke_call): If we found the function without name mangling, change
14459         the calling convention to cdecl under win32.
14460
14461 2005-01-08  Ben Maurer  <bmaurer@ximian.com>
14462
14463         * object.c (mono_object_get_size): New function to get the size of
14464         an object instance.
14465
14466         * profiler.c (simple_allocation): Use above.
14467
14468 2005-01-08  Sebastien Pouliot  <sebastien@ximian.com>
14469
14470         * appdomain.c: Replaced ves_icall_System_AppDomain_getDomainByID by
14471         ves_icall_System_AppDomain_getRootDomain (as it's not required to
14472         get an appdomain by it's id and we can't assume the root's id is 0).
14473         * domain-internals.h: Change the function prototype to match.
14474         * icall.c: Change the icall table for AppDomain.
14475
14476 2005-01-08  Miguel de Icaza  <miguel@ximian.com>
14477
14478         * locales.c (string_invariant_compare_char): Only compute
14479         GUnicodeTypes in the case where we need them.  Test for ordinality
14480         first and return if so.
14481
14482         From the commit:
14483
14484                 /*
14485                  * FIXME: here we must use the information from c1type and c2type
14486                  * to find out the proper collation, even on the InvariantCulture, the
14487                  * sorting is not done by computing the unicode values, but their
14488                  * actual sort order.
14489                  */
14490
14491 Sat Jan 8 19:03:26 CET 2005 Paolo Molaro <lupus@ximian.com>
14492
14493         * loader.c: for P/Invoke methods, allow the "Internal" shared
14494         library name to refer to the calling process symbol namespace.
14495
14496 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
14497
14498         * Makefile.am: Add the security manager to the build.
14499         * security-manager.c|h: New. Initialization of the security manager.
14500
14501 2005-01-07  Dick Porter  <dick@ximian.com>
14502
14503         * threads.c: 
14504         * monitor.c: Update thread state during Monitor and WaitHandle
14505         waits.  Fixes bug 71031.
14506
14507 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
14508
14509         * reflection.c (property_encode_signature): Correctly handle when the
14510         property has no methods.
14511
14512 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
14513
14514         * reflection.c (reflection_methodbuilder_to_mono_method): Remove debug stuff.
14515         
14516         * reflection.c (reflection_methodbuilder_from_method_builder): Copy
14517         fields from mb, not rmb. Fixes #71017.
14518
14519         * marshal.c (emit_ptr_to_str_conv): Add support for 
14520         ByValTStr -> string conversion. Fixes #71015.
14521
14522         * appdomain.c (mono_domain_owns_vtable_slot): New helper function.
14523
14524         * mempool.c (mono_mempool_contains_addr): New helper function.
14525
14526 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14527
14528         * metadata.c (mono_metadata_compute_size): Fix size calculation of
14529         HasSematics encoded fields.
14530         
14531         * metadata.c (mono_type_to_unmanaged): Improve error message for 
14532         invalid string marshalling.
14533
14534         * metadata.c: Fix warnings.
14535         
14536 Wed Jan 5 16:17:27 CET 2005 Paolo Molaro <lupus@ximian.com>
14537
14538         * profiler-private.h, profiler.c, profiler.h, gc.c: sample statistical
14539         profiler support.
14540
14541 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
14542
14543         * domain.c object.c domain-internals.h: Revert part of r38077 since the
14544         keys to proxy_vtable_hash are GCd objects. Fixes running the class lib
14545         tests.
14546
14547 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
14548
14549         * marshal.c: Use MONO_CLASSCONST instead of MONO_LDPTR in some places,
14550         so methods containing these can be AOTed.
14551
14552 2005-01-03  Martin Baulig  <martin@ximian.com>
14553
14554         * loader.c (find_method): Removed the hack for generic instances.
14555         (method_from_memberref): If our parent is a generic instance, pass
14556         its generic type definition to find_method() and then inflate the
14557         method.
14558         (mono_get_method_constrained): Pass the generic type definition to
14559         find_method() and inflate the method later.
14560
14561         * class-internals.h (MonoStats): Added `generic_class_count'.
14562
14563         * icall.c (ves_icall_MonoGenericMethod_get_reflected_type):
14564         Renamed to ves_icall_MonoGenericMethod_get_ReflectedType().
14565
14566         * reflection.c (mono_custom_attrs_from_params): Don't ignore
14567         generic type definitions.
14568
14569 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
14570
14571         * loader.c icall.c: Fix warnings.
14572
14573 2004-12-29  Zoltan Varga  <vargaz@freemail.hu>
14574
14575         * marshal.c (mono_marshal_get_managed_wrapper): Fix returning of
14576         blittable types. Fixes #70864.
14577
14578 2004-12-29  Martin Baulig  <martin@ximian.com>
14579
14580         * icall.c
14581         (ves_icall_MonoGenericMethod_get_reflected_type): New interncall.
14582
14583         * reflection.c (mono_method_get_object): Create a
14584         "System.Reflection.MonoGenericMethod" for inflated methods; don't
14585         call mono_get_inflated_method().
14586
14587         * class-internals.h (MonoStats): Added `inflated_method_count_2'.
14588
14589 2004-12-27  Martin Baulig  <martin@ximian.com>
14590
14591         * class-internals.h (MonoMethod): Added `is_inflated' flag.
14592         (MonoMethodInflated): Added `inflated' field.
14593
14594         * class.c (mono_class_inflate_generic_method): Don't really
14595         inflate the method here; just set the `is_inflated' flag in the
14596         MonoMethod.
14597         (mono_class_get_inflated_method): Actually inflate the method here
14598         if it's not already inflated; we use the MonoMethodInflated's new
14599         `inflated' field as a cache.
14600
14601 2004-12-26  Martin Baulig  <martin@ximian.com>
14602
14603         * class.c
14604         (inflate_generic_class): Moved some code out of inflate_generic_type().
14605         (mono_class_inflate_generic_method): If we're already inflated,
14606         inflate the context and use the declaring method; ie. make sure
14607         the declaring method of an inflated method is always the generic
14608         method definition.
14609         (mono_class_create_from_typedef): Create
14610         `class->generic_container->context->gclass'.
14611
14612 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
14613
14614         * metadata-internals.h, marshal.c, reflection.c: More
14615         MonoGHashTable->GHashTable.
14616
14617         * domain-internals.h, class.c: Change MonoGHashTable's into
14618         GHashTables for some cases where no gc stuff is used
14619
14620         All users: update apis
14621
14622 2004-12-23  Ben Maurer  <bmaurer@ximian.com>
14623
14624         * metadata.c (builtin_types): Make this `const'. Makes this get
14625         put into the shareable section.
14626         (mono_metadata_init): Casts to make gcc happy.
14627
14628 2004-12-22  Zoltan Varga  <vargaz@freemail.hu>
14629
14630         * gc.c (mono_gc_init): Add a '\n' to the valgrind warning.
14631
14632 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com> 
14633
14634         * icall.c: Added an internal call to retrieve the position and length
14635         of assembly-level declarative security attributes (RequestMinimum, 
14636         RequestOptional and RequestRefuse). This is used by the Assembly class
14637         to re-create the corresponding permission sets.
14638
14639 Tue Dec 21 14:50:31 CET 2004 Paolo Molaro <lupus@ximian.com>
14640
14641         * marshal.c: fix the stelemref wrapper to be type correct
14642         (and faster).
14643
14644 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
14645
14646         * icall.c (ves_icall_System_Object_GetHashCode): There was no need
14647         to do key & 0x7fffffff. Hashtable already does this. It just
14648         results in longer code.
14649
14650 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
14651
14652         * appdomain.c: Bump corlib version.
14653         * class-internals.h: Added RuntimeSecurityFrame to mono_defaults.
14654         * domain.c: Add RuntimeSecurityFrame to mono_defaults.
14655         * reflection.c|h: Add functions to get declarative security infos
14656         (blob position and length) for assemblies, classes and methods.
14657
14658 Mon Dec 20 15:28:54 CET 2004 Paolo Molaro <lupus@ximian.com>
14659
14660         * reflection.c: sort the constant table (bug #70693).
14661
14662 Mon Dec 20 12:19:37 CET 2004 Paolo Molaro <lupus@ximian.com>
14663
14664         * object-internals.h, threads.c, domain.c: add accessors for
14665         the MonoThread and MonoDomain tls keys.
14666
14667 2004-12-18  Martin Baulig  <martin@ximian.com>
14668
14669         * class.c (inflate_generic_type): If we're inflating a generic
14670         instance, set `ngclass->context->container = context->container';
14671         ie. the container we inflated into.
14672
14673         * metadata.c (mono_metadata_parse_generic_param): Reflect above
14674         inflate_generic_type() changes.
14675
14676 2004-12-17  Martin Baulig  <martin@ximian.com>
14677
14678         * class-internals.h
14679         (MonoGenericClass): Replaced `MonoType *generic_type' with
14680         `MonoClass *generic_class'.  Removed `dynamic_info'; if
14681         `is_dynamic' is true, we're a `MonoDynamicGenericClass'.
14682         (MonoDynamicGenericClass): Derive from `MonoGenericClass'.
14683
14684 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
14685
14686         * exception.c (mono_exception_from_token): New helper function.
14687
14688 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
14689
14690         * assembly.c (mono_assembly_load_with_partial_name): Call 
14691         mono_assembly_loaded before invoking the preload hooks. Fixes
14692         #70564.
14693
14694         * object-internals.h (MonoThread): Change culture_info and 
14695         ui_culture_info into an array.
14696
14697         * threads.c: Cache culture info objects from more than one appdomain.
14698
14699         * threads.c threads-types.h icall.c: Add icalls for manipulating the 
14700         current UI culture.
14701
14702 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
14703
14704         * threads.h threads.c appdomain.c: Clear the culture_info field of
14705         all threads during unloading if they point to an object in the dying
14706         appdomain.
14707
14708 2004-12-13  Ben Maurer  <bmaurer@ximian.com>
14709
14710         * culture-info.h (TextInfoEntry): New struct
14711         * object-internals.h: sync with managed
14712         * locales.c: fill the `text_info_data' field
14713         * culture-info-tables.h: update
14714
14715 Mon Dec 13 18:10:50 CET 2004 Paolo Molaro <lupus@ximian.com>
14716
14717         * Makefile.am, monodiet.c: add monodiet, an IL code garbage
14718         collector.
14719
14720 2004-12-12  Ben Maurer  <bmaurer@ximian.com>
14721
14722         * icall.c (ves_icall_ModuleBuilder_getToken): Check for null
14723         (ves_icall_ModuleBuilder_getMethodToken): Ditto
14724
14725 2004-12-12  Martin Baulig  <martin@ximian.com>
14726
14727         * mono-debug-debugger.c (write_type): If we're an enum and the
14728         builtin types have already been initialized, call mono_class_init().
14729
14730 2004-12-11  Martin Baulig  <martin@ximian.com>
14731
14732         * metadata.c (mono_metadata_load_generic_params): Added
14733         `MonoGenericContainer *parent_container' argument; automatically
14734         compute `container->is_method'; pass the correct owner to
14735         get_constraints().      
14736
14737         * reflection.c (compare_genericparam): Sort the GenericParam table
14738         according to increasing owners. 
14739
14740 Fri Dec 10 18:43:46 CET 2004 Paolo Molaro <lupus@ximian.com>
14741
14742         * profiler.c: allow disabling the default profiler.
14743
14744 Fri Dec 10 18:42:11 CET 2004 Paolo Molaro <lupus@ximian.com>
14745
14746         * decimal.c, icall.c: allow disabling System.Decimal support.
14747
14748 2004-12-09  Marek Safar <marek.safar@seznam.cz>
14749
14750         * reflection.c: Add support for null attribute arguments.
14751
14752 2004-12-09  Martin Baulig  <martin@ximian.com>
14753
14754         * metadata.h, loader.h: Use `idx' instead of `index' in parameter
14755         names to get rid of compiler warnings.
14756
14757 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14758
14759         * marshal.c (mono_marshal_get_struct_to_ptr): Call 
14760         mono_marshal_load_type_info (). Fixes #69625.
14761         (mono_marshal_get_ptr_to_struct): Likewise.
14762
14763 2004-12-08  Martin Baulig  <martin@ximian.com>
14764
14765         * mono-debug.h: Bumped version number to 47.
14766
14767         * mono-debug-debugger.c
14768         (mono_debugger_event_handler, mono_debugger_event): Take two
14769         guint64 arguments insteed of a gpointer and a guint32.  
14770
14771 2004-12-08  Martin Baulig  <martin@ximian.com>
14772
14773         * debug-mono-symfile.h
14774         (MonoDebugLineNumberEntry): Renamed `offset' to `il_offset' and
14775         `address' to `native_offset'.
14776
14777 2004-12-08  Martin Baulig  <martin@ximian.com>
14778
14779         * class.c (mono_class_create_from_typespec): Only inflate if we
14780         either have `context->gclass' or `context->gmethod'.
14781
14782 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
14783
14784         * metadata-internals.h (MonoAssembly): Add 'corlib_internal' field.
14785
14786         * object-internals.h (MonoReflectionAssemblyBuilder): Move 'corlib_internal' field from Assembly to AssemblyBuilder.
14787
14788         * reflection.c (mono_image_basic_init): Initialize assembly->corlib_internal from the assembly builder.
14789
14790         * reflection.c (mono_assembly_get_object): Remove the workaround put
14791         in for the release.
14792         
14793         * appdomain.c: Use the corlib_internal field from MonoAssembly.
14794
14795         * appdomain.c: Bump corlib version.
14796
14797         * reflection.c (mono_assembly_get_object): Add a workaround so __MetadataTypes won't
14798         be visible in other appdomains.
14799
14800 2004-12-07  Ben Maurer  <bmaurer@ximian.com>
14801
14802         * threads.c: Interlocked inc and dec for longs were messed up,
14803         use a KISS based impl for this. Fixes 70234
14804
14805 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
14806
14807         * threads.c (ves_icall_System_Threading_Thread_GetCachedCurrentCulture): Make this lock-less.
14808
14809 Tue Dec 7 10:47:09 CET 2004 Paolo Molaro <lupus@ximian.com>
14810
14811         * icall.c: fix to follow policy not to allow struct
14812         arguments in icalls.
14813
14814 2004-12-06 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14815
14816         * process.c: make the patch that handles spaces in file paths work
14817         on mono/windows too.
14818
14819 2004-12-06  Martin Baulig  <martin@ximian.com>
14820
14821         * class.c (mono_class_create_generic): Call
14822         mono_class_setup_supertypes() if we're dynamic.
14823         (mono_class_is_subclass_of): `g_assert (klass->idepth > 0)'.
14824
14825 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
14826
14827         * object-internals.h: Add new fields to MonoThread.
14828
14829         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
14830
14831         * icall.c threads-types.h threads.c: Add new icalls.
14832
14833         * object-internals.h (MonoThread): Remove unused 'unmanaged' field.
14834
14835         * object-internals.h (MonoReflectionAssembly): Sync object layout with
14836         managed side.
14837
14838         * appdomain.c: Bump corlib version.
14839
14840         * appdomain.c (ves_icall_System_AppDomain_GetAssemblies): Skip
14841         internal assemblies. Fixes #69181.
14842
14843 2004-12-05  Martin Baulig  <martin@ximian.com>
14844
14845         * class.c (mono_class_inflate_generic_signature): Make this a
14846         no-op if `context' is NULL or we don't have any type parameters;
14847         also copy `sentinelpos'.        
14848
14849 2004-12-04  Zoltan Varga  <vargaz@freemail.hu>
14850
14851         * image.c: Add unbox_wrapper_cache.
14852
14853         * class-internals.h debug-helpers.c: Add MONO_WRAPPER_UNBOX.
14854
14855         * marshal.h marshal.c (mono_marshal_get_unbox_wrapper): New wrapper
14856         function generator.
14857         
14858         * object.c (mono_delegate_ctor): Call unbox wrapper if neccesary.
14859         Fixes #70173.
14860
14861         * metadata-internals.h image.c: Add MonoImage->unbox_wrapper_cache.
14862         
14863 2004-12-04  Martin Baulig  <martin@ximian.com>
14864
14865         * loader.c (mono_method_get_signature_full): New public function;
14866         like mono_method_get_signature(), but with an additional
14867         `MonoGenericContext *' argument.
14868
14869         * class.c (mono_class_inflate_generic_signature): Formerly known
14870         as inflate_generic_signature(); make this public.
14871
14872 2004-12-04  Martin Baulig  <martin@ximian.com>
14873
14874         * metadata.c
14875         (mono_metadata_parse_type_full): Take a `MonoGenericContext *'
14876         instead of a `MonoGenericContainer *'.  
14877         (mono_metadata_parse_array_full): Likewise.
14878         (mono_metadata_parse_signature_full): Likewise.
14879         (mono_metadata_parse_method_signature_full): Likewise.
14880         (mono_metadata_parse_generic_inst): Likewise.
14881         (mono_metadata_parse_generic_param): Likewise.
14882         (mono_metadata_parse_mh_full): Likewise.
14883         (mono_type_create_from_typespec_full): Likewise.
14884
14885 2004-12-03  Martin Baulig  <martin@ximian.com>
14886
14887         * class-internals.h (MonoGenericContainer): Replaced the
14888         `MonoGenericContext * pointer with a `MonoGenericContext'
14889         structure and made it the first element.
14890
14891 2004-12-03  Martin Baulig  <martin@ximian.com>
14892
14893         * class.c
14894         (inflate_generic_type): Set the `context->container' when creating
14895         a new MonoGenericContext.
14896         (mono_class_inflate_generic_method): Likewise.
14897         (mono_class_create_from_typespec): Just use `context->container'
14898         to get the container.
14899
14900         * loader.c (method_from_methodspec): Set `context->parent' from
14901         `context->container' - and if that's a method container, use its
14902         parent.  Also set the `context->container' when creating a new
14903         MonoGenericContext.
14904         (mono_get_method_from_token): Use just `context->container' to get
14905         the container.
14906
14907         * metadata.c (do_mono_metadata_parse_generic_class): Also set
14908         `gclass->context->container'.
14909
14910         * reflection.c (do_mono_reflection_bind_generic_parameters): Set
14911         the `context->container' when creating a new MonoGenericContext.
14912
14913 2004-12-03  Zoltan Varga  <vargaz@freemail.hu>
14914
14915         * reflection.c (compare_genericparam): Sort params with identical
14916         owner by their number. Fixes gen-111 on sparc.
14917
14918 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14919
14920         * threadpool.c (async_invoke_thread): Call push/pop_appdomain_ref
14921         around the domain changes.
14922
14923         * appdomain.c (mono_domain_unload): Handle the case when the thread
14924         calling Unload is itself being aborted during unloading. Fixes #70022.
14925
14926         * appdomain.h: Add prototype for mono_install_runtime_cleanup.
14927
14928         * marshal.c (emit_thread_interrupt_checkpoint_call): Call 
14929         checkpoint_func as an icall so it gets a wrapper.
14930         (mono_marshal_get_xappdomain_invoke): Call push/pop_appdomain_ref ()
14931         in the cross-appdomain wrappers too.
14932
14933         * threads.c (mono_thread_has_appdomain_ref): Make this public.
14934
14935         * assembly.c (mono_assembly_open_from_bundle): Fix warning.
14936
14937         * reflection.c: Fix some memory leaks.
14938         
14939 2004-12-02  Martin Baulig  <martin@ximian.com>
14940
14941         * metadata-internals.h (MonoImage): Removed `generic_class_cache'.
14942
14943         * metadata.c (generic_class_cache): New static hashtable.
14944         (mono_metadata_lookup_generic_class): New public method.
14945
14946 2004-12-02  Martin Baulig  <martin@ximian.com>
14947
14948         * class.c (mono_class_create_from_typedef): Call
14949         mono_class_setup_parent() and mono_class_create_mono_type() before
14950         parsing the interfaces.
14951
14952 2004-12-02  Martin Baulig  <martin@ximian.com>
14953
14954         * metadata.c (generic_inst_cache): New static hashtable.
14955         (mono_metadata_lookup_generic_inst): New public function.
14956         (mono_metadata_inflate_generic_inst): New public function.
14957         (mono_metadata_parse_generic_inst): New public function.
14958         (do_mono_metadata_parse_generic_class): Use the new
14959         mono_metadata_parse_generic_inst() for parsing the `gclass->inst'
14960         since this'll also use the cache.
14961
14962         * reflection.c (mono_reflection_bind_generic_method_parameters):
14963         Use mono_metadata_lookup_generic_inst() to use the new cache.
14964
14965         * class.c (inflate_mono_type): Use
14966         mono_metadata_inflate_generic_inst() to inflate a generic
14967         instance; this'll also use the new cache.
14968
14969         * loader.c (method_from_methodspec): Use
14970         mono_metadata_parse_generic_inst() and
14971         mono_metadata_inflate_generic_inst() rather than parsing it
14972         manually, so we can use the new cache.
14973
14974 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
14975
14976         * threads.c (wait_for_tids): Do not incorrectly free threads when 
14977         the wait times out.
14978
14979 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
14980
14981         * icall.c (mono_ArgIterator_Setup) : Conditionally compile calculation of
14982         iter->args based on whether parameters are passed in registers (i.e.
14983         MONO_ARCH_REGPARMS is defined)
14984
14985 2004-12-01  Zoltan Varga  <vargaz@freemail.hu>
14986
14987         * loader.c (mono_lookup_pinvoke_call): Use the remapped dll name in
14988         the exception message. Fixes #70070.
14989         (method_from_methodspec): Fix warnings.
14990
14991 2004-12-01 Gonzalo Paniagua Javier <gonzalo@ximian.com>
14992
14993         * process.c: (complete_path) return the path quoted
14994
14995 2004-12-01  Martin Baulig  <martin@ximian.com>
14996
14997         * class-internals.h (MonoGenericInst): New structure.
14998         (MonoGenericClass): Replaced `type_argc', `type_argv' and
14999         `is_open' with `MonoGenericInst *inst'.
15000         (MonoGenericMethod): Replaced `mtype_argc', `mtype_argv' and
15001         `is_open' with `MonoGenericInst *inst'.
15002
15003 2004-11-30  Martin Baulig  <martin@ximian.com>
15004
15005         Generics API cleanup: renamed MonoGenericInst -> MonoGenericClass.
15006
15007         * metadata-internals.h (MonoImage): Renamed `generic_inst_cache'
15008         to `generic_class_cache'.
15009
15010         * metadata.c
15011         (mono_generic_inst_hash): Renamed to mono_generic_class_hash().
15012         (mono_generic_inst_equal): Renamed to mono_generic_class_equal().
15013         (mono_generic_inst_is_valuetype): Renamed to
15014         mono_generic_class_is_valuetype().
15015
15016         * class-internals.h
15017         (MonoGenericInst): Renamed to MonoGenericClass.
15018         (MonoDynamicGenericInst): Renamed to MonoDynamicGenericClass.
15019         (MonoClass): Renamed `generic_inst' to `generic_class'.
15020         (MonoGenericContext): Renamed `ginst' to `gclass'.
15021
15022         * object-internals.h
15023         (MonoReflectionGenericInst): Renamed to MonoReflectionGenericClass.
15024
15025         * reflection.c (mono_reflection_generic_inst_initialize): Renamed to
15026         mono_reflection_generic_class_initialize().
15027
15028         * icall.c (icall_entries): "System.Reflection.MonoGenericInst" is
15029         now known as "System.Reflection.MonoGenericClass".
15030         (monogenericinst_icalls): Renamed to monogenericclass_icalls.
15031
15032 2004-11-29  Sebastien Pouliot  <sebastien@ximian.com>
15033
15034         * class-internals.h: Added a flag field to MonoClass to cache the
15035         declarative security attributes actions associated with the class.
15036         * domain-internals.h: Added booleans to MonoJitInfo to cache the
15037         (class or method level) stack modifiers (Assert, Deny and PermitOnly)
15038         applicable to the JITted method.
15039         * reflection.c|h: Added functions to extract (as flags) which security
15040         actions are available (declaratively) for a method, class or assembly.
15041         * metadata.c|h: Added functions to search the declarative security
15042         table in the metadata.
15043         
15044 2004-11-29  Ben Maurer  <bmaurer@ximian.com>
15045
15046         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces):
15047         EXPORTEDTYPES are already in the class name cache, so there is no
15048         need to add extra code here to look at them. Just removes a bit of
15049         cruft.
15050
15051         (ves_icall_System_Environment_get_TickCount): No need for #if
15052         WINDOWS. We already have the code in io-layer.
15053
15054 2004-11-28  Martin Baulig  <martin@ximian.com>
15055
15056         * loader.c
15057         (method_from_methodspec): Also inflate the `gmethod->mtype_argv'.
15058         Fixes gen-112.cs.
15059
15060 2004-11-27  Miguel de Icaza  <miguel@ximian.com>
15061
15062         * assembly.c (do_mono_assembly_open): Instead of having a
15063         conditional WITH_BUNDLE, incorporate support for bundles here, by
15064         having a global `bundles' variable holding a pointer to the actual
15065         bundles. 
15066
15067         (mono_register_bundled_assemblies): New API call used by the
15068         bundle code. 
15069
15070         See mkbundle.1 for details.
15071         
15072 2004-11-27  Martin Baulig  <martin@ximian.com>
15073
15074         * object.c (mono_class_vtable): Store the `MonoMethod *' itself in
15075         the vtable for generic methods.
15076
15077 2004-11-26  Martin Baulig  <martin@ximian.com>
15078
15079         * metadata.c
15080         (mono_metadata_generic_method_hash): New public function.
15081         (mono_metadata_generic_method_equal): Likewise.
15082
15083         * class-internals.h
15084         (MonoGenericContainer): Added `GHashTable *method_hash'.
15085
15086         * reflection.c (ReflectionMethodBuilder): Added
15087         `MonoGenericContainer *generic_container'.
15088         (reflection_methodbuilder_to_mono_method): Don't create a new
15089         MonoGenericContainer each time we're called.
15090         (mono_reflection_bind_generic_method_parameters): Use
15091         `container->method_hash' to cache the results so we don't create a
15092         different method if we're called several times with the same
15093         arguments.
15094
15095         * loader.c (method_from_methodspec): Use the new
15096         `container->method_hash' here, too.
15097
15098 2004-11-26  Martin Baulig  <martin@ximian.com>
15099
15100         * class.c (inflate_generic_signature): Correctly compute
15101         `res->has_type_parameters'.
15102         (mono_class_vtable): Use the `has_type_parameters' flag to
15103         determine whether we're a generic method.
15104
15105         * metadata.c (mono_metadata_parse_method_signature_full): Likewise.
15106
15107 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
15108
15109         * object.c (mono_runtime_run_main): Fix a small memory leak.
15110
15111 2004-11-25  Martin Baulig  <martin@ximian.com>
15112
15113         * class.c (set_generic_param_owner): Fixed the loop.
15114
15115 2004-11-25  Martin Baulig  <martin@ximian.com>
15116
15117         * object.c (mono_class_vtable): Don't create any JIT wrappers for
15118         generic methods.
15119
15120 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
15121
15122         * reflection.c: Allow all kinds of whitespace, not just ' ' in type
15123         names. Fixes #69787.
15124
15125 2004-11-24  Martin Baulig  <martin@ximian.com>
15126
15127         * class.c (mono_class_create_generic_2): If we don't have a
15128         `ginst->parent', inflate `gklass->parent' to get our parent.
15129
15130 2004-11-24  Martin Baulig  <martin@ximian.com>
15131
15132         * reflection.c (compare_genericparam): Correctly sort the
15133         GenericParam table; fixes #69779.
15134
15135 2004-11-23  Ben Maurer  <bmaurer@ximian.com>
15136
15137         * reflection.c: When writing a PE file, don't create a huge
15138         buffer in memory. Just write the arrays we have to the file.
15139         This reduces memory usage.
15140
15141         * metadata-internals.h: MonoDynamicStream pefile is no longer used
15142         globally.
15143
15144 2004-11-17  Martin Baulig  <martin@ximian.com>
15145
15146         * class.c (mono_class_init): Don't setup `class->parent' for
15147         dynamic instances; moved this to mono_class_generic_2().
15148         (mono_class_create_generic): Also set `klass->inited' for dynamic
15149         generic instances.
15150         (mono_class_create_generic_2): Don't do anything for dynamic
15151         generic instances.  Set `klass->parent' here and also call
15152         mono_class_setup_parent() here. 
15153
15154         * reflection.c (do_mono_reflection_bind_generic_parameters): Added
15155         `MonoType *parent' argument; set `ginst->parent' before calling
15156         mono_class_create_generic_2(), so we set the correct parent.
15157
15158 Thu Nov 18 17:10:32 CET 2004 Paolo Molaro <lupus@ximian.com>
15159
15160         * reflection.c: allow getting attributes from ModuleBuilder
15161         (used by ikvm).
15162
15163 2004-11-17  Martin Baulig  <martin@ximian.com>
15164
15165         * class.c (mono_class_create_from_typedef): If a type parameter is
15166         inherited from an outer class, set its owner to that class.
15167
15168 2004-11-17  Atsushi Enomoto  <atsushi@ximian.com>
15169
15170         * reflection.c: (mono_image_create_pefile): Don't use NULL argument
15171           for (int*) written size. This fixes bug #69592.
15172
15173 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
15174
15175         * icall.c: Added IsAuthenticodePresnet internal call.
15176         * image.c|h: New function that check a MonoImage for an Authenticode
15177         signature in the certificate PE data directory.
15178         * security.c|h: New internal call to ask the runtime if an 
15179         Authenticode signature seems referenced in the PE header.
15180
15181 2004-11-15  Zoltan Varga  <vargaz@freemail.hu>
15182
15183         * icall.c (ves_icall_type_isprimitive): Native int is a primitive type.
15184
15185         * reflection.c (mono_image_create_pefile): Free the assembly streams
15186         after writing out the assembly file.
15187
15188         * object.c (mono_runtime_run_main): Fix small memory leak.
15189
15190         * icall.c (ves_icall_Type_GetPropertiesByName): Add support for
15191         property access modifiers. Fixes #69389.
15192
15193 Mon Nov 15 11:54:22 CET 2004 Paolo Molaro <lupus@ximian.com>
15194
15195         * domain.c, object.c, object-internals.h, domain-internals.h,
15196         object.h, marshal.c: keep dynamic code info per domain.
15197
15198 2004-11-15  Martin Baulig  <martin@ximian.com>
15199
15200         * class.c (mono_type_get_name_recurse): Put type arguments in
15201         `[',`]' instead of in `<','>'.  Thanks to Atsushi for the patch,
15202         see bug #68387.
15203
15204 2004-11-15  Martin Baulig  <martin@ximian.com>
15205
15206         * class.c (mono_type_get_name_recurse): Added `include_ns' flag.
15207         (mono_class_setup_vtable): When computing `the_cname' for a
15208         generic instance, don't include the namespace since we'd otherwise
15209         add it twice.
15210
15211 2004-11-15  Martin Baulig  <martin@ximian.com>
15212
15213         * class.c (mono_class_create_generic): Changed return type to void.
15214         (mono_class_create_generic_2): New public function; setup
15215         `class->method', `class->field' and `class->interfaces' here
15216         instead of in mono_class_init().
15217
15218         * class.h (mono_class_create_generic): Moved to class-internals.h.
15219
15220 2004-11-14  Ben Maurer  <bmaurer@ximian.com>
15221
15222         * reflection.c (mono_image_create_pefile): take a file HANDLE.
15223         rather than writing to memory, write to this file. Right now,
15224         we are just writting into a buffer, and copying that. However
15225         we can avoid the buffer later.
15226
15227         (mono_dynamic_stream_reset): new function
15228
15229         * icall.c, object-internals.h: update for the above.
15230
15231 2004-11-13  Ben Maurer  <bmaurer@ximian.com>
15232
15233         * reflection.c: Remove *_ATOMIC macros. We really shouldn't
15234         have been using gc'd memory. First it is slower, unlikely
15235         the comment in the source code said, secondly, it increases
15236         our footprint to do it in the gc.
15237
15238         * icall.c (WriteToFile): rename of getDataChunk. Rewrite
15239         the method so that it does not have to copy to managed code.
15240
15241 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
15242
15243         * loader.c (mono_method_get_header): Fix build for older glibs which does not define G_LIKELY.
15244
15245 2004-11-12  Martin Baulig  <martin@localhost>
15246
15247         * reflection.c (mono_image_create_token): Allow generic method
15248         definitions here, since they may appear in an `.override'; see
15249         gen-98/gen-99 for an example.
15250
15251 2004-11-11  Zoltan Varga  <vargaz@freemail.hu>
15252
15253         * icall.c (ves_icall_Type_GetField): Support BFLAGS_IgnoreCase. Fixes
15254         #69365.
15255
15256         * marshal.c (mono_string_to_ansibstr): Make g_error messages more
15257         descriptive.
15258
15259 2004-11-11  Martin Baulig  <martin@ximian.com>
15260
15261         * class.c (mono_class_setup_vtable): In an explicit interface
15262         implementation, the method name now includes the arity.
15263
15264 2004-11-10  Zoltan Varga  <vargaz@freemail.hu>
15265
15266         * object.c (mono_array_full_copy): Fix warning.
15267
15268 2004-11-10  Lluis Sanchez Gual  <lluis@novell.com>
15269
15270         * appdomain.c: Removed look_for_method_by_name(). Use the new method
15271         mono_class_get_method_from_name() instead.
15272         
15273         * class-internals.h: Added two new types of wrappers. 
15274         Added MonoRemotingTarget enum. Added new trampoline function type, which
15275         takes an additional MonoRemotingTarget value as parameter, so it is
15276         possible to request a trampoline for a specific target.
15277         
15278         * class.c: Added new mono_class_get_method_from_name() method.
15279         
15280         * class.h: In MonoRemoteClass, we can have now to vtables, one for
15281         general remoting sinks and one specific for cross domain calls.
15282         
15283         * debug-helpers.c: Added new wrapper names.
15284         
15285         * icall.c: Use the new method mono_remote_class_vtable() to get the vtable
15286         of a remote class.
15287         
15288         * image.c: Porperly delete value objects form the remoting invoke hashtable.
15289         
15290         * marshal.c: Added mono_marshal_get_xappdomain_invoke(), which together
15291         with several other methods (mono_marshal_get_xappdomain_dispatch,
15292         mono_marshal_get_xappdomain_target, mono_marshal_get_serialize_exception,
15293         and others) can generate a fast remoting wrapper for cross domain calls.
15294         More information can be found in docs/remoting.
15295         Other changes: Removed mono_find_method_by_name, and used
15296         mono_class_get_method_from_name instead.
15297         Remoting wrappers are now stored in a MonoRemotingMethods struct, which
15298         is stored in the remoting invoke hashtable.
15299         
15300         * marshal.h: published the new method for getting the xdomain wrapper,
15301         and also added a method for getting the adequate wrapper for a given
15302         method and target.
15303         
15304         * object-internals.h, object.c: Added a couple of methods for capying and
15305         cloning arrays.
15306         Modified mono_install_remoting_trampoline, which takes the new remoting
15307         trampoline that has a remoting target as parameter.
15308         mono_class_proxy_vtable now also takes a remoting target as parameter, and
15309         will return the most suitable vtable for the target.
15310         Added mono_remote_class_vtable, which returns the vtable of a remote class
15311         (which can be the normal remoting vtable or the xdomain vtable).
15312         
15313         * threads.c: the xdomain invoke and dispatch wrappers must also be
15314         protected against interruptions.
15315
15316 2004-11-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15317
15318         * icall.c: use memmove in BlockCopyInternal when the source and
15319         destination arrays are the same.
15320
15321 2004-11-09  Martin Baulig  <martin@ximian.com>
15322
15323         * class-internals.h (MonoGenericContainer): Removed `method' and
15324         `signature', replaced them with `is_method' and `is_signature'
15325         flags.  Added `context'.
15326
15327         * loader.c (method_from_methodspec): Take a `MonoGenericContext *'
15328         instead of a `MonoGenericContainer *'.
15329
15330         * metadata.c (mono_metadata_generic_param_equal): Removed the hack
15331         for dynamic type parameters.
15332         (mono_metadata_load_generic_params): Setup `container->context'.
15333
15334         * reflection.c (mono_reflection_setup_generic_class): Setup
15335         `tb->generic_container->context'.
15336         (do_mono_reflection_bind_generic_parameters): Use
15337         mono_class_inflate_generic_type() to correctly inflate types,
15338         rather than using our own hack just for MONO_TYPE_VAR.
15339
15340 2004-11-09  Martin Baulig  <martin@ximian.com>
15341
15342         * class.c (mono_class_inflate_generic_method): Small fix; don't
15343         crash here.
15344
15345         * icall.c
15346         (ves_icall_MonoType_GetGenericArguments): Don't ignore `byref' types.
15347         (ves_icall_Type_get_IsGenericTypeDefinition): Likewise.
15348         (ves_icall_Type_GetGenericTypeDefinition_impl): Likewise.
15349         (ves_icall_Type_BindGenericParameters): Likewise.
15350         (ves_icall_Type_get_IsGenericInstance): Likewise.
15351         (ves_icall_Type_GetGenericParameterPosition): Likewise.
15352         (ves_icall_MonoType_get_HasGenericArguments): Likewise.
15353         (ves_icall_MonoType_get_IsGenericParameter): Likewise.
15354         (ves_icall_MonoType_get_DeclaringMethod): Likewise.
15355
15356 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
15357
15358         * assembly.c (mono_assembly_names_equal): Reenable the comparison of
15359         assembly versions and public key tokens. Fixes #69113.
15360
15361 Tue Nov 9 17:34:05 CET 2004 Paolo Molaro <lupus@ximian.com>
15362
15363         * metadata.c: fix bug introduced with the type cache changes
15364         on 2004-11-06.
15365
15366 Tue Nov 9 17:26:29 CET 2004 Paolo Molaro <lupus@ximian.com>
15367
15368         * metadata.h, metadata.c, domain-internals.h, marshal.c: include
15369         the MonoClass pointer instead of the token in exception clauses.
15370         * reflection.c: updates for the above and make the code not depend
15371         on the structure of MonoExceptionClause.
15372
15373 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
15374
15375         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15376         Add support for dynamic assemblies. Fixes #69114.
15377
15378         * loader.c (mono_method_get_header): Handle icalls and pinvoke methods.
15379
15380 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
15381
15382         * class-internals.h (MonoMethod): Move addr to MonoMethodPInvoke
15383         since most only those methods use it. the code member of
15384         MonoMethodPInvoke was dead, so that can be removed too. Also,
15385         remove inline_count (again, not used), and move slot so that it
15386         can share bits with some other flags. This saves 8 bytes in the
15387         structure and gives us about 50 kb back for mcs helloworld.cs
15388
15389         * *.[ch]: Do naming changes for the above.
15390
15391         * loader.c (mono_method_get_header): Lazily init the header
15392         on first access.
15393         (mono_get_method_from_token): don't init the header here
15394         (mono_free_method): the header may never be allocated
15395
15396         Overall, this saves 150 kb of unmanaged allocations
15397         for mcs helloworld.cs. That accounts for 10% of the unmanaged
15398         memory at runtime.
15399         
15400         * loader.c, loader.h (mono_method_get_header): new accessor.
15401
15402         * *.[ch]: use the above method. Prepares us to lazily load
15403         the header.
15404
15405         * *.[ch]: Clean up all the pesky warnings. gcc now only gives
15406         three warnings, which are actual bugs (see 69206).
15407
15408         * class-internals.h (MonoMethod): Remove remoting_tramp. It is
15409         unused. Saves a cool 4 bytes / method.
15410
15411 2004-11-06  Ben Maurer  <bmaurer@ximian.com>
15412
15413         * metadata.c (builtin_types): Add types for System.Object here.
15414         (mono_metadata_parse_type_full): Cache MonoType*'s that are
15415         for a class or valuetype from klass->this_arg or klass->byval_arg.
15416
15417         On mcs for a hello world, this gets us down from 21836 MonoType's
15418         to 14560.
15419
15420         (mono_metadata_free_type): Account for the above change.
15421
15422 2004-11-06  Zoltan Varga  <vargaz@freemail.hu>
15423
15424         * appdomain.c (ves_icall_System_AppDomain_GetData): Throw an 
15425         exception instead of asserting if name is null.
15426         (ves_icall_System_AppDomain_GetData): Ditto.
15427
15428 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
15429
15430         (ves_icall_get_enum_info): Avoid crash when called on a non-finished
15431         EnumBuilder.
15432
15433         * icall.c (ves_icall_System_Reflection_Assembly_GetEntryAssembly): 
15434         Return NULL when the domain does not have entry_assembly set.
15435
15436         * icall.c (ves_icall_System_Reflection_Assembly_GetFilesInternal): 
15437         Add a 'resource_modules' argument.
15438         (ves_icall_type_GetTypeCode): Fix typecode of byref types.
15439
15440         * reflection.c (mono_reflection_create_runtime_class): Move setting
15441         of wastypebuilder here, so mono_get_type_object () returns a MonoType
15442         for enums too.
15443
15444         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi): Return NULL here instead of an empty string to match MS behavior.
15445         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAnsi_len):
15446         Throw an ArgumentNullException if 'ptr' is null.
15447
15448         * appdomain.c (mono_domain_assembly_search): Avoid matching dynamic
15449         assemblies here. Fixes #69020.
15450
15451 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
15452
15453         * reflection.c (build_compressed_metadata): Fix the previous patch for
15454         big endian systems.  GUINT32_FROM_LE isn't needed on strlen and was overwriting
15455         the stack.
15456
15457 2004-11-04  Zoltan Varga  <vargaz@freemail.hu>
15458
15459         * assembly.c (mono_assembly_names_equal): Allow a match if one of
15460         the cultures is false. Fixes #69090.
15461
15462         * reflection.c (build_compressed_metadata): Fix invalid memory read 
15463         detected by valgrind.
15464         
15465         * reflection.c (mono_reflection_get_type): Avoid triggering a 
15466         TypeResolve multiple times for the same type. Fixes #65577.
15467
15468 2004-11-04  Ben Maurer  <bmaurer@ximian.com>
15469
15470         * marshal.c: Avoid using ldftn to call managed functions. It is
15471         much slower than just a call.
15472
15473         * reflection.c (mono_module_get_object): free the basename we
15474         allocate here from glib.
15475         
15476         * reflection.c (ensure_runtime_vtable): make sure to free
15477         overrides.  Also, we were allocating an array of MonoMethod not an
15478         array of MonoMethod*.
15479
15480         * marshal.c (mono_marshal_get_stelemref): do a mono_mb_free here.
15481
15482         * image.c (mono_image_close): free image->guid here.
15483
15484 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
15485
15486         * reflection.c: Fix some spec conformance issues with the PE file
15487         structures so mcs compiled apps run on the Net 2.0 beta.
15488
15489 2004-11-01  Zoltan Varga  <vargaz@freemail.hu>
15490
15491         * string-icalls.c (ves_icall_System_String_ctor_encoding): 
15492         Implement this. Fixes #67264.
15493
15494         * debug-helpers.h debug-helpers.c marshal.c: Move 
15495         mono_find_method_by_name to debug-helpers.c.
15496
15497 2004-10-31  Zoltan Varga  <vargaz@freemail.hu>
15498
15499         * object.c (mono_release_type_locks): type_initialization_hash is
15500         a GHashTable.
15501
15502         * reflection.c object.c object-internals.h: Fix warnings.
15503
15504         * icall.c (ves_icall_Type_GetPropertiesByName): Handle properties
15505         without accessors. Fixes #61561.
15506
15507         * appdomain.c (ves_icall_System_AppDomain_createDomain): Inherit
15508         application base from the root domain if not set. Fixes #65641.
15509         (mono_runtime_init): Fix warning.
15510
15511 2004-10-29 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15512
15513         * appdomain.c: call mono_thread_pool_init.
15514         * threadpool.[ch]: new mono_thread_pool_init that sets the max. number
15515         of worker threads based on the number of CPUs and the environment
15516         variable MONO_THREADS_PER_CPU if present. The defaults are 50 (25)
15517         for non-windows (windows) systems.
15518
15519 2004-10-27  Chris Toshok  <toshok@ximian.com>
15520
15521         * mono-debug-debugger.c (write_class): don't call mono_class_init
15522         here, as even with the check for (!klass->init_pending), we get
15523         into a situation where we're hitting cycles in class
15524         initialization.  Fixes #68816.
15525
15526 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
15527
15528         * image.c: Avoid overwriting values in the loaded_images_hash when an
15529         assembly is loaded multiple times. Fixes #61152.
15530
15531         * assembly.c (mono_assembly_names_equal): Compare the cultures as well,
15532         so multiple satellite assemblies for the same name can be loaded.
15533         Fixes #68259.
15534
15535         * mono_domain_assembly_preload: Actually return the loaded assembly, 
15536         not NULL.
15537
15538         * icall.c (ves_icall_type_is_subtype_of): Fix this for byref types.
15539         (ves_icall_type_is_assignable_from): Ditto. Fixes #68582.
15540
15541         * gc.c (finalize_domain_objects): Call GC_invoke_finalizers () so
15542         pending finalizers are not invoked after the appdomain has been 
15543         unloaded. Fixes #67862.
15544
15545 2004-10-22  Martin Baulig  <martin@ximian.com>
15546
15547         * mono-debug-debugger.c
15548         (mono_debugger_runtime_invoke): Don't box valuetypes.
15549
15550 2004-10-22  Chris Toshok  <toshok@ximian.com>
15551
15552         * mono-debug-debugger.c (do_write_class): handle .cctors too, and
15553         don't hide private methods.
15554
15555 2004-10-22  Sebastien Pouliot  <sebastien@ximian.com>
15556
15557         * icall.c: Allows the runtime to "share" (when known) the public key
15558         token of an assembly. This avoid the need to recalculate the token 
15559         (from the public key) in managed code.
15560
15561 2004-10-21  Chris Toshok  <toshok@ximian.com>
15562
15563         * debug-helpers.c (append_class_name): argh, revert last patch.
15564         
15565 2004-10-21  Chris Toshok  <toshok@ximian.com>
15566
15567         * debug-helpers.c (append_class_name): use '+' as the delimiter,
15568         not '/', so that it matches what the debugger uses to look up
15569         methods.
15570
15571 2004-10-21  Martin Baulig  <martin@ximian.com>
15572
15573         * mono-debug-debugger.c (mono_debugger_throw_exception): New
15574         public method; this is called each time an exception is thrown and
15575         allows the debugger to use exception catch points.
15576
15577 2004-10-21  Martin Baulig  <martin@ximian.com>
15578
15579         * mono-debug-debugger.c (mono_debugger_handle_exception): Write
15580         the stack pointer and the exception object in some struct and pass
15581         that to the debugger.
15582
15583 2004-10-21  Chris Toshok  <toshok@ximian.com>
15584
15585         * mono-debug-debugger.c (do_write_class): add instance/static
15586         event support.  We don't expose "raise" or "other" yet.
15587         (event_is_static): new method.
15588
15589 2004-10-20  Bernie Solomon  <bernard@ugsolutions.com>
15590
15591         * mono-debug-debugger.c
15592         (mono_debugger_handle_exception): Remove
15593         bogus return value for fussy compilers.
15594
15595 2004-10-20  Martin Baulig  <martin@ximian.com>
15596
15597         * mono-debug-debugger.c
15598         (mono_debugger_unhandled_exception): Added `gpointer stack' argument.
15599         (mono_debugger_handled_exception): Likewise.
15600
15601 2004-10-20  Martin Baulig  <martin@ximian.com>
15602
15603         * mono-debug-debugger.h (MonoDebuggerEvent): Added
15604         MONO_DEBUGGER_EVENT_EXCEPTION.
15605
15606         * mono-debug-debugger.c (mono_debugger_handle_exception): New
15607         public function to send the debugger a notification for an
15608         exception and inform it about a catch/finally clause.
15609
15610 2004-10-19  Zoltan Varga  <vargaz@freemail.hu>
15611
15612         * marshal.c, icall.c: Applied patch from Alexandre Rocha Lima e
15613         Marcondes (alexandremarcondes@psl-pr.softwarelivre.org). Really
15614         fix 2.95 build. 
15615
15616         * icall.c (ves_icall_InternalExecute): Fix build for gcc-2.95.
15617
15618 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
15619
15620         * marshal.c (emit_marshal_object): Fix freeing of memory when a reference type is
15621         marshalled as [In,Out]. Fixes #58325.
15622
15623 2004-10-14  Zoltan Varga  <vargaz@freemail.hu>
15624
15625         * reflection.c (mono_method_body_get_object): Implement some fields.
15626
15627 2004-10-12  Martin Baulig  <martin@ximian.com>
15628
15629         * reflection.c (mono_reflection_bind_generic_parameters): Small
15630         fix, correctly retrieve our parent from a generic instance.
15631
15632 2004-10-12  Martin Baulig  <martin@ximian.com>
15633
15634         * metadata.c (mono_metadata_generic_param_equal): We always have
15635         an owner.
15636
15637         * class.c
15638         (mono_class_from_generic_parameter): We need to have an owner.
15639         (my_mono_class_from_generic_parameter): Likewise.
15640
15641         * reflection.c (mono_reflection_setup_generic_class): Renamed to
15642         mono_reflection_create_generic_class() and added a new
15643         mono_reflection_setup_generic_class().  
15644         (mono_reflection_initialize_generic_param): If we're a nested
15645         generic type and inherited from the containing class, set our
15646         owner to the outer class.
15647
15648 2004-10-11  Zoltan Varga  <vargaz@freemail.hu>
15649
15650         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodBodyInternal): New icall.
15651
15652         * reflection.c (mono_method_body_get_object): New function to create
15653         a MethodBody object.
15654
15655         * object-internals.h object.h: Add MonoReflectionMethodBody structure.
15656
15657 2004-10-11  Martin Baulig  <martin@ximian.com>
15658
15659         * metadata.c (_mono_metadata_type_equal): Renamed to
15660         do_mono_metadata_type_equal() and made static.
15661
15662 2004-10-11  Martin Baulig  <martin@ximian.com>
15663
15664         * appdomain.c: Bump corlib version number to 28.
15665
15666 2004-10-10  Martin Baulig  <martin@ximian.com>
15667
15668         * class-internals.h
15669         (MonoGenericInst): Added `MonoGenericContainer *container'.
15670         (MonoGenericMethod): Likewise.
15671         (MonoGenericContext): Likewise.
15672         (MonoGenericParam): Added `MonoGenericContainer *owner'.
15673
15674         * metadata.c
15675         (do_mono_metadata_parse_type): Added a `MonoGenericContainer *' argument.
15676         (do_mono_metadata_parse_generic_inst): Likewise.
15677         (mono_metadata_parse_type_full): New public method.  This is the actual
15678         mono_metadata_parse_type() implementation - with an additional
15679         `MonoGenericContainer *' argument.
15680         (mono_metadata_parse_array_full): Likewise.
15681         (mono_metadata_parse_signature_full): Likewise.
15682         (mono_metadata_parse_method_signature_full): Likewise.
15683         (mono_metadata_parse_mh_full): Likewise.
15684         (mono_type_create_from_typespec): Likewise.
15685         (mono_metadata_interfaces_from_typedef_full): New public method;
15686         this is similar to the other _full() methods, but we take a
15687         `MonoGenericContext *' since we have to pass it to mono_class_get_full().
15688         (mono_metadata_parse_generic_param): Take an additional
15689         `MonoGenericContainer *' argument and lookup the MonoGenericParam
15690         from that container.
15691         (mono_metadata_generic_param_equal): New static method to compare
15692         two type parameters.
15693         (_mono_metadata_type_equal): New static method; takes an
15694         additional `gboolean signature_only' argument - if true, we don't
15695         compare the owners of generic parameters.
15696         (mono_metadata_signature_equal): Call _mono_metadata_type_equal()
15697         with a TRUE argument - do a signature-only comparision.
15698
15699         * loader.c: Use the new _full() methods and pass the
15700         MonoGenericContainer to them.
15701
15702         * object-internals.h (MonoReflectionTypeBuilder): Added
15703         `MonoGenericContainer *generic_container' field.
15704         (MonoReflectionMethodBuilder): Likewise.
15705
15706 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
15707
15708         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): Special
15709         case initial images of dynamic assemblies.
15710
15711         * reflection.c (mono_image_basic_init): Set 'initial_image' field.
15712
15713         * metadata-internals.h (MonoDynamicImage): Add 'initial_image' field.
15714
15715         * reflection.c (mono_reflection_event_builder_get_event_info): Fix
15716         length of event->other array.
15717         (typebuilder_setup_events): Ditto.
15718
15719         * domain-internals.h (MonoDomain): Rename 'assemblies' hash table to
15720         'assembly_by_name' and add an 'assemblies' list.
15721
15722         * assembly.h assembly.c: Add a new search hook for determining whenever
15723         an assembly is already loaded. Use this instead of searching in the
15724         loaded_assemblies list.
15725
15726         * domain.c appdomain.c: Implement the new search hook so loaded 
15727         assemblies are now scoped by appdomain. Fixes #67727.
15728
15729 2004-10-07  Zoltan Varga  <vargaz@freemail.hu>
15730
15731         * threads.c (mono_thread_attach): Initialize synch_lock field so
15732         mono_thread_detach works again.
15733
15734         * loader.c (mono_lookup_pinvoke_call): Try the dllname prefixed with
15735         'lib' too. Fixes #63130.
15736
15737 2004-10-06  Jackson Harper  <jackson@ximian.com>
15738
15739         * culture-info-tables.h: regenerated.
15740
15741 2004-10-06  Zoltan Varga  <vargaz@freemail.hu>
15742
15743         * icall.c (ves_icall_Type_GetInterfaces): Include interfaces 
15744         implemented by other interfaces in the result. Fixes #65764.
15745         
15746         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15747         Handle unloadable modules without crashing.
15748
15749         * image.c (load_modules): Revert the previous patch since modules must
15750         have a fixed index inside the array.
15751         
15752         * image.c (load_modules): Don't include native modules in the modules
15753         array.
15754
15755 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
15756
15757         * reflection.h: Add param_defaults field.
15758
15759         * reflection.c: Add support for parameter defaults in dynamic methods.
15760         Fixes #64595.
15761
15762         * icall.c (ves_icall_MonoType_get_Namespace): Return NULL instead of
15763         an empty string when a type has no namespace. Fixes #64230.
15764
15765 2004-10-04  Sebastien Pouliot  <sebastien@ximian.com>
15766
15767         * tabledefs.h: Added "internal" security actions to support non-CAS
15768         permissions NonCasDemand, NonCasLinkDemand and NonCasInheritance. 
15769         Note: they do not seems to be used anymore in 2.0 (new metadata format)
15770
15771 2004-10-04  Zoltan Varga  <vargaz@freemail.hu>
15772
15773         * icall.c (ves_icall_InternalInvoke): Throw an exception when calling
15774         constructor of abstract class. Fixes #61689.
15775
15776 2004-10-04  Martin Baulig  <martin@ximian.com>
15777
15778         * class-internals.h (MonoGenericContainer): New type.
15779         (MonoMethodNormal): Replaced `MonoGenericParam *gen_params' with
15780         `MonoGenericContainer *generic_container'.
15781         (MonoClass): Replaced `gen_params' and `num_gen_params' with
15782         `MonoGenericContainer *generic_container'.
15783
15784         * metadata.c (mono_metadata_load_generic_params): Return a
15785         `MonoGenericContainer *' instead of a `MonoGenericParam *';
15786         removed the `num' argument.
15787
15788 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
15789
15790         * icall.c (ves_icall_System_Reflection_Module_GetPEKind): Add support
15791         for dynamic images.
15792
15793         * object-internals.h (MonoReflectionAssemblyBuilder): Add pe_kind and
15794         machine fields.
15795
15796         * metadata-internals.h (MonoDynamicImage): Add pe_kind and machine fields.
15797
15798         * reflection.c: Save pe_kind and machine values into the generated
15799         image file.
15800
15801         * appdomain.c: Bump corlib version number.
15802
15803         * object-internals.h: Reorganize layout of LocalBuilder.
15804
15805         * class-internals.h class.c (mono_class_get_implemented_interfaces): 
15806         New helper function.
15807
15808         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Return the
15809         created MonoType for dynamic types. Fixes #66180.
15810
15811 2004-10-02  Ben Maurer  <bmaurer@ximian.com>
15812
15813         * threadpool.c: the ares hashtable needs a critical section around it.
15814         this prevents some nasty segfaults
15815
15816 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
15817
15818         * process.c: Fixed alignments to 32 bits as casting to unsigned is unsafe
15819         on 64 bits platforms, patch by will@exomi.com (Ville-Pertti Keinonen), see
15820         bug 67324).
15821         
15822 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
15823
15824         * object-internals.h (MonoReflectionTypeBuilder): Add 'created' field.
15825         
15826 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
15827
15828         * image.c: Always canonicalize image file names, to avoid loading
15829         the same assembly twice when referenced using a relative path.
15830
15831 2004-09-30  Zoltan Varga  <vargaz@freemail.hu>
15832
15833         * marshal.h marshal.c icall.c: Fix bugs in previous patch.
15834
15835         * marshal.c marshal.h icall.c: Add GetDelegateForFunctionPointerInternal icall.
15836
15837         * marshal.c: Fix warnings.
15838
15839 2004-09-29  Geoff Norton  <gnorton@customerdna.com>
15840
15841         * marshal.c (mono_ftnptr_to_delegate): This method was improperly
15842         attempting to marshal the delegate_trampoline as the method_addr.
15843         This patch has a static hashtable of marshalled delegates so that 
15844         we can map delegate_trampoline addresses back to delegates.  This
15845         allows a delegate passed to managed code to be passed back into native
15846         code.  Fixes #67039
15847
15848 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15849
15850         * icall.c: Add GetFunctionPointerForDelegateInternal icall.
15851
15852         * reflection.c (method_encode_code): Align method headers properly.
15853         Fixes #66025.
15854
15855 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15856
15857         * marshal.c: In the runtime invoke wrapper, reset the abort
15858         exception if it is cached. This avoids the automatic rethrowal of 
15859         the exception after the catch of the wrapper. Also check for pending
15860         interruptions before calling the managed method. This is done using
15861         the new method emit_thread_force_interrupt_checkpoint, since the
15862         normal checkpoint method is ignored when running the invoke wrapper.
15863         * object.c: If the abort exception is rethrown, set the abort_exc
15864         field of the thread, so it will be rethrown aftere every catch.
15865         * threadpool.c: Only run an interruption checkpoint if what has been
15866         requested is a stop of the thread (aborts will be ignored).
15867         * threads.c: By default, a thread will now never be interrumped while
15868         running the runtime invoke wrapper (this ensures that runtime_invoke
15869         will always return to the caller if an exception pointer is provided).
15870         There is a new special method mono_thread_force_interruption_checkpoint()
15871         to force an interruption checkpoint even if running a protected
15872         wrapper, which is used by the same runtime invoke wrapper to do a check
15873         at a safe point.
15874
15875 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
15876
15877         * object.c, object-internals.h: Implemented mono_release_type_locks,
15878         which releases the cctor locks held by a thread.
15879         * threads.c, threads.h: In thread_cleanup, release cctor locks held
15880         by a thread. Added mono_thread_exit() method to be used to safely stop
15881         a thread.
15882
15883 2004-09-28  Raja R Harinath  <rharinath@novell.com>
15884
15885         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal): 
15886         Move null check before dereference.  Avoid indexing beyond the end
15887         of the 'modules' array.
15888
15889 2004-09-28  Raja R Harinath  <rharinath@novell.com>
15890
15891         * metadata-internals.h (MonoImage): Add module_count field.
15892         * image.c (load_modules): Set image->module_count.
15893         (mono_image_load_file_for_image): Use image->module_count.
15894         * reflection.c (mono_image_load_module): Append to image->modules array 
15895         of dynamic assembly.
15896         (mono_module_get_object): Fix loop to actually increment index.
15897         Use image->module_count.
15898         * assembly.c (mono_assembly_load_references): Use image->module_count.
15899         * icall.c (ves_icall_System_Reflection_Assembly_GetModulesInternal):
15900         Likewise.
15901
15902 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
15903
15904         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): 
15905         Avoid assert on generic types.
15906
15907 2004-09-26  Zoltan Varga  <vargaz@freemail.hu>
15908
15909         * icall.c (ves_icall_System_Reflection_FieldInfo_GetUnmanagedMarshal): New icall.
15910
15911         * reflection.c (mono_param_get_objects): Fill out MarshalAsImpl field.
15912
15913         * reflection.c (mono_reflection_marshal_from_marshal_spec): New 
15914         function to convert a MarshalSpec structure to its managed counterpart.
15915
15916         * reflection.c: Fix warnings.
15917         
15918         * object-internals.h (MonoReflectionParameter): Add MarshalAsImpl
15919         field.
15920
15921         * icall.c (mono_create_icall_signature): Fix build.
15922
15923 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
15924
15925         * icall.c: Add MakePointType icall.
15926
15927         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage): Fix
15928         warnings.
15929
15930 2004-09-25 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15931
15932         * threadpool.c: reuse allocated slots in the queue.
15933
15934 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
15935
15936         * object-internals.h (MonoReflectionDllImportAttribute): New structure.
15937
15938         * icall.c: Add new icalls for GetDllImportAttribute and GetFieldOffset.
15939
15940         * reflection.h reflection.c (mono_reflection_get_custom_attrs): Revert
15941         previous change.
15942
15943         * tabledefs.h: Add constants for pinvoke attributes BestFit and
15944         ThrowOnUnmappableChar.
15945
15946         * icall.c (ves_icall_Type_GetPacking): New icall.
15947
15948 2004-09-24  Martin Baulig  <martin@ximian.com>
15949
15950         * icall.c (ves_icall_Type_GetGenericParameterConstraints): New interncall.
15951
15952 2004-09-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
15953
15954         * appdomain.c:
15955         (mono_domain_set): allow setting a domain that is being unloaded.
15956         (mono_domain_unload): invoke the DomainUnload callbacks in the domain
15957         being unloaded.
15958
15959 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15960
15961         * icall.c reflection.h reflection.c: Add a 'pseudo_attrs' argument to
15962         the GetCustomAttributes icall.
15963
15964 2004-09-23  Martin Baulig  <martin@ximian.com>
15965
15966         * object-internals.h (MonoReflectionGenericParam): Replaced
15967         'has_ctor_constraint', `has_reference_type' and `has_value_type'
15968         with `guint32 attrs'.
15969
15970 2004-09-23  Martin Baulig  <martin@ximian.com>
15971
15972         * icall.c (ves_icall_Type_GetGenericParameterAttributes): New interncall.
15973
15974 2004-09-23  Martin Baulig  <martin@ximian.com>
15975
15976         * object-internals.h (GenericParameterAttributes): New enum.
15977
15978 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
15979
15980         * object-internals.h (MonoEventInfo): Add 'other_methods' field.
15981         
15982         * class.c (init_events): Fill out event->other field.
15983
15984         * class.c: Fix warnings.
15985
15986         * icall.c (ves_icall_get_event_info): Fill out 'other_methods' field.
15987
15988 Wed Sep 22 19:04:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
15989
15990         * class-internals.h, icall.c, loader.c, loader.h: added a faster stack
15991         walk which doesn't supply the IL offset.
15992
15993 2004-09-22  Martin Baulig  <martin@ximian.com>
15994
15995         * reflection.c (mono_reflection_setup_internal_class): If we're
15996         System.ValueType, System.Object or System.Enum, set
15997         `klass->instance_size' and create the vtable.
15998         (mono_reflection_create_internal_class): If we're an enum type,
15999         get the base class from our current corlib.
16000
16001 2004-09-22  Zoltan Varga  <vargaz@freemail.hu>
16002
16003         * reflection.h (MonoResolveTokenError): New type.
16004
16005         * icall.c (ves_icall_System_Reflection_Module_ResolveMemberToken): New
16006         icall.
16007
16008         * icall.c: Add an 'error' argument to the ResolveToken icalls.
16009
16010 2004-09-22  Lluis Sanchez Gual  <lluis@novell.com>
16011
16012         * icall.c: Support ContextBoundObject proxies in ves_icall_InternalExecute.
16013         Support also calling constructors, but only for already allocated objects.
16014
16015 2004-09-17  Geoff Norton <gnorton@customerdna.com>
16016
16017         * reflection.c (type_get_qualified_name): If the klass is null
16018         return the typename to avoid a NullRefEx.
16019         (encode_cattr_value): Get the qualified name of the boxed type,
16020         not the underlying enumtype.  Fixes #62984.
16021
16022 2004-09-21  Zoltan Varga  <vargaz@freemail.hu>
16023
16024         * marshal.c: Fix problems with previous checkin.
16025
16026 2004-09-21    <vargaz@freemail.hu>
16027
16028         * marshal.h marshal.c icall.c: Add new icalls for Alloc/FreeHGlobal. Change the
16029         existing mono_marshal_alloc/free functions to use CoTaskMemAlloc/Free under windows.
16030
16031         * marshal.c: Allocate marshaller memory using mono_marshal_alloc/free.
16032
16033 2004-09-21  Geoff Norton <gnorton@customerdna.com>
16034
16035         * icall.c (ves_icall_MonoType_GetElementType): GetElementType
16036         should only return a type for pointers, arrays, and passbyref types.
16037         Fixes bug #63841.
16038
16039 2004-09-21  Martin Baulig  <martin@ximian.com>
16040
16041         * domain.c (mono_debugger_check_runtime_version): New public
16042         function.
16043
16044         * icall.c (ves_icall_MonoDebugger_check_runtime_version): New icall.    
16045
16046 2004-09-20  Sebastien Pouliot  <sebastien@ximian.com>
16047
16048         * reflection.c: Added missing sort to the declarative security 
16049         attributes table. MS implementation stops seeing the attributes if the
16050         token number regress in the table (as shown by ildasm and permview).
16051
16052 2004-09-20  Zoltan Varga  <vargaz@freemail.hu>
16053
16054         * object-internals.h (MonoReflectionModule): Add 'token' field.
16055         
16056         * reflection.c (mono_reflection_get_token): Add support for Module
16057         and Assembly.
16058         (mono_module_get_object): Set 'token' field.
16059         (mono_module_file_get_object): Set 'token' field.
16060
16061         * icall.c: Add new Assembly and Module icalls.
16062
16063         * appdomain.c: Bump corlib version.
16064
16065 2004-09-19  Zoltan Varga  <vargaz@freemail.hu>
16066
16067         * loader.h loader.c class.h class.c: Add helper functions for obtaining
16068         tokens of metadata objects.
16069
16070         * reflection.h reflection.c (mono_reflection_get_token): New function
16071         to obtain the token of a metadata object.
16072
16073         * icall.c: Add icalls for MetadataToken and ModuleHandle methods.
16074
16075 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
16076
16077         * loader.c (mono_lookup_pinvoke_call): Try the underscore prefixed name as well.
16078         
16079         * loader.c (mono_lookup_pinvoke_call): Add support for stdcall name mangling.
16080
16081 2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
16082
16083         * appdomain.c: Bumped MONO_CORLIB_VERSION to 25.
16084         * object-internals.h: Added 3 MonoArray* members to MonoReflection
16085         AssemblyBuilder to access the permissions set in the class lib.
16086         * reflection.c: Added security attributes encoding step in 
16087         mono_image_build_metadata.
16088         * tabledefs.h: Added new security actions defined in 2.0:
16089         LinkDemandChoice, InheritanceDemandChoice and DemandChoice.
16090
16091 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
16092
16093         * threads.c: Fixed SET_CURRENT_OBJECT macros, they were ignoring the
16094         macro parameter.
16095
16096 2004-09-16  Lluis Sanchez Gual  <lluis@novell.com>
16097  
16098         * locales.c: nullify the ICU_collator member of CompareInfo when it is
16099           finalized. There where random SIGSEVs at program termination, when
16100           an object being finalized was trying to do a string comparison and
16101           the current culture was already finalized.
16102  
16103 2004-09-16 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16104
16105         * threads.c: call thread_cleanup before finishing the thread if we get
16106         there.
16107
16108 2004-09-16  Zoltan Varga  <vargaz@freemail.hu>
16109
16110         * appdomain.c (ves_icall_System_AppDomain_createDomain): Load all
16111         assemblies from the parent. Fixes #65665.
16112
16113 2004-09-15  Zoltan Varga  <vargaz@freemail.hu>
16114
16115         * metadata.c (mono_metadata_parse_type): Fix parsing of custom
16116         modifiers.
16117
16118 2004-09-14  Bernie Solomon  <bernard@ugsolutions.com>
16119
16120         * reflection.h: add prototype for mono_get_dbnull_object
16121         * reflection.c: add prototypes for get_default_param_value_blobs 
16122         and mono_get_object_from_blob for fussier compilers
16123
16124 2004-09-14  Lluis Sanchez Gual  <lluis@novell.com>
16125  
16126         * object.c: Added a "done" flag to TypeInitializationLock. This avoids
16127         false deadlock checks in class initialization.
16128  
16129 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
16130
16131         * image.c (mono_image_addref): Fix comment.
16132
16133         * metadata.c (mono_metadata_parse_type): Avoid memory allocations if
16134         possible.
16135
16136 2004-09-12  Jambunathan K  <kjambunathan@novell.com>
16137
16138         * reflection.c (mono_param_get_objects): Modified to return
16139         ParameterInfo.DefaultValue object.
16140
16141         (get_default_param_value_blobs):
16142         (mono_get_object_from_blob):
16143         (mono_get_dbnull_object): New helper routines. 
16144
16145         * object.c (mono_get_constant_value_from_blob): New helper routine
16146         carved out from get_default_field_value ()
16147
16148         * object-internals.h (mono_get_constant_value_from_blob): Added
16149         function declaration.
16150
16151 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
16152
16153         * assembly.c assembly.h icall.c class.c appdomain.c: Lazily load 
16154         referenced assemblies. Fixes #62135.
16155
16156         * exception.h exception.c (mono_get_exception_file_not_found2): New
16157         helper function.
16158
16159 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
16160
16161         * class.h class.c: Add mono_type_get_underlying_type ().
16162
16163 2004-09-09  Geoff Norton <gnorton@customerndna.com>
16164
16165         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes):
16166         Fix GetTypes() to support dynamically created assemblies.
16167
16168 2004-09-09  Zoltan Varga  <vargaz@freemail.hu>
16169
16170         * reflection.c (reflection_methodbuilder_to_mono_method): Remove TODO.
16171         
16172         * reflection.c (reflection_methodbuilder_to_mono_method): Fix bug in
16173         previous patch.
16174
16175         * reflection.h reflection.c loader.c: Allow dynamic construction of
16176         pinvoke methods. Fixes #65571.
16177         
16178         * reflection.c (mono_reflection_get_type): Revert previous change since
16179         it causes regressions.
16180
16181 2004-09-08  Martin Baulig  <martin@ximian.com>
16182
16183         * class.c (class_compute_field_layout): Don't call
16184         mono_class_layout_fields() for open generic instances.
16185
16186 2004-09-08 Bernie Solomon <bernard@ugsolutions.com>
16187         * threads.c appdomain.c: fix typo in GC macro
16188
16189 2004-09-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16190
16191         * threads.c: don't call mono_thread_detach() in start_wrapper(),
16192         avoiding a possible hang in GetCurrentThreadId(0). Fixes bug #65379.
16193
16194 2004-09-08  Zoltan Varga  <vargaz@freemail.hu>
16195
16196         * image.c (mono_image_close): Applied patch from 
16197         vasantha.paulraj@honeywell.com (Vasantha selvi). Fix crash when an
16198         assembly is loaded multiple times from data.
16199         
16200         * image.c (mono_image_open): Fix warning.
16201
16202 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16203
16204         * reflection.h reflection.c icall.c: Only call TypeResolve handlers
16205         once. Fixes #58334.
16206         
16207         * reflection.c (mono_reflection_create_runtime_class): Initialize
16208         klass->nested_classes. Fixes #61224.
16209
16210 Tue Sep 7 14:35:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16211
16212         * threads.c: sched_yield() on exit, to allow threads to quit.
16213
16214 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16215
16216         * object.c (mono_unhandled_exception): Remove leftover debug code.
16217
16218 2004-09-07  Atsushi Enomoto  <atsushi@ximian.com>
16219
16220         * appdomain.c, threads.c : don't use GC_CreateThread when with-gc=none
16221
16222 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
16223
16224         * marshal.c (emit_marshal_array): Really null terminate string arrays.
16225         
16226         * marshal.c (emit_marshal_string): Fix freeing of unicode strings.
16227
16228 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16229
16230         * marshal.c (emit_marshal_array): Null terminate string arrays.
16231         
16232         * marshal.c (raise_auto_layout_exception): Fix warning.
16233
16234         * reflection.c (mono_param_get_objects): Initialize the default value
16235         with DBNull.Value, not null. Fixes #62123.
16236
16237 2004-09-01  Miguel de Icaza  <miguel@ximian.com>
16238
16239         * marshal.c (mono_marshal_get_managed_wrapper): Remove FIXME and
16240         throw an exception with a cute explanation.
16241
16242 2004-09-06  Dick Porter  <dick@ximian.com>
16243
16244         * process.c (ves_icall_System_Diagnostics_Process_Start_internal):
16245         Close the new process's thread handle, as we don't use it.  The
16246         handle stays around forever otherwise.
16247
16248 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16249
16250         * object.c (arith_overflow): Fix warning.
16251
16252         * reflection.c (mono_image_get_methodref_token): Do not emit unmanaged
16253         calling conventions in method refs. Fixes #65352.
16254
16255         * reflection.c: Fix warnings.
16256
16257 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
16258
16259         * icall.c: Add a new icall for Array.Clear
16260
16261 2004-09-06 Ben Maurer  <bmaurer@users.sourceforge.net>
16262
16263         * object.c: When allocating an array, we have to throw
16264         an overflow exception if any of the lengths are < 0.
16265
16266 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
16267
16268         * marshal.h marshal.c: Free unmanaged memory allocated by managed code
16269         properly. Also move implementation of string array marshalling to 
16270         managed code. Fixes #42316.
16271
16272 2004-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16273
16274         * assembly.c: provide more information when loading an assembly fails.
16275
16276 2004-09-04 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16277
16278         * filewatcher.c: don't expect the development fam package to be
16279         installed.
16280
16281 2004-09-03  Zoltan Varga  <vargaz@freemail.hu>
16282
16283         * marshal.c: Make a copy of the signature cookie since it will be
16284         freed by the caller.
16285         
16286         * marshal.c (mono_delegate_to_ftnptr): Fix bug in previous patch.
16287
16288         * marshal.c (mono_delegate_to_ftnptr): Fix memory leaks.
16289
16290         * metadata.c (mono_metadata_free_marshal_spec): New function to free
16291         marshal specs.
16292
16293         * marshal.c: More refactoring.
16294         
16295         * marshal.c: Refactor the mono_marshal_get_native_wrapper function into
16296         smaller functions.
16297
16298 2004-09-03  Lluis Sanchez Gual  <lluis@novell.com>
16299
16300         * object.c: In mono_message_invoke, fill the output parameter array after
16301           calling the managed method (it was done before the call). This fixes
16302           bug #59299.
16303
16304 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16305
16306         * marshal.c (mono_marshal_alloc): Return a valid pointer on size 0
16307         as well.
16308
16309 2004-09-02  Martin Baulig  <martin@ximian.com>
16310
16311         * class.c (mono_class_instance_size): Don't allow generic type
16312         definitions or open generic instances.
16313         (mono_class_array_element_size): If we're a value type, call
16314         mono_class_instance_size() on the original class.
16315
16316         * metadata.c (mono_type_size, mono_type_stack_size): Correctly
16317         handle generic instances.
16318
16319         * mono-debug-debugger.c (write_type): Handle generic instances
16320         like classes.
16321
16322 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
16323
16324         * marshal.c (mono_marshal_alloc): Raise an OutOfMemory exception if
16325         the allocation request fails. Fixes #65089.
16326
16327         * object.c (mono_runtime_free_method): Do not call mono_free_method.
16328         
16329         * object.c (mono_runtime_free_method): New function to free a dynamic
16330         method.
16331
16332         * marshal.c (mono_delegate_free_ftnptr): New function to free the
16333         delegate trampoline.
16334
16335         * marshal.c (mono_marshal_get_managed_wrapper): Mark managed wrapper
16336         with hasthis as dynamic,
16337
16338         * icall.c (ves_icall_System_Delegate_FreeTrampoline): New icall.
16339
16340         * domain.c (mono_jit_info_table_remove): New function to remove an
16341         entry from the jit info table.
16342
16343         * class-internals.h (MonoMethod): Add 'dynamic' field.
16344
16345         * loader.c: Fix warnings.
16346
16347 2004-09-01  Martin Baulig  <martin@ximian.com>
16348
16349         * mono-debug.c, debug-mono-symfile.c: Use mono_loader_lock()
16350         instead of mono_debugger_lock() because the latter one is a no-op
16351         unless running in the debugger.
16352
16353 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
16354
16355         * class.c (class_compute_field_layout): Classes with auto-layout or
16356         reference fields are not blittable.
16357         
16358 2004-09-01  Dick Porter  <dick@ximian.com>
16359
16360         * icall.c (ves_icall_System_Reflection_Assembly_get_location): Use
16361         mono_image_get_filename() to get the assembly location.
16362
16363         * icall.c:
16364         * metadata.h: Fix compile warnings
16365
16366 2004-09-01  Zoltan Varga  <vargaz@freemail.hu>
16367
16368         * class.c (class_compute_field_layout): System.Object is blittable.
16369
16370         * marshal.c (mono_marshal_get_native_wrapper): Pass blittable classes
16371         as in/out. Fixes #59909.
16372
16373 2004-09-01  Martin Baulig  <martin@ximian.com>
16374
16375         * metadata.h (MONO_TYPE_ISREFERENCE): Call
16376         mono_metadata_generic_inst_is_valuetype() if we're a generic
16377         instance to check whether our underlying type is a reference type.
16378
16379 2004-09-01  Martin Baulig  <martin@ximian.com>
16380
16381         * metadata.c (mono_type_size): If we're a generic instance, call
16382         mono_class_value_size() for value types.
16383
16384 2004-08-31  Zoltan Varga  <vargaz@freemail.hu>
16385
16386         * marshal.c: Implement more custom marshalling functionality. Fixes
16387         #64915.
16388
16389 Tue Aug 31 17:55:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
16390
16391         * mono-debug.c, debug-mono-symfile.c: add some locking love.
16392
16393 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
16394
16395         * domain-internals.h domain.c: Add a per-domain jump trampoline hash.
16396
16397         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): Rename to ...Internal.
16398
16399         * icall.c: Fix some warnings.
16400
16401         * threads.c (abort_appdomain_thread): Fix unref errors.
16402         (mono_thread_current): Fix THREAD_DEBUG define.
16403
16404 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
16405
16406         * metadata.h (MONO_TYPE_ISSTRUCT): Fix warning.
16407
16408         * icall.c (ves_icall_System_Reflection_MethodBase_GetMethodFromHandle): New icall.
16409
16410 2004-08-28  Zoltan Varga  <vargaz@freemail.hu>
16411
16412         * marshal.c (mono_marshal_get_native_wrapper): Add support for byref 
16413         string arrays.
16414
16415 2004-08-28  Martin Baulig  <martin@ximian.com>
16416
16417         * metadata.c
16418         (mono_metadata_generic_inst_is_valuetype): New public function.
16419
16420         * metadata.h (MONO_TYPE_ISSTRUCT): Call
16421         mono_metadata_generic_inst_is_valuetype() if we're a generic
16422         instance to check whether our underlying type is a valuetype.
16423
16424 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
16425
16426         * class.c (mono_ptr_class_get): Fix name of pointer classes. Fixes
16427         #63768.
16428
16429 2004-08-25  Martin Baulig  <martin@ximian.com>
16430
16431         * loader.c (mono_get_method_from_token): Abstract methods can also
16432         be generic and thus have type parameters.
16433
16434         * metadata-internals.h
16435         (MonoDynamicImage): Added `GPtrArray *gen_params'.
16436
16437         * reflection.c (mono_image_get_generic_param_info): Don't create a
16438         metadata row, just add an entry to the `gen_params' array.
16439         (build_compressed_metadata): Sort the `gen_params' array and then
16440         actually create the metadata.
16441
16442 2004-08-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16443
16444         * threadpool.c: remove unneeded 'if' around mono_monitor_enter.
16445
16446 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
16447
16448         * debug-helpers.c: Handle MONO_TYPE_GENERICINST.
16449
16450 2004-08-24  Martin Baulig  <martin@ximian.com>
16451
16452         * class.cs (mono_class_is_subclass_of): Like an interface, a
16453         generic instance also derives from System.Object.
16454
16455 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
16456
16457         * metadata.c (mono_metadata_parse_type): Alloc pinned, byref and
16458         custom modifiers to be in any order. Fixes #61990.
16459
16460 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
16461
16462         * object.c: Register mono_object_new_fast icall.
16463         
16464         * object.c (mono_class_get_allocation_ftn): Return to calling
16465         mono_object_new_fast, since it seems faster to compute the object 
16466         size in unmanaged code than passing it as a parameter.
16467
16468         * object.c (mono_class_get_allocation_ftn): Add marshalbyref case.
16469
16470         * gc-internal.h gc.c: Add mono_gc_out_of_memory () function. Register
16471         this function with Boehm as the oom handler, so we don't have to check
16472         the result of GC_malloc.
16473
16474         * object.c: Remove checks for oom.
16475
16476         * object.h object.c (mono_class_get_allocation_ftn): New function to
16477         return the icall which can be used to allocate an instance of a given
16478         class. 
16479
16480         * object.c: Handle common allocation requests using GC_gcj_fast_malloc.
16481
16482         * class-internals.h: Add 'enabled' field.
16483
16484 2004-08-19  Zoltan Varga  <vargaz@freemail.hu>
16485
16486         * domain.c (mono_init_internal): Call MONO_GC_PRE_INIT ().
16487
16488 2004-08-18  Jambunathan K  <kjambunathan@novell.com>
16489         * tabledefs.h: Corretced PARAM_ATTRIBUTE_OPTIONAL to the right
16490         value 0x0010.
16491
16492 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
16493
16494         * appdomain.c: use the Tls function for appdomain too,
16495         at Zoltan's request. Actually return in mono_context_get
16496
16497         * appdomain.c, profiler.c, threads.c: use __thread
16498
16499 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
16500
16501         * appdomain.c threads.c: Call GC_CreateThread on windows.
16502
16503         * Makefile.am (libmetadata_la_LIBADD): Avoid linking libmonoos into
16504         multiple libraries since this don't work on windows.
16505
16506 2004-08-18  Martin Baulig  <martin@ximian.com>
16507
16508         * class-internals.h
16509         (MonoMethodNormal): Moved `MonoGenericParam *gen_params' here from
16510         MonoMethodHeader.
16511
16512         * metadata.h (MonoMethodHeader): Moved the `gen_params' field to
16513         MonoMethodNormal since we also need it for abstract and interface
16514         methods.
16515
16516         * reflection.c
16517         (build_compressed_metadata): Sort the GenericParam table.
16518         (mono_image_create_token): Added `gboolean create_methodspec'
16519         argument; this is false when generating a MethodImpl token.
16520         (reflection_methodbuilder_to_mono_method): Abstract and interface
16521         methods may also have generic parameters.
16522
16523 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
16524
16525         * appdomain.c: thread local alloc
16526
16527 2004-08-17  Martin Baulig  <martin@ximian.com>
16528
16529         * appdomain.c: Bumped MONO_CORLIB_VERSION to 24.
16530
16531         * icall.c
16532         (ves_icall_System_MonoType_getFullName): Added `gboolean full_name'
16533         argument.
16534
16535         * class.c (mono_type_get_full_name): New public function.
16536         (mono_type_get_name): Don't include the type arguments.
16537
16538 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
16539
16540         * Makefile.am: Build static versions of libmetadata and libmonoruntime
16541         for inclusion into the mono executable.
16542
16543 2004-08-16  Martin Baulig  <martin@ximian.com>
16544
16545         * metadata.c (do_mono_metadata_parse_generic_inst): Store the
16546         MonoGenericInst, not the MonoType in the `generic_inst_cache'.
16547
16548 2004-08-14  Martin Baulig  <martin@ximian.com>
16549
16550         * class.c (dup_type): Also copy the `byref' field.
16551
16552 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
16553
16554         * reflection.c (create_dynamic_mono_image): Revert the last change 
16555         since it breaks bootstrap.
16556
16557 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
16558
16559         * reflection.c (create_dynamic_mono_image): Set ref_count to 1.
16560
16561         * image.c (mono_image_close): Dynamic images are GC_MALLOCed, so do
16562         not free them with g_free.
16563
16564 2004-08-11  Martin Baulig  <martin@ximian.com>
16565
16566         * reflection.c (mono_reflection_setup_internal_class): Also call
16567         mono_class_setup_mono_type() if we already have a `tb->type.type'.
16568
16569 2004-08-09  Sebastien Pouliot  <sebastien@ximian.com>
16570
16571         * appdomain.c: Fix ves_icall_System_AppDomain_getDomainByID when 
16572         called during default (first) AppDomain creation. Keep track of
16573         Evidence when loading assemblies.
16574
16575 Mon Aug 9 14:41:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
16576
16577         * opcodes.c, opcodes.h: reduce runtime relocations.
16578
16579 Mon Aug 9 13:30:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
16580
16581         * culture-info.h, locales.c: fixes and chages to sue the new
16582         optimized format of the locale data.
16583         * culture-info-tables.h: regenerated.
16584
16585 2004-08-06  Geoff Norton <gnorton@customerdna.com>
16586         
16587         * filewatcher.c: If HAVE_KQUEUE return mode 3 to use the new kqueue watcher
16588
16589 2004-08-05  Sebastien Pouliot  <sebastien@ximian.com>
16590
16591         * appdomain.c: Bumped MONO_CORLIB_VERSION to 23. Added new icall
16592         ves_icall_System_AppDomain_getDomainByID to get an AppDomain by Id.
16593         * domain-internals.h: icall declaration.
16594         * icall.c: icall registration.
16595         * object-internals.h: New fields in MonoAssembly for CAS.
16596
16597 2004-08-05  Duncan Mak  <duncan@ximian.com>
16598
16599         * verify.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
16600         CEE_LDELEM_ANY.
16601
16602 Thu Aug 5 17:11:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
16603
16604         * reflection.c: fix to deal with object[] arrays in custom ctors
16605         (bug #62550).
16606
16607 2004-08-05  Martin Baulig  <martin@ximian.com>
16608
16609         * class.c (mono_class_array_element_size): Added support for
16610         generic instances and correctly handle "recursive" types.
16611
16612 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
16613
16614         * assembly.c: Fix warnings.
16615
16616 2004-08-04  Martin Baulig  <martin@ximian.com>
16617
16618         * class.c
16619         (mono_type_get_name_recurse): Added `gboolean include_arity'
16620         argument specifying whether or not we should include the generic
16621         arity in the type name.
16622         (_mono_type_get_name): New static function.
16623         (mono_class_setup_vtable): If we're a generic instance, don't
16624         include the generic arity in the names of explicit method
16625         implementations.        
16626
16627 2004-08-03  Martin Baulig  <martin@ximian.com>
16628
16629         * class.c (mono_type_get_name_recurse): Enclose the generic type
16630         arguments in `<', '>'.
16631
16632 Tue Aug 3 17:54:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16633
16634         * gc.c: make GC warning messages use the trace API, they are just
16635         noise to most of the users.
16636
16637 2004-08-03  Martin Baulig  <martin@ximian.com>
16638
16639         * debug-mono-symfile.c (read_string): Correctly read the string.
16640
16641 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
16642
16643         * marshal.c (signature_dup_add_this): Fix bug in previous patch.
16644         
16645         * marshal.c (mono_marshal_get_icall_wrapper): Add support for vararg
16646         icalls.
16647         (mono_marshal_get_runtime_invoke): Correctly handle valuetype methods.
16648
16649 2004-07-30  Martin Baulig  <martin@ximian.com>
16650
16651         * debug-mono-symfile.c, mono-debug.c, mono-debug-debugger.c:
16652         Reflect latest symbol writer changes.   
16653
16654 Fri Jul 30 16:49:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
16655
16656         * object.c: always create an object if null is passed
16657         to Invoke() where a valuetype is expected.
16658
16659 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
16660
16661         * marshal.c (mono_marshal_init): make managed
16662         signatures match native ones better for 64bits.
16663
16664 2004-07-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
16665
16666         * appdomain.c: hack to build correctly the private bin path on windows.
16667         Fixes bug #61991.
16668
16669 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
16670
16671         * assembly.c: Load mscorlib from the correct framework directory
16672           (mono/<version>/mscorlib.dll).
16673         * appdomain.h: Added prototypes for new functions.
16674         * internals.h: Added some prototypes.
16675         * domain.c: When initializing the runtime, get from the executable and
16676           the configuration files the runtime version that the app supports.
16677           Added support methods for reading app.exe.config. Added list of versions
16678           supported by the JIT. Added two new methods: mono_init_from_assembly,
16679           which initializes the runtime and determines the required version from
16680           the provided exe file, and mono_init_version, which initializes
16681           the runtime using the provided version.
16682         * icall.c: Get machine.config from version-specific directory.
16683         * reflection.c: When generating an image, embed the version number
16684           of the current runtime.
16685
16686 2004-07-28  Dick Porter  <dick@ximian.com>
16687
16688         * socket-io.c
16689         (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal): Check
16690         returned sockaddr size before creating the remote address object.
16691         Patch by Nick Vaughan (dev@6wardlaw.freeserve.co.uk), fixes bug
16692         61608.
16693
16694 2004-07-28  Dick Porter  <dick@ximian.com>
16695
16696         * locales.c (string_invariant_compare_char): Fix invariant char
16697         compares between upper and lower cases.  Fixes bug 61458.
16698
16699 2004-07-27  Ben Maurer  <bmaurer@ximain.com>
16700         
16701         * marshal.c: actually cache stelem.ref wrappers.
16702         
16703 Tue Jul 27 16:56:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
16704
16705         * class.c, image.c, loader.c, cil-coff.h: lazily mmap the image 
16706         sections and remove the mono_cli_rva_map () function.
16707
16708 Tue Jul 27 15:58:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
16709
16710         * debug-mono-symfile.c: fix one more endianess issue, from a patch
16711         by Geoff Norton (<gnorton@customerdna.com>).
16712
16713 Tue Jul 27 15:47:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
16714
16715         * class.c: fix class loads for pointer types (typeof(int) !=
16716         typeof(int*)).
16717
16718 2004-07-27  Martin Baulig  <martin@ximian.com>
16719
16720         * debug-mono-symfile.c (mono_debug_open_mono_symbol_file): Support
16721         reading the debugging information from an external ".mdb" file.
16722
16723 2004-07-24  Martin Baulig  <martin@ximian.com>
16724
16725         * reflection.c (mono_image_get_type_info): Only write a class
16726         layout entry if we actually have a size or a packing size.
16727
16728 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
16729
16730         * reflection.c (type_get_fully_qualified_name): 
16731         insert cast to get type checking of ?: with non-gcc compilers
16732
16733 2004-07-21  Bernie Solomon  <bernard@ugsolutions.com>
16734
16735         * rand.c: use g_getenv for both lookups of
16736         MONO_EGD_SOCKET
16737
16738 2004-07-17  Martin Baulig  <martin@ximian.com>
16739
16740         * reflection.c (mono_reflection_bind_generic_method_parameters):
16741         Set `gmethod->reflection_info'.
16742
16743 2004-07-17  Martin Baulig  <martin@ximian.com>
16744
16745         * class.c (mono_class_create_from_typedef): Insert the newly
16746         created class into the hash table before computing the interfaces
16747         since we could be called recursively.
16748
16749 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
16750
16751         * marshal.[ch] (mono_marshal_get_stelemref): a new wrapper
16752         function to implement stelem.ref in managed code
16753         * class-internals.h, debug-helpers.c: a new wrapper type
16754         for the above.
16755
16756 Wed Jul 14 19:26:05 CEST 2004 Paolo Molaro <lupus@ximian.com>
16757
16758         * gc.c: allow GC handles to work even when no GC is compiled in.
16759         Fix part of bug #61134 (GetAddrOfPinnedObject).
16760
16761 2004-07-13  Peter Williams  <peter@newton.cx>
16762  
16763         * process.c (complete_path): Make sure we don't attempt to execute
16764         directories.
16765  
16766 2004-07-12  Geoff Norton <gnorton@customerdna.com>
16767
16768         * DateTime.cs: Patch for bug #61112.  Our DateTime wasn't roundtripping over timezone
16769           boundaries properly.  This patch checkes ToLocalTime() to see if we're tripping over a boundary
16770           and will add/subtract the hour if needed
16771
16772 2004-07-12  Martin Baulig  <martin@ximian.com>
16773
16774         * reflection.c (mono_field_get_object): If we have
16775         `field->generic_info', take the attributes from
16776         `field->generic_info->generic_type'.    
16777
16778 2004-07-12  Martin Baulig  <martin@ximian.com>
16779
16780         * mono-debug.c (mono_debug_init): Don't take a `MonoDomain *'.
16781         This function must be called before initializing the runtime.
16782         (mono_debug_init_1): New function; call this after initializing
16783         the runtime, but before loading the assembly.  It tells the
16784         debugger to load corlib and the builtin types.
16785
16786         * mono-debug-debugger.c: Did some larger changes in the debugging
16787         code; support recursive class declarations, make sure we actually
16788         add all classes.
16789
16790 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16791
16792         * debug-helpers.c: undo my previous patch and fixed the real issue in
16793         ../mini/exceptions-x86.c
16794
16795 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16796
16797         * debug-helpers.c: prevent SIGSEGV. It happened running xsp on monodoc
16798         when no HOME env. variable was set and a NullRef was thrown in a .cctor
16799         called from other .cctors.
16800
16801 2004-07-09  Miguel de Icaza  <miguel@ximian.com>
16802
16803         * loader.c: Removed the mono_loader_wine_init hack now that we are
16804         doing a managed version of Windows.Forms.
16805
16806 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
16807
16808         * domain.c, gc.c, marshal.c, mono-debug-debugger.c,
16809         threadpool.c, threads.c: remove static data from rootset.
16810
16811 2004-07-09  Dick Porter  <dick@ximian.com>
16812
16813         * locales.c (ves_icall_System_String_InternalReplace_Str_Comp):
16814         Don't do any more processing if the matched length was 0.  It was
16815         increasing the size of the string before.  Fixes bug 61167.
16816
16817 2004-07-09  Dick Porter  <dick@ximian.com>
16818
16819         * socket-io.h:
16820         * socket-io.c
16821         (ves_icall_System_Net_Sockets_Socket_GetSocketOption_obj_internal):
16822         Add support for SO_PEERCRED if its available.
16823
16824 2004-07-09  Peter Bartok <pbartok@novell.com>
16825         * loader.c: winelib.exe.so error message is now only displayed if
16826         MONO_DEBUG is set. To help us avoid questions when people are trying
16827         out the new Managed.Windows.Forms.
16828
16829 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
16830
16831         * class-internals.h debug-helpers.c marshal.c: Add new wrapper types 
16832         for isinst and castclass wrappers.
16833
16834         * class-internals.h icall.c: Move registration and lookup of JIT icalls
16835         to libmetadata from the JIT, so they could be used by the marshalling
16836         code and the interpreter.
16837
16838         * marshal.c: Register marshalling related JIT icalls here instead of
16839         in mini.c. Use CEE_MONO_ICALL instead of the family of 
16840         CEE_MONO_PROC<x> opcodes to call marshalling functions.
16841
16842         * metadata.h: Remove unneeded marshalling conversions.
16843
16844         * opcodes.c: Update for new opcodes.
16845         
16846 2004-07-08  Martin Baulig  <martin@ximian.com>
16847
16848         * mono-debug.c: Check for `handle->symfile' being non-NULL everywhere.
16849         (mono_debug_get_domain_data): Make this function static.
16850
16851 Wed Jul 7 12:32:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
16852
16853         * gc.c, object.h: add nice GC handle API for embedders.
16854
16855 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
16856
16857         * reflection.c: more changes for the new api
16858
16859         * object.c: When we reflect on a field w/ a constant value, it
16860         will not have a memory location, so we must access metadata. Also,
16861         allow easier reading of strings so that we can read them from
16862         the constant data.
16863
16864         * class.c (mono_class_layout_fields): no need for literal fields here.
16865
16866         * class-internals.h: api changes for const fields
16867
16868         * icall.c (ves_icall_get_enum_info): use new apis for const fields
16869
16870 2004-07-06  Martin Baulig  <martin@ximian.com>
16871
16872         * mono-debug.h: Increment version number to 44.
16873
16874         * mono-debug.c (mono_debug_add_wrapper): The second argument is
16875         now a gpointer, rewrote this whole method.
16876
16877         * mono-debug-debugger.c (mono_debugger_add_wrapper): New
16878         function.  Add information about the wrapper in a new "misc table".
16879
16880         * mono-debug-debugger.h (MonoDebuggerSymbolTable): Added fields
16881         for the new misc table.
16882
16883 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
16884
16885         * metadata-internals.h image.c: Add a cache for helper signatures.
16886
16887         * monosn.c: Applied patch from "grompf" (grompf@sublimeintervention.com). Fix compilation under OSX.
16888
16889 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
16890
16891         * marshal.c (mono_marshal_get_managed_wrapper): Handle returning
16892         delegates from a delegate. Fixes #61033.
16893         
16894         * marshal.c: Fix managed->native stringbuilder marshalling. Implement
16895         marshalling of stringbuilder arrays. Fixes #59900.
16896
16897 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
16898
16899         * icall.c: Add EnumBuilder:setup_enum_type icall.
16900
16901 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
16902
16903         * icall.c: Added a new icall for the property version of
16904         OffsetOfStringData.
16905
16906 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
16907
16908         * class-internals.h (MonoVTable): Make max_interface_id a guint32 so
16909         it has a constant size across platforms.
16910
16911         * marshal.c (mono_delegate_end_invoke): Avoid crash when there is no
16912         stack trace.
16913
16914 2004-06-29  Martin Baulig  <martin@ximian.com>
16915
16916         * mono-debug.c (mono_debug_add_method): Protect the whole function
16917         in mono_debugger_lock(), not just parts of it.
16918
16919 Fri Jun 25 21:36:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
16920
16921         * reflection.c: make sure padding bytes in heaps are zeroed.
16922
16923 2004-06-24  David Waite  <mass@akuma.org>
16924
16925         * appdomain.c, class.c, domain.c, file-io.c, gc.c, icall.c,
16926         image.c, loader.c, locales.c, marshal.c, metadata.c,
16927         mono-debug.[ch], object.c, reflection.c, security.c, socket-io.c,
16928         string-icalls.c, threads.c: change to C90-style comments from C99 /
16929         C++ -style
16930
16931 2004-06-24  Dick Porter  <dick@ximian.com>
16932
16933         * threads.c
16934         (ves_icall_System_Threading_Mutex_CreateMutex_internal): Correctly
16935         return createdNew.  Fixes bug 60412.
16936
16937         * threads-types.h: 
16938         * icall.c: Add createdNew parameter to CreateMutex icall
16939
16940 Thu Jun 24 16:06:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
16941
16942         * reflection.c, object-internals.h: save default value in params.
16943
16944 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16945
16946         * appdomain.c: for paths in PrivateBinPath that are absolute, there's
16947         no need to build a new path combining that with the application base.
16948         Fixes bug #60442.
16949
16950 Wed Jun 23 18:36:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
16951
16952         * reflection.c: fixed minor standard compliance issues.
16953
16954 Wed Jun 23 17:59:29 CEST 2004 Paolo Molaro <lupus@ximian.com>
16955
16956         * reflection.c: fixed issue with encoding some custom attributes
16957         (arrays in properties and fields, bug #60411).
16958
16959 2004-06-23 Gonzalo Paniagua Javier <gonzalo@ximian.com>
16960
16961         * reflection.c: fix start address when copying the public key token.
16962
16963 2004-06-23  Martin Baulig  <martin@ximian.com>
16964
16965         * mono-debug-debugger.c (mono_debugger_unhandled_exception): Store
16966         the `exc' object in a static object to put it into the GC's root set.
16967
16968 Wed Jun 23 15:37:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
16969
16970         * reflection.c: make mono_reflection_setup_internal_class ()
16971         callable a second time to setup a new parent class.
16972
16973 2004-06-23  Dick Porter  <dick@ximian.com>
16974
16975         * threads.c: Check for WAIT_IO_COMPLETION return values.
16976
16977 2004-06-22  Sebastien Pouliot  <sebastien@ximian.com>
16978
16979         * appdomain.c: Removed the g_free on the public key token. Now copy 
16980         the pk token string into the MonoAssemblyName buffer using g_strlcpy.
16981         * assembly.c: Added public key token string value when loading 
16982         assemblies. Fix bug #60439.
16983         * icall.c: Added missing informations (like public key) in 
16984         GetReferencedAssemblies. Fix #60519.
16985         * image.h: Changed definition for public key token from const char*
16986         public_tok_value to guchar public_key_token [17];
16987         * reflection.c: Updated for changes to public key token.
16988
16989 2004-06-22  Lluis Sanchez Gual
16990
16991         * icall.c: In ves_icall_InternalExecute, when setting a filed, also look 
16992         for the field in base classes.
16993
16994 Tue Jun 22 16:48:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
16995
16996         * mono-debug.h, mono-debug-debugger.h, debug-mono-symfile.h:
16997         mark headers as not supported, they are installed only for use by the
16998         debugger.
16999
17000 Tue Jun 22 16:32:03 CEST 2004 Paolo Molaro <lupus@ximian.com>
17001
17002         * *.c, *.h: avoid namespace pollution in public headers.
17003
17004 2004-06-21  Martin Baulig  <martin@ximian.com>
17005
17006         * exception.c (mono_get_exception_security): It's in
17007         "System.Security", not in "System".
17008
17009         * mono-debug-debugger.c (mono_debugger_add_builtin_types): Add all
17010         the exception classes.
17011
17012 2004-06-21  Martin Baulig  <martin@ximian.com>
17013
17014         * mono-debug-debugger.c (mono_debugger_unhandled_exception):
17015         Protect the exception object from being finalized.
17016
17017 2004-06-21  Martin Baulig  <martin@ximian.com>
17018
17019         * mono-debug-debugger.h (mono_debugger_unhandled_exception): New
17020         public function.
17021
17022 2004-06-21  Sebastien Pouliot  <sebastien@ximian.com>
17023
17024         * reflection.c: Load the assembly in mono_reflection_type_from_name,
17025         if it was not loaded before. Fix parts of #60439.
17026
17027 Mon Jun 21 16:04:43 CEST 2004 Paolo Molaro <lupus@ximian.com>
17028
17029         * marshal.c, icall.c, object.c, image.c: fix the runtime_invoke ()
17030         code that was broken since Ben's change: wrappers are now
17031         dependent on the method signature only again.
17032
17033 2004-06-21  Martin Baulig  <martin@ximian.com>
17034
17035         * mono-debug-debugger.c (write_class): Cleaned this up a bit and
17036         added interface support.
17037
17038 2004-06-21  Martin Baulig  <martin@ximian.com>
17039
17040         * class.c (mono_vtable_get_static_field_data): New public method.
17041
17042 2004-06-20  Atsushi Enomoto  <atsushi@ximian.com>
17043
17044         * filewatcher.c : Windows build fix to be compliant with API changes.
17045
17046 Sat Jun 19 19:04:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17047
17048         * class.h, class.c: more accessors.
17049         * metadata.h, metadata.c: prepare for hiding MonoType and
17050         MonoMethodSignature: people should use the accessors from now on
17051         outside of the tree.
17052
17053 Sat Jun 19 17:56:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
17054
17055         * *.c, *.h: more API cleanups.
17056
17057 2004-06-18  Jackson Harper  <jackson@ximian.com>
17058
17059         * assembly.c: Trace loading assemblies.
17060         * loader.c: Trace loading native libraries.
17061         * mono-config.c: Trace loading config files.
17062         
17063 2004-06-18  Dick Porter  <dick@ximian.com>
17064
17065         * locales.c: Tell ICU the lengths of strings, it can cope with
17066         embedded \0 then.  Fixes bug 59274, and doesn't break bug 55822.
17067
17068 Fri Jun 18 11:59:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
17069
17070         * image.c: swapped name/filename;
17071
17072 2004-06-18  Martin Baulig  <martin@ximian.com>
17073
17074         * mono-debug-debugger.c (write_class): Write the parent class at
17075         the end of the header.
17076
17077 Thu Jun 17 16:50:44 CEST 2004 Paolo Molaro <lupus@ximian.com>
17078
17079         * *.c, *.h, Makefile.am: more API cleanups and bugfixes.
17080
17081 2004-06-17  Raja R Harinath  <rharinath@novell.com>
17082
17083         * Makefile.am (PLATFORM_LIB): New.  Possibly refer to ../os/libmonoos.la.
17084         (bundle_obj): New conditional define.
17085         (BUILT_SOURCES): Remove.
17086         ($(bundle_srcs)): Make parallel-make safe.
17087         (libmonoruntime_la_LIBADD): Make unconditional.
17088         (libmetadata_la_LIBADD): Make unconditional.  Refer to $(bundle_obj).
17089         (libmetadata_la_SOURCES): Don't refer to $(bundle_srcs).
17090
17091 2004-06-17  Atsushi Enomoto  <atsushi@ximian.com>
17092
17093         * culture-info-tables.h: It was inconsistent with the latest
17094           supp info files.
17095
17096 2004-06-17  Zoltan Varga  <vargaz@freemail.hu>
17097
17098         * assembly.c (mono_assembly_open): Fix crash when the assembly can't
17099         be loaded.
17100
17101         * threads.c (ves_icall_System_Threading_Thread_Resume): Fix compilation
17102         with gcc 2.95.
17103
17104 Wed Jun 16 18:23:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
17105
17106         * threads.h, icall.c, object.c, threadpool.c, threads-types.h:
17107         cleaned up public header threads.h.
17108
17109 Wed Jun 16 18:11:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
17110
17111         * Makefile.am, *.c, *.h: more API cleanups.
17112
17113 Wed Jun 16 14:33:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
17114
17115         * Makefile.am: removed monosn from compilation.
17116         * appdomain.c, assembly.c, assembly.h, blob.h, class.c,
17117         debug-helpers.c, debug-mono-symfile.c, domain.c, icall.c,
17118         image.c, image.h, loader.c, marshal.c, metadata-internals.h,
17119         metadata.c, metadata.h, mono-config.c, mono-debug-debugger.c,
17120         mono-debug.c, object.c, opcodes.c, opcodes.h, pedump.c, process.c,
17121         reflection.c, reflection.h, verify.c: more API cleanups and fixes.
17122
17123 2004-06-15  Jackson Harper  <jackson@ximian.com>
17124
17125         * assembly.c: Make locales lower case when searching the GAC for
17126         assemblies. gacutil will always make locales lowercase when
17127         installing so this effectively makes them case insensitive.
17128         
17129 2004-06-15  Lluis Sanchez Gual  <lluis@ximian.com>
17130
17131         * locales.c, threadpool.c: use mono_monitor_enter instead of mono_monitor_try_enter.
17132         * monitor.c: New method mono_monitor_try_enter_internal, which takes a new
17133           parameter which allows to choose whether the wait can be interrupted or 
17134           not. Also added the method mono_monitor_enter(), which locks the monitor
17135           using an infinite wait and without allowing interruption.
17136           In the Monitor.Enter and Wait icalls, retry the lock if the wait is
17137           interrupted.
17138         * object.h: Added new fields in MonoThread. suspend_event holds the event
17139           used to susped/resume the thread. synch_lock is the lock object to use for
17140           modifying the thread state.
17141         * threads.c: Use the new synch_lock object for locking, instead of "this",
17142           which can generate deadlocks.
17143           Moved thread state change in Thread.Sleep and Thread.Join from managed
17144           to unmanaged code. This avoids a deadlock when the thread was suspended
17145           just after acquiring the thread lock.
17146           In general, use mono_monitor_enter instead of mono_monitor_try_enter.
17147           Implemented Thread.Suspend using an event instead of ThreadSuspend,
17148           which is not fully implemented in the io-layer.
17149         * socket-io.c: Only try IPv6 DNS lookup if IPv4 fails.
17150
17151 Tue Jun 15 18:34:21 CEST 2004 Paolo Molaro <lupus@ximian.com>
17152
17153         * Makefile.am, monitor.h, object.h, threadpool.c, threadpool.h,
17154         threads-types.h: more API cleanups.
17155
17156 Tue Jun 15 16:40:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
17157
17158         * domain-internals.h, Makefile.am, appdomain.c, appdomain.h,
17159         domain.c, gc.c, icall.c, mono-debug.c, object.c, reflection.c,
17160         threadpool.c, threads.c: first pass at the exported API cleanup.
17161
17162 Tue Jun 15 15:29:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
17163
17164         * icall.c: fix signatures of some VolatileRead and VolatileWrite icalls.
17165
17166 2004-06-15 Gonzalo Paniagua Javier <gonzalo@ximian.com>
17167
17168         * icall.c: added internalGetHome.
17169
17170 2004-06-14  Dick Porter  <dick@ximian.com>
17171
17172         * file-io.c (ves_icall_System_IO_MonoIO_FindFirstFile): It was
17173         possible to return successfully when '.' or '..' were the only
17174         entries in a directory, but were skipped.  The MonoIOStat was not
17175         filled in in that case.  Now return ERROR_NO_MORE_FILES instead.
17176         Fixes bug 59574.
17177
17178 Mon Jun 14 00:27:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
17179
17180         * reflection.c: make binaries run on .Net 1.1 by default.
17181
17182 Sun Jun 13 18:22:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
17183
17184         * threadpool.c, threadpool.h: use the correct return type in SetMinThreads ().
17185
17186 Sun Jun 13 16:44:39 CEST 2004 Paolo Molaro <lupus@ximian.com>
17187
17188         * marshal.c: keep track of struct size with explicit layout
17189         (bug #59979).
17190
17191 2004-06-12  Martin Baulig  <martin@ximian.com>
17192
17193         * mono-debug-debugger.c: Comment out a debugging g_message().
17194
17195 Sat Jun 12 14:15:02 CEST 2004 Paolo Molaro <lupus@ximian.com>
17196
17197         * reflection.c, reflection.h: do not free custom attrs that are cached.
17198         * icall.c: use braces to make code clearer.
17199
17200 2004-06-11  Martin Baulig  <martin@ximian.com>
17201
17202         * class.h (MonoInflatedField): New type.
17203         (MonoClassField): Replaced `MonoType *generic_type' with
17204         `MonoInflatedField *generic_info'.
17205
17206         * icall.c
17207         (ves_icall_MonoField_Mono_GetGenericFieldDefinition): New icall.
17208
17209 2004-06-11  Martin Baulig  <martin@ximian.com>
17210
17211         * reflection.c (mono_image_create_method_token): Correctly encode
17212         varargs methods.
17213
17214 2004-06-11  Martin Baulig  <martin@ximian.com>
17215
17216         * metadata.c (mono_metadata_parse_method_signature): When parsing
17217         a MethodDef which has VarArgs, also set sentinelpos if we don't
17218         have any parameters.
17219
17220 2004-06-11  Martin Baulig  <martin@ximian.com>
17221
17222         * verify.c (mono_method_verify): In CEE_CALL, use
17223         mono_method_get_signature() to get the method's signature, unless
17224         we're a PInvoke method.
17225
17226 2004-06-10  Jackson Harper  <jackson@ximian.com>
17227
17228         * assembly.c: Use <path>/lib/mono/gac for the extra paths
17229         lookup. Rename MONO_GAC_PATH to MONO_GAC_PREFIX, this is a more
17230         logical name as the supplied path is just a prefix to the gac not
17231         the direct path to it.
17232         
17233 Thu Jun 10 20:10:16 CEST 2004 Paolo Molaro <lupus@ximian.com>
17234
17235         * reflection.c: make the token for a created method match
17236         the token of the MethodBuilder it was created from
17237         (IKVM requires this behaviour now).
17238
17239 Thu Jun 10 16:02:27 CEST 2004 Paolo Molaro <lupus@ximian.com>
17240
17241         * image.c, image.h, appdomain.c, assembly.c, loader.c, metadata.c,
17242         reflection.c, socket-io.c: leak fixes.
17243
17244 Wed Jun 9 18:23:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
17245
17246         * icall.c: handle sentinel pos in vararg methods in position different
17247         from 0.
17248
17249 2004-06-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17250
17251         * culture-info-tables.h: freshly generated.
17252
17253 2004-06-09  Martin Baulig  <martin@ximian.com>
17254
17255         * loader.c (mono_get_method_constrained): Call `mono_class_init
17256         (constrained_class)'.   
17257
17258 2004-06-08  Gert Driesen <drieseng@users.sourceforge.net>
17259
17260         * icall.c (ves_icall_MonoType_GetEvent): Handle events without
17261         any methods. Fixes #59629.
17262
17263 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
17264
17265         * culture-info-tables.h: reflecting locale-builder updates.
17266
17267 2004-06-08  Dick Porter  <dick@ximian.com>
17268
17269         * object.h:
17270         * locales.c: Fixed compile warnings, including a real bug in
17271         CompareInfo_internal_compare.
17272         
17273 2004-06-08  Dick Porter  <dick@ximian.com>
17274
17275         * locales.c
17276         (ves_icall_System_Globalization_CompareInfo_internal_index):
17277         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
17278         Double-check the resuls of usearches, because ICU currently
17279         ignores most of the collator settings here.  Fixes bug 59720.
17280         
17281 2004-06-08  Dick Porter  <dick@ximian.com>
17282
17283         * locales.c
17284         (ves_icall_System_Globalization_CompareInfo_internal_index_char):
17285         Fix memory leak and segfault-causing typo.  No idea how this one
17286         lasted so long without being noticed.
17287
17288 2004-06-09  Zoltan Varga  <vargaz@freemail.hu>
17289
17290         * icall.c (ves_icall_Type_GetEvents_internal): Handle events without
17291         any methods. Fixes #59629.
17292
17293 2004-06-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17294
17295         * assembly.c:
17296         (mono_assembly_load): search_loaded -> mono_assembly_loaded (we didn't
17297         own the critical section before). Removed dead code (that's done
17298         in the preload hook).
17299
17300         (mono_assembly_load_with_partial_name): call the preload hook.
17301
17302 2004-06-08  Martin Baulig  <martin@ximian.com>
17303
17304         * metadata.c (mono_metadata_signature_alloc): Default
17305         `sentinelpos' to -1.
17306
17307         * reflection.c (mono_image_get_array_token): Likewise.
17308
17309 2004-06-08  Martin Baulig  <martin@ximian.com>
17310
17311         * icall.c (ves_icall_ModuleBuilder_getMethodToken): New icall.
17312
17313         * metadata.c (mono_metadata_parse_method_signature): When parsing
17314         a MethodDef which has VarArgs, set sentinelpos.
17315
17316         * metadata.h (MonoMethodSignature): Make `sentinalpos' a signed
17317         `gint16' since we're using -1 for non-varargs methods.
17318
17319         * reflection.c
17320         (ReflectionMethodBuilder): Added `MonoArray *opt_types'.
17321         (method_encode_signature): Added varargs support.
17322         (method_builder_encode_signature): Likewise.
17323         (mono_image_get_varargs_method_token): New static method.
17324         (mono_image_create_method_token): New public method; this is
17325         called via an icall instead of mono_image_create_token() when
17326         calling a varargs method.       
17327
17328 2004-06-08  Lluis Sanchez Gual  <lluis@ximian.com>
17329
17330         * locales.c: Fixed memory leak in Char.ToLower/ToUpper.
17331
17332 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
17333
17334         * culture-info-tables.h : Reflecting the latest locale-builder that
17335           fixed empty array representation ({} to {0}).
17336
17337 2004-06-07  Jackson Harper  <jackson@ximian.com>
17338
17339         * assembly.c: It should be <MONO_GAC_PATH>/lib/mono/gac when
17340         looking up extra gac paths. This allows MONO_GAC_PATH to act
17341         exactly like a prefix.
17342         
17343 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
17344
17345         * reflection.c (mono_reflection_type_from_name): Make a copy of the
17346         type name before modifying it. Fixes #59405.
17347
17348 2004-06-08  Atsushi Enomoto  <atsushi@ximian.com>
17349
17350         * culture-info.h: added fields for "all datetime patterns".
17351         * locales.c: (  ves_icall_System_Globalization_CultureInfo
17352           _construct_datetime_format ()): fill xxx_patterns fields.
17353         * object.h: added fields for "all datetime patterns" to
17354           MonoDateTimeFormatInfo.
17355         * culture-info-tables.h: reflecting locale-builder updates.
17356
17357 2004-06-08  Zoltan Varga  <vargaz@freemail.hu>
17358
17359         * icall.c (ves_icall_Type_GetEvents_internal): Handle the case when
17360         the event has no add and remove methods. Fixes #59629.
17361
17362 2004-06-05  Sebastien Pouliot  <sebastien@ximian.com>
17363
17364         * object.c: Fixed possible integer overflow when allocating large
17365         strings.
17366
17367 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
17368
17369         * culture-info-tables.h: reflecting locale-builder updates.
17370
17371 2004-06-05  Atsushi Enomoto  <atsushi@ximian.com>
17372
17373         * culture-info-tables.h: reflecting locale-builder updates.
17374
17375 2004-06-03  Atsushi Enomoto  <atsushi@ximian.com>
17376
17377         * culture-info-tables.h: reflecting locale-builder updates.
17378
17379 2004-06-03  Lluis Sanchez Gual  <lluis@ximian.com>
17380
17381         * threads.c: Made Thread.Sleep abortable.
17382
17383 2004-06-02  Martin Baulig  <martin@ximian.com>
17384
17385         * mono-debug.h (MONO_DEBUGGER_VERSION): Bumped version to 41.
17386
17387         * debug-mono-symfile.h: Bumped symbol file version number to 37.
17388
17389 2004-05-31  Zoltan Varga  <vargaz@freemail.hu>
17390
17391         * marshal.c (mono_marshal_get_runtime_invoke): Fix CR/LFs.
17392
17393 2004-05-30  Jackson Harper  <jackson@ximian.com>
17394
17395         * reflection.c: Do not hardcode assembly versions or public key
17396         tokens anymore. All of this except the corlib section was dead
17397         code anyways.
17398         
17399 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
17400
17401         * object.c (mono_runtime_invoke_array): Automatically create boxed
17402         objects for byref valuetypes if needed. Fixes #59300.
17403         
17404         * object.c (mono_method_return_message_restore): Handle 
17405         MONO_TYPE_OBJECT as well.
17406
17407 2004-05-28  Jackson Harper  <jackson@ximian.com>
17408
17409         * reflection.c: The modified type encoding was causing build
17410         problems. Reverted for now.
17411         
17412 2004-05-28  Jackson Harper  <jackson@ximian.com>
17413
17414         * reflection.c/h: Take an assembly ref so that we dont create
17415         fully qualified names when encoding types in the same assembly as
17416         the custom attribute being emitted.
17417         * appdomain.c: Increment version number.
17418         
17419 2004-05-26  Duncan Mak  <duncan@ximian.com>
17420
17421         * icall.c
17422         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
17423         Set the full version number (major, minor, build, revision).
17424
17425 2004-05-28  Vladimir Vukicevic  <vladimir@pobox.com>
17426
17427         * marshal.c (emit_struct_conv): increment src/dst after blit
17428         (mono_marshal_get_managed_wrapper,
17429         mono_marshal_get_native_wrapper): make sure we have marshalling
17430         info before marshalling params (info computation affects
17431         blittable)
17432
17433         * class.c (class_compute_field_layout): correctly deal with
17434         blittable
17435         (mono_class_layout_fields): Don't do gc_aware_layout for AUTO
17436         value types (as per what windows dows by default)
17437         (mono_class_setup_mono_type): System.ValueType is blittable
17438         (mono_ptr_class_get, mono_fnptr_class_get): Pointer classes are
17439         blittable
17440
17441         * marshal.c (mono_marshal_load_type_info): flag types  as
17442         non-blittable if the native layout doesn't match the managed
17443         layout
17444
17445 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17446
17447         * appdomain.c: don't add stuff in the private search path that is
17448         above the application base. If application base is not set, there's
17449         no private search path.
17450
17451 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
17452
17453         * marshal.c (mono_marshal_get_managed_wrapper): Add proper support for
17454         byref struct arguments in native->managed marshalling.
17455
17456 2004-05-28      Patrik Torstensson      <totte@hiddenpeaks.com>
17457
17458         * marshal.c (mono_marshal_get_runtime_invoke): correctly
17459         cache methods using signature (special case for methods
17460         that are value type or string class)
17461         
17462         * image.c (mono_image_close): clean up allocated GSList's
17463         in runtime_invoke_cache.
17464
17465 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17466
17467         * mono-config.c: set the correct path for mono_cfg_dir on windows when
17468         there's no MONO_CFG_DIR environment variable defined.
17469
17470 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17471
17472         * threads.c: windows version must be >= 0x0500 to include OpenThread.
17473
17474 2004-05-28  Lluis Sanchez Gual  <lluis@ximian.com>
17475
17476         * threadpool.c: Really wait for 500ms after the async call, even if the wait
17477           is interrumped.
17478         * threads.c: In mono_thread_manage, call OpenThread to ref each handle
17479           before waiting for it, and call CloseHandle after the wait to unref it.
17480           This will make sure that handles are not disposed too early.
17481
17482 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17483
17484         * appdomain.c:
17485         * appdomain.h:
17486         * icall.c: removed
17487         ves_icall_System_AppDomainSetup_InitAppDomainSetup as it's not
17488         needed now.
17489
17490         * object.c: se the application_base only for the domain that runs
17491         Main. Fixes bug #59216,
17492
17493 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17494
17495         * appdomain.c:
17496         * object.c: only the domain in which Main is run have
17497         SetupInformation.ConfigurationFile set, so moved a few lines from
17498         appdomain.c to object.c.
17499
17500 2004-05-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17501
17502         * appdomain.c: we tried to load [name].(dll|exe), but according
17503         to bug #57710, we must also try [culture]/[name].(dll|exe) and
17504         [culture]/[name]/[name](dll|exe). This patch fixes the bug.
17505         There's a test case attached to bug #58922.
17506
17507 2004-05-27  Dick Porter  <dick@ximian.com>
17508
17509         * icall.c:
17510         * file-io.c: Implemented icalls for locking and unlocking regions
17511         in a file.
17512         (ves_icall_System_IO_MonoIO_FindNextFile): FindNextFile() returns
17513         FALSE on error (fixes both compiler warning and real bug.)
17514
17515 2004-05-27  Atsushi Enomoto  <atsushi@ximian.com>
17516
17517         * culture-info-tables.h: reflecting locale-builder updates.
17518
17519           (Added missing ChangeLog entry for 05/26)
17520
17521 2004-05-27  Jackson Harper  <jackson@ximian.com>
17522
17523         * locales.c: Fix some cut and paste errors.
17524         
17525 2004-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17526
17527         * mono-config.c: set the correct path for config. directory on windows.
17528
17529 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17530
17531         * icall.c : Fixed ves_icall_System_DateTime_GetNow() to return utc
17532           on win32.
17533
17534 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17535
17536         * marshal.c (mono_marshal_get_native_wrapper): Free strings returned
17537         from pinvoke functions.
17538         
17539         * marshal.c (mono_ftnptr_to_delegate): Implement this.
17540
17541 2004-05-26  Atsushi Enomoto  <atsushi@ximian.com>
17542
17543         * culture-info-tables.h: reflecting locale-builder updates.
17544
17545 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
17546
17547         * profiler.c (simple_allocation): Skip icall wrapper methods. Fixes
17548         #59086.
17549
17550 2004-05-26  Sebastien Pouliot  <sebastien@ximian.com>
17551
17552         * appdomain.cs: Bumped MONO_CORLIB_VERSION to 20.
17553         * icall.c: Modified icalls for RNG.
17554         * rand.c|h: Changed RNG interface to allow thread-safe usage under 
17555         Windows (CryptoAPI).
17556
17557 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17558
17559         * locales.c: Fix build.
17560
17561 2004-05-25  Atsushi Enomoto  <atsushi@ximian.com>
17562
17563         * culture-info-tables.h: reflecting locale-builder updates.
17564
17565 2004-05-25  Jackson Harper  <jackson@ximian.com>
17566
17567         * locales.c: When creating the current culture use the $LANGs
17568         specific culture. So DateTimeFormat and NumberFormat entries are created.
17569         
17570 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
17571
17572         * string-icalls.{h,c} icalls.c: Add new icalls for Strcpy which take
17573         a char array as parameter.
17574
17575 2004-05-24  Lluis Sanchez Gual  <lluis@ximian.com>
17576
17577         * image.c: In mono_image_open(), always use an absolute path name to
17578           look for already loaded images.
17579
17580 2004-05-24  Sebastien Pouliot  <sebastien@ximian.com>
17581
17582         * icall.c: Added define for CSIDL_FLAG_CREATE (0x8000) in case it is
17583         missing in the windows build (like older cygwin include files).
17584
17585 2004-05-23  Sebastien Pouliot  <sebastien@ximian.com>
17586
17587         * icall.c: Fixed check for possible integer overflow in Buffer_
17588         BlockCopy icall. Replaced comments style // by /* */.
17589
17590 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
17591
17592         * marshal.c (mono_ftnptr_to_delegate): Fix warning.
17593         
17594         * marshal.c (mono_marshal_get_proxy_cancast): Move thread interrupt
17595         check after MONO_VTADDR. Fixes pinvoke2.exe.
17596
17597         * marshal.h marshal.c metadata.h: Add beginnings of support for
17598         ftnptr -> delegate marshalling.
17599
17600 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
17601
17602         * threads.c (ves_icall_System_Threading_Thread_ResetAbort): Fix compilation on gcc-2.95.
17603         * threads.c: Fix warnings.
17604
17605 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
17606
17607         * appdomain.c, gc.c: Make use of the new WaitForSingleObjectEx.
17608         * icall.c: Registered icalls for Suspend and Resume.
17609         * locales.c: Beware, mono_monitor_try_enter can now be interrupted by
17610           Thread.Abort.
17611         * monitor.c: Use WaitForSingleObjectEx. Added some interruption checkpoints.
17612         * mono-debug-debugger.c: Use WaitForSingleObjectEx et al.
17613         * process.c: Use WaitForSingleObjectEx.
17614         * threadpool.c: Use WaitForSingleObjectEx. Added some interruption 
17615           checkpoints.
17616         * threads.c, threads.h: Make use of new Ex wait methods. Improved
17617           implementation of Thread.Abort and Thread.ResetAbort icalls. Added icalls
17618           for Suspend and Resume. Added new mono_thread_stop, used for stoping
17619           background threads. Added basic support for Abort in Windows.
17620           Start new threads using a managed delegate invoke wrapper. This wrapper
17621           has an interruption checkpoint that is needed since an interruption
17622           can be requested before the thread leaves the unmanaged code that starts 
17623           the thread.
17624         * marshal.c: Added interruption checkpoint after every native call, and
17625           also before managed calls for wrappers called from unmanaged code to
17626           go into managed code.
17627         * object.h: Added new field in MonoThread to keep track of interruption
17628           requests.
17629
17630 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
17631
17632         * marshal.c: Insert SAVE_LMF and RESTORE_LMF opcodes around native
17633         calls.
17634
17635 2004-05-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17636
17637         * appdomain.c:
17638         * assembly.c:
17639         * gc.c:
17640         * locales.c:
17641         * mono-config.c:
17642         * rand.c: getenv -> g_getenv (windows!)
17643
17644         * process.c: complete_path is also used on non-windows platforms.
17645
17646 2004-05-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17647
17648         * icall.c: new signature for Process_Start.
17649
17650         * process.[ch]: new signature for Process_Start. If we're on windows
17651         and UseShellExecute is false, we have to search for the program by
17652         ourselves if we don't get a full path.
17653
17654 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
17655
17656         * marshal.c (mono_marshal_get_native_wrapper): Fix up custom 
17657         marshalling and call CleanUpNativeData if needed. Fixes #58646.
17658
17659 2004-05-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17660
17661         * socket-io.c: field value changed for Int32 from 'value' to 'm_value'.
17662         Fixes bug #58373.
17663
17664 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17665
17666         * process.c: use double quotes to quote program name and arguments on
17667         windows. Fixes bug #58575.
17668
17669 2004-05-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17670
17671         * file-io.c: don't return "." and ".." when using windows Find*File.
17672
17673 2003-05-17      Patrik Torstensson <totte@hiddenpeaks.com>
17674
17675         * marshal.c: Don't pass wrappers to message init because method 
17676         addressed used to lookup metadata. part of remoting[2|3] fix.
17677
17678 2004-05-15  Jackson Harper  <jackson@ximian.com>
17679
17680         * assembly.c: Remove user gac and implement MONO_GAC_PATH, this
17681         path is essentially the same as MONO_PATH except that it points to
17682         GACs instead of lib directories.
17683         * loader.h: The user gac is gone so we dont need function to
17684         enable/disable it.
17685         * mono-config.c: user gac option is now gone.
17686         
17687 2004-05-15  Jackson Harper  <jackson@ximian.com>
17688
17689         * culture-info.h: Make defines more consistent, add calendar data
17690         to the culture info table.
17691         * culture-info-tables.h: Add basic calendar data. Basically
17692         everyone gets default gregorian until all the data is
17693         updated.
17694         * locales.c: Use the new consistent defines. Set calendar data for
17695         culture info objects.
17696         * object.h: add a field for calendar data to CultureInfo
17697         
17698 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
17699
17700         * image.c: image->runtime_invoke_cache is keyed on signatures now.
17701         * marshal.c (mono_mb_emit_calli): new helper to emit a CEE_CALLI with
17702         a signature.
17703         (mono_mb_emit_managed_call, mono_mb_emit_native_call): use the above.
17704         (mono_marshal_get_runtime_invoke): The runtime invoke method now takes
17705         an extra param that is the pointer of the method to invoke. The IL for
17706         the invoke method is no longer specific to the method, but to the
17707         signature of the method. Thus, we can share the same code for multiple
17708         methods. This reduces the number of methods that have to be compiled.
17709
17710 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
17711
17712         * icall.c (ves_icall_System_Reflection_Assembly_load_with_partial_name): Fix warning.
17713
17714         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
17715
17716         * icall.c: Optimize Buffer.BlockCopy.
17717
17718 2004-05-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17719
17720         * culture-info-tables.h: seems like Spanish and Portuguese cultures had
17721         DateTimeFormatInfo.YearMonthPattern like "MMMM' yyyy" (note the single
17722         quote). Changed them to "MMMM yyyy".
17723
17724 2004-05-12  Miguel de Icaza  <miguel@ximian.com>
17725
17726         * rand.c
17727         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_InternalGetBytes): Always close the file. 
17728
17729 2004-05-13  Zoltan Varga  <vargaz@freemail.hu>
17730
17731         * reflection.h: Updated after changes to managed structures.
17732
17733         * appdomain.c: Bump corlib version.
17734
17735 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17736
17737         * Makefile.am: also add libmonoos to libmetadata. Fixes the build on
17738         windows.
17739
17740 2004-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17741
17742         * Makefile.am: link to ../os/libmonoos.la on windows.
17743
17744         * assembly.c:
17745                 -If MONO_DEBUG, warn about non-existing directories in
17746                 MONO_PATH.
17747                 -Added mono_assembly_getrootdir() that replaces MONO_ASSEMBLIES
17748                 compile time variable.
17749                 -Removed init_default_path and call mono_set_rootdir from
17750                 libmonoos.a instead (windows only).
17751
17752         * assembly.h: declare mono_assembly_getrootdir().
17753
17754         * domain.c:
17755         * icall.c: use mono_assembly_getrootdir() instead of MONO_ASSEMBLIES.
17756
17757         * loader.c: s/getenv/g_getenv/
17758
17759 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
17760
17761         * marshal.{h,c}: Add support for UnmanagedType.AsAny.
17762
17763         * marshal.c: Use mono_metadata_signature_{alloc,dup} where appropriate.
17764
17765         * metadata.h: Add new marshalling conversions.
17766
17767         * metadata.h metadata.c (mono_metadata_signature_dup): New helper
17768         function.
17769
17770         * reflection.c (mono_reflection_get_type): Lookup the type in all
17771         modules of a multi-module assembly. Fixes #58291.
17772
17773 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
17774
17775         * threads.c: Before aborting a background, set the StopRequested
17776         state.  This avoids throwing the Abort exception.
17777         In mono_thread_manage, don't continue with the shutdown until all
17778         aborted threads have actually stopped.
17779
17780 2004-05-10  Jackson Harper  <jackson@ximian.com>
17781
17782         * locales.c: Remove the modifier from culture names.
17783         
17784 2004-05-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17785
17786         * Makefile.am: monosn is not installed any more. It has been deprecated
17787         in favor of sn.
17788
17789 2004-05-07  Jackson Harper  <jackson@ximian.com>
17790
17791         * locales.c
17792         (ves_icall_System_Globalization_CultureInfo_internal_get_cultures):
17793         Fix array construction, add bailout if the length is 0.
17794
17795 2004-05-07  Dick Porter  <dick@ximian.com>
17796
17797         * socket-io.c (addrinfo_to_IPHostEntry): Don't crash if the
17798         machine doesn't have a DNS entry.  Patch by Urs Muff
17799         (umuff@quark.com), fixes bug 57928.
17800
17801 2004-05-06  Jackson Harper  <jackson@ximian.com>
17802
17803         * reflection.c: Handle null PublicTokens properly. alloc mem for
17804         assembly names culture so we dont crash when freeing it.
17805         
17806 2004-05-06  Jackson Harper  <jackson@ximian.com>
17807
17808         * assembly.c: Check the usergac when loading with partial names.
17809         
17810 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
17811
17812         * rand.c|h: Added new icall for (optionally) seeding the PRNG. This 
17813         does nothing for now (not required for Linux/Windows) but the class
17814         library can call it (and a newer or modified runtime could need it).
17815         * icall.c: Registred icall.
17816
17817 2004-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17818
17819         * loader.c: prints a message on module loading error we set MONO_DEBUG
17820         environment variable.
17821
17822 2004-05-05  Jackson Harper  <jackson@ximian.com>
17823
17824         * appdomain.c: Handle PublicKeyToken=null properly.
17825         
17826 2004-05-05  Sebastien Pouliot  <sebastien@ximian.com>
17827
17828         * environment.c|h: Added icall ves_icall_System_Environment_
17829         GetOSVersionString to get the current OS version as a string.
17830         * icall.c: Registred icall.
17831
17832 2004-05-05  Lluis Sanchez Gual  <lluis@ximian.com>
17833
17834         * object.c: in mono_object_get_virtual_method(), take into account that
17835         non-virtual methods don't have a slot in the vtable. Check needed when
17836         the object is a proxy.
17837
17838 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
17839
17840         * marshal.h marshal.c icall.c: Applied patch from vladimir@pobox.com
17841         (Vladimir Vukicevic). Implement UnsafeAddrOfPinnedArrayElement.
17842
17843         * object.c (mono_class_compute_gc_descriptor): Fix warning.
17844
17845         * object.c (mono_runtime_invoke_array): Add an assert so null cannot be
17846         passed when a valuetype is expected.
17847
17848         * object.c (mono_unhandled_exception): Only set the exit code if the
17849         exception happens in the main thread. Fixes thread5.exe.
17850
17851         * appdomain.c (get_info_from_assembly_name): Fix infinite loop on
17852         invalid names. Fixes #58047.
17853
17854 2004-05-03  Jackson Harper  <jackson@ximian.com>
17855
17856         * assembly.c: This line was committed accidently and is unneeded.
17857         
17858 2004-05-03  Jackson Harper  <jackson@ximian.com>
17859
17860         * icall.c: Add new icall for Assembly::LoadWithPartialName
17861         * assembly.c/.h: new function that probes the GAC to load partial
17862         assembly names by Paolo Molaro.
17863         
17864 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17865
17866         * appdomain.c: use g_strncasecmp when looking for 'Culture=' et al.
17867         * reflection.c: use g_strncasecmp when looking for 'Culture=' et al.
17868         (type_get_fully_qualified_name): Added PublicKeyToken when building a
17869         full type name.
17870
17871 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17872
17873         * appdomain.c: fixed check for 'neutral' culture and removed warning.
17874         * reflection.c: fix bug when parsing a full type name and Version is not
17875         the last thing in the string.
17876
17877 2004-05-03  Zoltan Varga  <vargaz@freemail.hu>
17878
17879         * appdomain.c (get_info_from_assembly_name): Strdup "" to prevent
17880         crashes when it is freed.
17881
17882 2004-05-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17883
17884         * assembly.c: print the compat warning to stderr.
17885
17886 2004-05-01  Miguel de Icaza  <miguel@ximian.com>
17887
17888         * assembly.c (mono_assembly_load_references): Add a compatibility
17889         hack to run old applications that might be still referencing the
17890         3300-based assemblies, only do this for System.xxx.
17891
17892 2004-05-01  Jackson Harper  <jackson@ximian.com>
17893
17894         * appdomain.c: If the culture is neutral we set it to "".
17895         
17896 2004-04-29  Jackson Harper  <jackson@ximian.com>
17897
17898         * locales.c: Add some missing MONO_ARCH_SAVE_REGS'.
17899
17900 2004-04-29  Andreas Nahr <ClassDevelopment@A-SoftTech.com>
17901  
17902         * string-icalls.c: added low overhead function for copying chars
17903         * icall.c: added needed icall for the above function
17904  
17905 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17906
17907         * icall.c: fix return value of get_global_assembly_cache.  Implemented
17908         Environment.GetLogicalDrives.
17909
17910 2004-04-28  Bernie Solomon  <bernard@ugsolutions.com>
17911
17912         * rand.c: try and talk to egd or prngd
17913         for random bytes if opening devices fail.
17914
17915 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
17916
17917         * marshal.c (mono_marshal_load_type_info): Calculate the minimum
17918         alignment for the type using the native alignment of its members 
17919         instead of using klass->min_align.
17920
17921         * metadata.c (mono_type_stack_size): Fix size of TYPEDBYREF.
17922
17923 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17924
17925         * file-io.c:
17926         * socket-io.c: added check for sys/aio.h.
17927
17928 2004-04-28  Dick Porter  <dick@ximian.com>
17929
17930         * threads.c: Don't abort a thread thats already aborting, when
17931         terminating everything.
17932
17933 2004-04-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
17934
17935         * icall.c: added 2 new async calls for Socket.
17936
17937         * socket-io.[ch]: fixed some warnings. Added support for asynchronous
17938         IO on *nix systems.
17939
17940         * threadpool.c: removed unused variable.
17941
17942 2004-04-27  Zoltan Varga  <vargaz@freemail.hu>
17943
17944         * marshal.c: Handle null properly in PtrToString* icalls. Fixes #57706.
17945
17946 Tue Apr 27 15:55:17 CEST 2004 Paolo Molaro <lupus@ximian.com>
17947
17948         * locales.c: put back string_invariant_tolower () and
17949         string_invariant_toupper ().
17950
17951 2004-04-26 David Waite <mass@akuma.org>
17952
17953         * file-io.h:
17954         * socket-io.h:
17955         * threads.h:
17956         * unicode.h: remove comma from end of enumeration declarations
17957
17958 2004-04-26 David Waite <mass@akuma.org>
17959
17960         * debug-mono-symfile.h:
17961         * decimal.c:
17962         * mono_debug.h:
17963         * sysmath.c: Define 64 bit constants as long long types (i.e. 10ULL)
17964
17965
17966 2004-04-26  Jackson Harper  <jackson@ximian.com>
17967
17968         * appdomain.c: Increment version number.
17969         
17970 2004-04-26  Jackson Harper  <jackson@ximian.com>
17971
17972         * appdomain.c: Set assembly references public token value when
17973         PublicKeyToken is specified, not the hash_value. Free public token
17974         values when free assembly name data. Previously the public key
17975         token was hex decoded, however we are using hex encoded public key
17976         tokens, so this is not neccasary.
17977         * assembly.c: Lookup assemblies in the gac if their public token
17978         value is set. Add function to allow enabling user gac
17979         lookups. Specify whether or not the assembly was loaded from the
17980         GAC. Compare full assembly names when checking the cache for
17981         assemblies (Temporarily disabled see comment in code). Remove
17982         mscorlib -> corlib mapping cruft. Add trace-loading. When a user
17983         specifies trace-loader they get extra info to stdout on the
17984         loading of assemblies.
17985         * image.h: Add a field for an assembly references public token
17986         value to MonoAssemblyname. Add a field to MonoAssembly to specifiy
17987         whether an assembly has been loaded from the GAC.
17988         * image.c: Remove a corlib -> mscorlib name mapping.
17989         * loader.h: Add function to enable/disable the user gac.
17990         * mono-config.c: Check if the usergac is enabled in the config
17991         file.
17992         * icall.c: New icall to determine whether or not an assembly has
17993         been loaded from the GAC. Remove some mscorlib -> corlib mappings.
17994         * tabldefs.h: Add constant for assemblyref flag that specifies a
17995         full public key is used instead of a public token.
17996         * reflection.c: Remove mscorlib -> corlib mappings. Set
17997         PublicTokenValue instead of hash value. This value is a hex
17998         string so it does not need to be expanded.
17999
18000 2004-04-26  Martin Baulig  <martin@ximian.com>
18001
18002         * mono-debug-debugger.c (mono_debugger_initialize): Set
18003         `mono_debugger_initialized' before calling mono_debug_lock().
18004
18005 2004-04-42  Robert Shade <rshade@dvsconsulting.com>
18006
18007         * icall.c: icalls for Char.ToUpper/ToLower are now hooked to
18008           InternalToUpper/InternalToLower.
18009         * locales.c: (ves_icall_System_{Char,String}_InternalTo{Upper,Lower}_Comp)
18010           removed invariant culture shortcut.  This is now done in managed code.
18011         * locales.c: (string_invariant_toupper/tolower) removed.
18012
18013 2004-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18014
18015         * icall.c: added GetSupportsAsync for Socket (same as MonoIO).
18016         Added Poll internal call.
18017
18018         * socket-io.[ch]: _wapi_socket == WSASocket. Added internal
18019         call for Poll. Select was too heavy for polling a single socket.
18020
18021         * threadpool.[ch]: added mono_threadpool_cleanup.
18022         * threads.c: use it. Don't use Thread_Abort on windows.
18023
18024 2004-04-23  Martin Baulig  <martin@ximian.com>
18025
18026         * mono-debug-debugger.c (mono_debugger_lookup_assembly): New function.
18027
18028 2004-04-23  Sebastien Pouliot  <sebastien@ximian.com>
18029
18030         * icall.c: Registred new icalls for key pair protection and added an
18031         icall for Environment.GetFolderPath on Windows.
18032         * security.c|h: Added new icalls for key pair protection.
18033
18034 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18035
18036         * socket-io.c: don't display the non-supported family warning for known
18037         families. Now this is not displayed on windows when checking support
18038         for IPv4/IPv6.
18039
18040 2004-04-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18041
18042         * class.c: don't display the layout warning for static fields.
18043
18044 2004-04-21  Lluis Sanchez Gual <lluis@ximian.com>
18045
18046         * icall.cs: Registered new icalls for Char.ToLower and Char.ToUpper.
18047         * locales.c, locales.h: Added new icalls for culture-specific
18048         Char.ToLower and Char.ToUpper.
18049
18050 2004-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18051
18052         * threads.c: the 2nd argument when aborting a thread is NULL now. Patch
18053         by David Waite.
18054
18055 2004-04-20  Martin Baulig  <martin@ximian.com>
18056
18057         * mono-debug-debugger.c (mono_debugger_lookup_type): Make a copy
18058         of the type name before passing it to mono_reflection_type_from_name().
18059
18060 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
18061
18062         * marshal.c (mono_marshal_get_managed_wrapper): Handle different string
18063         encodings here. Fixes #56965.
18064
18065 2004-04-18  Bernie Solomon <bernard@ugsolutions.com>
18066
18067         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
18068         fix test on strstr result not that I can see anything that
18069         relies on the result.
18070
18071 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
18072
18073         * metadata.c (mono_type_to_unmanaged): Handle MONO_NATIVE_FUNC as well.
18074         Fixes #57081.
18075
18076         * marshal.c (mono_marshal_get_string_encoding): New helper function.
18077
18078         * marshal.c (mono_marshal_get_native_wrapper): Use the new helper
18079         function to determine which marshalling to use for strings. Fixes
18080         #56965.
18081
18082         * marshal.c (mono_marshal_string_array_to_unicode): Fix warning.
18083
18084         * reflection.c (encode_marshal_blob): Add support for LPARRAY.
18085
18086 2004-04-15  Bernie Solomon  <bernard@ugsolutions.com>
18087
18088         * icall.c: #include mono-config.h
18089
18090 2004-04-15  Jackson Harper  <jackson@ximian.com>
18091
18092         * culture-info-tables.h: Fix date formats for en-US culture.
18093         
18094 2004-04-15  Lluis Sanchez Gual  <lluis@ximian.com>
18095
18096         * icall.c: Registered icalls for ThreadPool.GetMinThreads and 
18097         ThreadPool.SetMinThreads.
18098         * threadpool.c: Implemented ThreadPool.GetMinThreads and
18099         ThreadPool.SetMinThreads.
18100
18101 Thu Apr 15 15:36:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
18102
18103         * mono-config.c: also load the .config file in the directory
18104         where the assembly was found.
18105
18106 Thu Apr 15 14:24:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
18107
18108         * assembly.c: load per-assembly config files.
18109         * icall.c: decrapified code to get the config dir and moved to
18110         mono-config.c.
18111         * image.h, loader.c, loader.h, mono-config.c, mono-config.h: allow
18112         per-assembly config files. When doing a dll map lookup give precedence
18113         to the per-assembly data.
18114
18115 2004-04-14  Martin Baulig  <martin@ximian.com>
18116
18117         * mono-debug-debugger.h (MonoDebuggerEvent): Removed
18118         MONO_DEBUGGER_EVENT_TYPE_ADDED and MONO_DEBUGGER_EVENT_METHOD_ADDED
18119         and added MONO_DEBUGGER_EVENT_RELOAD_SYMTABS.
18120
18121         * mono-debugger-debugger.c: While the debugger is locked, remember
18122         whether the symbol tables have changes and send one single
18123         MONO_DEBUGGER_EVENT_RELOAD_SYMTABS when releasing the lock.
18124
18125 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
18126
18127         * metadata.h: Add STRARRAY_STRWLPARRAY marshalling convention.
18128
18129         * marshal.h marshal.c (mono_marshal_string_array_to_unicode): New 
18130         function.
18131
18132         * marshal.c (mono_marshal_get_native_wrapper): Take CharSet into
18133         account when marshalling string arrays. Fixes #56965.
18134
18135 2004-04-13  Sebastien Pouliot  <sebastien@ximian.com>
18136
18137         * icall.c: Add new icalls mapping for security.
18138         * security.c|h: Add internal calls for WindowsIdentity,
18139         WindowsImpersonationContext and WindowsPrincipal.
18140
18141 2004-04-13  Gert Driesen (drieseng@users.sourceforge.net)
18142
18143         * class.c: Added comment to ensure the System.MonoDummy class
18144         is removed when no longer necessary
18145
18146 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
18147
18148         * appdomain.c: Pass arguments to the bootstraping exceptions to
18149         minimize JITed methods at boot
18150
18151         * metadata.c (mono_exception_from_name_two_strings): Allow for the
18152         second string to be null.
18153
18154         * icall.c (ves_icall_System_Text_Encoding_InternalCodePage):
18155         Change the protocol to minimize the JIT methods at startup.  Now
18156         it Returns the internal codepage, if the value of "int_code_page"
18157         is 1 at entry, and we can not compute a suitable code page
18158         number, returns the code page as a string.
18159
18160 2004-04-13  Jackson Harper  <jackson@ximian.com>
18161
18162         * culture-info-tables.h: Fix number of decimal digits for all
18163         english locales.
18164
18165 2004-04-13  Jackson Harper  <jackson@ximian.com>
18166
18167         * icall.c: Clairfy out of sync error message. It is not always
18168         your corlib that is out of sync.
18169
18170 2004-04-13  Zoltan Varga  <vargaz@freemail.hu>
18171
18172         * icall.c (ves_icall_Type_GetPropertiesByName): Avoid duplicate
18173         properties when only the set accessor is overriden. Fixes #55874.
18174
18175 2004-04-09  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * assembly.c (mono_assembly_load_references): Make this thread safe.
18178         Fixes #56327.
18179
18180 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
18181
18182         * monosn.c: Add missing initialization calls.
18183
18184 2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
18185
18186         * locales.c:
18187         ves_icall_System_Globalization_CultureInfo_construct_number_format
18188         Fix g_assert so it compiles on fussier compilers re int/ptr
18189         mismatch
18190
18191 2004-04-08  Dick Porter  <dick@ximian.com>
18192
18193         * socket-io.h:
18194         * socket-io.c: Don't set SO_REUSEADDR on windows.  Fixes bug
18195         53992.  Also rearrange the code so that the internal calls return
18196         an error value and exceptions are thrown from managed code.
18197
18198         * icall.c: Add type info to the socket icalls.
18199
18200 2004-04-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18201
18202         * object.h: synchronize MonoCompareInfo with CompareInfo class. Someone
18203         owes me a beer.
18204
18205 2004-04-07  Martin Baulig  <martin@ximian.com>
18206
18207         * class.c (mono_class_from_generic_parameter): Don't default
18208         `klass->parent' to `mono_defaults.object_type'.
18209
18210 2004-04-07  Martin Baulig  <martin@ximian.com>
18211
18212         * reflection.c (mono_reflection_initialize_generic_parameter): Set
18213         `param->pklass->reflection_info'.       
18214
18215 2004-04-07  Jackson Harper  <jackson@ximian.com>
18216
18217         * culture-info-tables.h: Fix date separator symbol.
18218         
18219 2004-04-07  Martin Baulig  <martin@ximian.com>
18220
18221         * icall.c (ves_icall_Type_GetGenericArguments): Moved this icall
18222         from System.Type to System.MonoType.
18223
18224 2004-04-07  Martin Baulig  <martin@ximian.com>
18225
18226         * reflection.h
18227         (MonoReflectionGenericParam): Added `has_reference_type' and
18228         `has_value_type' fields.
18229
18230         * reflection.c (mono_image_get_generic_param_info): Encode the
18231         correct flags if we have the `class' or `struct' constraint.
18232
18233 2004-04-07  Martin Baulig  <martin@ximian.com>
18234
18235         * reflection.h
18236         (MonoReflectionGenericParam): Added `MonoBoolean has_ctor_constraint'.
18237
18238 2004-04-07  Jackson Harper  <jackson@ximian.com>
18239
18240         * appdomain.c: Revert extra patches, just wanted to bump the
18241         version number.
18242         
18243 2004-04-07  Jackson Harper  <jackson@ximian.com>
18244
18245         * Makefile.am: Add culture-info private headers.
18246         * icall.c: Add new icalls for contructing locales.
18247         * locales.c: Construct CultureInfo objects from lookup tables instead of using ICU.
18248         * locales.h: Declare new culture info construction methods.
18249         * object.h: Add new fields used to avoid the CultureMap to
18250         MonoCultureInfo.
18251         * culture-info.h: Definition of structs used in the culture info
18252         tables.
18253         * culture-info-tables.h: Autogenerated tables that contain culture
18254         info data. This file was generated with the locale-builder tool.
18255         * appdomain.c: Incement corlib version number.
18256         
18257 2004-04-07  Bernie Solomon  <bernard@ugsolutions.com>
18258
18259         * appdomain.c: (mono_runtime_init) move mono_thread_init
18260         to before mono_object_new calls so critical sections
18261         are initialized before use.
18262
18263 2004-04-07  Martin Baulig  <martin@ximian.com>
18264
18265         * icall.c
18266         (ves_icall_TypeBuilder_define_generic_parameter): Removed.
18267         (ves_icall_MethodBuilder_define_generic_parameter): Removed.
18268         (ves_icall_MonoGenericParam_initialize): Removed.
18269         (monogenericparam_icalls): Removed.
18270         (generictypeparambuilder_icalls): Added new table for
18271         System.Reflection.Emit.GenericTypeParameterBuilder.
18272
18273         * reflection.c
18274         (mono_reflection_define_generic_parameter): Removed.
18275         (mono_reflection_initialize_generic_parameter): This is now called
18276         from GenericTypeParameterBuilder's .ctor.
18277
18278 2004-04-06  Martin Baulig  <martin@ximian.com>
18279
18280         * class.c (mono_class_init): Don't inflate nested classes in a
18281         generic instance.
18282         (mono_type_get_name_recurse): Include the generic arguments for
18283         generic instances and generic type declarations.
18284         (inflate_generic_type): Correctly inflate MONO_TYPE_SZARRAY.
18285         (_mono_class_get_instantiation_name): Removed.
18286         (mono_class_create_generic): Always use `gklass->name' as our name.
18287
18288         * class.h (MonoGenericInst): Removed `nested_in', and `nested'.
18289
18290         * icall.c (ves_icall_MonoGenericInst_GetDeclaringType): Removed.
18291         (ves_icall_MonoGenericInst_GetNestedTypes): Removed.
18292         (ves_icall_MonoMethod_GetGenericParameters): Renamed to
18293         ves_icall_MonoMethod_GetGenericArguments() and correctly handle
18294         closed generic methods here.
18295
18296         * reflection.c
18297         (mono_reflection_generic_inst_get_nested_types): Removed.
18298         (inflate_mono_method): Copy the generic parameters from the
18299         MonoMethodHeader into out MonoGenericMethod.
18300
18301 2004-04-06  Martin Baulig  <martin@ximian.com>
18302
18303         * row-indexes.h
18304         (MONO_GENERICPARAM_DEPRECATED_CONSTRAINT): Removed.
18305
18306         * metadata.c (GenericParamSchema): Removed "DeprecatedConstraint".
18307
18308         * reflection.c (build_compressed_metadata): If we have any entries
18309         in the GenericParam, MethodSpec or GenericParamConstraint tables,
18310         set the header version to 1.1.
18311
18312 2004-04-06  Martin Baulig  <martin@ximian.com>
18313
18314         * class.c (mono_class_init): If we're a generic instance,
18315         initialize our nested classes, too.
18316         (_mono_class_get_instantiation_name): Deal with the new `!%d'
18317         suffix. 
18318
18319 2004-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18320
18321         * process.c: quote the argument passed to the shell on windows.
18322
18323 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
18324
18325         * threads.c (mono_alloc_special_static_data): Allow this to be
18326         called during startup.
18327
18328 2004-04-02  Martin Baulig  <martin@ximian.com>
18329
18330         * icall.c
18331         (ves_icall_MonoGenericInst_GetDeclaringType): New icall.
18332
18333 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
18334
18335         * icall.c: Fix build.
18336
18337 2004-04-02  Sebastien Pouliot  <sebastien@ximian.com>
18338
18339         * Makefile.am: Added security.c|h.
18340         * icall.c: Added icall for get_UserName;
18341         * security.c: New file for security related icalls. Added function
18342         get_UserName for System.Environment (fix #56144).
18343         * security.h: New. Header file for security.c
18344
18345 2004-04-02  Dick Porter  <dick@ximian.com>
18346
18347         * icall.c: Deleted the icalls that were obsoleted some time ago
18348         by the ICU string code, and which were mixed into the icall
18349         rearranging.  Fixes bug 55969.
18350
18351         * string-icalls.h: 
18352         * string-icalls.c: Deleted the code that those icalls reference.
18353
18354 2004-04-01  Martin Baulig  <martin@ximian.com>
18355
18356         * metadata.h (MONO_CLASS_IS_INTERFACE): New macro.
18357
18358         * class.c (mono_class_from_generic_parameter): Don't set 
18359         TYPE_ATTRIBUTE_INTERFACE.
18360         (my_mono_class_from_generic_parameter): Likewise.
18361
18362 2004-04-01  Martin Baulig  <martin@ximian.com>
18363
18364         * loader.c (find_method): Added an optional `MonoClass *ic'
18365         argument to search in a specific interface.
18366         (mono_get_method_constrained): New public function.
18367
18368 2004-04-01  Martin Baulig  <martin@ximian.com>
18369
18370         * reflection.c (mono_image_get_generic_field_token): Use the
18371         `handleref' cache here.
18372
18373 2004-04-01  Martin Baulig  <martin@ximian.com>
18374
18375         * reflection.h (MonoDynamicImage): Added `GHashTable *typespec'.
18376
18377         * reflection.c (create_generic_typespec): Use the `typespec' hash
18378         here, not the `typeref' one.    
18379
18380 2004-04-01  Martin Baulig  <martin@ximian.com>
18381
18382         * class.c (mono_class_inflate_generic_type): Moved the
18383         functionality into a new static inflate_generic_type() which
18384         returns NULL if it didn't do anything.  Only increment the
18385         `mono_stats.inflated_type_count' if we actually inflated
18386         something.
18387         (mono_class_get_full): Check the classes type to see whether we
18388         need to inflate it; also inflate MONO_TYPE_(M)VAR.
18389
18390 2004-04-01  Jackson Harper  <jackson@ximian.com>
18391
18392         * reflection.c: Set culture for assembly references.
18393         
18394 2004-04-01 Ben Maurer  <bmaurer@users.sourceforge.net>
18395
18396         * reflection.[ch], icall.[ch], Fix support for pinning variables.
18397
18398 2004-04-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18399
18400         * assembly.c:
18401         (do_mono_assembly_open): the critical section also covers
18402         mono_image_open and mono_image_open_from_data. Fixes bug #56327.
18403
18404 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18405
18406         * threads.c:
18407         (mono_manage_threads): abort the background threads when finishing.
18408         Fixes bug #47232.
18409
18410 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18411
18412         * gc.c: only close the done_event handle if there was no timeout.
18413         C-ified comments.
18414
18415 2004-03-30  Martin Baulig  <martin@ximian.com>
18416
18417         * icall.c (icall_entries): It's called "System.Activator", not
18418         "System.Activation".    
18419
18420 2004-03-30  Martin Baulig  <martin@ximian.com>
18421
18422         * class.c (mono_ldtoken): Added `MonoGenericContext *' argument.
18423         (mono_class_create_from_typespec): Likewise.
18424
18425 2004-03-30  Martin Baulig  <martin@ximian.com>
18426
18427         * reflection.h (MonoReflectionGenericParam): Use MonoBoolean for
18428         `has_ctor_constraint' and `initialized'.
18429
18430 2004-03-30  Martin Baulig  <martin@ximian.com>
18431
18432         * reflection.c (encode_new_constraint): New static function to add
18433         the constructor constraint attribute to a type parameter.
18434         (encode_constraints): Call encode_new_constraint() if necessary.
18435
18436         * reflection.h
18437         (MonoReflectionGenericParam): Added `guint32 has_ctor_constraint'.
18438
18439         * row-indexes.h: Added CUSTOM_ATTR_GENERICPAR.
18440         
18441 2004-03-29 Ben Maurer  <bmaurer@users.sourceforge.net>
18442
18443         * reflection.c, icall.c: add support for pinning variables. 
18444
18445 2004-03-29  Bernie Solomon  <bernard@ugsolutions.com>
18446
18447         * marshal.c (mono_marshal_get_managed_wrapper):
18448         init bool local with zero rather than null.
18449
18450 2004-03-29  Martin Baulig  <martin@ximian.com>
18451
18452         * icall.c (ves_icall_MonoMethod_get_HasGenericParameters): Show
18453         the "official" behavior here.
18454         (ves_icall_MonoMethod_get_Mono_IsInflatedMethod): New interncall.
18455
18456 2004-03-29  Martin Baulig  <martin@ximian.com>
18457
18458         * icall.c: Reflect latest API changes.
18459
18460 2004-03-29  Martin Baulig  <martin@ximian.com>
18461
18462         * loader.c (mono_get_method_from_token): Also call
18463         mono_metadata_load_generic_params () for abstract and interface
18464         methods; replace the type arguments in the method signature with
18465         the ones which are loaded from the metadata.
18466
18467 2004-03-29  Lluis Sanchez Gual  <lluis@ximian.com>
18468
18469         * monitor.c: In mono_monitor_exit(), don't throw an exception if the owner
18470         of the lock is not the current thread. MS.NET don't do it, in spite of
18471         what the documentation says. See bug #56157.
18472
18473 2004-03-28  Martin Baulig  <martin@ximian.com>
18474
18475         * class.c (mono_class_init): Don't call init_properties() and
18476         init_events() for generic instances; set `prop->parent' when
18477         inflating properties.
18478
18479         * reflection.c (mono_generic_inst_get_object): Call
18480         `mono_class_init (ginst->klass)'.
18481         (mono_type_get_object): Only create a MonoGenericInst if your
18482         generic type is a TypeBuilder.
18483         (do_mono_reflection_bind_generic_parameters): Only set
18484         `ginst->is_dynamic' if our generic type is a TypeBuilder.
18485
18486 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * appdomain.c (unload_thread_main): Do not clear proxy_vtable_hash.
18489         Fixes #56091.
18490
18491 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18492
18493         * icall.c: added Kill_internal icall.
18494         * process.[ch]: added Kill_internal icall.
18495
18496 2004-03-25  Martin Baulig  <martin@ximian.com>
18497
18498         * class.h (MonoStats): Added `generic_instance_count',
18499         `inflated_method_count', `inflated_type_count' and
18500         `generics_metadata_size'.       
18501
18502 2004-03-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18503
18504         * reflection.c: no warnings now.
18505
18506 2004-03-25  Martin Baulig  <martin@ximian.com>
18507
18508         * class.c (mono_class_get_full): New public function; does a
18509         mono_class_get(), but also takes a `MonoGenericContext *'.
18510
18511         * loader.c (mono_field_from_memberref): Renamed to
18512         `field_from_memberref', made static and added `MonoGenericContext *'
18513         argument.
18514         (mono_field_from_token): Added `MonoGenericInst *' argument.
18515         (method_from_memberef): Likewise.
18516         (mono_get_method_from_token): Likewise.
18517         (mono_get_method_full): New public function; does a
18518         mono_get_method(), but also takes a `MonoGenericContext *'.
18519
18520         * verify.c (mono_method_verify): Get the method's generic context
18521         and pass it to mono_field_from_token(), mono_get_method_full() and
18522         mono_class_get_full().
18523
18524 2004-03-25  Martin Baulig  <martin@ximian.com>
18525
18526         * class.c (mono_class_inflate_generic_type): Take a
18527         `MonoGenericContext *' instead of a `MonoGenericInst *' and a
18528         `MonoGenericMethod *'.
18529
18530 2004-03-25  Martin Baulig  <martin@ximian.com>
18531
18532         * loader.h (MonoMethodInflated): Store the MonoGenericContext
18533         instead of the MonoGenericMethod here.
18534
18535 2004-03-25  Martin Baulig  <martin@ximian.com>
18536
18537         * class.h (MonoGenericInst): Added `MonoGenericContext *context';
18538         each time we create a new MonoGenericInst, we also create a new
18539         context which points back to us.
18540
18541         * class.c (inflate_method): Use `ginst->context' instead of
18542         creating a new context.
18543
18544         * loader.c (method_from_memberref): Use
18545         `klass->generic_inst->context' instead of creating a new context.
18546
18547 2004-03-25  Martin Baulig  <martin@ximian.com>
18548
18549         * class.h (MonoGenericContext): New struct.
18550         (MonoGenericMethod): Removed `generic_inst'.
18551
18552         * class.c (mono_class_inflate_generic_method): Take a
18553         `MonoGenericContext *' instead of a `MonoGenericMethod *'.
18554
18555 2004-03-25  Martin Baulig  <martin@ximian.com>
18556
18557         * loader.h (MonoMethodInflated): New typedef.
18558
18559         * metadata.h (MonoMethodSignature): Removed `gen_method', make
18560         `generic_param_count' consume just 30 bits, added `is_inflated'
18561         and `has_type_parameters' flags (one bit each).
18562
18563         * class.c (mono_class_inflate_generic_method): Create a
18564         MonoMethodInflated instead of a MonoMethodNormal and set
18565         `is_inflated' in the method signature.
18566
18567         * class.h (MonoGenericMethod): Removed `generic_method'.
18568
18569 2004-03-25  Lluis Sanchez Gual  <lluis@ximian.com>
18570
18571         * image.c: Make sure the name of a MonoImage is always an absolute path.
18572           This fixes bug #54415.
18573
18574 2004-03-24  Martin Baulig  <martin@ximian.com>
18575
18576         * class.c (mono_class_setup_vtable): If we're a generic instance,
18577         use our generic type's vtable size.
18578
18579 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
18580
18581         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Add
18582         MONO_NO_UNLOAD env var as a temporary workaround for unloading 
18583         problems.
18584
18585 2004-03-23  Martin Baulig  <martin@ximian.com>
18586
18587         * class.h (MonoDynamicGenericInst): Added `int count_events' and
18588         `MonoEvent *events'.
18589
18590         * icall.c (ves_icall_MonoGenericInst_GetEvents): New interncall.
18591         (typebuilder_icalls): Added "get_event_info"; calls
18592         mono_reflection_event_builder_get_event_info(). 
18593
18594         * reflection.c (mono_reflection_generic_inst_initialize): Added
18595         `MonoArray *events'.
18596         (mono_reflection_event_builder_get_event_info): New function.
18597
18598 2004-03-23  Bernie Solomon  <bernard@ugsolutions.com>
18599
18600         * object.h: add mono_type_initialization_init
18601
18602         * object.c (mono_runtime_class_init): 
18603         implement class constructor synchronization rules
18604         to cope with threading issues.  
18605         add mono_type_initialization_init
18606
18607         * appdomain.c (mono_runtime_init): call 
18608         mono_type_initialization_init
18609
18610         * class.h: removing initializing field from MonoVTable
18611
18612 2004-03-23  Martin Baulig  <martin@ximian.com>
18613
18614         * class.c (my_mono_class_from_generic_parameter): Use
18615         `param->name' if it's not NULL. 
18616
18617 2004-03-22 Ben Maurer  <bmaurer@users.sourceforge.net>
18618
18619         * class.c: do not insert non-virtual methods in the vtable.
18620         * icall.c, mono-debug-debugger.c, object.c: if method->slot == -1,
18621         that means the method is non-virtual. This never would have
18622         happened before.
18623
18624 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
18625
18626         * profiler.c: Added lock for accessing coverage_hash.
18627
18628 2004-03-22  Martin Baulig  <martin@ximian.com>
18629
18630         * icall.c (ves_icall_MethodInfo_get_IsGenericMethod): Use
18631         `method->method->signature->generic_param_count != 0' to make it
18632         work for interface methods.
18633
18634 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18635
18636         * process.c: quote the string passed to the shell using g_shell_quote.
18637
18638 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18639
18640         * threads.c:
18641         (mono_threads_manage): don't remove the finalizer thread and self
18642         from the threads hash table so that mono_thread_manage can be called
18643         more than once.
18644
18645 2004-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18646
18647         * process.c: quote the arguments when UseShellExecute is true. Fixes
18648         bug #55790.
18649
18650 2004-03-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18651
18652         * threads.c: set mono_thread_detach as a cleanup routine for every
18653         thread. This way it's always executed upon thread termination, either
18654         aborted or finished normally. No more xsp hangs!
18655
18656 2004-03-17  Martin Baulig  <martin@ximian.com>
18657
18658         * class.h (MonoGenericInst): Replaced the `GList *nested' with an
18659         `int count_nested' and a `MonoType **nested'.
18660
18661         * reflection.c (mono_reflection_bind_generic_parameters): Moved
18662         most of the functionality into a new static
18663         do_mono_reflection_bind_generic_parameters() and don't take a
18664         `MonoType *nested_in' argument any more.  Don't compute nested
18665         types here.
18666         (mono_reflection_generic_inst_get_nested_types): New public method
18667         to get nested types.
18668
18669         * class.c (mono_class_create_generic): Set `klass->nested_in' if
18670         we're a nested class.
18671
18672         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): Call
18673         mono_reflection_generic_inst_get_nested_types() to compute the
18674         nested types.
18675
18676 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18677
18678         * threads.c (ves_icall_System_Threading_Thread_Abort): Add a more
18679         descriptive error message under windows.
18680         
18681 2004-03-17  Martin Baulig  <martin@ximian.com>
18682
18683         * class.c (dup_type): Added `const MonoType *original' argument;
18684         copy the attrs from the original type.
18685
18686 2004-03-17  Martin Baulig  <martin@ximian.com>
18687
18688         * metadata.c (do_mono_metadata_parse_generic_inst): Use the
18689         `m->generic_inst_cache' here.
18690
18691 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
18692
18693         * exception.h exception.c: Add stack_overflow_exception.
18694
18695 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18696
18697         * threadpool.c:
18698         (overlapped_callback): call SetEvent *after* invoking the callback.
18699         No need to call CloseHandle.
18700
18701 2004-03-16  Martin Baulig  <martin@ximian.com>
18702
18703         * reflection.c (mono_image_get_fieldref_token): Take a
18704         `MonoReflectionField *' instead of a `MonoClassField *' and a
18705         `MonoClass *'; store the `MonoReflectionField *' in the hash.
18706
18707 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18708
18709         * appdomain.c: don't add the culture to the filename we're looking for
18710         if it's neutral or NULL. Fixes bug #53788. Removed redundant memset.
18711
18712 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18713
18714         * locales.c: don't ignore symbols when doing case insensitive compares.
18715         Thanks Dick! Fixes bug #54046.
18716
18717         * threads.c: surround 'threads' usage with enter/leave in
18718         mono_thread_manage.
18719
18720 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
18721
18722         * marshal.c (mono_marshal_get_native_wrapper): Char arrays are 
18723         implicitly marshalled as [Out]. Fixes #55450.
18724
18725         (mono_marshal_get_runtime_invoke): Zero out the result if there is
18726         an exception.
18727
18728 2004-03-16  Martin Baulig  <martin@ximian.com>
18729
18730         * class.c (mono_class_from_generic_parameter): Use the actual
18731         parameter name. 
18732
18733 2004-03-16  Martin Baulig  <martin@ximian.com>
18734
18735         * reflection.c (type_get_signature_size): New static function.
18736         Compues the size of the type in a method signature.
18737         (method_get_signature_size): New static function; calls
18738         type_get_signature_size() to compute the actual size of the
18739         method's signature.
18740         (method_encode_signature): Use method_get_signature_size() to get
18741         the signature's size rather than using `nparams * 10'.
18742
18743 2004-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18744
18745         * file-io.h: define here WapiOverlapped on windows. I don't want the
18746         regular OVERLAPPED one.
18747
18748         * file-io.c:
18749         * threadpool.c: somehow, BindIoCompletionCallback is not found.
18750         Disabling AIO on windows.
18751
18752 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18753
18754         * marshal.c: Marshal.SizeOf throws an exception for AutoLayout. Fixes
18755         bug #55385.
18756
18757 2004-03-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18758
18759         * appdomain.c: upgraded corlib version.
18760
18761         * file-io.c: implemented new icalls: GetSupportsAIO, BeginRead
18762         and BeginWrite. Allow opening files for asynchrnous operations.
18763
18764         * file-io.h: new struct that maps FileStreamAsyncResult.
18765         * icall.c: added new icalls.
18766         * process.[ch]: support setting child process environment variables
18767         and use the SHELL or COMSPEC when UseShellExecute is true.
18768
18769         * threadpool.[ch]: fixed warnings, moved ThreadPool icalls here. The
18770         callback for async. IO is here and also BindHandle.
18771
18772         * threads.[ch]: added mono_thread_detach and removed ThreadPool icalls
18773         from here.
18774
18775 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
18776
18777         * reflection.c (create_custom_attr): Allow len == 0.
18778
18779         * object.c (mono_class_compute_gc_descriptor): Fix descriptor
18780         computation on big-endian machines.
18781
18782 2004-03-13  Martin Baulig  <martin@ximian.com>
18783
18784         * class.h (MonoGenericInst): Added `int count_ifaces'.
18785
18786         * iclass.c (ves_icall_MonoGenericInst_GetInterfaces): Use
18787         `ginst->count_ifaces' instead `klass->interface_count' since we
18788         may get called before the vtable is created.
18789
18790         * loader.c (mono_method_get_param_names): If we're a generic
18791         instance, return and don't initialize the class.
18792
18793         * reflection.c (mono_reflection_setup_generic_class): Don't call
18794         ensure_runtime_vtable().
18795         (mono_reflection_bind_generic_parameters): Set
18796         `ginst->count_ifaces'.
18797
18798 2004-03-11  Jackson Harper <jackson@ximian.com>
18799
18800         * icall.c:
18801         * unicode.c:
18802         * unicode.h: Remove unused System.Char icalls.
18803         
18804 2004-03-11  Miguel de Icaza  <miguel@ximian.com>
18805
18806         * loader.c (mono_lookup_pinvoke_call): Call the Windows.Forms init
18807         code when we P/Invoke the first library in Windows.Forms, instead
18808         of when we first open the assembly.
18809
18810         * assembly.c: Drop the lookup from here.
18811
18812 2004-03-10  Martin Baulig  <martin@ximian.com>
18813
18814         * reflection.c (mono_reflection_get_custom_attrs): Use the correct
18815         class for properties, fields and events.  Finally fixes #54945.
18816
18817 2004-03-10  Martin Baulig  <martin@ximian.com>
18818
18819         * metadata.c (mono_metadata_class_equal): New static function;
18820         checks whether two generic instances or two generic parameters are
18821         equal.
18822         (mono_metadata_type_equal): Use mono_metadata_class_equal() to
18823         compare classes.        
18824
18825 2004-03-10  Martin Baulig  <martin@ximian.com>
18826
18827         * class.h (MonoGenericMethod): Added `gpointer reflection_info'.
18828
18829         * reflection.c (inflate_mono_method): Added `MonoObject *obj'
18830         argument and write it into the `reflection_info' field.
18831
18832         * icall.c
18833         (ves_icall_MethodBase_GetGenericMethodDefinition): New interncall.
18834         (ves_icall_MethodBase_get_HasGenericParameters): New interncall.
18835
18836 2004-03-09  Jackson Harper  <jackson@ximian.com>
18837
18838         * char-conversions.h: use 8 bits for numeric data its all we need
18839         * icall.c: numeric data is only 8 bits now.
18840
18841 2004-03-09  Martin Baulig  <martin@ximian.com>
18842
18843         * class.h (MonoProperty, MonoEvent): Added `MonoClass *parent'.
18844
18845         * class.c (init_properties, init_events): Initialize the new
18846         `parent' field.
18847
18848         * reflection.c (typebuilder_setup_properties): Likewise.
18849         (typebuilder_setup_events): Likewise.
18850
18851         * reflection.h (MonoEventInfo): Replaced `parent with
18852         `declaring_type' and `reflected_type'.
18853
18854         * icall.c (ves_icall_get_property_info): Distinguish between
18855         declaring and reflected type.
18856         (ves_icall_get_event_info): Likewise.
18857
18858 2004-03-09  Martin Baulig  <martin@ximian.com>
18859
18860         * icall.c (ves_icall_Type_GetTypeCode): Added MONO_TYPE_GENERICINST.
18861         (ves_icall_Type_GetField): Correctly set field->klass.
18862
18863 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * loader.h: Fix warning.
18866
18867 2004-03-08  Miguel de Icaza  <miguel@ximian.com>
18868
18869         *  loader.c, loader.h (mono_loader_wine_init): Loads the Wine/Lib
18870         library routine if present.  Notice that it will still continue
18871         executing even if its missing, for those working on the Gtk#
18872         edition of Windows.Forms.
18873
18874         * assembly.c (do_mono_assembly_open): If loading the
18875         System.Windows.Forms call mono_loader_wini_init.
18876
18877 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
18878
18879         * class.h: Added MonoRemoteClass struct.
18880         * domain.c: Changed hash function for proxy_vtable_hash. It now uses a
18881         function for MonoStrings.
18882         * icall.c: In GetTransparentProxy, assign a MonoRemoteClass to the proxy.
18883         Added internal call for getting the proxy type.
18884         * marshal.c: Get the type of transparent proxies from its remote_class.
18885         Added methods that generate the IL for type checks and casts:
18886         mono_marshal_get_isinst, mono_marshal_get_castclass, 
18887         mono_marshal_get_proxy_cancast.
18888         * marshal.h: Declaration of the previous new methods.
18889         * object.c: Added new moethods for creating and updating MonoRemoteClass
18890         instances: mono_remote_class, mono_upgrade_remote_class, 
18891         * object.h: Added MonoRemoteClass reference in MonoTransparentProxy.
18892         * verify.c: FIx transparent_proxy_fields layout.
18893         * appdomain.c: Bump corlib version.
18894
18895 2004-03-04  Jackson Harper  <jackson@ximian.com>
18896
18897         * icall.c: Add icall to access char conversion tables.
18898         * char-conversions.h: Character conversion tables.
18899         * Makefile.am: Add char-conversions.h private header file.
18900         
18901 2004-03-04  Zoltan Varga  <vargaz@freemail.hu>
18902
18903         * appdomain.c (unload_thread_main): Increase unloading timeout to
18904         10 sec as a temporary workaround for Nant problems.
18905
18906 2004-02-29  Zoltan Varga  <vargaz@freemail.hu>
18907
18908         * gc.c: Add checks for GC_enable and GC_disable.
18909
18910         * string-icalls.c locales.c: Applied patch from Jaroslaw Kowalski
18911         (jaak@zd.com.pl). Fix memory corruption in String.Replace 
18912         (bug #54988).
18913         
18914 2004-02-27  Martin Baulig  <martin@ximian.com>
18915
18916         * reflection.c (mono_reflection_bind_generic_parameters): Take a
18917         `MonoReflectionType *' instead of a `MonoType *'.
18918
18919 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
18920
18921         * gc.c (run_finalize): Avoid finalizing the object representing the
18922         finalizer thread.
18923         (finalizer_thread): Fix warning.
18924
18925 2004-02-25  Martin Baulig  <martin@ximian.com>
18926
18927         * class.c (_mono_class_get_instantiation_name): Added `int offset'
18928         argument for nested types.
18929         (mono_class_create_generic): Added support for nested generictypes.
18930
18931         * class.h (MonoGenericInst): Added `MonoType *nested_in' and
18932         `GList *nested'.
18933
18934         * icall.c (ves_icall_MonoGenericInst_GetNestedTypes): New icall.
18935
18936         * reflection.c (method_encode_signature): Increase the minimum
18937         value of `size' from 10 to 11.
18938         (mono_reflection_bind_generic_parameters): Take `int type_argc'
18939         and `MonoType **types' arguments instead of the `MonoArray
18940         *types'; added `MonoType *nested_in'.  Recursively instantiate
18941         nested classes. 
18942
18943 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * appdomain.h (MonoDomain): Add preallocated null_reference_ex and 
18946         stack_overflow_ex members which are used by exception handling.
18947
18948         * appdomain.c (mono_runtime_init): Initialize the new members.
18949
18950         * gc.c (mono_gc_enable): New helper function.
18951         * gc.c (mono_gc_disable): New helper function.
18952
18953 2004-02-23  Martin Baulig  <martin@ximian.com>
18954
18955         * icall.c: I must have been really stupid - make it actually work
18956         this time ;-)
18957
18958 2004-02-23  Martin Baulig  <martin@ximian.com>
18959
18960         * loader.c (method_from_memberref): Only inflate the method if
18961         it's in another klass.
18962
18963 2004-02-23  Martin Baulig  <martin@ximian.com>
18964
18965         * class.c (mono_class_inflate_generic_type): Fixed two bugs.
18966         (mono_class_init): If we're a generic instance and an interface,
18967         compute `class->interface_id'; also create `class->interfaces'
18968         here and inflate them.
18969
18970         * metadata.c (do_mono_metadata_parse_generic_inst): Compute
18971         `ginst->is_open'.
18972         (mono_type_stack_size): Fix for MONO_TYPE_GENERICINST.
18973
18974         * reflection.c (mono_image_create_token): Allow "MonoGenericInst".
18975
18976 2004-02-15  Miguel de Icaza  <miguel@ximian.com>
18977
18978         * reflection.c (method_encode_code): Improved the error message
18979         generated by the exception.
18980
18981 2004-02-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
18982
18983         * icall.c: Martin did not do what he said in the ChangeLog for
18984         2004-02-18, but put back the changes for properties and events.
18985         Commenting those changes out again and adding comment to bug #54518.
18986         
18987         * process.c: removed warning.
18988
18989 2004-02-20  Zoltan Varga  <vargaz@freemail.hu>
18990
18991         * marshal.c (emit_struct_conv): Print an error message instead of
18992         asserting when a type does not have the StructLayout attribute.
18993
18994 2004-02-20  Martin Baulig  <martin@ximian.com>
18995
18996         * reflection.c (mono_type_get_object): Also use the cache for
18997         generic instances.
18998         (mono_reflection_bind_generic_parameters): Always compute
18999         `ginst->ifaces'.        
19000
19001 2004-02-20  Martin Baulig  <martin@ximian.com>
19002
19003         * class.h (MonoGenericMethod): Removed `klass'.
19004
19005         * class.c (mono_class_inflate_generic_method): Added `MonoClass
19006         *klass' argument.
19007
19008 2004-02-20  Martin Baulig  <martin@ximian.com>
19009
19010         * reflection.c (method_encode_methodspec): Actually use the
19011         uninflated signature for the memberref.
19012
19013 2004-02-20  Martin Baulig  <martin@ximian.com>
19014
19015         * class.h (MonoGenericMethod): Removed `declaring'.
19016
19017         * class.c (mono_class_inflate_generic_method): If `gmethod->klass'
19018         is NULL, compute it here.
19019
19020 2004-02-20  Martin Baulig  <martin@ximian.com>
19021
19022         * image.h (MonoImage): Added `GHashTable *generic_inst_cache'.
19023
19024         * metadata.c (mono_metadata_generic_inst_hash): New method.
19025         (mono_metadata_generic_inst_equal): New method.
19026
19027         * reflection.c (mono_reflection_bind_generic_parameters): Use the
19028         `klass->image->generic_inst_cache' cache to avoid creating
19029         duplicate MonoGenericInst's.
19030
19031         * class.c (mono_class_inflate_generic_type): Use the cache.
19032
19033 Thu Feb 19 19:39:09 CET 2004 Paolo Molaro <lupus@ximian.com>
19034
19035         * object.c: fixed gc descriptor calculation for embedded valuetypes.
19036
19037 2004-02-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19038
19039         * icall.c: added Socket.WSAIoctl icall.
19040
19041         * socket-io.[ch]: implemented
19042         ves_icall_System_Net_Sockets_Socket_WSAIoctl.
19043
19044 2004-02-19  Atsushi Enomoto  <atsushi@ximian.com>
19045
19046         * icall.c: removed IsDigit, IsSeparator, IsWhiteSpace from char_icalls.
19047
19048 2004-02-18  Urs C Muff  <umuff@quark.com>
19049
19050         * debug-mono-symfile.c, mono-debug-debugger.c, mono-debug.c: Make
19051         this work on PPC and other big-endian architectures.
19052
19053         * debug-mono-symfile.h: Prepended the names of all the `guint32'
19054         fields with an underscore to make sure they're only accessed by
19055         the read32() macro.
19056
19057 2004-02-18  Martin Baulig  <martin@ximian.com>
19058
19059         * icall.c: Put the klass->refclass changes back for methods and
19060         fields, but not for properties and events.  We're currently not
19061         distinguishing between DeclaringType and ReflectedType for
19062         properties and events, that's what caused the regressions.
19063
19064 2004-02-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19065
19066         * object.c:
19067         (mono_async_result_new): the handle can be NULL.
19068
19069         * threadpool.c: Use an event instead of a semaphore, don't initialize
19070         it until needed. This saves quite a few semaphores from being created
19071         when using the threadpool.
19072
19073 2004-02-18  Zoltan Varga  <vargaz@freemail.hu>
19074
19075         * object.c (mono_string_is_interned_lookup): Fix interning of long
19076         strings. Fixes #54473.
19077
19078         * domain.c (ldstr_equal): Optimize if the two strings are equal.
19079
19080         * icall.c: Revert the klass->refclass changes since they introduce
19081         regressions (bug #54518).
19082
19083 2004-02-18  Martin Baulig  <martin@ximian.com>
19084
19085         * class.c (mono_class_init): If we're a generic instance and don't
19086         come from a TypeBuilder, inflate our members here.
19087         (mono_class_from_generic): Removed; just use `ginst->klass' instead.
19088         (mono_class_create_generic): New public method.
19089         (mono_class_initialize_generic): Removed.
19090         (get_instantiation_name): Renamed to
19091         _mono_class_get_instantiation_name() and made it public.
19092
19093 2004-02-18  Martin Baulig  <martin@ximian.com>
19094
19095         * class.c (mono_class_inflate_generic_type): Clear the new
19096         instance's `nginst->klass' when inflating a generic instance.
19097         (mono_class_is_subclass_of): Added (basic) support for generic
19098         instances.
19099
19100 Tue Feb 17 21:40:16 CET 2004 Paolo Molaro <lupus@ximian.com>
19101
19102         * appdomain.h, domain.c: use a MonoCodeManager instead of a
19103         MonoMempool to hold compiled native code.
19104
19105 2004-02-17  Martin Baulig  <martin@ximian.com>
19106
19107         * class.h (MonoDynamicGenericInst): Added `count_properties' and
19108         `properties'.
19109
19110         * reflection.c (mono_reflection_generic_inst_initialize): Added
19111         `MonoArray *properties' argument.
19112
19113         * icall.c (ves_icall_MonoGenericInst_GetProperties): New interncall.    
19114
19115 2004-02-17  Martin Baulig  <martin@ximian.com>
19116
19117         * icall.c (ves_icall_Type_GetFields): Renamed to
19118         ves_icall_Type_GetFields_internal() and added a
19119         `MonoReflectionType *rtype' argument; pass it to
19120         mono_field_get_object() to set the field's "reflected" type.
19121         (ves_icall_Type_GetConstructors): Likewise.
19122         (ves_icall_Type_GetEvents): Likewise.
19123         (ves_icall_Type_GetMethodsByName): Added `MonoReflectionType *rtype'
19124         argument; pass it to mono_method_get_object() to set the method's
19125         "reflected" type.       
19126
19127 2004-02-17  Martin Baulig  <martin@ximian.com>
19128
19129         * class.h (MonoDynamicGenericInst): New type.
19130         (MonoGenericInst): Added `dynamic_info' and `is_dynamic' fields.
19131
19132         * icall.c (ves_icall_MonoGenericInst_GetMethods): New interncall.
19133         (ves_icall_MonoGenericInst_GetConstructors): New interncall.
19134         (ves_icall_MonoGenericInst_GetFields): New interncall.
19135
19136         * class.c (mono_class_from_generic): Don't call
19137         mono_class_initialize_generic() if this is a dynamic instance;
19138         ie. it's being created from a TypeBuilder.
19139         Use MONO_TYPE_GENERICINST for `class->this_arg.type' and
19140         `class->byval_arg.type'.
19141
19142         * reflection.c (mono_reflection_inflate_method_or_ctor): Renamed
19143         to `inflate_method' and made static.
19144         (mono_reflection_inflate_field): Removed.
19145         (mono_reflection_generic_inst_initialize): New public method.
19146
19147         * reflection.h (MonoReflectionGenericInst): Removed `methods',
19148         `ctors' and `fields'; added `initialized'.
19149
19150 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
19151
19152         * debug-helpers.c (mono_method_full_name): Fix output for empty
19153         namespaces.
19154
19155 2004-02-12  Martin Baulig  <martin@ximian.com>
19156
19157         * class.h (MonoClassField): Added `MonoType *generic_type'.
19158
19159         * reflection.c (mono_image_get_fieldref_token): Added support for
19160         instantiated generic types.
19161         (field_encode_inflated_field): Removed.
19162         (mono_image_get_inflated_field_token): Removed.
19163         (mono_reflection_inflate_field): Return a `MonoReflectionField *'.
19164
19165         * reflection.h (MonoReflectionInflatedField): Removed.
19166
19167 2004-02-12  Martin Baulig  <martin@ximian.com>
19168
19169         * metadata.h (MonoMethodHeader, MonoMethodSignature): Moved the
19170         `gen_method' field from MonoMethodHeader to MonoMethodSignature.
19171
19172         * reflection.c (mono_image_get_methodspec_token): Take a
19173         `MonoMethod *' instead of a `MonoReflectionInflatedMethod *'.
19174         (mono_image_create_token): Check whether we have a
19175         `method->signature->gen_method' and call
19176         mono_image_get_methodspec_token() if appropriate.
19177         (inflated_method_get_object): Removed.
19178         (mono_reflection_bind_generic_method_parameters): Return a
19179         `MonoReflectionMethod *', not a `MonoReflectionInflatedMethod *'.
19180         (mono_reflection_inflate_method_or_ctor): Likewise.
19181
19182         * reflection.h (MonoReflectionInflatedMethod): Removed.
19183
19184 2004-02-12  Zoltan Varga  <vargaz@freemail.hu>
19185
19186         * marshal.c (mono_marshal_get_native_wrapper): Implement proper support
19187         for custom valuetype marshalling.
19188
19189         * icall.c (icall_entries): Diagnostic -> Diagnostics. Fixes #54261.
19190
19191 2004-02-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19192
19193         * icall.c: fixed WSAGetLastError_internal name.
19194
19195 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
19196
19197         * threads.c (mono_thread_attach): Allow this to be called multiple
19198         times for a thread.
19199         
19200         * threads.c (build_wait_tids): Do not wait for ourselves.
19201
19202         * threads.c (mono_thread_pop_appdomain_ref): Avoid crash if the 
19203         appdomain list is empty.
19204
19205         * marshal.c (mono_marshal_get_native_wrapper): Do not free the
19206         memory returned by mono_string_builder_to_utf16, since it points into
19207         managed memory. Thanks to Bernie Solomon for noticing this.
19208
19209         * icall.c: Add AppDomainSetup icalls.
19210
19211         * reflection.h (MonoReflectionMethodAux): Add 'param_cattr' field.
19212
19213         * reflection.c (mono_custom_attrs_from_param): Add support for dynamic
19214         types.
19215
19216         * reflection.c (reflection_methodbuilder_to_mono_method): Save
19217         custom attributes to the method_aux struct. Also fix array indexes etc.
19218
19219         * loader.c (mono_method_get_param_names): Make dynamic case work again.
19220         
19221 Tue Feb 10 17:03:04 CET 2004 Paolo Molaro <lupus@ximian.com>
19222
19223         * icall.c, loader.c: icall cleanup: we save quite a bit of memory
19224         (both static and runtime) and reduce startup time.
19225
19226 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
19227
19228         * marshal.c (mono_marshal_get_native_wrapper): Throw an exception on
19229         AsAny marshalling conversion instead of crashing.
19230
19231         * marshal.c: Fix warnings.
19232
19233 2004-02-09  Martin Baulig  <martin@ximian.com>
19234
19235         * class.h (MonoGenericMethod): Added `MonoMethod *declaring'.
19236
19237         * reflection.h (MonoReflectionInflatedMethod): Removed the
19238         `declaring' field, it's now in the unmanaged MonoGenericMethod.
19239
19240         * reflection.c (method_encode_methodspec): Removed the `method'
19241         argument; we get it from `gmethod->declaring'.
19242         (inflated_method_get_object): Removed the `declaring' argument.
19243
19244 2004-02-09  Martin Baulig  <martin@ximian.com>
19245
19246         * class.h (MonoGenericMethod): New type.
19247         (MonoGenericInst): Remove `mtype_argc', `mtype_argv' and
19248         `generic_method'.
19249
19250         * metadata.h (MonoMethodHeader): Replaced the `geninst' field with
19251         a `MonoGenericMethod *gen_method' one.
19252
19253         * class.c (mono_class_inflate_generic_type): Take an additional
19254         `MonoGenericMethod * argument.  This is only non-NULL if we're
19255         inflating types for a generic method.   
19256         (mono_class_inflate_generic_signature): Renamed to
19257         inflate_generic_signature() and made static; take a
19258         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
19259         (inflate_generic_header): Take a `MonoGenericMethod *' argument
19260         instead of a `MonoGenericInst *' one.
19261         (mono_class_inflate_generic_method): Likewise.
19262
19263         * reflection.c (encode_generic_method_sig): Take a
19264         `MonoGenericMethod *' argument instead of a `MonoGenericInst *'.
19265         (method_encode_methodspec): Likewise.
19266         (inflated_method_get_object): Likewise. 
19267
19268         * reflection.h (MonoReflectionGenericInst): Replaced the `ginst'
19269         field with a `MonoGenericMethod *gmethod' one.  
19270
19271 2004-02-08  Bernie Solomon  <bernard@ugsolutions.com>
19272
19273         * class.h (mono_class_has_parent): add parens to expansion
19274         so you can ! this.
19275
19276 2004-02-08  Martin Baulig  <martin@ximian.com>
19277
19278         * image.h (MonoImage): Removed `generics_cache'.
19279
19280         * class.c (mono_class_from_generic): Take a `MonoGenericInst *'
19281         instead of a `MonoType *' argument; removed the `inflate_methods'
19282         argument.  Don't inflate methods here.
19283
19284         * loader.c (find_method): If it's a generic instance, call
19285         mono_class_init() on the `sclass->generic_inst->generic_type'.
19286
19287         * metadata.c (mono_type_size): Make this work on uninitialized
19288         generic instances; call it on the `ginst->generic_type's class.
19289
19290         * reflection.c (mono_reflection_bind_generic_parameters): Call
19291         mono_class_from_generic() to create the `ginst->klass'.
19292
19293 2004-02-08  Martin Baulig  <martin@ximian.com>
19294
19295         * class.h (MonoClass): Changed type of `generic_inst' from
19296         `MonoType *' to `MonoGenericInst *'.
19297
19298 2004-02-08  Martin Baulig  <martin@ximian.com>
19299
19300         * icall.c (ves_icall_Type_BindGenericParameters): Just call
19301         mono_type_get_object(), this is now creating a `MonoGenericInst'
19302         for MONO_TYPE_GENERICINST.
19303         (ves_icall_MonoGenericInst_GetParentType): Likewise.
19304         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.
19305
19306         * reflection.c (mono_type_get_object): Return a `MonoGenericInst'
19307         instead instead of a `MonoType' for MONO_TYPE_GENERICINST.
19308         (inflated_method_get_object): Added `MonoClass *refclass' argument.
19309         (mono_reflection_inflate_method_or_ctor): Correctly set declaring
19310         and reflected type.
19311
19312         * reflection.h (MonoReflectionInflatedMethod): Removed
19313         `declaring_type' and `reflected_type'.
19314
19315 2004-02-08  Martin Baulig  <martin@ximian.com>
19316
19317         * class.h (MonoGenericInst): Added `MonoType *parent' and
19318         `MonoType **ifaces'.
19319
19320         * reflection.h (MonoReflectionGenericInst): Removed `klass',
19321         `parent' and `interfaces'.
19322
19323         * reflection.c (mono_reflection_bind_generic_parameters): Take a
19324         `MonoType *' argument and return a `MonoType *'.
19325
19326         * icall.c
19327         (ves_icall_MonoGenericInst_GetParentType): New interncall.
19328         (ves_icall_MonoGenericInst_GetInterfaces): Likewise.    
19329
19330 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
19331
19332         * marshal.c (mono_marshal_get_native_wrapper): Add support for custom
19333         valuetype marshalling.
19334
19335 2004-02-06  Martin Baulig  <martin@ximian.com>
19336
19337         * class.c
19338         (mono_class_from_generic_parameter): Added TYPE_ATTRIBUTE_PUBLIC.
19339         (my_mono_class_from_generic_parameter): Likewise.
19340
19341 2004-02-06  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * debug-mono-symfile.c debug-mono-symfile.h mono-debug.c: Read the
19344         contents of the symbol files lazily.
19345
19346         * object.h (MonoThread): Add 'name' and 'name_len' fields.
19347
19348         * threads.h threads.c icall.c: New icalls for getting and setting the
19349         threads name.
19350
19351 2004-02-05  Zoltan Varga  <vargaz@freemail.hu>
19352
19353         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRefByID): 
19354         Raise an exception when the domain is not found.
19355
19356 2004-02-03  Martin Baulig  <martin@ximian.com>
19357
19358         * reflection.c (mono_image_get_methodspec_token): Use the
19359         uninflated signature; fixes gen-33.
19360
19361 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
19362
19363         * gc.c threads.c: Make the finalizer thread a normal managed thread so
19364         the finalizer code can use thread functionality.
19365
19366         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Fix check for 
19367         the finalizer thread.
19368
19369         * threads.c: Make some functions more robust.
19370
19371         * loader.c (mono_lookup_pinvoke_call): Another attempt at fixing #22532.
19372
19373         * metadata.h: Add new marshalling conventions.
19374
19375         * marshal.c (mono_marshal_get_native_wrapper): Add support for unicode
19376         stringbuilder marshalling. Fixes #53700.
19377
19378         * reflection.h (MonoReflectionTypeBuilder): Add 'permissions' field.
19379
19380         * reflection.c (mono_image_get_type_info): Save declarative security
19381         info.
19382
19383         * reflection.c (mono_image_get_field_info): Handle uninitialized 
19384         unmanaged fields as well.
19385
19386         * appdomain.c: Bump corlib version.
19387
19388 2004-02-01  Martin Baulig  <martin@ximian.com>
19389
19390         * loader.c (method_from_methodspec): Use `ginst->mtype_argc/v' for
19391         method type arguments.  
19392
19393 2004-01-30  Duncan Mak  <duncan@ximian.com>
19394
19395         * marshal.h: Add prototype for
19396         "ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem"
19397         and
19398         "ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem" to
19399         fix the build.
19400
19401 2004-01-30  Zoltan Varga  <vargaz@freemail.hu>
19402
19403         * marshal.c (ves_icall_System_Runtime_InteropServices_Marshal_AllocCoTaskMem): New icall.
19404         (ves_icall_System_Runtime_InteropServices_Marshal_FreeCoTaskMem): New icall.
19405
19406 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
19407
19408         * marshal.c (mono_marshal_get_native_wrapper): Add support for
19409         custom marshalling of valuetypes.
19410
19411         * marshal.c: Fix some warnings.
19412
19413 2004-01-29  Martin Baulig  <martin@ximian.com>
19414
19415         * class.h (MonoGenericInst): Added `mtype_argc' and `mtype_argv'
19416         for generic method parameters.
19417
19418         * reflection.c (method_encode_methodspec): Write the uninflated
19419         signature into the methodspec table.
19420         (mono_reflection_inflate_method_or_ctor): Ensure `res->declaring'
19421         is always the uninflated method.
19422         (reflection_methodbuilder_to_mono_method): Copy the generic
19423         parameters from the MethodBuilder into `header->gen_params'.
19424
19425 2004-01-29  Zoltan Varga  <vargaz@freemail.hu>
19426
19427         * class.c (mono_class_from_generic_parameter): Fix warning.
19428
19429 2004-01-27  Martin Baulig  <martin@ximian.com>
19430
19431         * class.c (mono_class_from_generic_parameter): Don't create
19432         `klass->methods' here.  
19433
19434 2004-01-26  Zoltan Varga  <vargaz@freemail.hu>
19435
19436         * loader.c (mono_lookup_pinvoke_call): Disable trimming of .dll
19437         extension since it does not work with libraries named lib<FOO>.dll.so.
19438
19439 2004-01-25  Martin Baulig  <martin@ximian.com>
19440
19441         * class.c (mono_class_inflate_generic_type): Added support for
19442         MONO_TYPE_GENERICINST.
19443
19444         * reflection.c (mono_reflection_inflate_method_or_ctor): Also
19445         inflate methods on open constructed types.      
19446
19447 2004-01-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19448
19449         * object.c: fire ProcessExit event in the root AppDomain after running
19450         Main. Fixes bug #53299.
19451
19452 Fri Jan 23 21:27:40 CET 2004 Paolo Molaro <lupus@ximian.com>
19453
19454         * socket-io.c: include the new socket-wrappers.h header.
19455         Use the wrappers instead of the unix socket functions to make the code
19456         more clear.
19457
19458 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
19459
19460         * profiler.c (merge_methods): Fix merging of profile info. Fixes #53010.
19461
19462         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
19463         Fixes #22532.
19464
19465 2004-01-22  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * reflection.c (mono_image_create_pefile): Handle the case when the
19468         entry point is not a MethodBuilder.
19469
19470         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
19471         field to ReflectionMethod since it is not allways a builder.
19472
19473         * reflection.c (type_get_fully_qualified_name): New helper function to
19474         return the fully qualified name of a type.
19475
19476         * reflection.c (encode_marshal_blob): Always emit the fully qualified
19477         type name for custom marshallers.
19478
19479         * reflection.c (mono_marshal_spec_from_builder): Ditto.
19480
19481         * class.c (mono_class_setup_vtable): If a parent class already 
19482         implements an interface, use the implementing methods from that class.
19483         Fixes #53148.
19484
19485 2004-01-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19486
19487         * threadpool.c: just return instead of ExitThread to allow for thread
19488         clean up earlier.
19489
19490 2004-01-21  Zoltan Varga  <vargaz@freemail.hu>
19491
19492         * icall.c (ves_icall_System_Reflection_Module_Close): Prevent assertion
19493         when closing resource modules.
19494
19495         * reflection.c (mono_image_create_pefile): Handle the case when the
19496         entry point is not a MethodBuilder.
19497
19498         * reflection.h (MonoReflectionAssemblyBuilder): Change 'entry_point'
19499         field to ReflectionMethod since it is not allways a builder.
19500
19501 2004-01-20  Bernie Solomon  <bernard@ugsolutions.com>
19502
19503         * marshal.c (mono_marshal_get_managed_wrapper): 
19504         mono_marshal_alloc takes native int so CONV_I
19505         the arg for 64bits.
19506
19507 2004-01-20  Zoltan Varga  <vargaz@freemail.hu>
19508
19509         * reflection.c (fixup_cattrs): New function to fixup the methoddef
19510         tokens in the cattr table. Fixes #53108.
19511
19512 2004-01-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19513
19514         * loader.c: don't trim ".dll" before looking up in the config file.
19515         Don't leak orig_scope. Reopened bug #22532 in the meanwhile.
19516
19517 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
19518
19519         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): 
19520         Return the module which contains the resource as well.
19521         (ves_icall_System_Reflection_Module_Close): New icall.
19522
19523         * appdomain.c: Bump corlib version number.
19524
19525         * image.c (mono_image_addref): New public function.
19526
19527         * assembly.c: Call mono_image_addref.
19528
19529         * reflection.c (mono_module_get_object): Increase reference count of 
19530         the image.
19531
19532         * loader.c (mono_lookup_pinvoke_call): Strip .dll from library names.
19533         Fixes #22532.
19534
19535         * exception.h exception.c loader.h loader.c icall.c marshal.h marshal.c:
19536         Applied patch from Bernie Solomon  <bernard@ugsolutions.com>. Throw
19537         proper exceptions on DllImport problems.
19538
19539 Mon Jan 19 17:50:27 CET 2004 Paolo Molaro <lupus@ximian.com>
19540
19541         * class.c, metadata.c: eliminate CSIZE macro.
19542
19543 2004-01-19  Lluis Sanchez Gual  <lluis@ximian.com>
19544
19545         * icall.c: Added ves_icall_type_IsInstanceOf internal call.
19546         * object.h: Added async_callback field in MonoAsyncResult.
19547         * marshal.c: In mono_delegate_begin_invoke, set the value of async_callback.
19548         * verify.c: Added async_callback in MonoAsyncResult layout.
19549
19550 2004-01-17  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * reflection.c (mono_reflection_get_custom_attrs): Add support
19553         for Modules.
19554
19555 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19556
19557         * marshal.c (mono_string_builder_to_utf8): Fix stringbuilder 
19558         marshalling.
19559         (mono_marshal_method_from_wrapper): Add null pointer check.
19560
19561 2004-01-16  Martin Baulig  <martin@ximian.com>
19562
19563         * debug-mono-symfile.h: Set version number to 36 and reflect
19564         latest symbol writer changes.
19565
19566 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
19567
19568         * class.c (mono_bounded_array_class_get): Set 'bounded' to FALSE for
19569         multi-dimensional arrays.
19570         (mono_class_is_assignable_from): Check vectors<->one dim. arrays.
19571         (mono_class_from_mono_type): Use bounded_array_class_get.
19572         
19573         * class.c (mono_bounded_array_class_get): New function which takes
19574         a 'bounded' bool argument to distinguish vectors from one dimensional
19575         arrays.
19576
19577         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Call 
19578         bounded_array_class_get if the array has bounds.
19579
19580         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
19581         Search modules loaded using AssemblyBuilder:AddModule as well.
19582
19583 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19584
19585         * appdomain.c: increased corlib version.
19586         * filewatcher.c: removed g_print.
19587         * icall.c:
19588         (get_property_info): only allocate what is actually requested.
19589         (ves_icall_Type_GetInterfaces): free the bitset in case of early error.
19590
19591 2004-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19592
19593         * Makefile.am: added filewatcher.[ch]
19594         * filewatcher.[ch]: FileSystemWatcher runtime support.
19595         * icall.c: added new FSW icalls.
19596
19597 Tue Jan 13 20:03:17 CET 2004 Paolo Molaro <lupus@ximian.com>
19598
19599         * string-icalls.c: fix stringbuilder regression as suggested by
19600         Iain McCoy <iain@mccoy.id.au>.
19601
19602 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
19603
19604         * process.c (process_read_stringtable_block): Recognize '007f' as
19605         a language neutral stringtable block.
19606
19607 2004-01-12  Patrik Torstensson
19608
19609         * object.h (MonoStringBuilder) : Changed layout to support our
19610         new stringbuilder class.
19611         * marshal.c: Change marshalling to support the new layout of 
19612         string builder.
19613         * appdomain.c: increased version number because new layout of
19614         string builder.
19615
19616 2004-01-12  Zoltan Varga  <vargaz@freemail.hu>
19617
19618         * appdomain.c (ves_icall_System_AppDomain_LoadAssembly): Receive the
19619         assembly name as an string instead of an AssemblyName, since it is
19620         easier to extract info from it.
19621
19622         * appdomain.c (mono_domain_assembly_preload): Look for assemblies in
19623         the culture subdirectories too. Fixes #52231.
19624
19625 2004-01-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19626
19627         * icall.c: renamed ves_icall_Type_GetMethods to GetMethodsByName.
19628         It takes 2 new parameters with an optional name for the method to look
19629         for and case ignoring info.
19630
19631         * threadpool.c: removed unused variable.
19632
19633 2004-01-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19634
19635         * icall.c: renamed ves_icall_Type_GetProperties to GetPropertiesByName.
19636         It takes 2 new parameters with an optional name for the property to look
19637         for and case ignoring info.
19638         Fixes bug #52753.
19639
19640 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
19641
19642         * reflection.c: Applied patch from Benjamin Jemlich (pcgod@gmx.net).
19643         Fix #52451.
19644
19645 2004-01-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19646
19647         * appdomain.c:
19648         * assembly.c: escape the uri before passing it to g_filename_from_uri.
19649         Fixes bug #52630.
19650
19651 2004-01-07  Zoltan Varga  <vargaz@freemail.hu>
19652
19653         * reflection.c: Add support for more than one unmanaged resource.
19654
19655         * icall.c (ves_icall_get_enum_info): Store the value of the enum fields
19656         in field->def_value, as done in all other cases.
19657
19658         * reflection.c (mono_reflection_get_custom_attrs): Add support for
19659         TypeBuilders.
19660
19661         * reflection.c (mono_reflection_create_runtime_class): Remove 
19662         errorneous assignment to klass->element_class, since it is already
19663         done in mono_reflection_setup_internal_class.
19664
19665 2004-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19666
19667         * gc.c: added missing LeaveCriticalSection.
19668         * icall.c: indented a couple of lines.
19669         * threadpool.c: remove dangling LeaveCriticalSection. Don't wait forever
19670         if we call EndInvoke inside a callback. Fixes bug #52601.
19671
19672 2004-01-07  Martin Baulig  <martin@ximian.com>
19673
19674         * mono-debug-debugger.h
19675         (MonoDebuggerIOLayer): Added `GetCurrentThreadID'.
19676
19677 2004-01-06  Miguel de Icaza  <miguel@ximian.com>
19678
19679         * appdomain.c: Use messages in NotImplementedException.
19680
19681         * exception.c (mono_get_exception_not_implemented): Now this takes
19682         a message argument.
19683
19684         * marshal.c (emit_str_to_ptr_conv): g_warning and throw an
19685         exception instead of g_asserting an aborting when something is not
19686         implemented.
19687
19688         Add some inline docs.
19689
19690 2004-01-05  Zoltan Varga  <vargaz@freemail.hu>
19691
19692         * reflection.h: Update after changes to object layout.
19693
19694         * reflection.c: Implement saving of unmanaged aka win32 resources.
19695
19696         * appdomain.c: Bump version number.
19697
19698         * appdomain.c (ves_icall_System_AppDomain_InternalSetDomainByID): 
19699         Handle missing domains gracefully.
19700
19701 2004-01-05  Atsushi Enomoto <atsushi@ximian.com>
19702
19703         * file-io.c : On Windows, there are much more invalid_path_chars.
19704
19705 Fri Jan 2 13:35:48 CET 2004 Paolo Molaro <lupus@ximian.com>
19706
19707         * class.h, object.c: prepare for GetType () speedup.
19708
19709 2003-12-24  Atsushi Enomoto <atsushi@ximian.com>
19710
19711         * profiler.c: workaround for --profile null reference exception on
19712           cygwin. Patch by Patrik Torstensson.
19713
19714 2003-12-22  Bernie Solomon  <bernard@ugsolutions.com>
19715
19716         * marshal.c: (ves_icall_System_Runtime_InteropServices_Marshal_Read/WriteXXX)
19717         make work for unaligned access.
19718
19719 Mon Dec 22 18:37:02 CET 2003 Paolo Molaro <lupus@ximian.com>
19720
19721         * class.c: small cleanup (class->fields [i] -> field).
19722         * image.c: check address of metadata is valid.
19723
19724 2003-12-22  Zoltan Varga  <vargaz@freemail.hu>
19725
19726         * assembly.h assembly.c (mono_assembly_loaded): New public function to
19727         search the list of loaded assemblies.
19728
19729         * reflection.c (mono_reflection_type_from_name): Use 
19730         mono_assembly_loaded instead of mono_image_loaded.
19731
19732         * reflection.c: Fix warnings.
19733
19734 2003-12-20  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * image.h (MonoImage): Add a new 'dynamic' field to denote that the image 
19737         is dynamic. This is needed since an assembly can contain both dynamic and
19738         non-dynamic images.
19739
19740         * class.c loader.c metadata.c object.c: Use image->dynamic instead of 
19741         assembly->dynamic.
19742
19743         * icall.c reflection.c: Add new AssemblyBuilder:AddModule icall.
19744
19745         * reflection.h (MonoReflectionAssemblyBuilder): Add 'loaded_modules' field
19746         to store modules loaded using AddModule.
19747
19748         * reflection.c (mono_image_fill_file_table): Generalize this so it works
19749         on Modules.
19750
19751         * reflection.c (mono_image_fill_export_table_from_class): New helper function.
19752
19753         * reflection.c (mono_image_fill_export_table_from_module): New function to
19754         fill out the EXPORTEDTYPES table from a module.
19755
19756         * reflection.c (mono_image_emit_manifest): Refactor manifest creation code
19757         into a separate function. Also handle loaded non-dynamic modules.
19758
19759         * reflection.c (mono_image_basic_init): Fix memory allocation.
19760
19761         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19762
19763         * assembly.c (mono_assembly_load_references): Make this public.
19764
19765 2003-12-19  Martin Baulig  <martin@ximian.com>
19766
19767         * class.c (mono_class_initialize_generic): Made this static, take
19768         a `MonoGenericInst *' instead of a `MonoClass *'.
19769         (mono_class_from_generic): Call mono_class_initialize_generic()
19770         unless we're already initialized or being called from
19771         do_mono_metadata_parse_generic_inst().
19772
19773         * class.h (MonoGenericInst): Added `initialized' and
19774         `init_pending' flags.
19775
19776         * metadata.c (do_mono_metadata_parse_generic_inst): Don't call
19777         `mono_class_init (gklass)' or mono_class_initialize_generic()
19778         here; set `generic_inst->init_pending' while parsing the
19779         `type_argv'.
19780
19781 2003-12-19  Bernie Solomon  <bernard@ugsolutions.com>
19782
19783         * locales.c: include string.h for memxxx prototypes
19784
19785 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
19786
19787         * icall.c (ves_icall_MonoField_GetValueInternal): Do not run the class
19788         constructor when accessing literal fields.
19789
19790 2003-12-17  Zoltan Varga  <vargaz@freemail.hu>
19791
19792         * appdomain.c (MONO_CORLIB_VERSION): Bump corlib version.
19793
19794         * reflection.c (assembly_add_resource_manifest): New function to fill
19795         the MANIFESTRESOURCE table.
19796
19797         * reflection.c (mono_image_build_metadata): Emit MANIFESTRESOURCE table.
19798
19799         * reflection.h: Update to changes in class layout.
19800
19801         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): 
19802         Reenable call to mono_runtime_is_shutting_down ().
19803
19804         * appdomain.c (mono_runtime_is_shutting_down): New helper function to
19805         determine if the runtime is shutting down.
19806
19807 2003-12-16  Jackson Harper <jackson@ximian.com>
19808
19809         * icall.c: comment out call to mono_runtime_is_shutting_down to
19810         fix build.
19811         
19812 2003-12-16  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * icall.c (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal): Add support for loading resources from modules.
19815         (ves_icall_System_Environment_get_HasShutdownStarted): New icall.
19816
19817 2003-12-15  Bernie Solomon  <bernard@ugsolutions.com>
19818
19819         * reflection.c: move definition of swap_with_size
19820         to before its first call
19821
19822 2003-12-15  Zoltan Varga  <vargaz@freemail.hu>
19823
19824         * appdomain.c (mono_runtime_is_shutting_down): New public function.
19825
19826         * icall.c (ves_icall_System_Environment_get_HasShutdownStarted): New
19827         icall.
19828
19829         * object.c: Fix warnings.
19830
19831         * icall.c (ves_icall_Type_Get...): Only consider inherited static
19832         members if FlattenHierarchy is set.
19833
19834         * reflection.c (mono_image_add_decl_security): New function to emit
19835         declarative security.
19836
19837         * reflection.h reflection.c: Add support for declarative security.
19838
19839         * appdomain.c (MONO_CORLIB_VERSION): Bump version number.
19840         
19841 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
19842
19843         appdomain.c (MONO_CORLIB_VERSION): Bump version number.
19844         
19845         * appdomain.c verify.c: Moved corlib version checking into its own
19846         function in appdomain.c since it needs to create vtables etc.
19847
19848 2003-12-13  Patrik Torstensson <p@rxc.se>
19849
19850         * marshal.c (mono_remoting_wrapper): Fix bug 48015, using TP as this 
19851         instead of unwrapped server.
19852
19853 2003-12-12  Zoltan Varga  <vargaz@freemail.hu>
19854
19855         * verify.c (check_corlib): Fix field index.
19856
19857 2003-12-10  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * icall.c: Applied patch from Todd Berman (tbermann@gentoo.org). New
19860         GetGacPath icall.
19861
19862 2003-12-10  Bernie Solomon  <bernard@ugsolutions.com>
19863
19864         * process.c:  (ves_icall_System_Diagnostics_Process_GetWorkingSet_internal
19865         ves_icall_System_Diagnostics_Process_SetWorkingSet_internal):
19866         cope with sizeof(size_t) != sizeof(guint32).
19867
19868 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
19869
19870         * process.[ch]: the 'pid' field in MonoProcInfo stores GetLastError
19871         in case of failure.
19872
19873 2003-12-10  Mark Crichton <crichton@gimp.org>
19874
19875         * icall.c: removed the GetNonZeroBytes.  We now handle this case
19876         in managed code.
19877
19878         * rand.c, rand.h: Same here.  Also cleaned up the clode slightly.
19879
19880 Tue Dec 9 15:36:18 CET 2003 Paolo Molaro <lupus@ximian.com>
19881
19882         * class.h, class.c, icall.c, marshal.c, object.c: ignore fields
19883         marked as deleted.
19884
19885 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
19886
19887         * verify.c (check_corlib): Handle the case when the version field is 
19888         initialized by a static constructor.
19889
19890 2003-12-08  Patrik Torstensson  <p@rxc.se>
19891
19892     * rand.c (InternalGetBytes): Implemented win32 version with cryptapi
19893
19894 2003-12-08  Martin Baulig  <martin@ximian.com>
19895
19896         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Return
19897         a MonoReflectionGenericParameter, also take the parameter index
19898         and name as arguments.
19899         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.
19900         (ves_icall_MonoGenericParam_initialize): New interncall.
19901         (ves_icall_Type_make_byref_type): New interncall.
19902
19903         * reflection.h (MonoReflectionGenericParam): Derive from
19904         MonoReflectionType, not just from MonoObject.  Added `refobj' and
19905         `index' fields.
19906
19907         * reflection.c (mono_reflection_define_generic_parameter): Create
19908         and return a new MonoReflectionGenericParam; don't initialize the
19909         constraints here.
19910         (mono_reflection_initialize_generic_parameter): New public method;
19911         initializes the constraints and creates the `param->pklass'.
19912
19913 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
19914
19915         * reflection.h reflection.c: Use the new fields 'num_types', 
19916         'num_fields' and 'num_methods' to track the number of types etc.
19917
19918         * verify.c (check_corlib): Check corlib version number.
19919
19920 2003-12-07  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * marshal.c (mono_marshal_method_from_wrapper): Remove assert so this
19923         function works on all methods.
19924
19925 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
19926
19927         * domain.c, loader.h: Added IRemotingTypeInfo interface in MonoDefaults.
19928         * icall.c: in, ves_icall_Remoting_RealProxy_GetTransparentProxy set
19929         the custom_type_info flag of the transparent proxy.
19930         * object.c: Added method mono_object_isinst_mbyref for casting mbyref
19931         objects that supports IRemotingTypeInfo.
19932         * object.h: Added custom_type_info field in transparent proxy.
19933
19934 2003-12-06  Martin Baulig  <martin@ximian.com>
19935
19936         * class.c (mono_class_create_from_generic): Removed.
19937         (mono_class_from_generic): Check `ginst->klass' before doing
19938         anything else.  This is important to fully support "recursive"
19939         generic types.
19940
19941         * metadata.c (do_mono_metadata_parse_generic_inst): Create an
19942         empty `generic_inst->klass' before doing anything else.
19943
19944 2003-12-06  Dick Porter  <dick@ximian.com>
19945
19946         * verify.c: 
19947         * object.h:
19948         * icall.c:
19949         * locales.c: Use C structs to access class fields.  Don't do a
19950         conversion between MonoString and UChar because both are
19951         platform-endian UTF-16.  Compare now takes startindex and count
19952         parameters.  Add a char overload for IndexOf.  Speed up the
19953         invariant string IndexOf.
19954
19955 2003-12-05  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * Makefile.am (monosn_LDADD): Fix parallel build.
19958
19959 2003-12-04  Martin Baulig  <martin@ximian.com>
19960
19961         * icall.c
19962         (ves_icall_type_GetTypeCode): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
19963         (ves_icall_Type_make_array_type): New interncall.       
19964
19965 2003-12-04  Martin Baulig  <martin@ximian.com>
19966
19967         * locales.c: also change it in the !HAVE_ICU case.
19968
19969 2003-12-04  Dick Porter  <dick@ximian.com>
19970
19971         * icall.c:
19972         * locales.c: construct_compareinfo is now in CompareInfo, not
19973         CultureInfo.
19974
19975 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
19976
19977         * image.c (mono_image_load_file_for_image): Cache loaded images in the
19978         image->files array.
19979
19980         * image.c (load_class_name): Load class names from the EXPORTEDTYPES
19981         table as well.
19982
19983         * assembly.c (mono_assembly_load_references): Only load references
19984         once.
19985
19986         * class.c (mono_class_from_name): Avoid linear search of the 
19987         EXPORTEDTYPE table.
19988
19989         * loader.c (mono_field_from_token): Cache lookups of fieldrefs as well.
19990
19991 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
19992
19993         * image.h (MonoImage): Add 'field_cache' field.
19994
19995         * loader.c (mono_field_from_token): Cache field lookups.
19996         
19997         * reflection.c (mono_module_get_object): Fix name property.
19998
19999         * icall.c (ves_icall_get_enum_info): Update after changes to 
20000         mono_metadata_get_constant_index ().
20001
20002         * icall.c: Get rid of get_type_info icall, use a separate icall for
20003         each type property to avoid needless memory allocations. Fixes #51514.
20004
20005         * metadata.c (mono_metadata_get_constant_index): Add a 'hint' parameter
20006         to avoid needless binary searches.
20007
20008         * class.c (class_compute_field_layout): Move the initialization of
20009         field->def_value to mono_class_vtable ().
20010
20011         * class.c (mono_class_layout_fields): Enable GC aware auto layout for
20012         non-corlib types.
20013
20014         * object.c (mono_object_allocate): Make it inline.
20015
20016         * object.c (mono_object_allocate_spec): Make it inline.
20017         
20018 2003-12-02  Dick Porter  <dick@ximian.com>
20019
20020         * locales.c (create_NumberFormat): NumberFormatInfo construction.
20021         Patch by Mohammad DAMT (mdamt@cdl2000.com).
20022
20023 2003-12-01  Dick Porter  <dick@ximian.com>
20024
20025         * threads.c: Fix signature and call in CreateMutex and
20026         CreateEvent.
20027
20028 2003-12-01  Dick Porter  <dick@ximian.com>
20029
20030         * icall.c: 
20031         * locales.c: Implement string compares and searching
20032
20033         * object.h: Add extra Thread field
20034
20035 2003-11-30  Zoltan Varga  <vargaz@freemail.hu>
20036
20037         * reflection.c (fixup_method): Add support for MonoCMethod.
20038
20039 2003-11-28  Zoltan Varga  <vargaz@freemail.hu>
20040
20041         * gc.c: Fix hangs and error messages when GC_DONT_GC is set.
20042
20043         * reflection.c (assembly_name_to_aname): Allow extra characters in
20044         assembly names. Fixes #51468.
20045
20046 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
20047
20048         * exception.c (mono_exception_from_name_domain): New helper function.
20049
20050         * appdomain.c (ves_icall_System_AppDomain_createDomain): Create the
20051         exception object in the correct domain.
20052
20053         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix 
20054         formatting + make a copy a the input data.
20055
20056         * loader.c (mono_get_method_from_token): Methods which contain
20057         native code do not have entries in the ImplMap.
20058
20059         (ves_icall_System_AppDomain_LoadAssemblyRaw): Fix exception throw.
20060         Thanks to Gonzalo for spotting this.
20061         
20062         * appdomain.c (ves_icall_System_AppDomain_LoadAssemblyRaw): Applied
20063         patch from ztashev@openlinksw.co.uk (Zdravko Tashev). New icall.
20064
20065         * assembly.h (mono_assembly_load_from): Split the second part of 
20066         assembly loading into a new public function.
20067
20068         * exception.h (mono_get_exception_bad_image_format): New function.
20069
20070 2003-11-24  Zoltan Varga  <vargaz@freemail.hu>
20071
20072         icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
20073         Enumerate all modules inside a dynamic assembly. Fixes #51293.
20074         
20075         * icall.c: Add new icall for creating dynamic methods.
20076
20077         * loader.h debug-helpers.c: Add new wrapper type for dynamic methods.
20078
20079         * reflection.h (MonoReflectionDynamicMethod): Fix type of bool fields.
20080
20081         * reflection.c (mono_reflection_create_dynamic_method): New icall to
20082         create a dynamic method.
20083
20084         * reflection.c (resolve_object): New helper function.
20085
20086         * reflection.c: Generalize ReflectionMethodBuilder and the functions
20087         which manipulate it so they can also work on dynamic methods.
20088
20089         * reflection.c (reflection_method_builder_to_mono_method): Avoid 
20090         creating the MonoReflectionMethodAux structure if it is not needed.
20091         
20092         * reflection.h verify.c: Update after changes to object layout.
20093
20094         * reflection.c (method_builder_encode_signature): Fix compilation on
20095         gcc 2.95.x.
20096
20097 2003-11-21  Lluis Sanchez Gual  <lluis@ximian.com>
20098
20099         * appdomain.h: Added support for context static fields. Added static_data
20100           field to MonoAppContext and renamed thread_static_fields to a more
20101           generic special_static_fields in MonoAppDomain, since it can now contain
20102           context static fields.
20103         * domain.c: Updated hashtable name.
20104         * object.c: Replaced field_is_thread_static() for a more generic
20105           field_is_special_static() which also checks for context static attribute.
20106           In mono_class_vtable(), added support for static context fields.
20107         * threads.c: Changed methods that manage thread static fields to more
20108           generic methods so they can be reused both for thread and context static
20109           data.
20110         * threads.h: Declared some new methods.
20111
20112 2003-11-21  Zoltan Varga  <vargaz@freemail.hu>
20113
20114         * reflection.h: Update after changes to the managed types.
20115
20116         * reflection.c (encode_custom_modifiers): New helper function.
20117
20118         * reflection.c (method_encode_signature): Emit custom modifiers.
20119
20120         * reflection.c (field_encode_signature): Emit custom modifiers.
20121
20122 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
20123
20124         * reflection.h (MonoReflectionAssemblyName): Applied patch from Laurent Morichetti (l_m@pacbell.net). Fix type of 'flags' field.
20125
20126         * icall.c (ves_icall_System_ValueType_Equals): New optimized 
20127         implementation.
20128
20129         * icall.c (ves_icall_System_ValueType_InternalGetHashCode): New 
20130         icall.
20131
20132         * object.c (mono_field_get_value_object): New function.
20133
20134         * object.c appdomain.h appdomain.c: Make out_of_memory_ex domain
20135         specific.
20136
20137 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * appdomain.c (mono_runtime_get_out_of_memory_ex): New function to
20140         return a preallocated out-of-memory exception instance.
20141
20142         * object.c (out_of_memory): Use the new function.
20143
20144         * metadata.c (mono_metadata_parse_type): Handle the case when the byref
20145         flag is before the custom modifiers. Fixes #49802.
20146
20147 2003-11-16  Martin Baulig  <martin@ximian.com>
20148
20149         * class.c (mono_class_is_open_constructed_type): Implemented the
20150         MONO_TYPE_GENERICINST case.
20151
20152 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
20153
20154         * assembly.c (mono_assembly_fill_assembly_name): New function to
20155         fill out the MonoAssemblyName structure.
20156         (mono_assembly_open): Use the new function.
20157
20158         * icall.c (fill_reflection_assembly_name): New helper function.
20159
20160         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Use the
20161         new function.
20162
20163         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetAssemblyName): New icall.
20164
20165 2003-11-15  Martin Baulig  <martin@ximian.com>
20166
20167         * class.c (mono_class_is_open_constructed_type): New public
20168         function; checks whether a type is an open constructed type,
20169         ie. whether it still contains type parameters.
20170         (mono_class_inflate_generic_type): If we're a type parameter and
20171         the inflated type is also a MONO_TYPE_(M)VAR, return the original
20172         type.
20173
20174         * class.h (MonoGenericInst): Added `guint32 is_open'.
20175
20176         * loader.c (method_from_methodspec): Check whether we're an open
20177         or closed constructed type and set `ginst->is_open'.
20178
20179         * reflection.c (mono_reflection_bind_generic_parameters): Check
20180         whether we're an open or closed constructed type and set
20181         `ginst->is_open'.
20182         (mono_reflection_inflate_method_or_ctor): Don't inflate methods
20183         from open constructed types.
20184
20185 2003-11-15  Martin Baulig  <martin@ximian.com>
20186
20187         * reflection.c (mono_reflection_bind_generic_parameters): If we're
20188         a generic instance (instead of a generic type declaration) with
20189         unbound generic parameters, bind them to our actual types.
20190
20191 2003-11-14  Martin Baulig  <martin@ximian.com>
20192
20193         * reflection.h (MonoReflectionGenericInst): Added `MonoArray *interfaces'.
20194
20195         * reflection.c (mono_reflection_bind_generic_parameters): If we're
20196         an interface type, populate `res->interfaces' with instantiated
20197         versions of all the interfaces we inherit.
20198
20199 2003-11-13  Aleksey Demakov  <avd@openlinksw.com>
20200
20201         * assembly.c (mono_assembly_load): Fixed problem finding mscorlib.dll
20202         when MONO_PATH is set but doesn't contain the install dir.
20203
20204 2003-11-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20205
20206         * icall.c:
20207         (ves_icall_Type_GetInterfaces): don't return an interface twice when
20208         it's also implemented in base classes. Fixes bug #50927.
20209
20210 2003-11-13  Zoltan Varga  <vargaz@freemail.hu>
20211
20212         * gc.c (ves_icall_System_GC_WaitForPendingFinalizers): Avoid deadlocks
20213         if this method is called from a finalizer. Fixes #50913.
20214
20215 2003-11-12  Miguel de Icaza  <miguel@ximian.com>
20216
20217         * threads.c: Implement VolatileRead/VolatileWrite
20218
20219         * icall.c: Add new icalls for VolatileRead/VolatileWrite
20220
20221 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20222
20223         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Applied 
20224         patch from Danilo Sagan (dsegan@gmx.net). Fix compilation under gcc
20225         2.95.3.
20226
20227         * assembly.c (mono_assembly_open): Fix windows build. Applied patch 
20228         from Peter Ross (pro@missioncriticalit.com).
20229         
20230 2003-11-12  Lluis Sanchez Gual  <lluis@ximian.com>
20231
20232         * icall.c: Added internal call for System.Environment::GetMachineConfigPath
20233
20234 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20235
20236         * assembly.c (mono_assembly_load_references): Disable check because it
20237         triggers on older corlibs which lots of people have.
20238
20239 2003-11-12  Jackson Harper  <jackson@ximian.com>
20240
20241         * assembly.c: Change corlib name to mscorlib. Add a temp. hack to
20242         load corlib.dll if mscorlib.dll is not found.
20243         * assembly.h: Remove corlib name define.
20244         * class.c:
20245         * domain.c:
20246         * image.c: Change corlib name to mscorlib.
20247         
20248 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
20249
20250         * debug-mono-symfile.c: Add patch from FreeBSD ports tree.
20251
20252 2003-11-11  Miguel de Icaza  <miguel@ximian.com>
20253
20254         * appdomain.h: Added loader_optimization here to sync with the C#
20255         code, and add disallow_binding_redirects field.
20256
20257 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
20258
20259         * mono-debug.c (mono_debug_add_method): Ignore unknown modules.
20260
20261         * reflection.c (mono_image_build_metadata): Fix crash on modules
20262         with no types.
20263
20264         * reflection.h (MonoMethodInfo): Track changes to the managed structure.
20265
20266         * icall.c (ves_icall_get_method_info): Return callingConvention as
20267         well.
20268
20269         * icall.c (ves_icall_System_Reflection_Assembly_GetNamespaces): Add 
20270         namespaces from the EXPORTEDTYPE table as well.
20271
20272         * icall.c (ves_icall_System_Reflection_Assembly_GetTypes): Merge types
20273         from all modules inside the assembly.
20274         
20275 2003-11-11  Martin Baulig  <martin@ximian.com>
20276
20277         * reflection.c (mono_reflection_bind_generic_parameters): Make
20278         this work for interfaces.
20279
20280 2003-11-11  Martin Baulig  <martin@ximian.com>
20281
20282         * mono-debug.c (mono_debug_add_type): Ignore unknown modules.
20283
20284 2003-11-11  Martin Baulig  <martin@ximian.com>
20285
20286         * reflection.c (mono_reflection_inflate_method_or_ctor): Allow
20287         "MonoInflatedMethod" and "MonoInflatedCtor".
20288
20289 2003-11-11  Zoltan Varga  <vargaz@freemail.hu>
20290
20291         * reflection.c (resolution_scope_from_image): Use the assembly table
20292         from the manifest module, since other modules don't have it.
20293
20294         * debug-helpers.c (mono_type_full_name): New helper function.
20295
20296         * image.h (MonoAssembly): Change 'dynamic' to a boolean.
20297
20298         * image.c (mono_image_load_file_for_image): New public function which
20299         is a replacement for the load_file_for_image in class.c.
20300
20301         * assembly.c (mono_assembly_load_module): A wrapper for the function
20302         above which does assembly association and reference loading too.
20303
20304         * class.c (mono_class_from_name): Call mono_assembly_load_module.
20305
20306 2003-11-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20307
20308         * appdomain.c: not all of the attributes for the full assembly name
20309         are required and the order doesn't matter. Fixes bug #50787.
20310
20311 2003-11-10  Dick Porter  <dick@ximian.com>
20312
20313         * locales.c: Use platform-endian UTF16
20314
20315 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
20316
20317         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
20318         
20319 2003-11-10  Martin Baulig  <martin@ximian.com>
20320
20321         * metadata.c
20322         (mono_metadata_load_generic_params): Make this actually work.
20323
20324         * reflection.c (mono_reflection_bind_generic_parameters): If our
20325         parent is a generic instance, pass all the `types' to it, no
20326         matter whether it has the same number of type parameters or not.
20327
20328 2003-11-10  Zoltan Varga  <vargaz@freemail.hu>
20329
20330         * reflection.c: Emit FILE and EXPORTEDTYPE tables.
20331
20332         * assembly.c (mono_assembly_load_references): Move the image<->assembly
20333         assignment code to this function so it gets called recursively for all
20334         modules.
20335
20336         * image.c (load_modules): Remove the assembly assignment since it is
20337         now done by mono_assembly_load_references.
20338         
20339         * icall.c (ves_icall_System_Reflection_Assembly_InternalGetType): 
20340         Add 'module' argument.
20341         (mono_module_get_types): New helper function.
20342         (ves_icall_System_Reflection_Module_InternalGetTypes): New icall.
20343
20344 2003-11-08  Martin Baulig  <martin@ximian.com>
20345
20346         * class.c (mono_class_inflate_generic_method): Interface method
20347         don't have a header.
20348
20349         * reflection.c (mono_image_get_methodspec_token): Take an
20350         additional `MonoGenericInst *' argument instead of reading it from
20351         the header; this is necessary to support interfaces.
20352         (mono_image_create_token): Pass the `MonoGenericInst *' from the
20353         MonoReflectionInflatedMethod to mono_image_get_methodspec_token().
20354         (inflated_method_get_object): Take an additional `MonoGenericInst *'
20355         argument.
20356
20357         * reflection.h (MonoReflectionInflatedMethod): Added
20358         `MonoGenericInst *ginst'.
20359
20360 2003-11-07  Zoltan Varga  <vargaz@freemail.hu>
20361
20362         * gc.c (mono_domain_finalize): Fix compilation for no GC case.
20363
20364 2003-11-06  Zoltan Varga  <zovarga@ws-zovarga2>
20365
20366         * appdomain.c (mono_domain_unload): Add a workaround for bug #27663.
20367
20368 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
20369
20370         * reflection.c 
20371         (reflection_methodbuilder_from_method_builder):
20372         (reflection_methodbuilder_from_ctor_builder): New helper functions to 
20373         initialize a ReflectionMethodBuilder structure.
20374         (mono_image_get_methodbuilder_token):
20375         (mono_image_get_ctorbuilder_token): New functions to emit memberref
20376         tokens which point to types in another module inside the same assembly.
20377
20378         * reflection.c: Use the new helper functions.
20379         
20380         * reflection.c (mono_image_basic_init): Initialize basedir and culture.
20381
20382         * icall.c loader.c reflection.c: Use ModuleBuilder->dynamic_image 
20383         instead of AssemblyBuilder->dynamic_assembly in the appropriate places.
20384
20385         * reflection.c (resolution_scope_from_image): Emit a moduleref if
20386         neccesary.
20387
20388         * reflection.c (mono_image_build_metadata): Emit metadata only for the
20389         current module. Emit the manifest only for the main module.
20390
20391         * reflection.c (mono_image_create_token): Add assertion when a 
20392         memberref needs to be created.
20393
20394         * reflection.c reflection.h (MonoDynamicAssembly): Remove unused fields.
20395
20396         * reflection.c (mono_reflection_get_custom_attrs_blob): Allocate a 
20397         larger buffer for the custom attribute blob. Fixes #50637.
20398         
20399 2003-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20400
20401         * threadpool.c: notify listener on async processing handles after
20402         invoking the async callback. Thanks to Zoltan.
20403
20404 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
20405
20406         * reflection.c (create_dynamic_mono_image): Call mono_image_init to 
20407         avoid code duplication.
20408
20409         * reflection.h (MonoDynamicImage): New type which is currently unused,
20410         but will be used through the ref.emit code in place of 
20411         MonoDynamicAssembly.
20412
20413         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
20414         object layout.
20415
20416         * reflection.c (create_dynamic_mono_image): Rewrote so it now creates
20417         a MonoDynamicImage instead of just a MonoImage.
20418         
20419         * reflection.h reflection.c icall.c: Move nearly all AssemblyBuilder
20420         icalls to ModuleBuilder but keep their semantics, so they will work
20421         with moduleb->assemblyb. This will change later.
20422         
20423 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
20424
20425         * reflection.h (MonoReflectionAssemblyBuilder): Track changes to the
20426         object layout.
20427
20428         * reflection.c (mono_image_build_metadata): Avoid creation of a default
20429         main module, since it is now done by the managed code.
20430
20431 2003-11-03  Martin Baulig  <martin@ximian.com>
20432
20433         * reflection.c (mono_reflection_inflate_method_or_ctor): Set
20434         `ginst->klass' here.
20435         (method_encode_methodspec): Don't use the `ginst->generic_method's
20436         klass if it's a generic instance, use `ginst->klass' in this case.
20437
20438 2003-11-03  Martin Baulig  <martin@ximian.com>
20439
20440         * reflection.c (mono_image_get_generic_method_param_info):
20441         Removed, use mono_image_get_generic_param_info() instead.
20442         (mono_image_get_type_info): Write the GenericParam table before
20443         the Method table.  This is neccessary because in the GenericParam
20444         table, type parameters of the class (ie. '!0' etc.) must come
20445         before the ones from its generic methods (ie. '!!0' etc).
20446
20447 2003-11-03  Zoltan Varga  <vargaz@freemail.hu>
20448
20449         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill out AssemblyName->codebase. Fixes #50469.
20450
20451 2003-11-02  Martin Baulig  <martin@ximian.com>
20452
20453         * reflection.c (create_generic_typespec): Take a
20454         `MonoReflectionTypeBuilder *' instead of a `MonoType *' and get
20455         the generic parameters from it.
20456
20457 2003-11-02  Martin Baulig  <martin@ximian.com>
20458
20459         * reflection.c (fieldref_encode_signature): Take a `MonoType *'
20460         instead of a `MonoClassField *' since we just need the type.
20461         (create_generic_typespec): New static function.  Creates a
20462         TypeSpec token for a generic type declaration.
20463         (mono_image_get_generic_field_token): New static function.
20464         (mono_image_create_token): If we're a FieldBuilder in a generic
20465         type declaration, call mono_image_get_generic_field_token() to get
20466         the token.
20467
20468 2003-11-02  Martin Baulig  <martin@ximian.com>
20469
20470         * reflection.h
20471         (MonoReflectionInflatedMethod, MonoReflectionInflatedField): Added
20472         `MonoReflectionGenericInst *declaring_type' and
20473         `MonoReflectionGenericInst *reflected_type' fields.
20474
20475         * reflection.c (mono_reflection_inflate_method_or_ctor): Take a
20476         `MonoReflectionGenericInst *declaring_type' and a
20477         `MonoReflectionGenericInst *reflected_type' argument instead of a
20478         single `MonoReflectionGenericInst *type' one.  Set
20479         `res->declaring_type' and `res->reflected_type' from them.
20480         (mono_reflection_inflate_field): Likewise.      
20481
20482 2003-11-02  Martin Baulig  <martin@ximian.com>
20483
20484         * class.c (mono_class_setup_vtable): Don't store generic methods
20485         in the vtable.  
20486
20487 2003-11-02  Martin Baulig  <martin@ximian.com>
20488
20489         * reflection.h (MonoReflectionGenericInst): Added
20490         `MonoReflectionType *declaring_type'.
20491
20492         * reflection.c (mono_reflection_bind_generic_parameters): Use
20493         `if (tb->parent)' instead of `klass->parent'.
20494
20495 2003-11-01  Zoltan Varga  <vargaz@freemail.hu>
20496
20497         * assembly.c (mono_assembly_open): Avoid crash if a module is loaded
20498         with an empty ASSEMBLY table.
20499
20500         * reflection.c (mono_image_build_metadata): Avoid using the same loop
20501         variable in the inner and outer loops.
20502
20503 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
20504
20505         * metadata.h (mono_metadata_make_token): Put parentheses around macro
20506         argument.
20507
20508         * appdomain.h appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): Fix signature.
20509         
20510         * appdomain.c appdomain.h icall.c: Get rid of the InvokeInDomain 
20511         icalls. Instead, do everything in managed code. This is needed since
20512         it is hard to restore the original domain etc. in unmanaged code in the
20513         presence of undeniable exceptions.
20514
20515         * appdomain.c (ves_icall_System_AppDomain_InternalPushDomainRef): 
20516         New icalls to push and pop appdomain refs.
20517
20518 2003-10-31  Martin Baulig  <martin@ximian.com>
20519
20520         * class.c (inflate_generic_type): Renamed to
20521         mono_class_inflate_generic_type() and made it public.
20522
20523         * icall.c ("System.Reflection.MonoGenericInst::inflate_field"):
20524         New interncall.
20525
20526         * loader.c (mono_field_from_memberref): Also set the retklass for
20527         typespecs.
20528
20529         * fielder.c (mono_image_get_inflated_field_token): New static
20530         method; creates a metadata token for an inflated field.
20531         (mono_image_create_token, fixup_method): Added support for
20532         "MonoInflatedField".
20533         (fieldbuilder_to_mono_class_field): New static function.
20534         (mono_reflection_inflate_field): New public function.
20535
20536         * reflection.h
20537         (MonoReflectionGenericInst): Added `MonoArray *fields'.
20538         (MonoReflectionInflatedField): New typedef.     
20539
20540 2003-10-30  Bernie Solomon  <bernard@ugsolutions.com>
20541
20542         * socket-io.c (in6_addr ipaddress_to_struct_in6_addr): fix
20543         for Solaris and other platforms without s6_addr16
20544
20545 2003-10-30  Martin Baulig  <martin@ximian.com>
20546
20547         * class.c (inflate_generic_type): Take just one `MonoGenericInst *'
20548         argument instead of two.
20549         (mono_class_inflate_generic_signature): Likewise.
20550         (inflate_generic_header): Likewise.
20551         (mono_class_inflate_generic_method): Likewise.  In addition, if
20552         `ginst->klass' is set, it becomes the new `method->klass'.
20553
20554         * class.h (MonoGenericInst): Removed the `gpointer mbuilder'
20555         field.
20556
20557         * reflection.c (encode_generic_method_sig): Write a 0xa as the
20558         first byte. [FIXME]
20559         (method_encode_methodspec): If we have generic parameters, create
20560         a MethodSpec instead of a MethodRef.
20561         (fixup_method): Added support for "MonoInflatedMethod" and
20562         "MonoInflatedCtor".
20563         (mono_image_create_token): Added support for "MonoInflatedMethod"
20564         and "MonoInflatedCtor".
20565         (inflated_method_get_object): New static function; returns a
20566         managed "System.Reflection.MonoInflatedMethod" object.
20567         (mono_reflection_bind_generic_method_parameters): Return a
20568         `MonoReflectionInflatedMethod' instead of a `MonoReflectionMethod'.
20569         (mono_reflection_inflate_method_or_ctor): Likewise.
20570         (mono_image_get_generic_method_param_info): Initialize unused
20571         fields to zero.
20572         (mono_image_get_generic_param_info): Likewise.
20573
20574         * reflection.h (MonoReflectionInflatedMethod): New public
20575         typedef.  Corresponds to the managed "S.R.MonoInflatedMethod" and
20576         "S.R.MonoInflatedCtor" classes.
20577
20578         * loader.c (method_from_memberref): If we're a TypeSpec and it
20579         resolves to a generic instance, inflate the method.
20580
20581 2003-10-28  Dick Porter  <dick@ximian.com>
20582
20583         * object.c (mono_runtime_run_main): Convert command-line arguments
20584         into utf8, falling back to the user's locale encoding to do so.
20585
20586 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
20587
20588         * loader.c (mono_get_method_from_token): Avoid looking up the icalls
20589         at this time.
20590
20591         * marshal.c (mono_marshal_get_native_wrapper): Lookup icalls here.
20592
20593         * reflection.c (reflection_methodbuilder_to_mono_method): Avoid looking
20594         up icalls at method definition time. Partially fixes #33569.
20595
20596 2003-10-25  Zoltan Varga  <vargaz@freemail.hu>
20597
20598         * marshal.c (mono_marshal_get_native_wrapper): Add support for [Out]
20599         marshalling of arrays. Fixes #50116.
20600
20601         * appdomain.c (ves_icall_System_AppDomain_InternalIsFinalizingForUnload): New icall.
20602
20603         * appdomain.c (unload_thread_main): Clear class->cached_vtable if it
20604         points to a vtable in the dying appdomain.
20605
20606         * appdomain.c (mono_domain_unload): Move the notification of OnUnload
20607         listeners into unmanaged code inside the lock.
20608
20609         * object.c (mono_class_vtable): Turn off typed allocation in non-root
20610         domains and add some comments.
20611
20612 2003-10-25  Martin Baulig  <martin@ximian.com>
20613
20614         * class.h (MonoGenericInst): Added `MonoClass *klass' field.
20615
20616         * image.h (MonoImage): Added `GHashTable *typespec_cache'.
20617
20618         * metadata.c (mono_metadata_parse_generic_inst): Renamed to
20619         `do_mono_metadata_parse_generic_inst'; pass it the MonoType we're
20620         currently parsing.  Create the generic class and store it in
20621         `generic_inst->klass' before parsing the type arguments.  This is
20622         required to support "recursive" definitions; see mcs/tests/gen-23.cs
20623         for an example.
20624         (mono_type_create_from_typespec): Use a new `image->typespec_cache'
20625         to support recursive typespec entries.
20626
20627         * class.c (mono_class_setup_parent): If our parent is a generic
20628         instance, we may get called before it has its name set.
20629         (mono_class_from_generic): Splitted into
20630         mono_class_create_from_generic() and mono_class_initialize_generic().
20631
20632 2003-10-25  Martin Baulig  <martin@ximian.com>
20633
20634         * icall.c (ves_icall_Type_BindGenericParameters): Return a
20635         `MonoReflectionGenericInst *' instead of a `MonoReflectionType *'.
20636         ("System.Reflection.MonoGenericInst::inflate_method"): New interncall.
20637         ("System.Reflection.MonoGenericInst::inflate_ctor"): New interncall.
20638
20639         * reflection.c (my_mono_class_from_mono_type): Added MONO_TYPE_GENERICINST.
20640         (create_typespec): Likewise.
20641         (mono_reflection_bind_generic_parameters): Return a
20642         `MonoReflectionGenericInst *' instead of a `MonoClass *'.
20643         (mono_reflection_inflate_method_or_ctor): New public function.
20644
20645         * reflection.h (MonoReflectionGenericInst): New typedef.        
20646
20647 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
20648
20649         * object.c (mono_class_proxy_vtable): Run the whole vtable construction
20650         inside the domain lock. Fixes #49993.
20651         
20652         * object.c (mono_class_vtable): When typed allocation is used, 
20653         allocate vtables in the GC heap instead of in the mempool, since the
20654         vtables contain GC descriptors which are used by the collector even
20655         after the domain owning the mempool is unloaded.
20656
20657         * domain.c (mono_domain_set): Rename to mono_domain_set_internal.
20658
20659         * domain.c (mono_domain_unload): Rename to mono_domain_free to better
20660         reflect what it does. Also invalidate mempools instead of freeing
20661         them if a define is set.
20662
20663         * appdomain.h (MonoAppDomainState): New enumeration to hold the state
20664         of the appdomain.
20665         
20666         * appdomain.h (_MonoDomain): New field 'finalizable_object_hash' to
20667         hold the finalizable objects in this domain.
20668
20669         * appdomain.h (_MonoDomain): New field 'state' to hold the state of the
20670         appdomain.
20671
20672         * appdomain.c (mono_domain_set): New function to set the current
20673         appdomain, but only if it is not being unloaded.
20674
20675         * appdomain.c threads.c threadpool.c object.c: Avoid entering an
20676         appdomain which is being unloaded.
20677         
20678         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Prevent
20679         unloading of the root appdomain.
20680
20681         * appdomain.c (ves_icall_System_AppDomain_InternalInvokeInDomain): New
20682         icall to execute a method in another appdomain. Intended as a 
20683         replacement for InternalSetDomain, which can confuse the code 
20684         generation in the JIT.
20685
20686         * appdomain.c (mono_domain_is_unloading): New function to determine
20687         whenever an appdomain is unloading.
20688
20689         * appdomain.c (mono_domain_unload): New function to correctly unload
20690         an appdomain.
20691
20692         * assembly.c (mono_assembly_load_references): Check that an assembly
20693         does not references itself.
20694
20695         * gc.c (mono_domain_finalize): Rewrote so instead of finalizing a
20696         domain manually, it asks the finalizer thread to do it, then waits for
20697         the result. Also added a timeout.
20698
20699         * icall.c: Register the new icalls.
20700
20701         * threads.h threads.c: Export the mono_gc_stop_world and 
20702         mono_gc_start_world functions.
20703         
20704         * mempool.h mempool.c (mono_mempool_invalidate): New debugging 
20705         function to fill out the mempool with 0x2a.
20706
20707 2003-10-22  Zoltan Varga  <vargaz@freemail.hu>
20708
20709         * reflection.h (MonoReflectionMethodAux): New structure to store
20710         information which is rarely used, thus is not in the MonoMethod
20711         structure.
20712
20713         * reflection.h (MonoDynamicAssembly): New field 'method_aux_hash' to
20714         store the aux info.
20715
20716         * reflection.c (mono_methodbuilder_to_mono_method): Store param names
20717         and marshalling info into the aux structure.
20718
20719         * loader.c (mono_method_get_marshal_info): Retrieve the marshal info
20720         from the aux structure.
20721
20722         * loader.c (mono_method_get_param_names): Retrieve the param names from
20723         the aux structure.
20724         
20725 2003-10-21  Zoltan Varga  <vargaz@freemail.hu>
20726
20727         * exception.h exception.c: Add AppDomainUnloadedException && fix 
20728         warning.
20729
20730 2003-10-21  Dick Porter  <dick@ximian.com>
20731
20732         * socket-io.c
20733         (ves_icall_System_Net_Sockets_Socket_Select_internal): Applied
20734         patch from Laramie Leavitt moving divide out of loop. (Bug 45381).
20735
20736 2003-10-21  Martin Baulig  <martin@ximian.com>
20737
20738         * reflection.c (mono_reflection_bind_generic_parameters):
20739         `klass->parent' is NULL for interfaces.
20740
20741 2003-10-21  Martin Baulig  <martin@ximian.com>
20742
20743         * reflection.c (create_typespec): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
20744
20745 2003-10-20  Zoltan Varga  <vargaz@freemail.hu>
20746
20747         * exception.c (mono_exception_from_name_msg): New helper function for
20748         creating exceptions and initializing their message field.
20749
20750         * exception.c: Simplify functions using the new helper.
20751
20752         * exception.h exception.c (mono_get_exception_cannot_unload_appdomain):
20753         New function.
20754
20755         * object.h object.c: Remove G_GNUC_NORETURN from the signature of
20756         mono_raise_exception, since otherwise gcc doesn't generate the function
20757         epilog for raise_exception, confusing the stack unwinding in the JIT.
20758         Fixes #45043.
20759
20760         * rawbuffer.c (mono_raw_buffer_load_mmap): Map mmap-ed memory with
20761         PROT_EXEC. This seems to prevent segmentation faults on Fedora Linux.
20762         Fixes #49499.
20763
20764 2003-10-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
20765
20766         * icall.c: OutputDebugStringW expects 16-bit unicode characters, not
20767         utf8.
20768
20769 2003-10-18  Lluis Sanchez Gual  <lluis@ximian.com>
20770
20771         * icall.c: Removed GetUninitializedObject method because
20772           AllocateUninitializedClassInstance does the same.
20773
20774 2003-10-18  Martin Baulig  <martin@ximian.com>
20775
20776         * class.c (inflate_generic_signature): Renamed to
20777         mono_class_inflate_generic_signature() and made it public.
20778         (my_mono_class_from_generic_parameter): New static function; if we
20779         don't already have the generic parameter's MonoClass, create a
20780         very simple one which is just used internally in the runtime and
20781         not passed back to managed code.
20782
20783         * class.h (MonoGenericInst): Added `gpointer mbuilder' field.
20784
20785         * metadata.h (MonoMethodSignature): Moved the
20786         `MonoGenericParam *gen_params' to the MonoMethodHeader.
20787         (MonoMethodHeader): Moved the `MonoGenericParam *gen_params' here.
20788
20789         * icall.c (ves_icall_MethodInfo_GetGenericArguments): Renamed to
20790         ves_icall_MonoMethod_GetGenericArguments(); this is now an
20791         interncall on the MonoMethod class, not on MethodInfo.
20792         (ves_icall_MethodInfo_BindGenericParameters): Removed, we're now
20793         calling mono_reflection_bind_generic_method_parameters() directly.
20794
20795         * loader.c (mono_method_get_signature): If this is a MethodSpec;
20796         return the already computed `method->signature'.
20797         (method_from_methodspec): New static function to load a method
20798         from a MethodSpec entry.
20799         (mono_get_method_from_token): Call the new method_from_methodspec()
20800         for MethodSpec tokens.  
20801         (mono_get_method_from_token): If we're a generic method, load the
20802         type parameters.
20803
20804         * reflection.c (mono_image_get_memberref_token): Allow
20805         MEMBERREF_PARENT_TYPEDEF here; this will be used in the MethodSpec
20806         table.
20807         (fixup_method): Added support for MONO_TABLE_METHODSPEC.
20808         (mono_image_create_token): First check whether it's a generic
20809         method (so we'd need to create a MethodSpec), then do the other
20810         two alternatives.
20811         (mono_reflection_bind_generic_method_parameters): Return a
20812         `MonoReflectionMethod *' instead of a `MonoMethod *'; we're now
20813         called directly from the interncall.
20814
20815 2003-10-17  Zoltan Varga  <vargaz@freemail.hu>
20816
20817         * reflection.c (load_public_key): Move loading of the public key
20818         into managed code.
20819
20820         * image.h (MonoAssemblyName): Add public_key and hash_alg fields.
20821
20822         * assembly.c (mono_assembly_open): Fill in public_key and hash_alg
20823         fields.
20824
20825         * icall.c (ves_icall_System_Reflection_Assembly_FillName): Fill in
20826         culture, hash_alg and public_key. Fixes #49555.
20827
20828 2003-10-17  Martin Baulig  <martin@ximian.com>
20829
20830         * class.h (MonoGenericInst): Moved this declaration here and added
20831         `MonoMethod *generic_method'.
20832
20833         * icall.c
20834         (ves_icall_MethodInfo_GetGenericArguments): New interncall.
20835         (ves_icall_MethodInfo_BindGenericParameters): New interncall.
20836
20837         * metadata.c (mono_metadata_type_equal): Two types of
20838         MONO_TYPE_VAR or MONO_TYPE_MVAR equals if they have the same
20839         index; ie. don't compare the address of the `MonoGenericParam'
20840         structure.
20841         (mono_metadata_load_generic_params): Removed the `MonoMethod
20842         *method' argument.
20843
20844         * metadata.h (MonoGenericInst): Moved declaration to class.h.
20845         (MonoMethodHeader): Added `MonoGenericInst *geninst'.
20846
20847         * reflection.c (method_encode_signature): Encode the number of
20848         generic parameters.
20849         (encode_generic_method_sig): New static function.
20850         (method_encode_methodspec): New static function; creates an entry
20851         in the MethodSpec table for a generic method.
20852         (mono_image_get_methodspec_token): New static function.
20853         (mono_image_create_token): Call mono_image_get_methodspec_token()
20854         for generic methods.
20855         (mono_reflection_bind_generic_method_parameters): New public
20856         function.  Instantiates a generic method.
20857
20858 2003-10-16  Martin Baulig  <martin@ximian.com>
20859
20860         * metadata.h (MonoMethodSignature): Moved `MonoGenericParam
20861         *gen_params' here from MonoMethodHeader.
20862
20863         * metadata.c (mono_metadata_parse_method_signature): If we have
20864         generic parameters, initialize `method->gen_params' and then set
20865         the correct `type->data.generic_param' in all the parameters.
20866
20867 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
20868
20869         * threads.c (mono_threads_get_default_stacksize): New function to 
20870         return the default stacksize.
20871
20872         * gc.c (mono_gc_cleanup): Use a separate event for waiting for the
20873         termination of the finalizer thread, since the previous method had
20874         race conditions. Fixes #49628.
20875
20876         * gc.c (mono_gc_init): Use the same stacksize for the finalizer thread
20877         as for the other managed threads.
20878
20879 2003-10-16  Martin Baulig  <martin@ximian.com>
20880
20881         * class.c (inflate_generic_signature): Copy `generic_param_count'
20882         and `gen_params'.
20883
20884         * icall.c (ves_icall_MethodInfo_get_IsGenericMethodDefinition):
20885         New interncall.
20886
20887         * metadata.c (mono_metadata_parse_method_signature): Actually set
20888         the `method->generic_param_count' here.
20889         (mono_metadata_load_generic_params): Initialize `pklass' to NULL.
20890
20891 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
20892
20893         * object.h: Add a new field to TypedRef to simplify the implementation
20894         of the REFANY opcodes in the JIT.
20895
20896         * icall.c: Make use of the new field.
20897
20898         * metadata.c (mono_type_size): Compute the size of TYPEDBYREF types
20899         dynamically.
20900
20901 2003-10-15  Martin Baulig  <martin@ximian.com>
20902
20903         * class.c (mono_class_from_gen_param): Renamed to
20904         mono_class_from_generic_parameter() and moved most of the
20905         functionality from mono_reflection_define_generic_parameter()
20906         here; ie. we create a "real" class here.
20907         (mono_class_from_mono_type): Only allow MONO_TYPE_VAR and
20908         MONO_TYPE_MVAR if mono_class_from_generic_parameter() has
20909         previously been called.
20910
20911         * class.h (MonoGenericParam): Moved the declaration of this struct
20912         here from metadata.h and added `MonoMethod *method'.
20913
20914         * icall.c (ves_icall_MonoType_get_DeclaringMethod): New
20915         interncall.
20916
20917         * loader.c (mono_get_method_from_token): If we have any generic
20918         parameters, call mono_metadata_load_generic_params() to read them
20919         from the MONO_TABLE_GENERICPAR.
20920
20921         * metadata.c (mono_metadata_load_generic_params): Added
20922         `MonoMethod *method' argument which is used MONO_TYPE_MVAR.
20923
20924         * metadata.h (MonoMethodSignature): Replaced
20925         `MonoGenericInst *geninst' with `guint16 generic_param_count'.
20926         (MonoMethodHeader): Added `MonoGenericParam *gen_params'.
20927
20928         * reflection.c (mono_reflection_define_generic_parameter): Moved
20929         most of the functionality into the new
20930         mono_class_from_generic_parameter(); set the `method' field if
20931         we're a method parameter.       
20932
20933 2003-10-13 Bernie Solomon  <bernard@ugsolutions.com>
20934
20935         * marshal.c (emit_struct_conv): if native size is 0
20936         emit no code.
20937
20938 2003-10-14  Martin Baulig  <martin@ximian.com>
20939
20940         * icall.c: The generics API has changed in the spec since it was
20941         added to System.Type; these modifications make it match the spec
20942         again.
20943         (ves_icall_Type_GetGenericParameters): Renamed to
20944         `ves_icall_Type_GetGenericArguments'.
20945         (ves_icall_Type_get_IsGenericTypeDefinition): New interncall.
20946         (ves_icall_MonoType_get_HasGenericParameteres): Renamed to
20947         `ves_icall_MonoType_get_HasGenericArguments'.
20948         (ves_icall_MonoType_get_IsUnboundGenericParameter): Renamed to
20949         `ves_icall_MonoType_get_IsGenericParameter'.
20950         (ves_icall_MonoType_get_HasUnboundGenericParameters): Removed;
20951         this is no interncall anymore.
20952         (ves_icall_TypeBuilder_get_IsUnboundGenericParameter): Renamed to
20953         `ves_icall_TypeBuilder_get_IsGenericParameter'.
20954
20955 2003-10-14  Martin Baulig  <martin@ximian.com>
20956
20957         * reflection.c (mono_reflection_bind_generic_parameters): Also
20958         inflate generic methods if we're reading the class from IL.
20959
20960 2003-10-13  Martin Baulig  <martin@ximian.com>
20961
20962         * reflection.c (mono_reflection_define_generic_parameter): This
20963         method isn't called directly from the icall anymore; take a
20964         `MonoReflectionAssemblyBuilder *' so we can use this for type and
20965         method generic parameters.
20966         (ReflectionMethodBuilder): Added `MonoArray *generic_param'.
20967         (method_builder_encode_signature): Encode generic parameters.
20968         (mono_image_get_method_info): Write generic params to the
20969         MONO_TABLE_GENERICPARAM table.
20970
20971         * reflection.h (MonoReflectionMethodBuilder): Added
20972         `MonoArray *generic_params'.
20973
20974         * metadata.h (MonoMethodSignature): Added `MonoGenericInst *geninst'.
20975
20976         * icall.c (ves_icall_TypeBuilder_define_generic_parameter): Added
20977         wrapper for mono_reflection_define_generic_parameter().
20978         (ves_icall_MethodBuilder_define_generic_parameter): Likewise.   
20979
20980 2003-10-13  Zoltan Varga  <vargaz@freemail.hu>
20981
20982         * marshal.h: Add missing function to fix build.
20983
20984         * marshal.c (mono_marshal_get_native_wrapper): Add support for 
20985         the SetLastError pinvoke attribute.
20986
20987         * marshal.c (mono_marshal_set_last_error): New helper function called
20988         by the generated code.
20989         
20990         * marshal.c (mono_mb_emit_branch): New helper function.
20991
20992         * marshal.c (mono_mb_emit_exception): Added exception name parameter.
20993
20994         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
20995         classes as parameters and return values of delegates. Fixes #29256. 
20996
20997 2003-10-12  Bernie Solomon  <bernard@ugsolutions.com>
20998
20999         * locales.c: use gint32 in non HAVE_ICU case
21000
21001 2003-10-11  Martin Baulig  <martin@ximian.com>
21002
21003         * mono-debug.c (mono_debug_add_method): Added a workaround for
21004         bug #48591.
21005
21006 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
21007
21008         * marshal.c (mono_marshal_get_managed_wrapper): Under windows,
21009         delegates passed to native code must use the STDCALL calling 
21010         convention. Fixes #35987.
21011
21012 2003-10-10  Martin Baulig  <martin@ximian.com>
21013
21014         * class.c (inflate_generic_type): If we're inflating for a generic
21015         type instance (and not for a generic method), return
21016         MONO_TYPE_MVAR unchanged.
21017
21018 2003-10-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21019
21020         * string-icalls.c: Join ignores null strings in the source array.
21021         * threadpool.[ch]: export busy_worker_threads, not mono_worker_threads.
21022         * threads.c: GetAvailableTheads is slightly more accurate.
21023
21024 2003-10-09  Bernie Solomon  <bernard@ugsolutions.com>
21025
21026         * threads.h threads.c : add mono_threads_set_default_stacksize
21027         and pass default to CreateThread calls.
21028
21029 2003-10-09  Dick Porter  <dick@ximian.com>
21030
21031         * icall.c:
21032         * locales.h:
21033         * locales.c: Internal calls for constructing CultureInfo and
21034         related objects from libicu (if its available.)
21035
21036 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
21037
21038         * debug-helpers.c (wrapper_type_names): Add 'unknown' wrapper type.
21039
21040 2003-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21041
21042         * threadpool.c: added an argument to async_invoke_thread that is the
21043         item to process, pass the MonoAsyncResult to the thread start function
21044         when creating a new thread. This way we don't need to acquire any lock
21045         when we're creating a new thread. Readded a semaphore for faster
21046         response times (instead of that Sleep i added).
21047
21048 2003-10-08  Bernie Solomon  <bernard@ugsolutions.com>
21049
21050         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
21051         get daylight change dates better on Windows, fix handling
21052         of platforms without tm_gmtoff.
21053
21054 2003-10-06  Martin Baulig  <martin@ximian.com>
21055
21056         * class.c (inflate_generic_method): Renamed to
21057         mono_class_inflate_generic_method() and made public.
21058         (mono_class_init): Don't inflate the generic methods here.
21059         (mono_class_from_generic): Added `gboolean inflate_methods'
21060         argument.  Inflate the methods here.
21061
21062         * loader.c (mono_method_get_param_names): Ignore instances of
21063         generic types for the moment.
21064
21065         * reflection.c (fixup_method): Added support for inflated methods.
21066         (mono_image_create_token): Use mono_image_get_methodref_token()
21067         for inflated methods.
21068         (mono_custom_attrs_from_param): Ignore instances of generic types
21069         for the moment.
21070         (mono_reflection_bind_generic_parameters): New public function.
21071         Moved all the functionality from
21072         ves_icall_Type_BindGenericParameters() here and added support for
21073         dynamic types.
21074         (mono_reflection_define_generic_parameter): Initialize
21075         `klass->methods' here.
21076
21077         * icall.c (ves_icall_Type_BindGenericParameters): Moved all the
21078         functionality into mono_reflection_define_generic_parameter().
21079         (ves_icall_Type_GetGenericTypeDefinition): If we're coming from a
21080         TypeBuilder, return that TypeBuilder.
21081
21082 2003-10-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21083
21084         * appdomain.c: removed mono_delegate_semaphore.
21085
21086         * threadpool.c:
21087         (mono_thread_pool_add): moved hash table creation inside and the thread 
21088         creation outside of the critical region.
21089         (mono_thread_pool_finish): removed obsolete code.
21090         (async_invoke_thread): don't use the semaphore. Use a plain Sleep and
21091         continue or exit the thread depending on the queue.
21092
21093 2003-10-07  Bernie Solomon  <bernard@ugsolutions.com>
21094
21095         * metadata.c (mono_type_to_unmanaged): allow bools to marshal as I1
21096         marshal.c (emit_ptr_to_str_conv & mono_marshal_get_native_wrapper):
21097         handle more bool marshalling options
21098
21099 2003-10-07  Zoltan Varga  <vargaz@freemail.hu>
21100
21101         * marshal.c (mono_marshal_get_native_wrapper): Fix marshalling of
21102         arrays of structs. Also add a more descriptive error message when
21103         a structure member is marshalled as LPArray.
21104
21105 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * marshal.c (mono_marshal_get_native_wrapper): Add support for
21108         marshalling arrays of complex types. Fixes #29098. Also remove an
21109         usused and incomplete function.
21110
21111 Mon Oct 6 15:38:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
21112
21113         * gc.c: report heap_size - free_bytes as total memory allocated
21114         (bug#49362).
21115
21116 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
21117
21118         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Finally 
21119         fix timezone handling problems on Windows.
21120         
21121         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Avoid
21122         asserts when the year is outside the range handled by ms the functions.
21123
21124         * class.c (setup_interface_offsets): If the class is an interface,
21125         fill out its interface_offsets slot.
21126
21127 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21128
21129         * threadpool.c: mark threadpool threads as background.
21130
21131 2003-10-03  Bernie Solomon  <bernard@ugsolutions.com>
21132
21133         * decimal.c - define DECINLINE to nothing if not using GCC
21134
21135 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
21136
21137         * assembly.c: More refcount fixes.
21138
21139 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21140
21141         * string-icalls.c: if we're not trimming, return the same string.
21142         When not splitting, don't create a new string.
21143
21144 2003-10-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21145
21146         * image.c:
21147         (mono_image_open): increment the ref_count inside the critical section.
21148
21149 2003-10-02  Zoltan Varga  <vargaz@freemail.hu>
21150
21151         * image.c (mono_image_open): Fix reference counting bug.
21152
21153 2003-09-30  Bernie Solomon  <bernard@ugsolutions.com>
21154
21155         * marshal.c (mono_marshal_type_size) struct alignment changed for 
21156         64bit machines.  (emit_ptr_to_str_conv) Fix bool conversions for 
21157         64bits. Avoid leak in mono_marshal_get_native_wrapper when
21158         mono_lookup_pinvoke_call throws.        
21159
21160 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
21161
21162         * reflection.c (mono_reflection_parse_type): Fix #49114.
21163
21164         * file-io.c (ves_icall_System_IO_MonoIO_GetFileAttributes): Add
21165         temporary workaround for cygwin header problem.
21166
21167         * object.c (mono_object_isinst): Synchronize this with the code
21168         generated by the JIT for casts.
21169
21170 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
21171
21172         * reflection.c (encode_type): Fix #38332.
21173
21174 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
21175
21176         * marshal.c (mono_marshal_method_from_wrapper): New function to return
21177         the original method from the wrapper method.
21178
21179 2003-09-25  Martin Baulig  <martin@ximian.com>
21180
21181         * icall.c (ves_icall_Type_IsGenericTypeDefinition): Removed this
21182         interncall since it was identical to `Type.GetGenericTypeDefinition()'.
21183         (ves_icall_Type_get_IsGenericInstance): New interncall.
21184
21185 2003-09-24 Bernie Solomon <bernard@ugsolutions.com>
21186
21187         * object.c: fix cast warning in big endian code.
21188
21189 2003-09-19 Jackson Harper <jackson@latitudegeo.com>
21190
21191         * icall.c: Timezone patch from Zoltan Varga (vargaz@freemail.hu)
21192         
21193 2003-09-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21194
21195         * assembly.c: don't call check_env from mono_assembly_load. It's
21196         already done once in mono_assemblies_init and may cause headaches when
21197         multiple threads are loading assemblies.
21198
21199 2003-09-19  Martin Baulig  <martin@ximian.com>
21200
21201         * reflection.c (mono_reflection_define_generic_parameter): Don't
21202         allocate `klass->methods', set `klass->flags' to
21203         TYPE_ATTRIBUTE_INTERFACE, not TYPE_ATTRIBUTE_ABSTRACT.
21204
21205 2003-09-18  Martin Baulig  <martin@ximian.com>
21206
21207         * class.c (mono_class_init): Don't create `class->methods' if it's
21208         already initialized.
21209
21210         * metadata.c (mono_metadata_load_generic_params): Make this
21211         actually work.
21212
21213         * reflection.c (mono_reflection_define_generic_parameter): Set
21214         parent class and interfaces from the constraints.
21215
21216         * reflection.h (MonoReflectionGenericParam): Added `guint32 flags'
21217         to keep this struct in sync with the declaration in TypeBuilder.cs.
21218
21219 2003-09-17  Martin Baulig  <martin@ximian.com>
21220
21221         * metadata.h (MonoType): Replaced the data's `int type_param'
21222         field with `MonoGenericParam *generic_param'.
21223         (MonoGenericParam): Added `MonoClass *klass'.
21224
21225         * class.c (mono_class_from_gen_param): Removed the
21226         `MonoImage *image' and `int type_num' arguments.
21227
21228         * metadata.c (mono_metadata_parse_generic_param): New static
21229         method; creates a MonoGenericParam which just contains the index.
21230         (do_mono_metadata_parse_type): Call
21231         mono_metadata_parse_generic_param() for MONO_TYPE_VAR and
21232         MONO_TYPE_MVAR.
21233
21234         * reflection.c (mono_image_typedef_or_ref): Generic type
21235         parameters may be in the same assembly, but never use a typedef
21236         for them.
21237         (mono_reflection_define_generic_parameter): We're now creating a
21238         "real" class for the type parameter; it's now safe to call
21239         mono_class_from_mono_type() on the class'es type, it'll do the
21240         right thing.
21241
21242 2003-09-16  Martin Baulig  <martin@ximian.com>
21243
21244         * mono-debug-debugger.c (allocate_symbol_file_entry): Initialize
21245         `symfile->range_entry_size' and `symfile->class_entry_size' here;
21246         the `symfile' data structure must be fully initialized before it
21247         gets added to the table.
21248
21249 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
21250
21251         * icall.c (ves_icall_Type_IsArrayImpl): Added MONO_ARCH_SAVE_REGS.
21252
21253         * appdomain.h domain.c (MonoDomain): Added new hashtable to store the
21254         class init trampolines.
21255
21256 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
21257
21258         * profiler.c (mono_profiler_load): Added '-time' and '-alloc' options
21259         to the built-in profiler to turn off time and allocation profiling
21260         respectively.
21261
21262 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
21263
21264         * profiler.c (mono_profiler_coverage_alloc): Use NULL instead of
21265         g_direct_equal.
21266
21267         * debug-helpers.c (mono_method_full_name): Print the wrapper type
21268         in human readable form.
21269
21270 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
21271
21272         * reflection.c icall.c: Fixed warnings.
21273
21274         * image.c (load_class_names): Use a temporary hash table to hold the
21275         namespaces in order to avoid doing many string comparisons.
21276
21277         * image.h: Fix typo.
21278
21279         * image.c class.c rawbuffer.c reflection.c threads.c verify.c domain.c:
21280         Pass NULL instead of g_direct_equal to the GHashTable constructor 
21281         since the NULL case is short-circuited inside g_hash_table_lookup, 
21282         leading to better performance.  
21283
21284         * metadata.c (mono_metadata_custom_attrs_from_index): New function to
21285         obtain the first custom attribute for a given index. Depends on the
21286         CustomAttribute table being sorted by the parent field.
21287
21288         * reflection.c (mono_custom_attrs_from_index): Use the new function 
21289         for better performance.
21290
21291 2003-09-07  Martin Baulig  <martin@ximian.com>
21292
21293         * class.c (mono_class_init): If we're a generic instance, inflate
21294         all our methods instead of loading them from the image.
21295         (mono_class_from_generic): Set `class->methods = gklass->methods'.
21296
21297 2003-09-07  Martin Baulig  <martin@ximian.com>
21298
21299         * mono-debug-debugger.c: Added support for constructors.
21300
21301 2003-09-06  Martin Baulig  <martin@ximian.com>
21302
21303         * icall.c (ves_icall_TypeBuilder_get_IsUnboundGenericParameter):
21304         New interncall.
21305
21306         * reflection.c (mono_reflection_setup_generic_class): Call
21307         ensure_runtime_vtable() to create the vtable.
21308
21309 2003-09-05  Martin Baulig  <martin@ximian.com>
21310
21311         * class.c (mono_class_array_element_size): Added MONO_TYPE_VAR and
21312         MONO_TYPE_MVAR.
21313
21314 2003-09-04  Martin Baulig  <martin@ximian.com>
21315
21316         * reflection.c (mono_reflection_define_generic_parameter): Generic
21317         parameters start with zero.
21318
21319 2003-09-04  Martin Baulig  <martin@ximian.com>
21320
21321         * metadata.c (mono_type_size): Added MONO_TYPE_VAR and MONO_TYPE_MVAR.
21322
21323         * reflection.h (MonoReflectionGenericParam): New typedef.
21324         (MonoReflectionTypeBuilder): Added `generic_params' fields to get
21325         the generic parameters from the managed TypeBuilder.
21326
21327         * reflection.c (mono_reflection_define_generic_parameter): New function.
21328         (mono_reflection_create_runtime_class): Encode generic parameters.
21329         (mono_reflection_setup_generic_class): New function; this is
21330         called after adding adding all generic params to the TypeBuilder.
21331         (encode_type): Added MONO_TYPE_VAR.
21332
21333 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
21334
21335         * class.h class.c (mono_class_needs_cctor_run): Moved this method
21336         here from the JIT.
21337
21338         * assembly.h assembly.c: Moved the AOT loading code into an assembly
21339         load hook.
21340
21341 2003-09-03  Zoltan Varga  <vargaz@freemail.hu>
21342
21343         * reflection.h reflection.c class.h class.c: Delete duplicate 
21344         definition of mono_type_get_name () from reflection.c and export the
21345         one in class.c.
21346
21347         * class.c: Class loading fixes from Bernie Solomon 
21348         (bernard@ugsolutions.com).
21349
21350         * reflection.c: Endianness fixes from Bernie Solomon 
21351         (bernard@ugsolutions.com).
21352         
21353 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
21354
21355         * assembly.h assembly.c: Define a file format version for AOT
21356         libraries.
21357         
21358         * assembly.c (mono_assembly_open): Fix leaking of MonoImage-s.
21359
21360         * appdomain.h (MonoJitInfo): New field to determine whenever the
21361         code is domain neutral.
21362         
21363 2003-08-31  Miguel de Icaza  <miguel@ximian.com>
21364
21365         * marshal.c (emit_struct_conv): Add MONO_TYPE_CHAR
21366
21367 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
21368
21369         * icall.c (ves_icall_System_Web_Util_ICalls_get_machine_install_dir): 
21370         (ves_icall_System_Configuration_DefaultConfig_get_machine_config_path):
21371         Avoid caching the result since strings must be domain specific. Fixes
21372         #48050.
21373
21374 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
21375
21376         * marshal.c (mono_marshal_init): Make this callable multiple times
21377         since it is hard to find a correct place to call it.
21378
21379         * object.c (mono_runtime_class_init): Execute static constructors in
21380         the correct appdomain.
21381
21382         * image.c (build_guid_table): Handle the case when multiple images have
21383         the same GUID.
21384
21385 2003-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21386
21387         * icall.c: added a couple of icalls for System.Web.
21388
21389 2003-08-28  Martin Baulig  <martin@ximian.com>
21390
21391         * icall.c (ves_icall_Type_BindGenericParameters): Use
21392         `klass->generic_inst' instead of `&klass->byval_arg' in the
21393         mono_type_get_object() call.  The returned type must be
21394         MONO_TYPE_GENERICINST and not MONO_TYPE_CLASS.
21395
21396 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
21397
21398         * NOTES: New file.
21399
21400         * object.c (mono_class_proxy_vtable): Make it thread safe.
21401
21402         * pedump.c: Fix warning.
21403
21404         * object.c appdomain.h: Get rid of metadata_section. 
21405         It is no longer needed and it was causing deadlocks with domain->lock.
21406
21407         * appdomain.c (add_assemblies_to_domain): Make it thread safe.
21408
21409 2003-08-26  Martin Baulig  <martin@ximian.com>
21410
21411         * pedump.c (main): Don't call mono_image_close() if `verify_pe'.
21412
21413 2003-08-26  Martin Baulig  <martin@ximian.com>
21414
21415         * pedump.c (main): Call mono_metadata_init(),
21416         mono_raw_buffer_init(), mono_images_init(), mono_assemblies_init()
21417         and mono_loader_init().
21418
21419 2003-08-26  Zoltan Varga  <vargaz@freemail.hu>
21420
21421         * loader.h: Add missing include to fix build.
21422
21423         * image.h: mono_image_load_references is no more.
21424
21425         * assembly.c: Reworked assembly loading to make it really thread safe.
21426         After these changes, the assembly returned by mono_assembly_open is
21427         fully initialized, i.e. all its references assemblies are loaded.
21428
21429         * assembly.c (mono_image_load_references): Renamed to 
21430         mono_assembly_load_references, and made private, since clients no
21431         longer need to call it.
21432
21433         * class.c: Removed calls to mono_assembly_load_references, since it was
21434         a source of deadlocks.
21435
21436         * loader.h loader.c class.h class.c: Protect data structures using a 
21437         new lock, the loader lock.
21438
21439         * class.c (mono_class_setup_vtable): Create temporary hash tables and
21440         GPtrArrays only when needed.
21441
21442         * class.c (mono_class_layout_fields): Ignore the dummy field inserted 
21443         into empty structures by mcs. Fixes pinvoke7.cs.
21444         
21445         * domain.c (mono_init): Call a new initialization function.
21446
21447         * appdomain.c (mono_runtime_init): Call the new initializer function
21448         of the marshal module.
21449
21450         * marshal.c (mono_marshal_load_type_info): Ignore the dummy field
21451         inserted into empty structures by mcs. Fixes pinvoke7.cs.
21452
21453         * marshal.h marshal.c: Added locks around the wrapper caches to make
21454         this module thread safe.
21455
21456         * icall.c (ves_icall_InternalInvoke): Method wrappers doesn't require a
21457         this argument. Fixes pinvoke1.exe.
21458
21459 2003-08-25  Lluis Sanchez <lluis@ximian.com>
21460
21461         * object.h: Added call_type field to MonoMethodMessage and the corresponding
21462         enumeration of values. Removed fields to store remote call output values in
21463         MonoAsyncResult. Not needed any more.
21464         * object.c: Initialize call_type and async_result fields in mono_message_init.
21465         * marshal.c: mono_delegate_begin_invoke(): for proxies, set call_type before
21466         dispatching the message.
21467         mono_delegate_end_invoke (): delegate to the proxy the work of waiting for the
21468         async call to finish. To do it use a message with EndInvoke call type.
21469
21470 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
21471
21472         * loader.h loader.c (mono_method_hash_marhal_info): New function which
21473         determines whenever a method has marshalling info.
21474
21475 2003-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21476
21477         * assembly.c: fix the build on windows.
21478
21479 2003-08-22 Lluis Sanchez <lluis@ximian.com>
21480
21481         * object.cs: Fixed bug #47785.
21482
21483 2003-08-22 Jackson Harper <jackson@latitudegeo.com>
21484
21485         * string-icalls.c (StringReplace): If their are no occurances of
21486         the old string found return a reference to the supplied
21487         string. This saves some memory and matches MS behavoir.
21488         
21489 2003-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21490
21491         * socket-io.c: fixed compilation for systems that define AF_INET6
21492         and don't define SOL_IP/SOL_IPV6.
21493
21494 2003-08-21  Zoltan Varga  <vargaz@freemail.hu>
21495
21496         * object.c (mono_object_isinst): Fix casts to TransparentProxy in
21497         the interpreter. Patch by Bernie Solomon (bernard@ugsolutions.com).
21498
21499         * rawbuffer.c rawbuffer.h: Make this module thread safe.
21500
21501         * domain.c: Make this module thread safe.
21502
21503         * domain.c (mono_init): Call new initialization function.
21504
21505         * icall.c (ves_icall_System_Array_SetValueImpl): Check types for
21506         reference types too. Fixes #38812.
21507
21508         * image.c (mono_image_init): Fixed warnings.
21509
21510         * class.c (mono_class_from_typeref): Handle assembly load failure
21511         correctly.
21512
21513         * appdomain.c (add_assemblies_to_domain): Handle the case when
21514         the references of an assembly are not yet loaded.
21515
21516         * metadata.c image.c assembly.c: Moved initialization of global
21517         variables to a separate function called at startup since lazy 
21518         initialization of these variables is not thread safe.
21519         
21520         * image.c assembly.c: Made this module thread safe by adding locks in 
21521         the appropriate places.
21522
21523         * domain.c (mono_init): Call the new initialization functions of the
21524         three modules.
21525
21526 2003-08-20  Lluis Sanchez Gual  <lluis@ximian.com>
21527
21528         * marshal.c: mono_delegate_begin_invoke(): If the target is a proxy,
21529           make a direct call. It is proxy's work to make the call asynchronous.
21530           mono_delegate_end_invoke(): If the targe is a proxy, just collect
21531           the return values.
21532         * object.cs: mono_method_call_message_new(): read AsyncResult and
21533           state object from parameters list, if this info is requested.
21534         * object.h: Added fields to store remote call output values in
21535           MonoAsyncResult. Added AsyncResult field in MonoMethodMessage.
21536
21537 Wed Aug 20 12:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21538
21539         * object.h: add needed fields to MonoThread.
21540         * threads.c, threads.h: allow registering a function to cleanup data
21541         allocated per thread by the JIT.
21542
21543 Tue Aug 19 18:22:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21544
21545         * loader.h: portability fix by Bernie Solomon
21546         * <bernard@ugsolutions.com>.
21547
21548 2003-08-16  Zoltan Varga  <vargaz@freemail.hu>
21549
21550         * reflection.h reflection.c (mono_param_get_objects): Changed this to 
21551         return a MonoArray. This simplifies the code and also ensures that
21552         the cache allways contains an object reference as a value.
21553
21554         * icall.c (ves_icall_get_parameter_info): Simplified using the new
21555         function.
21556
21557 2003-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21558
21559         * socket-io.c: patch by Bernie Solomon <bernard@ugsolutions.com> that
21560         fixes a problem with byte ordering when getting the address family for
21561         a socket.
21562
21563 2003-08-15  Zoltan Varga  <vargaz@freemail.hu>
21564
21565         * .cvsignore: Added monosn.
21566
21567         * reflection.h reflection.c loader.c: Added support for parameter
21568         marshalling to dynamically created types. Fixes #47295.
21569
21570 Fri Aug 15 11:42:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
21571
21572         * rand.c: remove useless warnings.
21573
21574 Wed Aug 13 15:49:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21575
21576         * class.c: implemented ldtoken for methods and fieldrefs.
21577
21578 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21579
21580         * threadpool.c: when mono_async_invoke was called, no one took care of
21581         monitoring the queue. So if the method invoked took some time and we
21582         got new async invoke requests after 500 ms (the thread created waited
21583         that long in WaitForSingleObject), the new async invoke was not called
21584         until the previous one finished.
21585
21586         This is fixed now. Thanks to Totte for helping with it.
21587
21588 2003-08-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21589
21590         * threadpool.c: set threadpool_thread to TRUE. Patch by totte.
21591
21592 2003-08-11  Martin Baulig  <martin@ximian.com>
21593
21594         * mono-debug-debugger.c (mono_debugger_lookup_type): New function.
21595
21596 2003-08-06  Martin Baulig  <martin@ximian.com>
21597
21598         * mono-debug-debugger.c: Added support for static fields,
21599         properties and methods.
21600
21601 2003-08-06  Martin Baulig  <martin@ximian.com>
21602
21603         * mono-debug-debugger.c: Don't store the MonoString's vtable to
21604         make this work for applications with multiple application domains.
21605
21606 2003-08-04  Martin Baulig  <martin@ximian.com>
21607
21608         * mono-debug-debugger.c: Completely reworked the type support; the
21609         most important thing is that we're now just using one single
21610         `MonoType' instance per type.
21611
21612 Sat Aug  2 13:05:27 BST 2003 Malte Hildingson <malte@amy.udd.htu.se>
21613
21614         * mono-endian.h, mono-endian.c, icall.c: Added icall
21615         ves_icall_System_Double_AssertEndianity to assert double word endianity
21616         on ARM (FPA). The icall uses a macro defined in mono-endian.h.
21617
21618 Fri Aug 1 16:51:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21619
21620         * class.c, class.h, reflection.c, metadata.c, icall.c: more generics
21621         support, icalls and fixes.
21622
21623 2003-07-31  Miguel de Icaza  <miguel@ximian.com>
21624
21625         * unicode.c (ves_icall_System_Char_IsPunctuation): The set of
21626         classes that are a punctuation character in .NET is not the same a
21627         g_unichar_ispunct.
21628
21629 Tue Jul 29 18:07:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
21630
21631         * socket-io.c: ipv6 portability fixes from Felix Ortga (guile@lared.es).
21632
21633 2003-07-29  Miguel de Icaza  <miguel@ximian.com>
21634
21635         * icall.c: Add new MemCopy internalcall.
21636         (ves_icall_System_Reflection_Assembly_GetManifestResourceInternal):
21637         Simplified code; It is not necessary to handle all the cases here,
21638         as the C# code takes care of it.  Only handle the case of the name
21639         resource embedded into the assembly.
21640
21641         Changed signature to return the data pointer and the size of the
21642         data. 
21643
21644 2003-07-26  Miguel de Icaza  <miguel@ximian.com>
21645
21646         * reflection.c (mono_image_get_method_info): Allow for 0x40 to be
21647         encoded.        (Partition II.22.1.7: PInvokeAttribute:SupportsLastErr).
21648
21649 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
21650
21651         * socket-io.c: ignore EINTR error in select.
21652
21653 Tue Jul 29 15:25:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
21654
21655         * class.h, class.c: removed unused subclasses field in MonoClass.
21656
21657 2003-07-29  Lluis Sanchez Gual  <lluis@ximian.com>
21658
21659         * icall.c: improve fix of get_base_definition(). If the parent class
21660           doesn't have the mehod, look at the parent of the parent.
21661         * object.c: mono_message_init(): use the attribute PARAM_ATTRIBUTE_OUT
21662           to check if a parameter is an in or out parameter
21663           (PARAM_ATTRIBUTE_IN is not set by default).
21664           mono_method_return_message_restore(): Use mono_class_value_size to
21665           get the size of a value type. mono_type_stack_size (parameterType)
21666           does not return the correct value if parameterType is byRef.
21667           mono_load_remote_field(), mono_load_remote_field_new(),
21668           mono_store_remote_field(), mono_store_remote_field_new():
21669           raise exception if the remote call returns an exception.
21670
21671 2003-07-28  Martin Baulig  <martin@ximian.com>
21672
21673         * mono-debug-debugger.c (mono_debugger_runtime_invoke): New
21674         method.  This is a wrapper around mono_runtime_invoke() which
21675         boxes the instance object if neccessary.
21676
21677 Fri Jul 25 19:14:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21678
21679         * class.c, class.h, image.c, image.h, loader.c, metadata.c,
21680         metadata.h, row-indexes.h, verify.c: first cut of generics support.
21681
21682 Thu Jul 24 11:34:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21683
21684         * icall.c: disable mcs bug workaround.
21685
21686 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
21687
21688         * object.c (mono_runtime_class_init): Take the metadata_section
21689         mutex before obtaining the domain mutex.
21690
21691         * appdomain.h: Added definition of metadata_section mutex here. 
21692
21693         * object.c: define metadata_mutex here.
21694
21695 2003-07-24  Ravi Pratap  <ravi@ximian.com>
21696
21697         * icall.c: Remove the FIXED_MCS_45127 workarounds - this has been
21698         fixed.
21699
21700 2003-07-24  Lluis Sanchez Gual  <lluis@ximian.com>
21701
21702         * reflection.c: Fix bug #46669
21703
21704 2003-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21705
21706         * exception.c:
21707         * exception.h:
21708         * icall.c:
21709         * object.h: fill in the type name for TypeLoadException.
21710
21711 2003-07-23  Ravi Pratap  <ravi@ximian.com>
21712
21713         * class.c: Fixes from Paolo in response to bug #45415 (Subclass
21714         relationship between TypeBuilders while compiling corlib) and bug
21715         45993 (Array types returned from the runtime while compiling
21716         corlib were from the loaded corlib).
21717
21718 2003-07-22  Martin Baulig  <martin@ximian.com>
21719
21720         * mono-debug-debugger.c: Reworked the type support a bit more;
21721         distinguish between types and classes.
21722
21723 Tue Jul 22 15:48:50 CEST 2003 Paolo Molaro <lupus@ximian.com>
21724
21725         * icall.c: add IsArrayImpl icall.
21726
21727 2003-07-22  Zoltan Varga  <vargaz@freemail.hu>
21728
21729         * class.c (mono_class_layout_fields): Fix gc aware auto layout by
21730         initializing real_size only once. Also fix bug #46602.
21731
21732 2003-07-21  Jerome Laban <jlaban@wanadoo.fr>
21733
21734         * object.c: Renamed mono_metadata_section to metadata_section.
21735
21736 2003-07-21  Lluis Sanchez Gual  <lluis@ximian.com>
21737
21738         * icall.c: in MS.NET ves_icall_Type_GetInterfaces returns an
21739           empty array if the type is an array. Fixed.
21740           ves_icall_MonoMethod_get_base_definition: if the base method
21741           is abstract, get the MethodInfo from the list of methods of
21742           the class.
21743         * reflection.c: ParameterInfo.PositionImpl should be zero-based
21744           and it was 1-based. Fixed in mono_param_get_objects.
21745
21746 2003-07-20  Martin Baulig  <martin@ximian.com>
21747
21748         * mono-debug.h: Set version number to 31.
21749         (mono_debug_init): Added `MonoDomain *' argument.
21750
21751         * mono-debug-debugger.c: Reworked the type support; explicitly
21752         tell the debugger about builtin types; pass the `klass' address to
21753         the debugger.
21754
21755 2003-07-20 Jackson Harper <jackson@latitudegeo.com>
21756
21757         * image.c: Allow new metadata tables to be loaded without a
21758         warning. Also update the warning message to give the new constant value.
21759                 
21760 Fri Jul 18 13:12:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
21761
21762         * class.c, class.h, debug-helpers.c, icall.c, image.c, marshal.c,
21763         metadata.c, metadata.h, mono-debug-debugger.c, object.c, reflection.c: 
21764         array type representation changes.
21765
21766 Fri Jul 18 11:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21767
21768         * icall.c, appdomain.h, appdomain.c: support full runtime shutdown
21769         on Environment.Exit () call.
21770
21771 Thu Jul 17 17:21:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
21772
21773         * icall.c, reflection.h, reflection.c, verify.c: cleanups,
21774         requires a matching corlib.
21775
21776 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
21777
21778         * Changelog: My editor decided to add a CR to each line. Sorry about that.
21779           Committed again without the CRs.
21780         
21781 2003-07-17  Lluis Sanchez Gual  <lluis@ximian.com>
21782
21783         * socket-io.c: Get system_assembly using mono_image_loaded(), instead
21784           getting it from the "this" socket instance. Did not work
21785           if the socket is a subclass of Socket.
21786           Also fixed bug #35371.
21787
21788 Thu Jul 17 13:39:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21789
21790         * metadata.c: fixed size for TypedByRef.
21791         * loader.c: when searching for a method, consider the vararg amrker.
21792         * unicode.c, decimal.c: constify some arrays.
21793
21794 2003-07-15  Dick Porter  <dick@ximian.com>
21795
21796         * socket-io.c: Fixed compilation for gcc < 3.2.
21797
21798         Fixed compilation for machines that don't have AF_INET6 (thanks to
21799         Bernie Solomon <bernard@ugsolutions.com> for that part.)
21800
21801         Fixed compile warnings.
21802         
21803         Fixed formatting and line endings.
21804
21805 2003-07-14  Jerome Laban <jlaban@wanadoo.fr>
21806
21807         * socket-io.h:
21808         * socket-io.c: Added IPv6 support.
21809
21810 2003-07-13  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * class.c (mono_class_is_assignable_from): New function to implement
21813         the is_assignable_from logic. Used by mono_object_isinst, 
21814         Type::IsAssignableFrom () and the interpreter.
21815
21816         * class.c (mono_class_is_subclass_of): Make all classes a subclass of
21817         Object, even interfaces.
21818         
21819         * object.c (mono_object_isinst): Implement in terms of 
21820         is_assignable_from.
21821
21822         * icall.c (ves_icall_type_is_assignable_from): New icall.
21823
21824 2003-07-11  Zoltan Varga  <vargaz@freemail.hu>
21825
21826         * domain.c (foreach_domain): fix compiler warning.
21827
21828 2003-07-11  Dietmar Maurer  <dietmar@ximian.com>
21829
21830         * image.c (load_metadata_ptrs): use g_strndup because strndup is
21831         not available on all plattforms
21832
21833 2003-07-10  Zoltan Varga  <vargaz@freemail.hu>
21834
21835         * image.h image.c: Store the metadata version string in MonoImage.
21836         * icall.c: New icall to retrieve the image version.
21837         * reflection.c (create_dynamic_image): Fill in the image version field
21838         * reflection.c (build_compressed_metadata): Use the image version
21839         from the image structure.
21840
21841 2003-07-08  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21842
21843         * appdomain.c: modified comment.
21844         * gc.c: finalizer_thread can call finalizers even when finished == TRUE.
21845         That will be its last iteration when mono_gc_cleanup is called from
21846         mono_runtime_cleanup and before the domain is unloaded.
21847
21848         Fixes bug #45962.
21849
21850 2003-07-04  Dietmar Maurer  <dietmar@ximian.com>
21851
21852         * marshal.c (mono_marshal_get_native_wrapper): fixes for [out]
21853         attributes.
21854
21855 Thu Jul 3 17:22:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
21856
21857         * object.c, file-io.c, metadata.c, mono-endian.h, reflection.c,
21858         rawbuffer.c: more 64 bit and picky (or old) compiler fixes from
21859         Bernie Solomon <bernard@ugsolutions.com>.
21860
21861 Thu Jul 3 17:17:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
21862
21863         * object.c, object.h: provide mono_object_new_fast() for faster
21864         allocation in some special cases.
21865
21866 Wed Jul 2 13:21:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
21867
21868         * object.h, reflection.h, verify.c: fixes for some 64bit issues,
21869         mostly from a patch by Laramie Leavitt <lar@leavitt.us>.
21870
21871 Tue Jul 1 21:24:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
21872
21873         * threadpool.c: fix leaks.
21874
21875 2003-07-01  Dick Porter  <dick@ximian.com>
21876
21877         * threadpool.c (mono_async_invoke): Use mono_g_hash_table_remove when
21878         using MonoGHashTables.  Fixes threadpool bug posted to list.
21879
21880 Tue Jul 1 11:45:40 CEST 2003 Paolo Molaro <lupus@ximian.com>
21881
21882         * image.h, image.c: added support to load an assembly from a byte array.
21883         * Makefile.am, assembly.c, make-bundle.pl, sample-bundle: added 
21884         assembly bundle support.
21885
21886 2003-06-27  Dietmar Maurer  <dietmar@ximian.com>
21887
21888         * threadpool.c (mono_thread_pool_add): keep a reference to the
21889         AsyncResult to prevent GC
21890
21891 Thu Jun 26 12:13:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
21892
21893         * class.c: leak fix.
21894
21895 2003-06-25  Dick Porter  <dick@ximian.com>
21896
21897         * threadpool.c (mono_thread_pool_add): Don't set up a finaliser
21898         for the async object, the WaitHandle object will close the handle.
21899         Fixes bug 45321.
21900
21901 Wed Jun 25 18:12:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
21902
21903         * class.c: in mono_array_class_get (), lookup from the hash with the
21904         same type we insert: this works around a bug in
21905         mono_metadata_type_hash() with SZARRAY and fixes a leak reported by
21906         lluis. The real fix will have to wait for after the release.
21907
21908 Wed Jun 25 13:14:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
21909
21910         * icall.c: fix memory leak when getting type members.
21911
21912 Mon Jun 23 16:12:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21913
21914         * reflection.c: added more pubtoken special cases.
21915
21916 Mon Jun 23 15:29:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
21917
21918         * class.c: handle field offset correctly when class size
21919         is set (bug# 45182, partially from a patch by jlaban@wanadoo.Fr (Jerome Laban)).
21920
21921 2003-06-20  Martin Baulig  <martin@ximian.com>
21922
21923         * mono-debug-debugger.h (MonoDebuggerSymbolFile): Added `MonoImage
21924         *image' field.
21925
21926 2003-06-20  Martin Baulig  <martin@ximian.com>
21927
21928         * image.h, mono-debug-debugger.h: Fixed compiler warnings.
21929
21930 2003-06-20  Martin Baulig  <martin@ximian.com>
21931
21932         * mono-debug.h (MONO_DEBUG_VAR_ADDRESS_MODE_STACK): Removed.  We
21933         just distinguish between variables in registers and variables at
21934         an offset relative to a register.
21935
21936 2003-06-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
21937
21938         * icall.c: #ifdef out latest changes until mcs is fixed.
21939
21940 Thu Jun 19 11:03:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
21941
21942         * icall.c: return members in metadata order.
21943
21944 Wed Jun 18 15:26:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
21945
21946         * icall.c: avoid infinite loop in GetTimeZoneData.
21947
21948 Wed Jun 18 12:47:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
21949
21950         * icall.c: added Marshal.Prelink/All icalls.
21951
21952 Wed Jun 18 12:17:48 CEST 2003 Paolo Molaro <lupus@ximian.com>
21953
21954         * object.c, object.h: fix warnings and do some overflow checking
21955         when creating arrays.
21956
21957 2003-06-17  Dick Porter  <dick@ximian.com>
21958
21959         * file-io.h:
21960         * file-io.c: File attributes need to be tweaked slightly when
21961         passed from the managed to the w32 world.
21962
21963 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21964         * profiler.h profiler-private.h profiler.c: Rework last patch
21965         based on suggestion by Paolo.
21966         
21967 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
21968
21969         * profiler.h profiler-private.h profiler.c: Added infrastructure for 
21970         instruction level coverage data collection.
21971         * profiler.h profiler.c (: Added new callback function which can be
21972         used by the profiler to limit which functions should have coverage
21973         instrumentation.
21974         * profiler.c (mono_profiler_load): Call g_module_build_path to
21975         generate the file name of the profiler library.
21976
21977 Mon Jun 16 18:11:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
21978
21979         * profiler.c, profiler.h, profiler-private.h: added basic block 
21980         coverage profiling API.
21981
21982 2003-06-15  Zoltan Varga  <vargaz@freemail.hu>
21983
21984         * reflection.c (mono_reflection_create_runtime_class): Add support
21985         for events in dynamically generated code.
21986
21987         * gc.c: Start GCHandle indexes from 1, since 0 means the handle is
21988         not allocated.
21989
21990 Sat Jun 14 19:01:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
21991
21992         * icall.c: when getting timezone info, return reasonable values if we
21993         can't get the actual data.
21994
21995 2003-06-14  Dick Porter  <dick@ximian.com>
21996
21997         * threads.c (start_wrapper): Remove the reference to the thread
21998         object in the TLS data, so the thread object can be finalized.
21999         This won't be reached if the thread threw an uncaught exception,
22000         so those thread handles will stay referenced :-( (This is due to
22001         missing support for scanning thread-specific data in the Boehm GC
22002         - the io-layer keeps a GC-visible hash of pointers to TLS data.)
22003
22004 Sat Jun 14 13:16:17 CEST 2003 Paolo Molaro <lupus@ximian.com>
22005
22006         * reflection.c: ensure streams and tables are first allocated with
22007         ALLOC_ATOMIC (GC_realloc uses plain GC_malloc otherwise).
22008
22009 Sat Jun 14 13:13:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
22010
22011         * icall.c: fixed GetElementType for byrefs (bug# 44792).
22012
22013 2003-06-13  Zoltan Varga  <vargaz@freemail.hu>
22014
22015         * reflection.c (mono_reflection_create_runtime_class): Add support for
22016         properties to dynamically created classes.
22017         * reflection.c: Fix a few places where non-MonoObjects were inserted
22018         into the tokens hashtable.
22019
22020 Fri Jun 13 19:10:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22021
22022         * object.c: some support to handle out of memory exceptions.
22023
22024 2003-06-12  Dietmar Maurer  <dietmar@ximian.com>
22025
22026         * marshal.c (mono_marshal_get_native_wrapper): support reference
22027         return types
22028
22029 Wed Jun 11 18:32:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22030
22031         * object.h, object.c: more portability stuff from Bernie Solomon.
22032         Unexport mono_object_allocate(). Added mono_object_unbox ().
22033         Set exitcode when an unhandled exception is thrown.
22034
22035 2003-06-11  Dietmar Maurer  <dietmar@ximian.com>
22036
22037         * marshal.c (mono_marshal_get_native_wrapper): use custom
22038         marshaler for return types.
22039
22040 2003-06-10  Dick Porter  <dick@ximian.com>
22041
22042         * socket-io.c: Don't assume that one of struct ip_mreqn or struct
22043         ip_mreq is available
22044
22045 Tue Jun 10 17:35:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
22046
22047         * debug-mono-symfile.c, marshal.c, metadata.c, monitor.c,
22048         mono-debug-debugger.c, mono-debug.c, process.c: portability fixes
22049         by Bernie Solomon <bernard@ugsolutions.com>.
22050
22051 2003-06-10  Zoltan Varga  <vargaz@freemail.hu>
22052
22053         * gc.c (mono_gc_init): Avoid error message on shutdown when
22054         GC_DONT_GC=1 is used.
22055
22056         * icall.c (ves_icall_System_Reflection_Module_GetGuidInternal): 
22057         New icall to return the GUID of a module.
22058
22059 Mon Jun 9 19:33:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
22060
22061         * class.c: ensure instance size always includes the parent's size
22062         even whem class size is set explicitly (fixes bug#44294).
22063
22064 Thu Jun 5 19:51:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22065
22066         * profiler.h, profiler.c: made the simple profiler thread-safe,
22067         get more accurate timing info. Allow the loading of an
22068         externally-developed profiler module.
22069
22070 2003-06-05  Dietmar Maurer  <dietmar@ximian.com>
22071
22072         * marshal.c (mono_marshal_get_native_wrapper): improved
22073         class/byref arguments.
22074         (mono_marshal_get_native_wrapper): better string marshaling support.
22075
22076 Wed Jun 4 18:01:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
22077
22078         * class.c: ensure .pack and .size are handled correctly and
22079         simplified layout of static fields.
22080
22081 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
22082
22083         * appdomain.c
22084         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): fix for bug 42934
22085
22086         * loader.c (mono_lookup_pinvoke_call): look for modules in the
22087         current directory (fix bug 44008)
22088
22089 2003-06-03  Dietmar Maurer  <dietmar@ximian.com>
22090
22091         * marshal.c (mono_marshal_get_native_wrapper): started support for
22092         custom marshalers.
22093         (mono_delegate_to_ftnptr): consider marshalling specifications
22094
22095 Tue Jun 3 11:17:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
22096
22097         * reflection.c, reflection.h: emit custom marshal info.
22098
22099 2003-06-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22100
22101         * object.c: free the GError.
22102         * icall.c: added CloseEvent_internal.
22103         * threads.[ch]:
22104         (ves_icall_System_Threading_Events_CloseEvent_internal): new internal
22105         call.
22106
22107 2003-06-01  Zoltan Varga  <vargaz@freemail.hu>
22108
22109         * loader.c (mono_method_get_signature): Add support for dynamic
22110         assemblies.
22111
22112 Sat May 31 15:22:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
22113
22114         * reflection.c: fixed bug #43905.
22115
22116 Fri May 30 12:56:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
22117
22118         * class.c, domain.c, icall.c, metadata.h, object.h: support for
22119         handling TypedReference and ArgIterator.
22120         * loader.c, loader.h: added function to get signature at call site.
22121
22122 Thu May 29 11:34:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22123
22124         * metadata.c, metadata.h, private.h, tokentype.h, loader.c: make more 
22125         data readonly. Buglets and warning fixes. Some MethodSpec support.
22126
22127 Tue May 27 16:34:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
22128
22129         * class.h, class.c, object.c: remove relative numbering support.
22130
22131 2003-05-26  Miguel de Icaza  <miguel@ximian.com>
22132
22133         * marshal.c (mono_marshal_get_native_wrapper): For now, do not
22134         free the string, until we get a chance to fix Gtk#
22135
22136 2003-05-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22137
22138         * marshal.c: revert last patch.
22139
22140 Mon May 26 20:21:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
22141
22142         * icall.c: updates for new mono_class_vtable() not calling
22143         the type constructor anymore.
22144
22145 Mon May 26 12:10:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22146
22147         * object.h, object.c: separate vtable creation from type
22148         initialization. Make running the .cctor thread safe.
22149
22150 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
22151
22152         * marshal.c (mono_marshal_get_native_wrapper): free string return values.
22153
22154 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
22155
22156         * loader.c (mono_get_method): consider calling convention
22157
22158 2003-05-21  Zoltan Varga  <vargaz@freemail.hu>
22159
22160         * icall.c (ves_icall_System_Reflection_Module_GetGlobalType): New icall
22161         to return the invisible global type for a module.
22162
22163         * reflection.c (mono_image_build_metadata): Emit global fields too.
22164
22165 2003-05-20  Peter Williams  <peterw@ximian.com>
22166
22167         * loader.c (mono_lookup_internal_call): Add a few newlines.
22168
22169 2003-05-20  Zoltan Varga  <vargaz@freemail.hu>
22170
22171         * reflection.c (mono_reflection_lookup_dynamic_token): Intern dynamic
22172         literal strings.
22173
22174         * appdomain.c (set_domain_search_path): Recalculate search path when
22175         AppDomainSetup.PrivateBinPath changes.
22176
22177         * object.c (mono_class_compute_gc_descriptor): It turns out some
22178         parts of the class libs (like System.Thread) holds pointers to
22179         GC_MALLOC()-d memory in IntPtrs, which is wrong. The workaround is
22180         to treat native int a pointer type here.
22181         
22182 Tue May 20 17:18:16 CEST 2003 Paolo Molaro <lupus@ximian.com>
22183
22184         * appdomain.h, domain.c: add hashtable for jump target resolution.
22185
22186 2003-05-19  Zoltan Varga  <vargaz@freemail.hu>
22187
22188         * reflection.h reflection.c icall.c: Added new icalls 
22189         GetManifestResourceInfoInternal, GetModulesInternal and support
22190         infrastructure.
22191
22192 2003-05-16  Dick Porter  <dick@ximian.com>
22193
22194         * icall.c:
22195         * file-io.h:
22196         * file-io.c: Implement System.IO.MonoIO::GetTempPath
22197
22198 2003-05-14  Lluis Sanchez Gual  <lluis@ideary.com>
22199
22200         * object.c: mono_store_remote_field: little fix to previous patch.
22201
22202 Wed May 14 18:10:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
22203
22204         * class.c: add constructors to array classes.
22205         * icall.c: special case array construction for InternalInvoke (),
22206
22207 2003-05-14  Zoltan Varga  <vargaz@freemail.hu>
22208
22209         * class.h class.c reflection.c object.c: Added support for field
22210         defaults in dynamically generated classes.
22211
22212 Wed May 14 13:35:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
22213
22214         * reflection.c: properly encode charset for ddlimport.
22215
22216 Wed May 14 11:14:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
22217
22218         * threads.c: allow compiling without GC.
22219
22220 Tue May 13 16:41:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
22221
22222         * appdomain.h, object.c, object.h, threads.c, threads.h: added
22223         handling of thread static data.
22224
22225 Tue May 13 16:36:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
22226
22227         * reflection.h, reflection.c: added mono_custom_attrs_free ().
22228
22229 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
22230
22231         * class.c (mono_array_class_get): always set the serializable flags
22232         (mono_array_class_get): always set the SEALED attribute for array types
22233
22234 2003-05-12  Dietmar Maurer  <dietmar@ximian.com>
22235
22236         * loader.c (mono_lookup_pinvoke_call): consider Ansi/Unicode
22237         attributes (fix for bug 42021).
22238
22239 2003-05-12  Dick Porter  <dick@ximian.com>
22240
22241         * gc.c: Don't run finalizers when the finalizer thread is
22242         finishing up, because the default domain has already been
22243         destroyed.
22244
22245 2003-05-11  Miguel de Icaza  <miguel@ximian.com>
22246
22247         * string-icalls.c (ves_icall_System_String_ctor_chara_int_int): if
22248         value is null, we should throw an exception.   This is slightly
22249         different than the other conventions used for the constructor.
22250
22251 2003-05-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22252
22253         * socket-io.c: fixed windows build.
22254
22255 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22256
22257         * socket-io.c: patch by Jerome Laban that fixes bug #42393.
22258
22259 2003-05-10  Zoltan Varga  <vargaz@freemail.hu>
22260
22261         * object.c (mono_string_new_wrapper): Compatibility fix for MS
22262         compilers.
22263
22264 2003-05-09  Zoltan Varga  <vargaz@freemail.hu>
22265
22266         * class.c (mono_class_layout_fields): Add experimental GC aware
22267         auto layout facility. Requires class library changes to work correctly.
22268
22269         (mono_class_setup_vtable): Avoid overriding explicit interface
22270         method implementations. Fixes iface3.exe test.
22271
22272         * object.c (mono_class_compute_gc_descriptor): Type I can't hold an
22273         object reference.
22274         (mono_array_new_specific): Add MONO_ARCH_SAVE_REGS.
22275         (mono_string_new_wrapper): Add MONO_ARCH_SAVE_REGS.
22276
22277         * metadata.h: Add new type classification macro which determines
22278         whenever the type holds an object reference.
22279
22280 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
22281
22282         * marshal.c (mono_marshal_get_native_wrapper): cleanups
22283
22284 2003-05-07  Zoltan Varga  <vargaz@freemail.hu>
22285
22286         * gc.c (finalizer_thread): Work around a GC bug.
22287
22288 2003-05-07  Dietmar Maurer  <dietmar@ximian.com>
22289
22290         * marshal.c (emit_struct_conv): allow unions
22291
22292         * class.c (class_compute_field_layout): added patches from Jerome Laban <jlaban@wanadoo.fr>
22293
22294 2003-05-06  Dietmar Maurer  <dietmar@ximian.com>
22295
22296         * marshal.c (mono_marshal_get_native_wrapper): free strings after pinvoke
22297
22298 2003-05-06  Martin Baulig  <martin@ximian.com>
22299
22300         * mono-debug-debugger.h: #include <mono/io-layer/io-layer.h>.
22301
22302 2003-05-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22303
22304         * socket-io.c:
22305         (Select_internal): allow NULLs, don't create arrays if not needed.
22306         Coupled with Socket.cs changes.
22307
22308         * threadpool.c:
22309         (mono_thread_pool_add): use GC_MALLOC to allocate the ASyncCall and
22310         register a finalizer for it that will close the semaphore handle. This
22311         fixes the leak and make Lupus' test run with > 4080 loops.
22312
22313 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
22314
22315         * marshal.c (mono_marshal_get_struct_to_ptr): added fixes from
22316         Jerome Laban (bug #42287)
22317
22318 2003-05-02  Martin Baulig  <martin@ximian.com>
22319
22320         * debug-mono-symfile.h
22321         (MonoSymbolFile): Moved declaration into mono-debug.h.
22322         (MonoDebugMethodJitInfo): Likewise.
22323         (mono_debug_open_mono_symbol_file): Take the MonoDebugHandle as
22324         argument.
22325         (_mono_debug_address_from_il_offset): Take a
22326         MonoDebugMethodJitInfo instead of a MonoDebugMethodInfo.
22327
22328         * mono-debug.h
22329         (MonoDebugDomainData): New struct.
22330         (mono_debug_get_domain_data): New function.
22331         (mono_debug_add_method): Take an additional `MonoDomain *'
22332         argument.
22333         (mono_debug_source_location_from_address): Likewise.
22334         (mono_debug_il_offset_from_address): Likewise.
22335         (mono_debug_address_from_il_offset): Likewise.
22336
22337 Thu May 1 19:40:37 CEST 2003 Paolo Molaro <lupus@ximian.com>
22338
22339         * reflection.c: one more check for null type in custom attrs.
22340
22341 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22342
22343         * reflection.c: avoid warning (comparison is always false due to limited
22344         range of data type).
22345
22346 2003-05-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22347
22348         * icall.c: throw an exception in Type.GetField if the argument 'name'
22349         is NULL.
22350
22351 Wed Apr 30 10:53:09 CEST 2003 Paolo Molaro <lupus@ximian.com>
22352
22353         * reflection.c: fixed handling of enums in named arguments to custom
22354         attributes (bug #42123).
22355
22356 Tue Apr 29 19:15:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
22357
22358         * reflection.c: use the right array element type and handle
22359         a null for a Type argument, too.
22360
22361 Tue Apr 29 15:46:00 CEST 2003 Paolo Molaro <lupus@ximian.com>
22362
22363         * reflection.c: handle arrays as arguments to custom attributes.
22364
22365 Tue Apr 29 11:43:01 CEST 2003 Paolo Molaro <lupus@ximian.com>
22366
22367         * reflection.c: handle a string value in a custom attr
22368         ctor that takes an object.
22369
22370 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
22371
22372         * marshal.c (mono_mb_emit_restore_result): support MONO_TYPE_PTR
22373         (fix bug #42063)
22374
22375 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
22376
22377         * icall.c (ves_icall_Type_GetNestedType): Fixed warnings.
22378
22379 2003-04-27  Martin Baulig  <martin@ximian.com>
22380
22381         * mono-debug-debugger.h (MonoDebuggerEvent): Renamed
22382         MONO_DEBUGGER_EVENT_BREAKPOINT_TRAMPOLINE to
22383         MONO_DEBUGGER_EVENT_BREAKPOINT.
22384         (mono_breakpoint_trampoline_code): Removed.
22385         (mono_debugger_event_handler): The last argument is now a
22386         `guint32'.
22387         (mono_debugger_insert_breakpoint_full): Removed the
22388         `use_trampoline' argument.
22389         (mono_debugger_method_has_breakpoint): Likewise.
22390         (mono_debugger_trampoline_breakpoint_callback): Renamed to
22391         mono_debugger_breakpoint_callback(); take the method and
22392         breakpoint number as arguments.
22393
22394 Sat Apr 26 19:25:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
22395
22396         * metadata.c: fix off by one when loading parameters attributes.
22397
22398 2003-04-24  Martin Baulig  <martin@ximian.com>
22399
22400         * mono-debug-debugger.c (mono_debugger_io_layer): Put this back.
22401
22402 2003-04-24  Martin Baulig  <martin@ximian.com>
22403
22404         * mono-debug-debugger.c: Moved all code which interacts with the
22405         Mono Debugger here.
22406
22407         * debug-mono-symfile.c: This code now just deals with the symbol
22408         file itself, the debugger code is now in mono-debug-debugger.c.
22409
22410 2003-04-23  Martin Baulig  <martin@ximian.com>
22411
22412         * mono-debug.c (mono_debug_source_location_from_il_offset):
22413         New method; like mono_debug_source_location_from_address(), but
22414         takes an IL offset instead of a machine address.
22415
22416 2003-04-23  Martin Baulig  <martin@ximian.com>
22417
22418         * debug-mono-symfile.h (MonoDebugLineNumberEntry): Removed the
22419         `line' field; this is now computed by the debugger.
22420
22421 2003-04-23  Martin Baulig  <martin@ximian.com>
22422
22423         * mono-debug.[ch]: New files.  This is the new debugging interface.
22424
22425         * mono-debug-debugger.[ch]: New files.  Moved all code which
22426         interacts with the Mono Debugger here.
22427
22428 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
22429
22430         * domain.c (mono_init): initialize mono_defaults.monitor_class
22431
22432 2003-04-21  Miguel de Icaza  <miguel@ximian.com>
22433
22434         * reflection.c (method_encode_code): Add a spicy exception to help
22435         future compiler authors.
22436
22437 2003-04-21  Martin Baulig  <martin@ximian.com>
22438
22439         * icall.c
22440         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
22441         Make this work with relative pathnames; g_filename_to_uri() needs
22442         an absolute filename.
22443
22444 2003-04-18  Zoltan Varga  <vargaz@freemail.hu>
22445
22446         * icall.c: Track name changes in Object and ValueType.
22447
22448 2003-04-18  Dietmar Maurer  <dietmar@ximian.com>
22449
22450         * metadata.c (mono_type_stack_size): size should be a multiple of
22451         sizeof (gpointer)
22452
22453 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22454
22455         * gc.c:
22456         (internal_domain_finalize): moved into mono_domain_finalize. No need
22457         to create another thread because the finalizers will be run in the
22458         finalizer thread.
22459         
22460         (ves_icall_System_GC_WaitForPendingFinalizers): implemented.
22461         (finalizer_notify): if shutting down, wait 2 seconds for the finalizers
22462         to be run (MS does this too).
22463
22464 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
22465
22466         * object.c (mono_class_compute_gc_descriptor): Update comment.
22467
22468         * loader.h marshal.h marshal.c: Added synchronized method wrappers.
22469
22470         * image.h: Add synchronized wrapper cache.
22471
22472         * image.c (do_mono_image_open): Initialize cache.
22473
22474         * reflection.c (create_dynamic_mono_image): Initialize cache.
22475
22476 2003-04-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22477
22478         * icall.c: patch by Jerome Laban <jlaban@wanadoo.fr> that fixes
22479         ves_icall_System_Buffer_ByteLengthInternal.
22480
22481 Tue Apr 15 13:56:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
22482
22483         * reflection.c: setup klass->nested_in earlier. Allow
22484         a dash in the assembly name.
22485
22486 2003-04-15  Dietmar Maurer  <dietmar@ximian.com>
22487
22488         * metadata.c (mono_type_to_unmanaged): dont access
22489         type->data.klass for MONO_TYPE_OBJECT
22490         (mono_type_to_unmanaged): consider System.Delegate class
22491
22492 Tue Apr 15 11:16:05 CEST 2003 Paolo Molaro <lupus@ximian.com>
22493
22494         * class.c: just setup supertypes in the proper place instead of
22495         initializing the full element class for arrays.
22496
22497 Tue Apr 15 11:03:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
22498
22499         * class.c: ensure the element class of arrays is initialized.
22500         Setup the supertype info for array classes, too.
22501
22502 2003-04-14  Miguel de Icaza  <miguel@ximian.com>
22503
22504         * icall.c (ves_icall_Type_GetNestedType): Add new internal call.
22505
22506 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22507
22508         * Makefile.am: re-added -m option when running cygpath. This way,
22509         MONO_ASSEMBLIES and MONO_CFG_DIR will contain '/' as directory
22510         separator.
22511         * mono-config.c: same codepath for locating mono config file for WIN32
22512         and the rest.
22513         * assembly.c: if mono_assembly_setrootdir is called, don't override
22514         the value set.
22515
22516 2003-04-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22517
22518         * Makefile.am: patch by Urs Muff <umuff@quark.com> that fixes
22519         MONO_ASSEMBLIES variable.
22520
22521 Fri Apr 11 12:44:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
22522
22523         * icall.c: added Assembly::GetNamespaces() icall.
22524
22525 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22526
22527         * reflection.c: fix from Jaak <jaak@zd.com.pl>.
22528
22529 2003-04-10  Lluis Sanchez Gual  <lluis@ideary.com>
22530
22531         * appdomain.c,appdomain.h,icall.c: Added internal method that returns the process guid
22532         * object.c: fixed bug in the construction of vtable for proxies
22533
22534 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
22535
22536         * object.c (mono_array_new): Mark mono_array_new as an icall.
22537
22538 2003-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22539
22540         * class.c: fixed test for public method when overriding interfaces.
22541         Closes bug #40970.
22542
22543 Wed Apr 9 15:19:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
22544
22545         * appdomain.h, domain.c: added mono_domain_foreach() to
22546         be able to access the currently loaded appdomains.
22547         * object.c: make string interning work across sppdomains.
22548         Mark some functions for use as icalls.
22549
22550 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
22551
22552         * class.c reflection.c: Fix memory leaks reported by ccmalloc.
22553
22554         * reflection.h reflection.c: Allocate long living data using 
22555         GC_MALLOC_ATOMIC so the collector does not need to scan it.
22556
22557         * reflection.c: Double the allocation size in streams instead of
22558         increasing it, to prevent unneccesary copying on large assemblies.
22559         
22560         * reflection.c (mono_reflection_create_runtime_class): Avoid vtable
22561         creation if the assembly does not have the Run flag set.
22562
22563 Tue Apr 8 11:19:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
22564
22565         * class.h: avoid the C++ keywords in header files (Jerome Laban
22566         spotted and fixed this).
22567
22568 2003-04-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22569
22570         * object.c:
22571         (mono_unhandled_exception): fill in the arguments for the
22572         UnhandledException event. Only trigger that event for the default
22573         domain (as MS does).
22574
22575 2003-04-04  Zoltan Varga  <vargaz@freemail.hu>
22576
22577         * object.c: Improve typed allocation stuff based on suggestions from
22578         Paolo. Also turn it on if the GC library supports it.
22579
22580 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
22581
22582         * object.c object.h class.h: Added experimental typed allocation
22583         facility using the interfaces in gc_gcj.h.
22584
22585         * os/gc_wrapper.h: Added new include files.
22586         
22587 2003-04-03  Martin Baulig  <martin@ximian.com>
22588
22589         All the following changes are conditional to `WITH_INCLUDED_LIBGC'
22590         which is not yet enabled by default.
22591
22592         * gc.c (mono_gc_init): Set the gc_thread_vtable to our thread
22593         functions.
22594         (mono_gc_lock, mono_gc_unlock): New static functions.
22595
22596         * threads.c (mono_gc_stop_world, mono_gc_start_world): New public
22597         functions; stop/start the world for the garbage collector.  This
22598         is using the windows API; we need to complete the SuspendThread()/
22599         ResumeThread() implementation in the io-layer to make this work on Unix.
22600         (mono_gc_push_all_stacks): New public function; tells the garbage
22601         collector about the stack pointers from all managed threads.
22602
22603 2003-04-03  Martin Baulig  <martin@ximian.com>
22604
22605         * object.h (MonoThread): Added `gpointer stack_ptr'.
22606
22607         * threads.c (start_wrapper): Save the stack pointer in `stack_ptr'.
22608
22609 2003-04-03  Martin Baulig  <martin@ximian.com>
22610
22611         * Makefile.am: It's called `cygpath -w', not `cygpath -m'.
22612
22613 2003-04-03  Zoltan Varga  <vargaz@freemail.hu>
22614
22615         * reflection.c (typebuilder_setup_fields): Initialize field.first and
22616         field.last.
22617
22618 2003-04-02  Miguel de Icaza  <miguel@ximian.com>
22619
22620         * loader.c (mono_lookup_internal_call): Report the corlib that is
22621         out of sync.
22622
22623 2003-03-05  Aleksey Demakov <avd@openlinksw.com>
22624
22625         * icall.c (ves_icall_type_GetTypeCode): fixed check for
22626         System.DBNull (it's class not valuetype).
22627
22628 Wed Apr 2 18:37:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
22629
22630         * reflection.c: set table_idx in MonoReflectionArrayMethod object even 
22631         if the array method was already assigned a token (fixes bug#40646).
22632
22633 2003-04-02  Zoltan Varga  <vargaz@freemail.hu>
22634
22635         * reflection.c (mono_reflection_get_type): Attempt type resolve even
22636         if no assembly is given.
22637
22638 2003-04-01  Miguel de Icaza  <miguel@ximian.com>
22639
22640         * metadata.h: Added the new tables.
22641
22642         * row-indexes.h: Added definitions for new tables.
22643
22644         * metadata.c: Add schemas for new tables, and add support for
22645         computing the sizes of them.
22646
22647         * class.c: Update for handling the new type cases.
22648
22649 2003-04-01  Dietmar Maurer  <dietmar@ximian.com>
22650
22651         * metadata.h (MONO_TYPE_IS_VOID): new macro
22652
22653 2003-03-31  Martin Baulig  <martin@ximian.com>
22654
22655         * threads.h (MonoThreadCallbacks): Added `thread_created'.
22656
22657         * threads.c (mono_thread_new_init): Call `thread_created' in the
22658         mono_thread_callbacks.
22659
22660 2003-03-31  Lluis Sanchez Gual <lluis@ideary.com>
22661
22662         * loader.h: added marshalbyrefobject_class to mono_defaults
22663         * domain.c: added initialization of mono_defaults.marshalbyrefobject_class 
22664         * icall.c: ves_icall_InternalExecute: fixed bug in field setter and in the
22665           generation of output parameters.
22666           ves_icall_Remoting_RealProxy_GetTransparentProxy: added support for interfaces.
22667         * marshal.c: mono_remoting_wrapper(): avoided call through proxy when the type is
22668           contextbound and the target object belongs to the context of the caller.
22669         * object.h: added context and unwrapped_server variables in MonoRealProxy.
22670         * object.c: Implemented support for interfaces and abstract classes
22671           in mono_class_proxy_vtable. Fixed several methods to avoid unneeded calls through
22672           proxy. Fixed problem when dealing with output parameters in mono_runtime_invoke_array.
22673
22674 2003-03-30  Zoltan Varga  <vargaz@freemail.hu>
22675
22676         * class.h class.c (mono_class_is_subclass_of): New function.
22677         
22678         * icall.c (ves_icall_System_Array_FastCopy): Added optimized copy
22679         routines for most common case (calls from ArrayList::ToArray).
22680
22681         * icall.c (ves_icall_System_Environment_Exit): Call profiler shutdown 
22682         routine so programs which call Environment::Exit() can be profiled.
22683
22684         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle): 
22685         Added MONO_ARCH_SAVE_REGS.
22686
22687         * icall.c (ves_icall_type_is_subtype_of): Use new function.
22688
22689 2003-03-29  Miguel de Icaza  <miguel@ximian.com>
22690
22691         * blob.h: Add a couple of new MonoType types definitions.
22692
22693         * tabledefs.h: Add a couple of new call convs.
22694
22695 2003-03-27  Zoltan Varga  <vargaz@freemail.h>
22696
22697         * reflection.h (MonoReflectionDynamicAssembly): track changes in
22698         the layout of the class.
22699
22700         * reflection.c (alloc_table): double the size on overflow to avoid
22701         unnecessary copying.
22702
22703         * reflection.h reflection.c: If AssemblyBuilderAccess is Run, then
22704         avoid filling out metadata tables and blobs. Also set mb->ilgen to
22705         null so it can be garbage collected.
22706         
22707 2003-03-27  Zoltan Varga  <vargaz@freemail.hu>
22708
22709         * reflection.c (mono_reflection_get_type): Return the resolved type
22710         only if it is in the assembly we searched.
22711
22712         * reflection.c (ensure_runtime_vtable): Initialize method slots.
22713
22714         * class.c (mono_class_setup_vtable): Set the slot of the overriding
22715         method.
22716
22717 2003-03-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22718
22719         * appdomain.c:
22720         (set_domain_search_path): allow 'file://blah'. It's an invalid URI,
22721         the right one is 'file:///blah', but MS allows it.
22722         * assembly.c:
22723         (mono_assembly_open): allow 'file://blah'
22724
22725         Fixes bug #40306. Thanks to Mitko Iliev (imitko@openlinksw.co.uk).
22726
22727 2003-03-26  Aleksey Demakov <avd@openlinksw.com>
22728
22729         * socket-io.c: fixes bug #40310.
22730
22731 2003-03-25  Zoltan Varga  <vargaz@freemail.hu>
22732
22733         * reflection.c (mono_reflection_parse_type): handle deeply nested
22734         types correctly.
22735
22736         * reflection.c (mono_image_create_token): Use unique token values
22737         since they will be put into a hash table.
22738
22739         * class.c (mono_class_setup_vtable): If a method occurs in more than
22740         one place in the vtable, and it gets overriden, then change the
22741         other occurances too.
22742
22743         * marshal.c (mono_marshal_get_managed_wrapper): Added support for
22744         object as return type.
22745
22746 2003-03-22  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22747
22748         * icall.c: Deleted "ToString" implementation for double and float
22749         because they are full implemented in managed code.
22750
22751 Wed Mar 19 18:05:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22752
22753         * reflection.c, reflection.h: implemented and exported functions
22754         to retrieve info about custom attributes.
22755
22756 2003-03-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22757
22758         * appdomain.c: moved Uri handling to assembly.c
22759         * assembly.c: use g_filename_from_uri (). This makes assembly.LoadFrom
22760         work when using a file Uri in *nix and windows.
22761
22762         * icall.c: fixed Assembly.CodeBase to return a valid Uri. The same for
22763         GetReferencedAssemblies.
22764
22765 2003-03-18  Dick Porter  <dick@ximian.com>
22766
22767         * icall.c: Rename a couple of internal calls
22768
22769         * threads.c: Set the thread state to Stopped when a thread exits.
22770         Fixes bug 39377.
22771
22772 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>
22773
22774         * icall.c (ves_icall_System_Reflection_FieldInfo_internal_from_handle):
22775         New icall.
22776
22777         * object.c (mono_class_vtable): fix warning.
22778
22779 2003-03-17  Zoltan Varga  <vargaz@freemail.hu>  
22780
22781         * icall.c (ves_icall_type_is_subtype_of): Avoid vtable creation.
22782
22783         * reflection.c (mono_blob_entry_hash): Avoid reading uninitialized
22784         memory.
22785         (method_encode_clauses): Create exception info structures in the right
22786         order.
22787         (mono_reflection_setup_internal_class): Initialize supertypes field.
22788
22789         * class.c object.c: Handle interfaces which implement other interfaces 
22790         correctly.
22791
22792         * class.h class.c: Move the supertypes array initialization code into 
22793         a separate function so it can be used for dynamic types too. Also call
22794         it earlier, in mono_class_init(), since it can be used before the
22795         type is initialized.
22796
22797 2003-03-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22798
22799         * Makefile.am:
22800         * assembly.c:
22801         * icall.c: make MONO_ASSEMBLIES and MONO_CFG_DIR work on windows.
22802
22803         * appdomain.c:
22804         * appdomain.h:
22805         * marshal.c:
22806         * object.c: remove warnings.
22807
22808 2003-03-13  Martin Baulig  <martin@ximian.com>
22809
22810         * debug-mono-symfile.h (MonoSymbolFileLexicalBlockEntry): New type.
22811         (MonoDebugLexicalBlockEntry): New types.
22812
22813         * debug-mono-symfile.c
22814         (_mono_debug_address_from_il_offset): Moved here from ../jit/debug.c.
22815
22816 2003-03-13  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22817
22818         * process.c: ret can be any non-zero value accroding to MS doc.
22819
22820 2003-03-07  Miguel de Icaza  <miguel@ximian.com>
22821
22822         * class.c (mono_marshal_load_type_info): Fix buglet:  Noticed when
22823         fixing a warning for a miss-used prototype, would have cause
22824         random memory corruption.
22825
22826 2003-03-07  Martin Baulig  <martin@ximian.com>
22827
22828         * marshal.c (mono_marshal_free_array): That "TESTFREE %p" was
22829         getting really annoying ....
22830
22831 2003-03-07  Zoltan Varga  <vargaz@freemail.hu>
22832
22833         * reflection.c (fixup_method): added support for array methods.
22834
22835 Tue Mar 4 18:03:27 CET 2003 Paolo Molaro <lupus@ximian.com>
22836
22837         * socket-io.c:  handle case when AF_INET6 and AF_IPX are not defined
22838         (pointed out by Michael Adams).
22839
22840 2003-03-04  Dick Porter  <dick@ximian.com>
22841
22842         * icall.c: Temporarily reverted the Double and Single ToString()
22843         change, because it broke nunit.
22844
22845 Tue Mar 4 12:40:58 CET 2003 Paolo Molaro <lupus@ximian.com>
22846
22847         * object.h, threads.h: make include files compatible with C++
22848         (patch by Jerome Laban <jlaban@wanadoo.fr>).
22849
22850 2003-03-04  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
22851
22852         * icall.c: Erased ToString helper functions for Double and Single.
22853         Now, that implementations ar all in managed code (Double and Single
22854         Formatters).
22855
22856 2003-03-03  Lluis Sanchez Gual  <lluis@ideary.com>
22857
22858         * appdomain.c: Added method for initializing the default context of
22859         a domain. Added internal call for getting the default context.
22860         * appdomain.h: Added context variable in MonoDomain struct.
22861         * domain.c: mono_domain_set also sets the default context of the domain
22862         * icall.c: Mapped internal method InternalGetDefaultContext.
22863         * object.c: mono_object_get_virtual_method returns always a remoting
22864         wrapper if the object is a transparent proxy.
22865         mono_runtime_invoke_array: when creating an object by calling the
22866         constructor, if the created object is a proxy, then the constructor should
22867         be called using the a remoting wrapper.
22868
22869 2003-03-03  Dick Porter  <dick@ximian.com>
22870
22871         * socket-io.c (create_sockaddr_from_object): Rename sockaddr_un
22872         variable so it compiles on solaris.  Problem spotted by
22873         Christopher Taylor <ct@cs.clemson.edu>
22874
22875 2003-03-01  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22876
22877         * appdomain.c:
22878         (get_info_from_assembly_name): don't leak value.
22879
22880         * icall.c:
22881         (ves_icall_System_Reflection_Assembly_GetFilesInternal): initialize
22882         result.
22883
22884 Sat Mar 1 15:32:56 CET 2003 Paolo Molaro <lupus@ximian.com>
22885
22886         * assembly.c: export mono_image_load_references ().
22887         * class.c: handle function pointers. mono_class_from_name() now
22888         supports nested type names directly.
22889
22890 2003-02-28  Zoltan Varga  <vargaz@freemail.hu>
22891
22892         * reflection.h reflection.c: Encode already created dynamic methods 
22893         and fields correctly as a DEF instead of a REF.
22894
22895         * reflection.c: Get rid of the force_ref argument to 
22896         mono_image_typedef_or_ref since it was wrong in the first place.
22897
22898         * string-icalls.c: add error checking to string constructors according
22899         to the MSDN docs.
22900
22901         * reflection.c: Emit types in the order their TypeBuilders were 
22902         created. Previously, a new table index was assigned to each type before
22903         the tables were emitted. This was wrong because the signature blob
22904         might already refer to a type by its original table index.
22905
22906 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>
22907
22908         * metadata.c (mono_metadata_nesting_typedef): fix bug in previous
22909         change.
22910         
22911 2003-02-27  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22912
22913         * Makefile.am: make assemblies dir have \ instead of / on windows.
22914
22915 2003-02-27  Zoltan Varga  <vargaz@freemail.hu>  
22916
22917         * metadata.c metadata.h (mono_metadata_nesting_typedef): changed to
22918         iterate over the NESTEDCLASS table using a linear search since the
22919         table is not guaranteed to be sorted by the secondary key.
22920
22921         * class.c (mono_class_create_from_typedef): fixed up call to
22922         mono_metadata_nesting_typedef.
22923         
22924 2003-02-27  Dietmar Maurer  <dietmar@ximian.com>
22925
22926         * marshal.c (mono_string_to_byvalstr): clear the memory as
22927         suggested by Jerome Laban <jlaban@wanadoo.fr>
22928
22929 2003-02-26  Dick Porter  <dick@ximian.com>
22930
22931         * process.c: Cope with padding in .rsrc blocks
22932
22933 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22934
22935         * metadata.h: reverted the filter_len change, it breaks reflection
22936         
22937 2003-02-26  Dietmar Maurer  <dietmar@ximian.com>
22938
22939         * metadata.h: added a new field to store the filter_len
22940         
22941
22942 Tue Feb 25 10:56:16 CET 2003 Paolo Molaro <lupus@ximian.com>
22943
22944         * reflection.c: handle custom attributes for types and members
22945         created with Reflection.Emit (bug#38422).
22946
22947 2003-02-22  Zoltan Varga  <vargaz@freemail.hu>
22948
22949         * reflection.c: define RTSpecialName automatically for constructors for
22950         compatibility with MS.NET.
22951
22952         * reflection.c (mono_reflection_create_runtime_class): initialize
22953         nested_in field of dynamically created classes.
22954
22955 2003-02-22  Martin Baulig  <martin@ximian.com>
22956
22957         * debug-mono-symfile.h: Incremented version number.
22958
22959 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22960
22961         * object.h icall.c process.c: fix warnings.
22962
22963 2003-02-21  Zoltan Varga  <vargaz@freemail.hu>
22964
22965         * appdomain.h appdomain.c:
22966         (mono_domain_try_type_resolve): split the 
22967         name_or_tb argument into a name and a tb argument.
22968         (mono_domain_has_type_resolve): new function to check whenever the
22969         application has registered a TypeResolve event handler.
22970         
22971         * icall.c reflection.h reflection.c: move the type resolve logic into
22972         mono_reflection_get_type () so it will be invoked when 
22973         Assembly::GetType () is called.
22974
22975         * reflection.c:
22976         (mono_reflection_get_type): renamed to get_type_internal.
22977         (mono_reflection_get_type): fixed type name generation so it works 
22978         for nested types too.
22979         (mono_reflection_get_type): call has_type_resolve () to avoid the 
22980         costly type name generation if there is no resolve event handler.
22981
22982 Fri Feb 21 11:36:57 CET 2003 Paolo Molaro <lupus@ximian.com>
22983
22984         * class.c, image.c: load exported types from file references.
22985
22986 2003-02-19  Lluis Sanchez Gual  <lluis@ideary.com>
22987
22988         * appdomain.h: Added in MonoDomain a couple of MonoMethod* variables
22989           used to cache the managed methods used to create proxies and make 
22990           remote invocation of methods.
22991         * class.h: Added in MonoVTable a flag to indicate that a class needs 
22992           to be remotely created.
22993         * object.c: Modified the method mono_class_vtable(). It now initializes 
22994           the remote flag of the vtable. Modified mono_object_new_specific(), 
22995           so now it checks the remote flag.
22996         * icall.c: Added a couple of internal methods, one for enabling instance 
22997           creation interception for a type, and one for creating objects bypassing
22998           the remote check.
22999
23000 2003-02-18  Martin Baulig  <martin@ximian.com>
23001
23002         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethodToken):
23003         New interncall to get a method's metadata token.
23004
23005         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethodToken"):
23006         New interncall for the debugger.
23007
23008 2003-02-18  Dietmar Maurer  <dietmar@ximian.com>
23009
23010         * class.c (mono_class_setup_vtable): allocate supertype array
23011
23012 2003-02-18  Martin Baulig  <martin@ximian.com>
23013
23014         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Added `has_this'.
23015
23016 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23017
23018         * reflection.c:
23019         (assembly_name_to_aname): jump over unknown properties (i've found
23020         something like: 'type, assembly, version=xxx, custom=null, public...',
23021         so now will ignore custom=null and still get the rest of the values).
23022
23023 2003-02-17  Dick Porter  <dick@ximian.com>
23024
23025         * threads.c: Have Thread.Start() wait for a semaphore to signal
23026         that the thread has set up all its local data.  This fixes bug
23027         34323, where Abort() raced the new thread's TLS data.
23028
23029         Also removes the handle_store() call from start_wrapper, because
23030         threads are now always created suspended and there is no longer a
23031         race between the parent and child threads to store the info.
23032
23033 Mon Feb 17 13:13:31 CET 2003 Paolo Molaro <lupus@ximian.com>
23034
23035         * image.c: explain the #- heap issue in a message, hopefully
23036         avoiding FAQs on mono-list.
23037
23038 2003-02-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23039
23040         * icall.c:
23041         (GetEntryAssembly): if the domain has not invoked
23042         AppDomain.ExecuteAssembly yet, return the assembly of the default
23043         AppDomain.
23044
23045 2003-02-16  Zoltan Varga  <vargaz@freemail.hu>
23046
23047         * class.c (mono_ldtoken): make it work in dynamic assemblies.
23048
23049 Sun Feb 16 13:10:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23050
23051         * metadata.c, reflection.c: simple speedup to type hash
23052         and equals code.
23053
23054 Sat Feb 15 15:15:03 CET 2003 Paolo Molaro <lupus@ximian.com>
23055
23056         * image.c, image.h, class.c, assembly.c: move module loading
23057         to MonoImage. When loading metadata, consider alignemnet from
23058         the start of metadata, not from the metadata address in memory.
23059
23060 2003-02-13  Zoltan Varga  <vargaz@freemail.hu>
23061
23062         * reflection.c (mono_reflection_get_custom_attrs): Added support for 
23063         AssemblyBuilder objects. Factored out custom attribute creation into
23064         a separate function.
23065         (create_custom_attr): new function to create custom attributes.
23066
23067 2003-02-12  Miguel de Icaza  <miguel@ximian.com>
23068
23069         * Makefile.am: Got tired of typing the full pathname to pedump.
23070         Until there is another option, am installing this.
23071
23072 2003-02-12  Dietmar Maurer  <dietmar@ximian.com>
23073
23074         * class.c (class_compute_field_layout): always set field->parent 
23075         (mono_ldtoken): use mono_defaults.fieldhandle_class;
23076
23077 2003-02-11  Dick Porter  <dick@ximian.com>
23078
23079         * threads-types.h:
23080         * monitor.c: Rewrote Monitor, making lock much faster and
23081         Pulse/Wait work as specified.  Also uses much fewer handles, and only
23082         creates them as needed.
23083
23084         * exception.c: Added SynchronizationLockException
23085
23086         * threads.c: Deleted old Monitor implementation.  The new one is
23087         in a new file.
23088
23089 Mon Feb 10 17:54:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23090
23091         * class.c: handled TypedReference type code. Set the correct size for
23092         class data. Setup interface_offsets for interface classes, too.
23093
23094 2003-02-09  Martin Baulig  <martin@ximian.com>
23095
23096         * debug-mono-symfile.h: Reflect latest symbol writer changes.
23097
23098 Sun Feb 9 18:37:01 CET 2003 Paolo Molaro <lupus@ximian.com>
23099
23100         * loader.c: implemented MEMBERREF_PARENT_TYPEDEF.
23101         * metadata.c, reflection.c: missing MONO_TYPE_TYPEDBYREF handling.
23102         * object.c: fixed mono_object_get_virtual_method () for interfaces.
23103         * verify.c: check for code that runs after the end of the method.
23104
23105 2003-02-08  Pedro Mart?nez Juli?  <yoros@wanadoo.es>
23106
23107         * icall.c: Added "System.Math::Floor", "System.Math::Round" and
23108         "System.Math::Round2".
23109         * sysmath.h: Added Floor, Round and Round2 definitions.
23110         * sysmath.c: Modified certain functions that were not 100% compliant
23111         with MS.NET (math precision) and added the implementation of Floor,
23112         Round and Round2.
23113
23114 2003-02-07  Martin Baulig  <martin@ximian.com>
23115
23116         * debug-mono-symfile.c (mono_debug_symfile_add_method): Ignore interncalls.
23117
23118 2003-02-07  Martin Baulig  <martin@ximian.com>
23119
23120         * debug-mono-symfile.c: Reflected latest symwriter changes.
23121         (mono_debug_create_mono_symbol_file): Removed.
23122         (mono_debug_open_mono_symbol_file): Take an argument which
23123         specifies whether to create a dynamic symbol file.
23124
23125 2003-02-07  Dietmar Maurer  <dietmar@ximian.com>
23126
23127         * class.c (mono_class_from_mono_type): added MONO_TYPE_TYPEDBYREF
23128
23129 2003-02-05  Martin Baulig  <martin@ximian.com>
23130
23131         * reflection.c (mono_image_build_metadata): Make this public,
23132         protect it against being called multiple times, don't create
23133         resources and don't build the compressed metadata here.
23134         (mono_image_create_pefile): Do this here.
23135
23136         * icall.c
23137         ("System.Reflection.Emit.AssemblyBuilder::build_metadata"): Added.
23138
23139 2003-02-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23140
23141         * socket-io.c: fixed bug #36322.
23142
23143 2003-02-06  Piers Haken <piersh@friskit.com>
23144
23145         * appdomain.[ch]:
23146         * class.h:
23147         * debug-mono-symfile.c:
23148         * icall.c:
23149         * loader.c:
23150         * mono-config.c:
23151         * monosn.c:
23152         * reflection.c:
23153         * socket-io.c: warning cleanups
23154
23155 2003-02-06  Dietmar Maurer  <dietmar@ximian.com>
23156
23157         * marshal.c (mono_marshal_get_remoting_invoke_with_check): new
23158         function. works like remoting invoke, but does a check for the Proxy first.
23159
23160 2003-02-05  Miguel de Icaza  <miguel@ximian.com>
23161
23162         * appdomain.c (ves_icall_System_AppDomain_InternalUnload): Make it compiler.
23163
23164 2003-02-05  Dietmar Maurer  <dietmar@ximian.com>
23165
23166         * marshal.c (mono_marshal_get_native_wrapper): only allocate an
23167         array of pointers.
23168         (mono_marshal_get_ldfld_wrapper): only generate necessary ldfld wrappers.
23169         (mono_marshal_get_stfld_wrapper): only generate necessary stfld wrappers.
23170
23171         * object.c (mono_store_remote_field_new): used by the new jit
23172         instead of mono_store_remote_field
23173         (mono_load_remote_field_new): used by the new jit
23174         instead of mono_load_remote_field
23175
23176 2003-02-05  Patrik Torstensson
23177
23178         * appdomain.c: changed unload to take the domain id instead
23179         of domain
23180         
23181         * icall.c: changed icall for AppDomain.Unload to AppDomain.InternalUnload
23182
23183
23184 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23185
23186         * appdomain.c: don't look for assemblies in ApplicationBase if
23187         PrivateBinPathProbe is set.
23188
23189 2003-02-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23190
23191         * object.c: make the first argument in main_args contain the absolute
23192         path to the assembly. Fixes bug #37511.
23193
23194 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23195
23196         * icall.c: get correct UTC offset for countries not using daylight
23197         time saving. Fixes bug #30030.
23198
23199 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23200
23201         * socket-io.c: support AF_UNIX and use the same layout as MS (bytes 0
23202         and 1 are the family).
23203
23204 2003-02-04  Dietmar Maurer  <dietmar@ximian.com>
23205
23206         * icall.c (ves_icall_InternalExecute): removed wrong assertion
23207
23208         * marshal.c (mono_marshal_get_remoting_invoke): generate valid IL
23209
23210 2003-02-04  Zoltan Varga  <vargaz@freemail.hu>
23211
23212         * reflection.c: added support for SignatureHelper tokens, which is
23213         needed by the Calli opcode.
23214
23215         * reflection.h: track changes to SignatureHelper class.
23216
23217         * metadata.c (mono_metadata_parse_signature): handle dynamic tokens.
23218
23219 2003-02-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23220
23221         * appdomain.c: fixed loading assemblies from PrivateBinPath.
23222
23223 2003-02-03  Patrik Torstensson
23224         * appdomain.[c|h], domain.c : 
23225          - Added support for getting a domain via domain id
23226          - Support for setting and getting domain from System.AppDomain 
23227            (used in cross appdomain channel)
23228          - Added support for get/set for a MonoAppContext on a thread 
23229            (Context class in System.Runtime.Remoting.Contexts),
23230          - Removed hack in Get/SetData and ExecuteAssembly.
23231         
23232         * icall.c : renamed GetTransparantProxy to InternalGetTransparantProxy to allow
23233         the managed world to get control when a proxy is created.
23234
23235         * icall.c (ves_icall_InternalExecute) : bug fix, must return empty array
23236         
23237 2003-02-03  Miguel de Icaza  <miguel@ximian.com>
23238
23239         * icall.c
23240         (ves_icall_System_Reflection_Assembly_GetReferencedAssemblies):
23241         Populate the codebase field as well.
23242
23243 2003-02-02  Martin Baulig  <martin@ximian.com>
23244
23245         * debug-mono-symfile.c
23246         (MonoSymbolFileMethodAddress): Added `wrapper_address' field.
23247         (mono_debug_symfile_add_method): Allow interncalls.
23248
23249 2003-01-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23250
23251         * icall.c: throw parse exception if strtod fails or the string is empty.
23252
23253 Fri Jan 31 16:09:48 CET 2003 Paolo Molaro <lupus@ximian.com>
23254
23255         * marshal.c: handle object type separately from defined
23256         class types.
23257
23258 Fri Jan 31 16:01:20 CET 2003 Paolo Molaro <lupus@ximian.com>
23259
23260         * marshal.c: handle NATIVE_LPSTR for strings when it's
23261         explicitly specified.
23262
23263 Fri Jan 31 11:51:43 CET 2003 Paolo Molaro <lupus@ximian.com>
23264
23265         * reflection.c, reflection.h, icall.c: setup the reflection
23266         handle cache for ModuleBuilders and AssemblyBuilders.
23267
23268 2003-01-30  Dietmar Maurer  <dietmar@ximian.com>
23269
23270         * reflection.c (reflection_methodbuilder_to_mono_method): set
23271         pinvoke flag
23272
23273 2003-01-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23274
23275         * icall.c: implemented ves_icall_MonoMethod_get_base_definition.
23276
23277 2003-01-29  Dick Porter  <dick@ximian.com>
23278
23279         * threads.c: No need for the fake_thread kludge now that Thread
23280         doesn't run a class constructor
23281         
23282 2003-01-29  Dick Porter  <dick@ximian.com>
23283
23284         * threads.c: Use g_direct_hash instead of the rather bogus
23285         g_int_hash
23286
23287 2003-01-29  Dietmar Maurer  <dietmar@ximian.com>
23288
23289         * marshal.c (mono_marshal_get_native_wrapper): add check for null
23290         (fix pinvoke12.exe)
23291         (mono_marshal_get_struct_to_ptr): generate valid IL code
23292         (mono_marshal_get_ptr_to_struct): generate valid IL code
23293         (*): correctly set sig->pinvoke, we need to memdup the signature
23294         to do that
23295
23296 Tue Jan 28 22:57:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23297
23298         * marshal.c, marshal.h: use larger integers in mono_mb_emit_add_to_local()
23299         to avoid overflows (bug spotted and fixed by Jerome Laban <jlaban@wanadoo.fr>).
23300
23301 Tue Jan 28 18:55:19 CET 2003 Paolo Molaro <lupus@ximian.com>
23302
23303         * profiler.c: provide more callers information.
23304
23305 2003-01-28  Dietmar Maurer  <dietmar@ximian.com>
23306
23307         * marshal.c (mono_marshal_get_managed_wrapper): generate valid IL code
23308
23309         * appdomain.h:added fix from Patrik: _MonoAppDomain is a MBR object
23310
23311         * marshal.c (mono_marshal_get_native_wrapper): generate valid IL code
23312
23313 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
23314
23315         * icall.c: (ves_icall_System_CurrentTimeZone_GetTimeZoneData): raise an
23316         exception instead of going into an infinite loop on dates which it 
23317         can't yet handle.
23318
23319         * string-icalls.c (ves_icall_System_String_get_Chars): raise 
23320         out-of-range exception if needed.
23321
23322         * class.c (mono_class_setup_vtable): allow a virtual method to provide
23323         an implementation for an interface method and to override an inherited
23324         method at the same time. 
23325         Imagine a scenario when a virtual method is used to override a
23326         virtual abstract method in a parent class, and this same method 
23327         provides an implementation for an method inherited from an interface. 
23328         In this case, the interface resolution code will set im->slot, which 
23329         means that the virtual method override pass will skip this method 
23330         which means a pointer to the abstract method inherited from the parent
23331         will remain in the vtable of this non-abstract class.
23332
23333         * class.c: (mono_class_setup_vtable): continue search for a real 
23334         method if only an abstract method is found.     
23335
23336 Mon Jan 27 17:12:19 CET 2003 Paolo Molaro <lupus@ximian.com>
23337
23338         * reflection.c: add size to encoding for ByValStr and ByValArray
23339         marshal blob (from "Jerome Laban" <jlaban@wanadoo.fr>).
23340
23341 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
23342
23343         * class.c (mono_class_setup_vtable): pass the override info as an
23344         argument.
23345
23346         * class.c (mono_class_setup_vtable): set the slot of overriding methods
23347         correctly.
23348         
23349         * reflection.c (ensure_runtime_vtable); add support for method 
23350         overrides.
23351         
23352 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
23353
23354         * reflection.c (resolution_scope_from_image): Hack to work to work with
23355         dynamic assemblies.
23356
23357         * reflection.c (mono_image_typedef_or_ref): renamed to ..._aux and 
23358         added a 'force_ref' argument to force this function to allways return 
23359         a TypeRef. This is needed by mono_image_get_memberref_token ().
23360         
23361 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
23362
23363         * reflection.c (mono_image_get_type_info): interfaces really don't have
23364         a parent.
23365
23366         * reflection.c (mono_image_basic_init): fill out missing fields of
23367         image structure.
23368
23369         * reflection.c (mono_image_basic_init): Invoke assembly load hooks for 
23370         dynamic assemblies. This is required so dynamic assemblies show up in
23371         AppDomain.GetAssemblies (), emit an AssembyLoadEvent, gets searched by
23372         Type::GetType() etc. This is consistent with MS behaviour.
23373
23374         * image.c image.h reflection.c: add newly created classes to the name 
23375         cache so mono_class_get () will find them.      
23376
23377 2003-01-27  Zoltan Varga  <vargaz@freemail.hu>
23378
23379         First part of changes to get IKVM.NET running under mono.
23380         
23381         * appdomain.h, appdomain.c: added new function 
23382         mono_domain_try_type_resolve() which will emit TypeResolve events. 
23383         This function will call AppDomain::DoTypeResolve to do the actual work.
23384
23385         * class.h, class.c, loader.c, object.c, reflection.h, reflection.c: 
23386         moved existing code dealing with dynamic tokens to a new function 
23387         called mono_reflection_lookup_dynamic_token (). This function will 
23388         raise TypeResolve events when appropriate. Since reflection.c is not 
23389         part of libmetadata, a new hook function called 
23390         mono_lookup_dynamic_token() is added to class.c which will call this.
23391
23392         * assembly.h assembly.c: make the invoke_load_hook function public,
23393         so it can be called for dynamic assemblies.
23394
23395         * icall.c (ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_RunClassConstructor): skip interfaces since they do not have initializers.
23396
23397         * icall.c (ves_icall_type_from_name): emit a TypeResolve event if the 
23398         type isn't found.
23399
23400         * reflection.c reflection.h: change MonoDynamicAssembly.tokens to a 
23401         MonoGHashTable, since it contains pointers to objects which the GC 
23402         needs to track.
23403
23404         * assembly.c (search_loaded): remove unused variable.
23405         
23406 Mon Jan 27 12:18:45 CET 2003 Paolo Molaro <lupus@ximian.com>
23407
23408         * object.c: fixed issue exposed by gcc-generated IL programs
23409         that use RVA data for pointers.
23410
23411 2003-01-25  Martin Baulig  <martin@ximian.com>
23412
23413         * threads.c (start_wrapper): Moved the initialization of
23414         `start_func' above the mono_new_thread_init() call to which we
23415         pass it as argument.
23416
23417 2003-01-24  Martin Baulig  <martin@ximian.com>
23418
23419         * threads.h (MonoThreadCallbacks): Pass the thread ID instead of
23420         the MonoThread pointer.
23421
23422 2003-01-21  Miguel de Icaza  <miguel@ximian.com>
23423
23424         * icall.c: Rename `PowImpl' to Pow.
23425
23426 2003-01-23  Dick Porter  <dick@ximian.com>
23427
23428         * threads.c (start_wrapper): Create a Thread object if needed, so
23429         the Main() thread can do the class initialisation in a subthread
23430         that has been set up to allow managed code execution.
23431
23432         Pass the thread ID instead of the MonoThread pointer to the thread
23433         start and attach callbacks.  This change is required, because the
23434         jit thread start callback must be called _before_ the Thread
23435         object can be created.
23436         
23437         (mono_thread_init): Removed much object creation code that is no
23438         longer needed.  No managed code is called from here now.
23439
23440         * object.c (mono_runtime_exec_managed_code): Create a subthread
23441         for Main, and call back to the runtime to use it.
23442         Set the exit code when Main exits.
23443
23444         * gc.c: Make sure domain finalisation happens in a subthread.
23445         Re-enable threaded GC, fixing bug 31333 (again).
23446
23447         * environment.c: System.Environment internall calls (so far just
23448         ExitCode is here, the others are still in icall.c)
23449
23450         * appdomain.c (mono_runtime_cleanup): All threads running managed
23451         code should have finished before mono_runtime_cleanup() is
23452         reached, so no need to clean up threads.
23453
23454 2003-01-22  Martin Baulig  <martin@ximian.com>
23455
23456         * appdomain.h (MonoThreadStartCB): Added `MonoThread *thread' and
23457         `gpointer func' arguments.      
23458         (MonoThreadAttachCB): New typedef; like the old MonoThreadStartCB,
23459         but added `MonoThread *thread' argument.
23460         (mono_runtime_init): The last argument is now a MonoThreadAttachCB.
23461
23462         * threads.c (mono_new_thread_init): Added `gpointer func' argument
23463         and pass it to the mono_thread_start_cb callback.
23464         (mono_install_thread_callbacks): New public function to install a
23465         set of callbacks which are set by the debugger.
23466         (mono_thread_init): The last argument is now a MonoThreadAttachCB.
23467
23468 2003-01-22  Martin Baulig  <martin@ximian.com>
23469
23470         * Makefile.am: Install debug-mono-symfile.h.
23471
23472 2003-01-21  Aleksey Demakov <avd@openlinksw.com>
23473
23474         * marshal.c: fixed copy_from_managed and copy_to_unmanaged for 0 length.
23475
23476 2003-01-21  Dietmar Maurer  <dietmar@ximian.com>
23477
23478         * added the following fix from Jackson Harper <jackson@latitudegeo.com>
23479         * class.c (mono_ptr_class_get): correctly set access levels of pointers
23480         (mono_array_class_get): correctly set access levels of arrays
23481
23482 2003-01-20      Patrik Torstensson
23483         * image.h (MonoAssemblyName): changed major, minor, build, revision
23484         from signed to unsigned.
23485
23486 2003-01-20  sean kasun <skasun@azstarnet.com>
23487
23488         * reflection.c (load_cattr_value): Now this handles
23489         MONO_TYPE_SZARRAY.  Fixes bug #35629
23490
23491 2003-01-20  Miguel de Icaza  <miguel@ximian.com>
23492
23493         * marshal.c (emit_struct_conv): Handle MONO_TYPE_PTR as an
23494         integer value
23495
23496 2003-01-18  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23497
23498         * decimal.c: fixed bug #26056.
23499
23500 2003-01-17  Martin Baulig  <martin@ximian.com>
23501
23502         * gc.c: Raise an ExecutionEngineException instead of using g_error().
23503
23504 2003-01-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23505
23506         * exception.[ch]:
23507         (mono_get_exception_type_initialization): new function.
23508
23509         * object.c: throw a TypeInitializationException when an exception is
23510         thrown invoking the class constructor.
23511
23512 2003-01-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23513
23514         * reflection.c: fixed attribute reading.
23515
23516 2003-01-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23517
23518         * icall.c:
23519         (ves_icall_type_from_name): make it work as MS. Ie, if no assembly name
23520         provided, look for the type in the calling assembly and then in
23521         mscorlib; if the assembly name is provided, only try that one.
23522
23523 Tue Jan 14 14:52:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23524
23525         * object.c: register the vtable before there is a chance it's
23526         queried again recursively.
23527
23528 2003-01-13  Duncan Mak  <duncan@ximian.com>
23529
23530         * Makefile.am (libmonoruntime_la_SOURCES): Change gc.h to
23531         gc-internal.h. 
23532         
23533 2003-01-12  Patrik Torstensson <totte@race-x-change.com>
23534
23535         * string-icall.[c|h], icall.c: Added support for CompareOrdinal mode
23536
23537 2003-01-11  Martin Baulig  <martin@ximian.com>
23538
23539         * debug-mono-symfile.h (MONO_SYMBOL_FILE_DYNAMIC_VERSION): Incremented
23540         this to 20 for the release.
23541
23542 2003-01-10  Dietmar Maurer  <dietmar@ximian.com>
23543
23544         * marshal.c (emit_struct_conv): added support for EXPLICIT_LAYOUT
23545
23546         * loader.c (mono_method_get_marshal_info): bug fix
23547
23548         * marshal.c (mono_marshal_get_ptr_to_struct): don't convert
23549         structures with explicit layout
23550
23551 Fri Jan 10 15:58:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23552
23553         * profiler.c: made the output more readable (and sorted). 
23554         Added caller information for the allocation profiler.
23555
23556 2003-01-09  Sebastien Pouliot  <spouliot@videotron.ca>
23557
23558         * icall.c, rand.c, rand.h: Prepended RNG functions with Internal.
23559
23560 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23561
23562         * icall.c: added ves_icall_System_Activator_CreateInstanceInternal. Used
23563         to get value types.
23564         
23565 Thu Jan 9 19:43:11 CET 2003 Paolo Molaro <lupus@ximian.com>
23566
23567         * object.c, profiler.h, profiler.c, profiler-private.h:
23568         Added object allocation profiler.
23569
23570 Thu Jan 9 16:17:00 CET 2003 Paolo Molaro <lupus@ximian.com>
23571
23572         * reflection.h, reflection.c: handle global methods.
23573         Compress blob entries.
23574
23575 Thu Jan 9 15:54:53 CET 2003 Paolo Molaro <lupus@ximian.com>
23576
23577         * marshal.c: fix compilation.
23578
23579 2003-01-09  Dietmar Maurer  <dietmar@ximian.com>
23580
23581         * loader.c (mono_method_get_marshal_info): impl.
23582
23583         * metadata.c (mono_metadata_field_info): use mono_metadata_get_marshal_info
23584
23585 2003-01-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23586
23587         * icall.c: applied fix from Zoltan Varga that fixes Type.IsPrimitive
23588         for reference types.
23589
23590 Wed Jan 8 20:11:46 CET 2003 Paolo Molaro <lupus@ximian.com>
23591
23592         * loader.c: fixed off by one error in loaded parameter names.
23593
23594 2003-01-08  Dietmar Maurer  <dietmar@ximian.com>
23595
23596         * marshal.c (mono_marshal_get_icall_wrapper): like
23597         mono_marshal_get_native_wrapper, but simpler and use a MonoMethodSignature
23598         instead of a MonoMethod.
23599
23600 2003-01-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23601
23602         * decimal.c: fixed bug #36537.
23603
23604 Mon Jan 6 19:37:59 CET 2003 Paolo Molaro <lupus@ximian.com>
23605
23606         * marshal.c: throw a missing method exception if a
23607         P/Invoke method is not found.
23608
23609 Sun Jan 5 11:57:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * icall.c: allow a null this for constructors.
23612
23613 Sat Jan 4 18:28:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23614
23615         * icall.c: raise the proper exceptions if the arguments to the
23616         internal Invoke are incorrect.
23617
23618 2003-01-03  Dietmar Maurer  <dietmar@ximian.com>
23619
23620         * marshal.c (mono_marshal_get_ptr_to_struct): code cleanups
23621
23622 2003-01-03  Martin Baulig  <martin@ximian.com>
23623
23624         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
23625
23626 2002-12-31  Martin Baulig  <martin@ximian.com>
23627
23628         * debug-mono-symfile.c: Completely rewrote the type section.
23629         Instead of using individual malloc()ed fields, we use one big
23630         continuous memory area and offsets into this area.
23631         See the comments in the source code for details.
23632
23633 2002-12-30  Martin Baulig  <martin@ximian.com>
23634
23635         * debug-mono-symfile.h (MonoDebugTypeInfo): Renamed to MonoDebugClassInfo.
23636
23637 2002-12-30  Martin Baulig  <martin@ximian.com>
23638
23639         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Include the
23640         line number table in this data blob instead of using an external
23641         pointer.
23642
23643 2002-12-28  Martin Baulig  <martin@ximian.com>
23644
23645         * debug-mono-symfile.h: Increment MONO_SYMBOL_FILE_DYNAMIC_VERSION.
23646
23647 2002-12-22  Rachel Hestilow  <hestilow@ximian.com>
23648
23649         * marshal.c (mono_marshal_get_runtime_invoke): Support MONO_TYPE_CHAR
23650         as a boxed return type.
23651
23652 2002-12-21  Miguel de Icaza  <miguel@ximian.com>
23653
23654         * appdomain.c
23655         (ves_icall_System_AppDomainSetup_InitAppDomainSetup): Use
23656         g_build_filename to properly get separators on the filename created.
23657
23658         * object.h: Small change, introduce MonoMarshalByRefObject to
23659         track the layout of that structure in the C# universe as we make
23660         changes there.
23661
23662 Thu Dec 19 16:23:19 CET 2002 Paolo Molaro <lupus@ximian.com>
23663
23664         * object.c: removed assert to allow static fields on interfaces.
23665         * loader.c: a TypeSpec may be used for any type, not just arrays.
23666
23667 Thu Dec 19 14:19:42 CET 2002 Paolo Molaro <lupus@ximian.com>
23668
23669         * class.c, class.h: added mono_class_array_element_size ().
23670         Ignore static methods in interfaces.
23671
23672 2002-12-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23673
23674         * threads.c: fixed the build under cygwin.
23675
23676 Wed Dec 18 18:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
23677
23678         * reflection.c: handle nullref constants. Allocate keys for
23679         reflection handles with the GC.
23680
23681 Wed Dec 18 11:34:18 CET 2002 Paolo Molaro <lupus@ximian.com>
23682
23683         * threads.c, threads.h: added mono_thread_get_abort_signal()
23684         to get a suitable signal for thread abort.
23685
23686 Wed Dec 18 11:26:18 CET 2002 Paolo Molaro <lupus@ximian.com>
23687
23688         * metadata.c: fix handling of ExportedType table.
23689
23690 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23691
23692         * icall.c: added WriteWindowsDebugString internal call.
23693
23694 2002-12-15  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23695
23696         * reflection.h: added fields to match C# implementation.
23697
23698 2002-12-14  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23699
23700         * icall.c: patch from Jaroslaw Kowalski to fix Environment.MachineName.
23701
23702 2002-12-12  Juli Mallett  <jmallett@FreeBSD.org>
23703
23704         * gc.h, gc-internal.h: Rename header for GC internal calls to
23705         gc-internal.h from gc.h as to not clash with Boehm GC having its
23706         header installed as <gc.h> in outside include paths.
23707         * appdomain.c, gc.c, icall.c, object.c: Account for aforementioned.
23708         * threads.c: If SIGRTMIN is not defined, fall back to SIGUSR1.
23709
23710 2002-12-12  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23711
23712         * icall.c: assign minor, build and revision in FillName.
23713
23714 2002-12-11  Zoltan Varga  <vargaz@freemail.hu>
23715
23716         * image.h reflection.h reflection.c class.h class.c loader.c object.c:
23717         Added support for running code generated by Reflection.Emit.
23718
23719 2002-12-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23720
23721         * appdomain.c: check for NULL argument in LoadFrom.
23722
23723 2002-12-10  Dick Porter  <dick@ximian.com>
23724
23725         * threads.c: WaitHandle fixes from Tum <tum@veridicus.com>
23726
23727 2002-12-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23728
23729         * appdomain.c: fix buglet when building exe file name.  Handle full
23730         assembly name (needed after latest changes to AssemblyName).
23731         * image.c:
23732         (mono_image_close): free some hashtables.
23733
23734 2002-12-05  Dietmar Maurer  <dietmar@ximian.com>
23735
23736         * threads.c (ves_icall_System_Threading_Thread_Abort): we use SIGRTMIN 
23737         instead of SIGUSR1, because SIGUSR1 is used by the pthread implementation 
23738         on some systems (redhat 7.3) 
23739
23740 Thu Dec 5 16:13:40 CET 2002 Paolo Molaro <lupus@ximian.com>
23741
23742         * threads.c: delete the critical section of a sync block,
23743         spotted and fixed by tum@veridicus.com (Thong (Tum) Nguyen).
23744
23745 Thu Dec 5 12:52:52 CET 2002 Paolo Molaro <lupus@ximian.com>
23746
23747         * pedump.c, cil-coff.h, monosn.c: add strong name cli header flag.
23748
23749 2002-12-05  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23750
23751         * appdomain.[ch]: handle the assembly preload event to try loading the
23752         assemblies using the paths we have in the current domain.
23753
23754         * assembly.[ch]: created an assembly preload hook that is called to try
23755         loading the assembly by other means that the ones provided here.
23756
23757         * domain.c: initialize the domain search path.
23758
23759         From now on, assemblies (TODO: except corlib and System) are loaded
23760         according to these rules when using mono_assembly_load ():
23761
23762                 1. It tries to load the assembly from the ApplicationBase
23763                 of the current domain appending .dll and .exe (TODO: have to
23764                 try loading from name/name.dll and name/name.exe).
23765
23766                 2. It tries the search path specified in PrivateBinPath for the
23767                 current domain (if any).
23768
23769                 3. Previous behavior.
23770
23771 Wed Dec 4 16:02:25 CET 2002 Paolo Molaro <lupus@ximian.com>
23772
23773         * icall.c: implemented GetInterfaceMap() related icall.
23774         * domain.c, loader.h: load MethodInfo in mono_defaults.
23775
23776 Wed Dec 4 11:02:30 CET 2002 Paolo Molaro <lupus@ximian.com>
23777
23778         * gc.c: disable the finalizer thread for now, untill all the issues
23779         with it are resolved.
23780
23781 Wed Dec 4 10:44:01 CET 2002 Paolo Molaro <lupus@ximian.com>
23782
23783         * string-icalls.c: handle embedded nulls in string ctor when the
23784         length is specified.
23785
23786 Tue Dec 3 19:29:20 CET 2002 Paolo Molaro <lupus@ximian.com>
23787
23788         * class.c: look for explicit interface implementation in parent
23789         classes, too.
23790
23791 2002-12-03  Dietmar Maurer  <dietmar@ximian.com>
23792
23793         * gc.c (run_finalize): dont run the finalizer (strange behaviour on rh7.3) 
23794
23795 Tue Dec 3 12:40:06 CET 2002 Paolo Molaro <lupus@ximian.com>
23796
23797         * gc.c: protect handles with a critical section.
23798
23799 2002-12-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23800
23801         * icall.c:
23802         (ves_icall_type_from_name): it now has throwOnError and ignoreCase
23803         parameters. If no assembly specified, try getting the type from all
23804         the assemblies in the current domain, else, load the assembly and get
23805         the type from it.
23806
23807 2002-11-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23808
23809         * marshal.c: applied patch from Aleksey Demakov that fixes
23810         ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringUni.
23811
23812 2002-11-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23813
23814         * icall.c: fixed get_location.
23815
23816 2002-11-28  Dietmar Maurer  <dietmar@ximian.com>
23817
23818         * icall.c: moved MONO_ARCH_SAVE_REGS to the end of the
23819         declarations to make it work with older gcc. 
23820
23821         * loader.c (mono_get_method): set signature->pinvoke for native calls
23822
23823 2002-11-20  Dick Porter  <dick@ximian.com>
23824
23825         * threads.c (mono_thread_init): Set the main thread's handle
23826
23827 Tue Nov 19 14:15:34 CET 2002 Paolo Molaro <lupus@ximian.com>
23828
23829         * gc.c: allow compilation without GC support. Changed to match the
23830         mono coding style.
23831
23832 Mon Nov 18 18:41:51 CET 2002 Paolo Molaro <lupus@ximian.com>
23833
23834         * gc.c: don't start the finalizer thread if the env var GC_DONT_GC is set.
23835
23836 Mon Nov 18 16:35:22 CET 2002 Paolo Molaro <lupus@ximian.com>
23837
23838         * reflection.c: set a public key token on the core assemblies.
23839
23840 2002-11-18  Dick Porter  <dick@ximian.com>
23841
23842         * threads.c: Split out some thread initialisation so that other
23843         files can set the start callback function.
23844
23845         * gc.c: Run finalisers in a separate thread, to avoid stack
23846         overflow.  Fixes bug 31333.
23847
23848         * appdomain.c: Set up GC finalisation thread.
23849
23850         * reflection.c: 
23851         * object.c: 
23852         * domain.c: Use gc.h macros for GC_malloc
23853         
23854 2002-11-15  Dick Porter  <dick@ximian.com>
23855
23856         * threadpool.c: 
23857         * threads.c:
23858         * appdomain.c: Removed mono_runtime_init_with_attach(),
23859         mono_thread_create_arg(), and mono_thread_init_with_attach(), by
23860         merging the extra parameter with the existing function.  Removed
23861         unneeded code in mono_thread_attach().
23862
23863 2002-11-14  Dietmar Maurer  <dietmar@ximian.com>
23864
23865         * image.c (mono_image_loaded_by_guid): a method to get loaded
23866         images by guid. 
23867         (load_metadata_ptrs): we store the guid as string.
23868
23869 2002-11-11  Dietmar Maurer  <dietmar@ximian.com>
23870
23871         * assembly.c (mono_assembly_open): check the guid of aot compiled lib.
23872
23873         * metadata.c (mono_guid_to_string): imported method form Zoltan
23874         Varga (slightly modified)
23875
23876         * assembly.c (mono_assembly_open): load precompiled code
23877
23878         * loader.h (MonoMethod): we store the method token for use in the
23879         aot compiler. 
23880
23881 2002-11-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23882
23883         * appdomain.c: insert the loaded assemblies in the domain->assemblies in
23884         the hook function called when an assembly is loaded.
23885         
23886         * domain.c: Modified file.
23887         (mono_domain_assembly_load): removed hash table insertion of assemblies.
23888
23889         Fixes bug #33196.
23890
23891 2002-11-07  Miguel de Icaza  <miguel@ximian.com>
23892
23893         * reflection.c: Map PEFileKind to the value expected by the WinNT
23894         image loader. 
23895
23896 2002-11-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23897
23898         * rand.c: use /dev/urandom. If it fails to open, use the previous one.
23899         Read until the buffer is filled completely.
23900
23901 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23902
23903         * icall.c: implemented MonoType.InternalGetEvent ().
23904
23905 2002-11-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23906
23907         * appdomain.c: implemented InitAppDomainSetup. Delayed
23908         AppDomain.SetupInformation until mono_runtime_exec_main, where we get
23909         the entry_assembly.
23910
23911         * assembly.c: base_dir is now an absolute path ending with
23912         G_DIR_SEPARATOR.
23913
23914         * icall.c: modified get_location according to the above changes.
23915
23916         * object.c: init AppDomain.SetupInformation for the default domain after
23917         we have the entry assembly.
23918
23919         * domain.c: when unloading a domain, setup = NULL.
23920
23921 2002-11-04  Dietmar Maurer  <dietmar@ximian.com>
23922
23923         * marshal.c (emit_ptr_to_str_conv): try to fix bug 29548
23924
23925 Sun Nov 3 15:39:28 CET 2002 Paolo Molaro <lupus@ximian.com>
23926
23927         * object.h, object.c: introduced mono_object_get_virtual_method ()
23928         to lookup the method invoked on an object when a callvirt is done on
23929         a method.
23930         * icall.c: make MethodInfo::Invoke() always do a virtual call.
23931
23932 2002-11-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23933
23934         * appdomain.c: invoke AssemblyLoad and AsemblyResolve events in the
23935         current domain when loaded an assembly and failed to load it.
23936
23937         * icall.c: changed ...Assembly_GetType to Assembly_InternalGetType.
23938
23939 2002-10-31  Dick Porter  <dick@ximian.com>
23940
23941         * icall.c: 
23942         * file-io.h: 
23943         * file-io.c: Return the error status in a parameter, as the
23944         GetLastError() value has long since been blown away if we try and
23945         look it up in a subsequent internal call invocation.  Delete the
23946         GetLastError() internal call, because it's useless.
23947
23948 2002-10-31  Dietmar Maurer  <dietmar@ximian.com>
23949
23950         * class.[ch]: added cast_class to fix bug 29517
23951
23952 Wed Oct 30 19:37:32 CET 2002 Paolo Molaro <lupus@ximian.com>
23953
23954         * marshal.c: create valid IL code in the filter clause:
23955         the new JIT is less forgiving:-)
23956
23957 2002-10-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23958
23959         * icall.c: removed get_property internal call.
23960
23961 2002-10-25  Zoltan Varga  <vargaz@freemail.hu>
23962
23963         * appdomain.h domain.c: Added an ID to appdomains.
23964         
23965         * threads.c threads.h icall.c: Implement icall
23966         Thread:GetDomainID(), and remove unused icall 
23967         CurrentThreadDomain_internal.
23968
23969 2002-10-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23970
23971         * icall.c: Don't recurse through the base types in GetConstructor.
23972         Fixes bug #32063. 
23973
23974 Thu Oct 24 16:56:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
23975
23976         * mempool.h, mempool.c: added mono_mempool_empty() and
23977         mono_mempool_stats().
23978
23979 2002-10-23  Dick Porter  <dick@ximian.com>
23980
23981         * file-io.c: 
23982         * file-io.h: 
23983         * icall.c: Added MonoIO.GetFileType internal call
23984
23985 2002-10-17  Dick Porter  <dick@ximian.com>
23986
23987         * appdomain.c (mono_runtime_cleanup): Don't signal the async
23988         delegate semaphore before waiting for all threads to finish,
23989         because new threads can also call async delegates.  Fixes bug
23990         32004.
23991
23992         * threadpool.c (async_invoke_thread): Only wait for 500ms instead
23993         of 3 seconds, in case another async job is queued.  (This part is
23994         needed because the bug fix reintroduced the 3s exit lag.)  This
23995         makes the mono_runtime_shutdown flag superfluous.
23996
23997 Thu Oct 17 13:11:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
23998
23999         * reflection.c: include ehader size in method section headers.
24000         Really check for suplicated modules entries.
24001
24002 2002-10-17  Martin Baulig  <martin@gnome.org>
24003
24004         * debug-mono-symfile.c: Added back support for locals.
24005
24006 2002-10-14  Martin Baulig  <martin@gnome.org>
24007
24008         * debug-mono-symfile.c: Added MONO_TYPE_I, MONO_TYPE_U and
24009         MONO_TYPE_VOID.
24010
24011 2002-10-14  Martin Baulig  <martin@gnome.org>
24012
24013         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetType): Use
24014         mono_class_get() instead of looking in the class cache. 
24015
24016 2002-10-13  Martin Baulig  <martin@gnome.org>
24017
24018         * debug-mono-symfile.c: Set version number to 28, include the
24019         signature in method names.
24020
24021 2002-10-13  Martin Baulig  <martin@gnome.org>
24022
24023         * debug-mono-symfile.h: Set version number to 27.
24024
24025 2002-10-11  Martin Baulig  <martin@gnome.org>
24026
24027         * gc.c: Don't register/unregister NULL pointers as disappearing links.
24028
24029 Thu Oct 10 14:56:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24030
24031         * metadata.c, metadata.h: added helper function to allocate signatures.
24032
24033 2002-10-09  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24034
24035         * icall.c: added internal call to get the location of machine.config.
24036
24037 2002-10-08  Martin Baulig  <martin@gnome.org>
24038
24039         * debug-mono-symfile.c: Ignore classes with a pending init for the
24040         moment.
24041
24042 2002-10-03  Dick Porter  <dick@ximian.com>
24043
24044         * threads.c: Freebsd pthread_t is a pointer
24045
24046 2002-10-03  Dick Porter  <dick@ximian.com>
24047
24048         * socket-io.c: Implemented GetHostName_internal
24049
24050 2002-10-02  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24051
24052         * mono-config.c:
24053         (mono_config_parse_file): don't leak the text.
24054
24055 2002-10-02  Martin Baulig  <martin@gnome.org>
24056
24057         * debug-mono-symfile.c: Added support for methods.
24058
24059 2002-10-01  Martin Baulig  <martin@gnome.org>
24060
24061         * debug-mono-symfile.c: Don't emit methods and line numbers for
24062         the dynamic symbol file, just write the type table.  We can easily
24063         have an external helper program which creates a symbol file for an
24064         IL file.        
24065
24066 2002-10-01  Dick Porter  <dick@ximian.com>
24067
24068         * threads.c (ves_icall_System_Threading_Thread_Start_internal):
24069         Only add the handle to the cleanup array when we're about to
24070         launch the thread.  Bug 31425 deadlocked when the test was run on
24071         mono under w32.
24072
24073 2002-10-01  Martin Baulig  <martin@gnome.org>
24074
24075         * debug-mono-symfile.c: Added support for properties.
24076
24077 Fri Sep 27 18:55:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24078
24079         * reflection.c: unaligned store fix from Mark Crichton
24080         <crichton@gimp.org>.
24081
24082 2002-09-27  Martin Baulig  <martin@gnome.org>
24083
24084         * icall.c ("System.Reflection.Assembly::GetReferencedAssemblies"):
24085         New interncall.
24086
24087 Fri Sep 27 15:38:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
24088
24089         * assembly.h, assembly.c: use a sane API to hook into the assembly
24090         loading process instead of a useless special-purpouse hack
24091         (ngen needs a hook, too, for example).
24092
24093 2002-09-27  Dick Porter  <dick@ximian.com>
24094
24095         * threads.c (mono_thread_init): Call GetCurrentProcess() so
24096         io-layer can set up some process handle info.  Not needed on w32,
24097         but doesn't hurt either.
24098
24099         * process.c: Pass the program name in the second parameter to
24100         CreateProcess, so the path is searched.  Include the working
24101         directory. Implemented process name, process enumeration, and some
24102         process detail internal calls.
24103         
24104         * icall.c: Added internal calls for process lookup, and some
24105         process details
24106
24107 2002-09-26  Martin Baulig  <martin@gnome.org>
24108
24109         * assembly.c (mono_install_open_assembly_hook): New global
24110         function to install a function to be invoked each time a new
24111         assembly is loaded.
24112         (mono_assembly_open): Run this callback function if set.
24113
24114         * debug-mono-symfile.c: Put back line numbers for the dynamic
24115         symbol file and also record the .il file as source file.  This
24116         allows us to install the temporary symbol file as `file.dbg' just
24117         like a compiler-generated one.
24118
24119 2002-09-26  Nick Zigarovich <nick@chemlab.org>
24120
24121         * Corrected typo in gc.c (BOHEM vs BOEHM).
24122
24123 2002-09-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24124
24125         * icall.c: fixed bug #31235 by copying a few lines from GetMethods to
24126         GetProperties. Also avoid calling g_slist_length in GetProperties and
24127         GetMethods.
24128
24129 Wed Sep 25 22:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24130
24131         * reflection.c: avoid unaligned stores (bug spotted by
24132         Mark Crichton  <crichton@gimp.org>).
24133
24134 2002-09-25  Martin Baulig  <martin@gnome.org>
24135
24136         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Use pointers
24137         instead of guint64 for addresses and added prologue/epilogue info.
24138
24139 2002-09-25  Martin Baulig  <martin@gnome.org>
24140
24141         * debug-mono-symfile.h (MonoDebugLineNumberEntry): New type to
24142         store line number info.  For the dynamic symbol file, we only need
24143         to provide the JIT generated dynamic line number info for the dynamic
24144         symbol file.
24145
24146 2002-09-25  Martin Baulig  <martin@gnome.org>
24147
24148         * debug-mono-symfile.h: Incremented version number.
24149
24150 2002-09-24  Martin Baulig  <martin@gnome.org>
24151
24152         * class.c (mono_debugger_class_init_func): New global function
24153         pointer variable.
24154         (mono_class_init): If mono_debugger_class_init_func is non-NULL,
24155         call it.
24156
24157         * debug-mono-symfile.c (mono_debug_symfile_add_type): New
24158         function.  This is called via the mono_debugger_class_init_func
24159         hook to add all types to the dynamic type table.
24160         (ves_icall_MonoDebugger_GetType): New interncall to get a class
24161         from its metadata token.
24162
24163         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetType"):
24164         New interncall for the debugger.
24165
24166 2002-09-24  Nick Drochak <ndrochak@gol.com>
24167
24168         * icall.c (ves_icall_System_Enum_ToObject): validate the type parameter
24169         before using it in case it is null.
24170         
24171 Tue Sep 24 13:24:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
24172
24173         * metadata.c: allow custom modifiers in local var signatures
24174         (bug spotted by Zoltan Varga).
24175
24176 Tue Sep 24 12:12:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
24177
24178         * class.c: deal with the <Module> class that may have a NULL vtable.
24179         Eliminate warnings.
24180
24181 Tue Sep 24 11:28:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24182
24183         * image.c, image.h: more strong name helpers.
24184         * monosn.c: more work: convert pem keys to cryptoapi format.
24185
24186 Tue Sep 24 11:27:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24187
24188         * string-icalls.c: speedup IndexOf.
24189
24190 Tue Sep 24 11:17:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24191
24192         * icall.c: updates from Zoltan.2.Varga@nokia.com.
24193
24194 Tue Sep 24 11:09:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
24195
24196         * icall.c: cleanup: use mono_object_domain ().
24197
24198 2002-09-23  Martin Baulig  <martin@gnome.org>
24199
24200         * debug-mono-symfile.c: Improved type support.
24201
24202 2002-09-22  Martin Baulig  <martin@gnome.org>
24203
24204         * debug-mono-symfile.c: Added support for reference types and strings.
24205
24206 2002-09-22  Martin Baulig  <martin@gnome.org>
24207
24208         * debug-mono-symfile.c: Started to work on the type table.
24209
24210 2002-09-21  Martin Baulig  <martin@gnome.org>
24211
24212         * debug-mono-symfile.c: Largely reworked the symbol table format.
24213         The symbol table is now incrementally updated each time a new
24214         method is added.  We're now also using our own magic and version
24215         so that you don't need to recompile all your classes if the
24216         dynamic table changes.
24217         (mono_debug_update_mono_symbol_file): Removed.
24218         (mono_debug_symfile_add_method): New function to add a method.
24219
24220 2002-09-21  Martin Baulig  <martin@gnome.org>
24221
24222         * icall.c
24223         ("System.Reflection.Assembly::MonoDebugger_GetLocalTypeFromSignature"):
24224         New interncall.
24225
24226         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetLocalTypeFromSignature):
24227         New interncall to get a method from its metadata token.
24228
24229 2002-09-21  Martin Baulig  <martin@gnome.org>
24230
24231         * debug-mono-symfile.c: Create type table.
24232
24233 2002-09-20  Martin Baulig  <martin@gnome.org>
24234
24235         * debug-mono-symfile.c: Reflect latest Mono.CSharp.Debugger changes.
24236
24237 2002-09-20  Martin Baulig  <martin@gnome.org>
24238
24239         * debug-mono-symfile.c: Provide information about params and locals.
24240
24241 2002-09-20  Martin Baulig  <martin@gnome.org>
24242
24243         * icall.c ("System.Reflection.Assembly::MonoDebugger_GetMethod"):
24244         New interncall.
24245
24246         * debug-mono-symfile.c (ves_icall_MonoDebugger_GetMethod): New
24247         interncall to get a method from its metadata token.
24248
24249 2002-09-20  Martin Baulig  <martin@gnome.org>
24250
24251         * debug-mono-symfile.c: Added a few checks for method->header
24252         being non-NULL.  This should never happen, but for the moment
24253         let's use a g_warning() rather than a g_assert().
24254
24255 2002-09-19  Mark Crichton  <crichton@gimp.org>
24256
24257         * gc.c: ves_icall_System_GCHandle_FreeHandle made a call to libgc
24258         even if support for it isn't present.  Added an #ifdef to fix this.
24259
24260         * socket-io.c: Added checks back for Solaris support.
24261
24262 2002-09-19  Martin Baulig  <martin@gnome.org>
24263
24264         * debug-mono-symfile.c (read_string, write_string): Reflect latest
24265         changes in the symbol file format.
24266
24267 2002-09-18  Martin Baulig  <martin@gnome.org>
24268
24269         * debug-mono-symfile.c: Set version number to 21.
24270
24271 2002-09-18  Dick Porter  <dick@ximian.com>
24272
24273         * threads.c (mon_new): Use the GC_MALLOC macro to hide differences
24274         on netbsd.  Fixes bug 30051.
24275
24276 2002-09-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24277
24278         * reflection.c:
24279         (set_version_from_string): little fix.
24280
24281 Mon Sep 16 18:57:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24282
24283         * monosn.c, Makefile.am: added strong name utility.
24284         * reflection.h, reflection.c: implemented delayed signing,
24285         locale, version and hash id assembly attributes.
24286
24287 Mon Sep 16 18:51:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
24288
24289         * loader.c, metadata.c: load param attributes in signatures.
24290
24291 2002-09-16  Martin Baulig  <martin@gnome.org>
24292
24293         * debug-mono-symfile.c: Added string table with all method names.
24294
24295 2002-09-14  Martin Baulig  <martin@gnome.org>
24296
24297         * debug-mono-symfile.h (MonoSymbolFile): Added method range table for
24298         fast method lookup.
24299
24300 Fri Sep 13 16:04:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24301
24302         * reflection.c: record the public key token of referenced assemblies.
24303
24304 Fri Sep 13 15:41:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
24305
24306         * image.c, image.h: added functions to get the strong name and the
24307         public key of an assembly.
24308         * pedump.c: use them.
24309
24310 2002-09-12  Dietmar Maurer  <dietmar@ximian.com>
24311
24312         * marshal.c (emit_str_to_ptr_conv): support marshalling of delegates.
24313
24314 2002-09-12  Miguel de Icaza  <miguel@ximian.com>
24315
24316         * marshal.c (mono_marshal_get_managed_wrapper): Added
24317         MONO_TYPE_BOOLEAN 
24318
24319 2002-09-11  Martin Baulig  <martin@gnome.org>
24320
24321         * gc.c: Call GC_unregister_disappearing_link() on all links when
24322         finalizing them, this is necessary to aviod a crash in boehm's
24323         finalize handler.
24324
24325 Wed Sep 11 17:06:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24326
24327         * gc.c: handle GetTarget for finalized objects spotted and fixed by
24328         nick@chemlab.org.
24329
24330 Wed Sep 11 15:27:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
24331
24332         * icall.c: implemented MonoType::Module.
24333         * reflection.c, reflection.h: mono_module_get_object () from
24334         Tomi Pakarinen <tomi.pakarinen@welho.com>.
24335
24336 Wed Sep 11 12:53:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
24337
24338         * icall.c: ignore overridden methods in GetMethods ().
24339         Fix for FieldInfo::SetValue().
24340         * object.c: handle float/double in runtime invoke.
24341
24342 Tue Sep 10 15:51:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
24343
24344         * object.c: allow a constructor to be called again on an object.
24345
24346 Tue Sep 10 11:58:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24347
24348         * class.h, class.c: move field layout code to it's own function and
24349         export it. Get an interface id earlier. Move fields in MonoClass
24350         so they are more cache friendly and align the bitfields.
24351         * loader.c: temporary handle get_param_names() for a runtime method.
24352         * reflection.c, reflection.h: more code to handle runtime creation of
24353         types.
24354
24355 2002-09-09  Martin Baulig  <martin@gnome.org>
24356
24357         * marshal.c (mono_marshal_get_native_wrapper): We need to use a special
24358         signature with the pinvoke field being set for the actual call.
24359
24360 Sat Sep 7 10:12:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24361
24362         * icall.c: removed some unused icalls. Start of map of glib charsets
24363         to corlib names. Implemented RuntimeMethod::GetFunctionPointer ().
24364
24365 Fri Sep 6 16:08:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24366
24367         * debug-helpers.c: break infinite loop (found and fixed by
24368         Holger Arnold <harnold@gmx.de>).
24369
24370 Thu Sep 5 18:50:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
24371
24372         * icall.c: target may be null in create_delegate.
24373
24374 Thu Sep 5 17:42:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
24375
24376         * marshal.c: handle a boolean return type.
24377
24378 Thu Sep 5 13:09:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
24379
24380         * gc.c: put HIDE_POINTER/REVEAL_POINTER only here.
24381
24382 Wed Sep 4 19:23:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24383
24384         * gc.c: fix weakreferences.
24385
24386 Wed Sep 4 13:59:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
24387
24388         * icall.c: added icall to get default codepage.
24389
24390 2002-09-03  Dick Porter  <dick@ximian.com>
24391
24392         * threads.h: 
24393         * threads.c: Use MonoThread instead of MonoObject where
24394         apropriate.
24395
24396         Store running thread objects in a hash table, so that we have all
24397         the info to hand when waiting for them to finish
24398         (means we don't need OpenThread() any more, so mingw builds should
24399         be fully functional again.)
24400
24401         * verify.c:
24402         * object.h: Added thread ID to MonoThread
24403
24404 2002-09-03  Martin Baulig  <martin@gnome.org>
24405
24406         * icall.c (System.Reflection.Assembly::get_location): New interncall.
24407
24408 2002-09-03  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24409
24410         * icall.c: fixed leak in get_temp_path. Thanks lupus.
24411
24412 2002-09-03  Martin Baulig  <martin@gnome.org>
24413
24414         * debug-helpers.c (mono_disasm_code_one): Added `const guchar **endp'
24415         argument to store the end address of the disassembled instruction.
24416
24417         * debug-mono-symfile.h (MonoDebugMethodInfo, MonoDebugVarInfo): Moved
24418         here from debug-symfile.h.
24419         (MonoDebugMethodJitInfo): Moved all fields which are filled out by the
24420         JIT into this struct.
24421         (MonoSymbolFile): Added `char *image_file' field.
24422         (MonoDebugGetMethodFunc): Removed.
24423         (mono_debug_update_mono_symbol_file): Removed the hash table argument.
24424         (mono_debug_create_mono_symbol_file): Removed the `source_file' argument.
24425         (mono_debug_find_method): New method.
24426
24427         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): Always
24428         create a full symbol file.
24429         (mono_debug_update_mono_symbol_file): Don't distinguish between dynamic
24430         and static symbol files.
24431         (mono_debug_find_method): The symbol file keeps an internal method hash,
24432         call this to get a MonoDebugMethodInfo from a MonoMethod.
24433
24434         * debug-symfile.[ch]: Removed.
24435
24436 2002-08-29  Miguel de Icaza  <miguel@ximian.com>
24437
24438         * image.c (do_mono_image_open): Remove linker version check.
24439
24440 2002-08-29  Dietmar Maurer  <dietmar@ximian.com>
24441
24442         * marshal.c (mono_marshal_get_managed_wrapper): don't cache
24443         wrappers for instance methods.
24444         
24445 2002-08-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24446
24447         * icall.c: added ves_icall_System_IO_Path_get_temp_path.
24448
24449 2002-08-28  Dick Porter  <dick@ximian.com>
24450
24451         * Makefile.am: Export HOST_CC for w32 builds
24452
24453 Tue Aug 27 18:34:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
24454
24455         * file-io.c process.c: MonoString are null terminated, no
24456         need for mono_string_to_utf16() anymore.
24457
24458 Tue Aug 27 17:51:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24459
24460         * icall.c, unicode.h, unicode.c: removed unused iconv stuff.
24461
24462 Tue Aug 27 16:38:58 CEST 2002 Paolo Molaro <lupus@ximian.com>
24463
24464         * icall.c, reflection.h: speedup System.MonoType.
24465
24466 Tue Aug 27 16:37:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
24467
24468         * reflection.c: allow null as the value of a string argument in
24469         custom attributes constructors.
24470
24471 2002-08-27  Martin Baulig  <martin@gnome.org>
24472
24473         * debug-mono-symfile.h (MonoSymbolFileMethodAddress): Removed the
24474         `trampoline_address' field.
24475
24476 2002-08-27  Dietmar Maurer  <dietmar@ximian.com>
24477
24478         * marshal.c (mono_marshal_get_native_wrapper): removed wrong null
24479         check (fixes bug #29486) 
24480
24481 2002-08-27  Martin Baulig  <martin@gnome.org>
24482
24483         * debug-mono-symfile.c: Changed the file format in a way that allows us
24484         open it read-only and to use a specially malloced area for all the
24485         dynamic data.  We can now also generate a symbol file on-the-fly if we're
24486         debugging IL code and there is no MCS generated symbol file for it.
24487
24488 Mon Aug 26 16:47:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
24489
24490         * object.c: added a define for a good string and array
24491         creation speedup (not enabled by default because we need to deal with
24492         the synch stuff).
24493
24494 2002-08-26  Martin Baulig  <martin@gnome.org>
24495
24496         * debug-mono-symfile.c (mono_debug_create_mono_symbol_file): New
24497         function to create a dynamic symbol file.  This is used by the
24498         debugger to create a symbol file for IL code on-the-fly.
24499
24500 2002-08-26  Martin Baulig  <martin@gnome.org>
24501
24502         * loader.c (mono_lookup_pinvoke_call): Include the error message
24503         from g_module_error() in the error message.
24504
24505 2002-08-24  Martin Baulig  <martin@gnome.org>
24506
24507         * debug-mono-symfile.c (mono_debug_update_mono_symbol_file): New
24508         function to update the symbol file.  The symbol file is mmap()ed
24509         writable, but private.  This allows us to install the symbol file
24510         together with the assembly.
24511
24512 2002-08-24  Martin Baulig  <martin@gnome.org>
24513
24514         * debug-mono-symfile.[ch]: New files.  Similar to debug-symfile.[ch]
24515         but they can read the new symbol file format which mcs is now creating.
24516
24517         * debug-symfile.c (mono_debug_find_source_location): Moved to
24518         debug-mono-symfile.c; this is now operating on the new symbol file.
24519
24520 2002-08-23  Martin Baulig  <martin@gnome.org>
24521
24522         * debug-helpers.c (mono_method_desc_from_method): New function to get
24523         a MonoMethodDesc from a MonoMethod.
24524
24525 Fri Aug 23 15:54:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
24526
24527         * object.c: fixes assertion failure caused by multiple ExecuteAssembly
24528         calls for same domain (patch by Tomi Pakarinen <Tomi.Pakarinen@iki.fi>).
24529
24530 Fri Aug 23 12:14:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
24531
24532         * string-icalls.[ch]: make helper methods static.
24533
24534 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24535
24536         * icall.c: re-applied patch to GetValueInternal. Also added R4 and R8
24537         types to it and to SetValueInternal.
24538
24539         * object.c: Moved handle_enum label to its proper place. This was the
24540         f... bug! ;-)
24541
24542         This time i compiled mcs and gtk-sharp and they both work.
24543
24544 2002-08-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24545
24546         * icall.c: reverted partially my previous patch until 
24547         object.c:set_value handles enums correcly.
24548
24549 2002-08-22  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24550
24551         * icall.c:
24552         (ves_icall_MonoField_GetValue): changed to use mono_field_get_value.
24553         (ves_icall_System_Environment_get_MachineName): removed warning when
24554         compiling under cygwin.
24555
24556 Thu Aug 22 18:49:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
24557
24558         * object.c: fixed field_get_value() for reference types.
24559
24560 2002-08-22  Dick Porter  <dick@ximian.com>
24561
24562         * socket-io.c (ves_icall_System_Net_Sockets_Socket_RecvFrom_internal):
24563         Don't free a buffer while it's still needed.  Patch from Jonathan
24564         Liger <Jonathan.liger@wanadoo.fr>
24565
24566 2002-08-21  Miguel de Icaza  <miguel@ximian.com>
24567
24568         * icall.c (ves_icall_System_Environment_get_Platform): Add new
24569         internal call.
24570
24571 2002-08-21  Dietmar Maurer  <dietmar@ximian.com>
24572
24573         * icall.c (ves_icall_get_method_info): s/MonoMethod/MonoReflectionMethod/
24574         (ves_icall_get_parameter_info): s/MonoMethod/MonoReflectionMethod/
24575
24576         * marshal.c (mono_marshal_get_remoting_invoke): save lmf, because
24577         we call unmanaged code which throws exceptions.
24578
24579 Wed Aug 21 12:56:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24580
24581         * appdomain.h: added per-domain entry_assembly.
24582         * appdomain.c: ensure mono_runtime_exec_main () gets non-null
24583         arguments.
24584         * icall.c: Assembly::GetEntryAssembly icall.
24585         * object.c: set domain->entry_assembly in mono_runtime_exec_main().
24586         Changes above from a patch by Tomi Pakarinen <tomi.pakarinen@welho.com>.
24587
24588 Tue Aug 20 15:42:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24589
24590         * appdomain.h, gc.c: added mono_domain_finalize ().
24591
24592 2002-08-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24593
24594         * object.c:
24595         (mono_print_unhandled_exception): changed g_warning by g_printerr
24596         because g_log has a 1024 characters limit (yeah, i got a big stack
24597         trace). Don't print exception name, that should be in ToString 
24598         returned string.
24599
24600 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24601
24602         * icall.c: added ves_icall_FieldInfo_SetValueInternal.
24603         * object.c: added missing MONO_TYPE_ARRAY in mono_runtime_invoke_array.
24604
24605 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24606
24607         * object.c:
24608         (mono_print_unhandled_exception): after previous commit, i realized
24609         that MS calls ToString on the exception. I changed this function to
24610         do that. This way we get stack_trace for free.
24611
24612 2002-08-19  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24613
24614         * object.c:
24615         (mono_print_unhandled_exception): invoke Message property instead of
24616         getting 'message' field from Exception. Don't allocate memory for
24617         'trace' and 'message' if not needed.
24618
24619 2002-08-18  Dick Porter  <dick@ximian.com>
24620
24621         * unicode.c: Fix asserts to match Encoder.cs checks
24622
24623 Fri Aug 16 21:42:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24624
24625         * marshal.c: fix unaligned store issue and a few wrong
24626         opcode argument types.
24627
24628 2002-08-16  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24629
24630         * icall.c: added GetUninitializedObjectInternal internal call.
24631
24632 2002-08-16  Dietmar Maurer  <dietmar@ximian.com>
24633
24634         * appdomain.c (mono_runtime_invoke_in_domain): transfer Exception
24635         to the right domain.
24636
24637 2002-08-14  Dietmar Maurer  <dietmar@ximian.com>
24638
24639         * marshal.c (mono_marshal_get_runtime_invoke): unbox value types
24640
24641         * class.c (class_compute_field_layout): set blittable to false for Strings
24642
24643         * appdomain.c (mono_domain_transfer_object): added support for ISerializable
24644
24645 Wed Aug 14 17:26:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24646
24647         * appdomain.h, reflection.c, icall.c, object.c, reflection.h:
24648         first chunk of code to create types at runtime. Code to
24649         handle ReflectedType/DeclaringType. Make reflection handles
24650         domain specific.
24651
24652 Wed Aug 14 17:24:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
24653
24654         * class.c: set correct name in arrays.
24655
24656 2002-08-13  Dietmar Maurer  <dietmar@ximian.com>
24657
24658         * appdomain.c (mono_domain_transfer_object): make it work with
24659         valuetypes. bug fixes.
24660
24661 2002-08-12  Dick Porter  <dick@ximian.com>
24662
24663         * object.h: Rename some parameters to avoid c++ keywords (Patch
24664         from Joseph Wenninger <kde@jowenn.at>)
24665
24666 Thu Aug 8 13:04:18 CEST 2002 Paolo Molaro <lupus@ximian.com>
24667
24668         * icall.c: added icall to implement Assembly.GetFile*.
24669
24670 Thu Aug 8 10:18:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
24671
24672         * reflection.h, reflection.c: code to embed managed resources.
24673
24674 Tue Aug 6 17:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
24675
24676         * class.c: move all the type size stuff into
24677         class_compute_field_layout().
24678
24679 Tue Aug 6 11:20:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
24680
24681         * class.c: ensure enums have always the correct instance size.
24682         * unicode.c: remove wrong assert.
24683
24684 Mon Aug 5 19:30:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
24685
24686         * assembly.c: fix mem corruption issue.
24687         * image.h, image.c: added mono_image_get_resource () to access
24688         managed resources.
24689         * icall.c: implemented Assembly.EntryPoint property and some
24690         Managed Resources related internalcalls.
24691
24692
24693 Mon Aug 5 18:18:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
24694
24695         * image.c, image.h: impemented mono_image_get_entry_point ().
24696         * appdomain.c: use mono_image_get_entry_point.
24697
24698 Mon Aug 5 13:08:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24699
24700         * reflection.c: support the object type argument when loading
24701         custom attributes.
24702
24703 2002-08-05  Dietmar Maurer  <dietmar@ximian.com>
24704
24705         * marshal.c (mono_marshal_get_managed_wrapper): add suppport for
24706         String as return type.
24707
24708 Fri Aug 2 21:15:42 CEST 2002 Paolo Molaro <lupus@ximian.com>
24709
24710         * reflection.c: fix encoding of named args for custom attrs to match
24711         the ms implementation. Read them back when instantiating custom
24712         attributes.
24713
24714 2002-08-02  Radek Doulik  <rodo@ximian.com>
24715
24716         * marshal.c (mono_mb_add_data): convert ret value to LE, suggested
24717         by Dietmar as quick fix
24718         (mono_marshal_get_delegate_begin_invoke): use sig->param_count +
24719         16 as stack size, used on more places as quick fix before Dietmar
24720         will fix it properly
24721
24722 Fri Aug 2 17:48:17 CEST 2002 Paolo Molaro <lupus@ximian.com>
24723
24724         * object.h, object.c: added accessors for fields and properties.
24725
24726 Fri Aug 2 17:45:15 CEST 2002 Paolo Molaro <lupus@ximian.com>
24727
24728         * class.c, class.h: made mono_class_get_field_from_name ()
24729         loop on parent types.
24730         Added mono_class_get_property_from_name ().
24731
24732 Fri Aug 2 11:40:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
24733
24734         * class.c, class.h: move the code to setup the type vtable in its own
24735         function so that it can be reused also for types created at runtime.
24736         Eliminate the "class" identifier from the header file.
24737         * reflection.c: setup the vtable for enums so that we can create
24738         objects for use in SetConstant ().
24739
24740 2002-08-02  Dietmar Maurer  <dietmar@ximian.com>
24741
24742         * marshal.c (mono_delegate_to_ftnptr): pass delegate->target
24743         instead of the delegate itself as this pointer (bug #28383)
24744
24745 2002-08-01  Dietmar Maurer  <dietmar@ximian.com>
24746
24747         * marshal.c (mono_marshal_get_managed_wrapper): added return type
24748         conversions.
24749
24750 Wed Jul 31 16:49:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24751
24752         * loader.c: don't set the pinvoke bit on icalls.
24753
24754 2002-07-31  Dietmar Maurer  <dietmar@ximian.com>
24755
24756         * debug-helpers.c (mono_method_full_name): only print a number to
24757         indicate wrapper type (so that the output is more readable in traces).
24758
24759 2002-07-30  Dietmar Maurer  <dietmar@ximian.com>
24760
24761         * class.c (mono_class_init): include method override patch from Paolo
24762
24763 Tue Jul 30 15:20:08 CEST 2002 Paolo Molaro <lupus@ximian.com>
24764
24765         * icall.c: fixed GetTypeCode().
24766
24767 2002-07-29  Dietmar Maurer  <dietmar@ximian.com>
24768
24769         * threads.c (ves_icall_System_Threading_Thread_Thread_internal):
24770         use real delegate invoke function to make it work with multicast
24771         delegates (fix bug# 28291).
24772
24773 Fri Jul 26 11:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
24774
24775         * object.c: load constant strings.
24776
24777 Fri Jul 26 11:36:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
24778
24779         * reflection.c: no magic numbers.
24780         * tabledefs.h: security action enum.
24781
24782 Fri Jul 26 11:22:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
24783
24784         * assembly.c: fix possible memory corruption.
24785
24786 Thu Jul 25 13:58:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
24787
24788         * reflection.h, reflection.c: added support for linking resources.
24789         * verify.c: check we have an updated corlib.
24790
24791 2002-07-25  Dietmar Maurer  <dietmar@ximian.com>
24792
24793         * marshal.c (mono_marshal_get_native_wrapper): correctly marshal
24794         string arrays.
24795         (mono_marshal_string_array): null terminate unmanaged string arrays.
24796         (mono_marshal_get_managed_wrapper): print warning for arrays (not implemented)
24797
24798 Wed Jul 24 13:32:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
24799
24800         * icall.c: Type.GetType () can now return also types from the
24801         calling assembly.
24802
24803 Wed Jul 24 13:04:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
24804
24805         * loader.h, loader.c: stack walking support.
24806         * icall.c: implemented GetCurrentMethod, GetExecutingAssembly,
24807         GetCallingAssembly.
24808
24809 2002-07-24  Dietmar Maurer  <dietmar@ximian.com>
24810
24811         * marshal.c: added optimisations for blittable types 
24812
24813         * class.c (mono_array_class_get): do not set blittable attribute on arrays
24814         (mono_class_setup_mono_type): set blittable attribute for single
24815         and double.
24816
24817         * marshal.c (mono_string_utf8_to_builder): impl.
24818         (mono_string_builder_to_utf8): impl.
24819         (mono_marshal_get_native_wrapper): impl. StringBuilder marshaling
24820
24821 2002-07-23  Dietmar Maurer  <dietmar@ximian.com>
24822
24823         * marshal.c (mono_marshal_get_native_wrapper): impl. byref types
24824         (mono_marshal_get_managed_wrapper): impl. byref types
24825
24826 2002-07-23  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24827
24828         * icall.c:
24829         (search_method): don't display debug message. 
24830
24831 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
24832
24833         * metadata.c (mono_type_stack_size): removed temporary fix for new gcc
24834
24835 Mon Jul 22 18:17:05 CEST 2002 Paolo Molaro <lupus@ximian.com>
24836
24837         * appdomain.c: set the missing filename when throwing exception.
24838
24839 2002-07-22  Dietmar Maurer  <dietmar@ximian.com>
24840
24841         * metadata.c (mono_type_size): code cleanup
24842         (mono_type_stack_size): removed some test code
24843
24844 2002-07-21  Miguel de Icaza  <miguel@ximian.com>
24845
24846         * appdomain.c (ves_icall_System_Reflection_Assembly_LoadFrom): Use
24847         mono_get_exception_file_not_found now.
24848
24849         * exception.c (mono_exception_from_name_two_strings): New version
24850         that will call a constructor with two string arguments. 
24851         (mono_get_exception_file_not_found): New helper routine, used to
24852         report file-not-found errors.
24853
24854 2002-07-20  Dick Porter  <dick@ximian.com>
24855
24856         * process.h:
24857         * process.c: Pass file handles to CreateProcess
24858         
24859         * icall.c:
24860         * file-io.h:
24861         * file-io.c: Implemented CreatePipe
24862
24863 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
24864
24865         * metadata.c (mono_get_param_info): set alignment for value types
24866
24867 Fri Jul 19 18:58:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
24868
24869         * appdomain.h, domain.c, threads-types.h: don't include config.h in headers.
24870         Constify mono_domain_assembly_open().
24871         * loader.c: handle null namespace in icalls.
24872
24873 2002-07-19  Dietmar Maurer  <dietmar@ximian.com>
24874
24875         * marshal.c (emit_ptr_to_str_conv): marshal object as structs
24876         (emit_str_to_ptr_conv): marshal object as structs
24877
24878         * metadata.c (mono_type_to_unmanaged): marshal object as structs
24879
24880         * marshal.c (mono_marshal_get_runtime_invoke): support value types
24881
24882 2002-07-18  Dietmar Maurer  <dietmar@ximian.com>
24883
24884         * marshal.c (mono_marshal_get_runtime_invoke): use exception filters
24885         (mono_marshal_get_native_wrapper): we an now return value types
24886
24887 Wed Jul 17 18:21:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
24888
24889         * verify.c: more checks implemented.
24890
24891 2002-07-17  Dietmar Maurer  <dietmar@ximian.com>
24892
24893         * marshal.c (mono_delegate_to_ftnptr): invoke the right method
24894         (fix bug #27695)
24895         (mono_marshal_get_native_wrapper): allow byref arguments
24896         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringXXX):
24897         impl. PtrToStringXXX methods
24898         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStructure_type): impl.
24899         (ves_icall_System_Runtime_InteropServices_Marshal_OffsetOf): impl.
24900         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalAnsi): impl.
24901         (ves_icall_System_Runtime_InteropServices_Marshal_StringToHGlobalUni): impl.
24902         (ves_icall_System_Runtime_InteropServices_Marshal_DestroyStructure): impl.
24903
24904 Tue Jul 16 19:00:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24905
24906         * reflection.c: fix buglet in parsing an assembly name.
24907
24908 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24909
24910         * marshal.c (emit_ptr_to_str_conv): first impl.
24911
24912 Tue Jul 16 12:39:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
24913
24914         * object.c, class.h: cache the vtable in the class as suggested by
24915         vargaz@freemail.hu (Zoltan Varga).
24916
24917 Tue Jul 16 11:27:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
24918
24919         * class.h, loader.c: added mono_field_from_token().
24920         * verify.c: first cut of type checking code.
24921
24922 2002-07-16  Dietmar Maurer  <dietmar@ximian.com>
24923
24924         * marshal.c (mono_marshal_get_native_wrapper): support valuetypes
24925
24926 2002-07-15  Dietmar Maurer  <dietmar@ximian.com>
24927
24928         * marshal.c (mono_marshal_get_native_wrapper): handle enum types
24929         (fix bug #27782)
24930         (mono_marshal_get_remoting_invoke): impl.
24931         (mono_delegate_begin_invoke): impl.
24932         (mono_mb_emit_save_args): impl.
24933         (mono_delegate_end_invoke): impl.
24934         (mono_marshal_get_delegate_begin_invoke):
24935         (mono_marshal_get_delegate_end_invoke):
24936         (mono_marshal_get_delegate_invoke): generate a special name for
24937         those methods (including the signature) and associate them whith
24938         the delegate class. 
24939
24940 2002-07-13  Gonzalo Paniagua Javier <gonzalo@gnome-db.org>
24941
24942         * reflection.[ch]: 
24943         (mono_reflection_type_from_name): now it has a MonoImage parameter
24944         which is used as the default image to search the type in. If the image
24945         is NULL or getting the type from it fails, it defaults to corlib.
24946
24947         * icall.c: changed 1 call to mono_reflection_type_from_name to match
24948         new parameter.
24949
24950 Sat Jul 13 19:32:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
24951
24952         * reflection.c: update the parameter table index.
24953
24954 Sat Jul 13 17:34:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24955
24956         * domain.c: don't include the mark byte in the string hash.
24957
24958 Sat Jul 13 15:06:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
24959
24960         * icall.cs: icall for Type.GetTypeCode ().
24961         * verify: a couple of fixes and disabled local initialization checks.
24962
24963 2002-07-12  Dietmar Maurer  <dietmar@ximian.com>
24964
24965         * marshal.c: better debugging support (DEBUG_RUNTIME_CODE)
24966
24967         * debug-helpers.c (mono_method_full_name): print the type of the
24968         runtime wrapper
24969
24970         * metadata.c (mono_signature_hash): a hash function for signatures
24971         (mono_signature_hash): better hash algorithm
24972
24973         * marshal.c (mono_marshal_get_delegate_invoke): cache methods by signature
24974
24975         * debug-helpers.c (mono_method_full_name): this can now generate
24976         method names with signatures
24977
24978         * marshal.c (mono_marshal_get_managed_wrapper): bug fix: unmanaged
24979         method dont have this pointers.
24980
24981 Fri Jul 12 11:35:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
24982
24983         * reflection.c: fixup typebuilder tokens.
24984         * image.c: fix buglet.
24985         * marshal.h: remove whitespace.
24986         * metadata.h, metadata.c: reinstate code that was removed.
24987         * verify.c: handle catch directives and fix another couple of bugs.
24988
24989 2002-07-11  Dietmar Maurer  <dietmar@ximian.com>
24990
24991         * marshal.c (mono_marshal_get_native_wrapper): support BOOLEAN
24992         (mono_marshal_get_native_wrapper): make it comp. with the old code
24993         (mono_marshal_get_native_wrapper): support boolean
24994         (mono_marshal_get_managed_wrapper): support more types
24995
24996 2002-06-25  Dietmar Maurer  <dietmar@ximian.com>
24997
24998         * class.c (class_compute_field_layout): compute class->blittable attribute.
24999
25000 2002-07-09  Dick Porter  <dick@ximian.com>
25001
25002         * threads.c: Make the thread cleaning up cope with threads that
25003         call ExitThread()
25004
25005 2002-07-08  Radek Doulik  <rodo@ximian.com>
25006
25007         * reflection.c (method_encode_code): use non-translated values to
25008         compute finally_start, this fixes exception handling on ppc, yay!
25009
25010         * decimal.h (struct signscale): fix endianess
25011
25012 2002-07-07  Radek Doulik  <rodo@ximian.com>
25013
25014         * reflection.c: swap box_val and not val
25015
25016 Mon Jul 8 15:18:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
25017
25018         * reflection.c, reflection.h: handle full assembly info in type name.
25019         Handle Type arguments when loading custom attributes.
25020         * icall.c: updated to use new mono_reflection_type_from_name () method.
25021
25022 2002-07-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25023
25024         * loader.c:
25025         (method_from_memberref): also print assembly name when method not found.
25026
25027 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25028
25029         * icall.c:
25030         (ves_icall_TypeGetProperties): fixed bug #27473. 
25031
25032 2002-07-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25033
25034         * reflection.c: display image name and token when cannot find the
25035         .ctor for an attribute.
25036
25037 2002-07-05  Martin Baulig  <martin@gnome.org>
25038
25039         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
25040
25041 2002-07-04  Dick Porter  <dick@ximian.com>
25042
25043         * threads.c (mono_thread_cleanup): Nasty kludge to get this to
25044         compile on mingw.  This will cause mingw builds to not wait for
25045         subthreads to terminate after the main thread does.  I've lodged a
25046         bug with the mingw developers for them to wrap OpenThread().
25047
25048 2002-07-03  Dick Porter  <dick@ximian.com>
25049
25050         * threads.c: Store thread IDs instead of handles, because
25051         GetCurrentThread() returns a pseudohandle and therefore stores
25052         useless values.  mono_thread_cleanup() continues checking the
25053         array of threads until it is empty, to cope with subthreads
25054         spawning new threads after the main thread has finished.
25055
25056         * profiler.h:
25057         * profiler.c:
25058         * profiler-private.h: Pass the thread ID to thread profiler
25059         functions, instead of a handle
25060
25061 Wed Jul 3 17:43:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25062
25063         * verify.c: fixes to make it more usable.
25064         * pedump.c: added --verify code to verify IL code in an assembly.
25065
25066 Tue Jul 2 20:40:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25067
25068         * reflection.c: turn errors into warnings to allow compiling corlib.
25069
25070 Tue Jul 2 19:33:20 CEST 2002 Paolo Molaro <lupus@ximian.com>
25071
25072         * reflection.c: add special cases to compile corlib.
25073
25074 Mon Jul 1 18:00:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
25075
25076         * reflection.c: handle properties with only a set method.
25077
25078 Mon Jul 1 17:11:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25079
25080         * opcodes.h: add enum with opcodes in opval order.
25081
25082 2002-07-01  Dick Porter  <dick@ximian.com>
25083         
25084         * object.h:
25085         * object.c (mono_runtime_run_main): Removed unneeded argument
25086
25087 2002-06-28  Martin Baulig  <martin@gnome.org>
25088
25089         * debug-symfile.c: Reflect latest MonoDwarfFileWriter changes.
25090
25091 2002-06-27  Dick Porter  <dick@ximian.com>
25092
25093         * threads.c: Store the handle in both the parent thread and in the
25094         subthread, to minimise the time between starting a new thread and
25095         storing its ID.
25096
25097 2002-06-26  Dick Porter  <dick@ximian.com>
25098
25099         * appdomain.c (mono_runtime_cleanup): Close the socket library
25100         after all the threads have finished, not before
25101
25102 2002-06-26  Martin Baulig  <martin@gnome.org>
25103
25104         * debug-symfile.c (mono_debug_find_source_location): Added
25105         `guint32 *line_number' argument.  If it's not NULL, store the line number
25106         there and return the file name without the line number.
25107
25108 2002-06-25  Dick Porter  <dick@ximian.com>
25109
25110         * icall.c:
25111         * process.h:
25112         * process.c: Process forking and other support functions
25113
25114 2002-06-25  Dick Porter  <dick@ximian.com>
25115
25116         * image.c (do_mono_image_open): Set ref_count to 1, so that bad
25117         things dont happen when the image is closed.
25118         (mono_image_lookup_resource): Walk the resource section looking
25119         for a particular entry
25120
25121         * cil-coff.h: PE resource section decoding
25122
25123 2002-06-25  Dick Porter  <dick@ximian.com>
25124         
25125         * assembly.h:
25126         * assembly.c: 
25127         (mono_assembly_foreach): Accessor functions to walk the list of
25128         loaded assemblies
25129         (mono_assembly_set_main):
25130         (mono_assembly_get_main): Process methods need to know which
25131         assembly is the "main" one
25132
25133         * object.c (mono_runtime_run_main): Record the main assembly
25134
25135         * debug-helpers.c: Fix typo
25136
25137 2002-06-24  Dietmar Maurer  <dietmar@ximian.com>
25138
25139         * icall.c (ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged): impl.
25140         (ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged): impl.
25141
25142 Sat Jun 22 11:37:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
25143
25144         * icall.c: fix off-by-one in Assembly.GetTypes() reported by bob@karr.ath.cx.
25145
25146 2002-06-21  Miguel de Icaza  <miguel@ximian.com>
25147
25148         * image.c (do_mono_image_open): Initialize reference count,
25149         otherwise we leak the MonoImage.
25150
25151 Fri Jun 21 19:16:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
25152
25153         * reflection.c: small tweak to handle self-hosting.
25154
25155 Thu Jun 20 23:28:13 CEST 2002 Paolo Molaro <lupus@ximian.com>
25156
25157         * reflection.c: fix type name parse code.
25158
25159 Thu Jun 20 19:24:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
25160
25161         * reflection.c: break out of the loop.
25162         * image.c: special case corlib.
25163
25164 Thu Jun 20 16:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25165
25166         * reflection.c: add all the custom attrs at the end to ensure the
25167         ctors have been properly initialized when the attributes are defined
25168         in the current assembly.
25169
25170 Thu Jun 20 13:46:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
25171
25172         * reflection.c: handle correctly multiple-nested types.
25173
25174 Thu Jun 20 11:49:00 CEST 2002 Paolo Molaro <lupus@ximian.com>
25175
25176         * row-indexes.h: fix typos.
25177         * reflection.c: adjust for typos and fix method_def_or_ref
25178         encoding in MethodImpl table.
25179
25180 Wed Jun 19 21:57:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25181
25182         * reflection.c: fix entry point patching (thanks Serge!).
25183
25184 2002-06-18  Dietmar Maurer  <dietmar@ximian.com>
25185
25186         * verify.c: add check for System.Exception
25187
25188 Mon Jun 17 20:23:23 CEST 2002 Paolo Molaro <lupus@ximian.com>
25189
25190         * image.c, class.c: minifix for code just c&p'ed.
25191         * reflection.c: warning fix.
25192         * object.h, loader.h, domain.c: load also StringBuilder.
25193
25194 Mon Jun 17 17:29:40 CEST 2002 Paolo Molaro <lupus@ximian.com>
25195
25196         * marshal.h, marshal.c: some support code to handle complex marshaling.
25197
25198 Mon Jun 17 16:32:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25199
25200         * class.h, class.c, reflection.c: handle ignorecase in GetType ().
25201         Better signatures with vtable error dump.
25202
25203 Mon Jun 17 16:13:35 CEST 2002 Paolo Molaro <lupus@ximian.com>
25204
25205         * reflection.c, reflection.h, icall.c: fixes for multiple-nested types.
25206
25207 2002-06-17  Dietmar Maurer  <dietmar@ximian.com>
25208
25209         * icall.c (ves_icall_Type_GetField): impl.
25210
25211 Mon Jun 17 16:08:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25212
25213         * metadata.h, metadata.c: added mono_metadata_get_marshal_info()
25214         to retrieve a marshal description blob for a field or param.
25215
25216 Mon Jun 17 14:57:03 CEST 2002 Paolo Molaro <lupus@ximian.com>
25217
25218         * reflection.h, reflection.c: change order of nested type emission
25219         to avoid table corruption. The NestedTypes table is sorted.
25220         * icall.c: change order of GetConstructor results to workaround mcs bug.
25221
25222 Fri Jun 14 16:24:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25223
25224         * reflection.h, reflection.c: handle field and param marshal
25225         information.
25226
25227 Wed Jun 12 16:30:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
25228
25229         * icall.c, marshal.c marshal.h: more Marshal class implementation.
25230
25231 Tue Jun 11 17:29:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
25232
25233         * reflection.c: fix call convention.
25234
25235 Tue Jun 11 16:52:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
25236
25237         * reflection.h, reflection.c: mono_image_get_memberref_token()
25238         takes a type instead of a class, now. Added
25239         mono_image_get_array_token() to create tokens for the special
25240         multi-dim array methods.
25241
25242 Tue Jun 11 13:21:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
25243
25244         * assembly.c: handle modules (no assembly table). Split
25245         loading references in its own function.
25246         * class.c: handle moduleref resolution scope.
25247         * image.c, image.h: cache module name in image.
25248
25249 2002-06-07  Martin Baulig  <martin@gnome.org>
25250
25251         * reflection.c (mono_image_get_type_info): Only add a class layout entry
25252         if we actually have a `tb->class_size' (ie. it's not UnspecifiedTypeSize).
25253
25254 Fri Jun 7 22:07:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
25255
25256         * icall.c: more signature fixes that used uint instead of int.
25257
25258 Fri Jun 7 20:41:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25259
25260         * reflection.c: fixed signature of field refs.
25261
25262 Fri Jun 7 19:41:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25263
25264         * class.c, reflection.c: handle typerefs of nested types
25265         (both on read and when writing files).
25266
25267 Fri Jun 7 17:46:50 CEST 2002 Paolo Molaro <lupus@ximian.com>
25268
25269         * icall.c: fix method signatures that tried to workaround the previous
25270         typo, d'oh!
25271
25272 Fri Jun 7 17:36:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
25273
25274         * debug-helpers.c: fix typo.
25275
25276 Fri Jun 7 17:00:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
25277
25278         * cil-coff.h, icall.c, image.c, reflection.c, reflection.h:
25279         rewrote the PE/COFF writing code (our programs are understood by the
25280         ms runtime, now).
25281
25282 Tue Jun 4 18:10:47 CEST 2002 Paolo Molaro <lupus@ximian.com>
25283
25284         * gc.c, gc.h, icall.c: weakreference support.
25285
25286 Tue Jun 4 16:06:19 CEST 2002 Paolo Molaro <lupus@ximian.com>
25287
25288         * Makefile.am, mono-config.c: use $(sysconfdir).
25289
25290 Mon Jun 3 13:13:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
25291
25292         * icall.c: changed default precision of Double.ToString() to 15.
25293         Fixed memory leak. Unified with Single.ToString.
25294
25295 Sat Jun 1 14:26:45 CEST 2002 Paolo Molaro <lupus@ximian.com>
25296
25297         * sysmath.c: workaround systems missing NAN and/or HUGE_VAL.
25298
25299 Sat Jun 1 13:46:54 CEST 2002 Paolo Molaro <lupus@ximian.com>
25300
25301         * pedump.c, appdomain.c, appdomain.h, assembly.c, domain.c,
25302         gc.c, icall.c, image.c, mono-config.c, reflection.c: killed
25303         warnings and compilation fixes from Dennis Haney (davh@davh.dk)
25304         and myself.
25305
25306 Fri May 31 16:58:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25307
25308         * debug-symfile.c, sysmath.c: yet more compilation fixes.
25309
25310 Fri May 31 16:35:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25311
25312         * reflection.c, socket-io.c: more compilation fixes.
25313
25314 Fri May 31 15:58:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25315
25316         * appdomain.c, class.c, class.h, debug-symfile.c, decimal.c,
25317         domain.c, loader.c, object.c, object.h, reflection.c, string-icalls.h,
25318         unicode.c: warning and compiler compatibility fixes.
25319
25320 Fri May 31 15:36:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25321
25322         * class.h, metadata.c: fixed warnings/compilation errors.
25323
25324 Fri May 31 13:08:25 CEST 2002 Paolo Molaro <lupus@ximian.com>
25325
25326         * Makefile.am, mono-config.c, mono-config.h: configuration file
25327         support routines.
25328         * loader.c, loader.h: make Dll mapping configurable at runtime in the
25329         config file. Export methods to insert and lookup mappings.
25330
25331 Fri May 31 12:45:38 CEST 2002 Paolo Molaro <lupus@ximian.com>
25332
25333         * reflection.c: handle types and boxed objects in custom attr
25334         constructors.
25335
25336 2002-05-30  Martin Baulig  <martin@gnome.org>
25337
25338         * debug-symfile.c
25339         (ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token): Removed.
25340
25341 Thu May 30 14:15:02 CEST 2002 Paolo Molaro <lupus@ximian.com>
25342
25343         * metadata.c, metadata.h: added mono_metadata_implmap_from_method()
25344         to lookup the implmap row for a P/Invoke method.
25345         * loader.c: added mono_lookup_pinvoke_call(): we only lookup a
25346         P/Invoke method from the runtime on an as needed basis.
25347
25348 2002-05-28  Dietmar Maurer  <dietmar@ximian.com>
25349
25350         * metadata.c (mono_metadata_parse_signature): impl.
25351
25352 Tue May 28 16:02:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25353
25354         * class.c: handle .pack directive.
25355
25356 Tue May 28 11:04:46 CEST 2002 Paolo Molaro <lupus@ximian.com>
25357
25358         * object.c: initialize static fields with RVA data.
25359
25360 2002-05-25  Martin Baulig  <martin@gnome.org>
25361
25362         * debug-symfile.c
25363         (ves_icall_Debugger_DwarfFileWriter_get_type_token): Removed.
25364
25365 2002-05-24  Martin Baulig  <martin@gnome.org>
25366
25367         * debug-symfile.c
25368         (ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig): Removed.
25369         (ves_icall_Debugger_MonoSymbolWriter_method_from_token): Renamed to
25370         `ves_icall_Debugger_MonoSymbolWriter_method_builder_from_token'.
25371
25372 Thu May 23 18:44:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25373
25374         * object.c: special case string ctros in invoke.
25375         * gc.c: silly whitespace changes.
25376
25377 2002-05-23  Dietmar Maurer  <dietmar@ximian.com>
25378
25379         * threadpool.[ch]: impl. a threadpool that can
25380         be used by mint and mono.
25381
25382 2002-05-22  Martin Baulig  <martin@gnome.org>
25383
25384         * debug-symfile.c (ves_icall_Debugger_MonoSymbolWriter_method_from_token):
25385         The first argument is now a `MonoReflectionModuleBuilder *', the return
25386         value is a `MonoReflectionModuleBuilder *'.  Use the AssemblyBuilder's
25387         `methods' field to get the method builder.  The `token' argument is the
25388         unfixed token.
25389
25390         * unicode.c (iconv_get_length, iconv_convert): Silently ignore all
25391         invalid characters instead of g_assert_not_reached()ing.  This seems
25392         to be the behaviour of mscorlib.
25393
25394 2002-05-22  Dietmar Maurer  <dietmar@ximian.com>
25395
25396         * object.c (mono_runtime_invoke_array): applied patch from Rachel
25397         Hestilow to fix bug #25104
25398
25399 2002-05-21  Martin Baulig  <martin@gnome.org>
25400
25401         * debug-symfile.c (mono_debug_find_source_location): New function.
25402         Looks up an IL offset in the line number table and returns the source
25403         location as a string.
25404
25405 2002-05-21  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25406
25407         * icall.c:
25408         (mono_double_ToStringImpl): changed %f by %g until we have something
25409         better.
25410
25411 2002-05-21  Nick Drochak  <ndrochak@gol.com>
25412
25413         * icall.c : Use different name for Math.Pow's icall.  Needed to check
25414         parameters first in C#.
25415
25416 Mon May 20 17:36:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25417
25418         * icall.c, reflection.h: added icall to get info about an event.
25419
25420 2002-05-20  Radek Doulik  <rodo@ximian.com>
25421
25422         * object.c (mono_value_box): don't use memcpy for boxing on BIG
25423         endian
25424         (mono_value_box): don't use memcpy for small sizes on
25425         architectures with unaligned access
25426
25427 2002-05-20  Martin Baulig  <martin@gnome.org>
25428
25429         * reflection.c (mono_reflection_setup_internal_class): Don't crash
25430         if `tb->parent == NULL'.
25431         (mono_reflection_create_internal_class): New function.  This is
25432         called from TypeBuilder.CreateType() and sets `klass->enum_basetype'
25433         for enum types.
25434
25435         * icall.c ("System.Reflection.Emit.TypeBuilder::create_internal_class"):
25436         New interncall.
25437
25438 2002-05-19  Martin Baulig  <martin@gnome.org>
25439
25440         * unicode.c (ves_icall_iconv_get_bytes): Actually use the `charCount'
25441         argument to get the length, don't default to the array length.
25442
25443 2002-05-18  Miguel de Icaza  <miguel@ximian.com>
25444
25445         * assembly.c (mono_assembly_setrootdir): New function used to
25446         override the MONO_ASSEMBLIES directory.
25447
25448 Fri May 17 20:39:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
25449
25450         * icall.c: ValueType_GetHashCode() initialize local var.
25451
25452 Thu May 16 17:20:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
25453
25454         * reflection.c: sort custom attributes table.
25455
25456 Thu May 16 16:08:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
25457
25458         * reflection.c: support named args in custom attributes (write support).
25459
25460 Thu May 16 13:04:59 CEST 2002 Paolo Molaro <lupus@ximian.com>
25461
25462         * reflection.c: fix finally position calculation.
25463
25464 2002-05-15  Radek Doulik  <rodo@ximian.com>
25465
25466         * reflection.c: fixed endianess at many places
25467
25468         * icall.c (ves_icall_InitializeArray): comment out debug msg
25469
25470 2002-05-15  Dietmar Maurer  <dietmar@ximian.com>
25471
25472         * object.c (mono_unhandled_exception): new function to handle
25473         unhandled exceptions.
25474         (mono_unhandled_exception): call the UnhandledException event.
25475         (mono_runtime_delegate_invoke): impl.
25476
25477 Wed May 15 15:59:55 CEST 2002 Paolo Molaro <lupus@ximian.com>
25478
25479         * metadata.h, metadata.c, class.c: mono_metadata_field_info ()
25480         returns the RVA, not the direct pointer to the data. Handle the case
25481         when the class size is fixed.
25482
25483 Tue May 14 16:59:44 CEST 2002 Paolo Molaro <lupus@ximian.com>
25484
25485         * reflection.c: fix some endianess issues.
25486
25487 2002-05-14  Dietmar Maurer  <dietmar@ximian.com>
25488
25489         * object.c (mono_runtime_invoke): is now able to catch exceptions.
25490
25491         * threads.c (mono_thread_init): added a callback which is invoked
25492         at thread start.
25493
25494 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
25495         
25496         * icall.c: make GetHashCode return non-negative values.
25497
25498 2002-05-14  Dan Lewis  <dihlewis@yahoo.co.uk>
25499
25500         * object.c, icall.c, gc.c: revert to address-based hashcode.
25501
25502 2002-05-13  Miguel de Icaza  <miguel@ximian.com>
25503
25504         * icall.c (mono_double_ParseImpl): Added ParseImpl method.
25505
25506 Mon May 13 16:40:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25507
25508         * icall.c, class.c: special case <Module>.
25509
25510 2002-05-13  Dan Lewis  <dihlewis@yahoo.co.uk>
25511
25512         * icall.c: fix bug in GetNow().
25513
25514 2002-05-11  Dietmar Maurer  <dietmar@ximian.com>
25515
25516         * object.c (mono_runtime_class_init): make sure that we call all
25517         static class constructors.
25518
25519 Fri May 10 18:14:51 CEST 2002 Paolo Molaro <lupus@ximian.com>
25520
25521         * reflection.c: sort methodsemantics table.
25522
25523 Fri May 10 16:31:49 CEST 2002 Paolo Molaro <lupus@ximian.com>
25524
25525         * reflection.h, reflection.c: honour init locals setting.
25526
25527 Thu May 9 18:50:00 EDT 2002 Daniel Morgan <danmorg@sc.rr.com>
25528
25529         * icall.c: copied Double ToStringImpl for Single ToStringImpl
25530
25531 Wed May 8 12:28:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25532
25533         * reflection.c: support ContructorBuilders in attribute blob creation.
25534
25535 Wed May 8 12:06:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25536
25537         * reflection.c: some changes to build a binary that can be run
25538         directly in windows.
25539
25540 Mon May 6 13:10:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
25541
25542         * loader.c: print a big message when an icall can't be found.
25543
25544 2002-05-06  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25545
25546         * string-icalls.c: fix bug 24248.
25547
25548 Sat May 4 14:03:21 CEST 2002 Paolo Molaro <lupus@ximian.com>
25549
25550         * appdomain.c, appdomain.h, assembly.c, assembly.h, image.h,
25551         icall.c, reflection.h: separate assembly loading by pathname and by
25552         assembly name. Use the MONO_PATH env var to search for assemblies.
25553
25554 Thu May 2 17:56:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25555
25556         * assembly.c, image.h: add some support for assemblies
25557         with multiple modules.
25558         * class.c, class.h: export mono_class_from_typeref().
25559         * loader.c: remove duplicated code and use mono_class_from_typeref(),
25560         instead.
25561
25562 Thu May 2 15:51:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25563
25564         * unicode.c: Char.IsNumber doesn't include hex digits as the ms
25565         documentation says (the ECMA one is correct).
25566
25567 2002-05-02  Dick Porter  <dick@ximian.com>
25568
25569         * threads.c: Use GC_debug_register_finalizer with GC_debug_malloc.
25570         Don't name the synchronisation mutex.
25571
25572 2002-04-30  Jeffrey Stedfast  <fejj@ximian.com>
25573
25574         * rand.c
25575         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetBytes):
25576         Make the prototypes match.
25577         (ves_icall_System_Security_Cryptography_RNGCryptoServiceProvider_GetNonZeroBytes):
25578         Same.
25579
25580         * icall.c
25581         (ves_icall_System_CurrentTimeZone_GetTimeZoneData): Fixed for
25582         systems that use 'timezone' rather than tm.tm_gmtoff. Also, not
25583         all systems have tm.tm_zone, so use strftime() with %Z to print
25584         the timezone abreviation into a temp string.
25585
25586         * object.c (mono_ldstr): Fixed to use mono_string_chars() macro
25587         rather than mono_array_addr() on a MonoString on Big Endian
25588         machines.
25589
25590 2002-04-30  Dietmar Maurer  <dietmar@ximian.com>
25591
25592         * string-icalls.c (ves_icall_System_String_InternalReplace_Str):
25593         fix bug 24041
25594
25595 2002-04-30  Dick Porter  <dick@ximian.com>
25596
25597         * socket-io.c: Cope with SOCKET being an integer rather than a
25598         pointer now.
25599
25600         * threads.c: Added Thread_free_internal, to deal with thread
25601         handle cleanup.  Moved calls to handle_store() and handle_remove()
25602         to start_wrapper(), so each can only be called once.  Allocate
25603         synchronisation blocks with GC_malloc(), and use GC finalisation
25604         to close the handles.
25605
25606         * icall.c: added System.Threading.Thread::Thread_free_internal
25607
25608 Mon Apr 29 15:33:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25609
25610         * icall.c: support Environment.Exit, CommandLineArgs().
25611
25612 Mon Apr 29 15:15:57 CEST 2002 Paolo Molaro <lupus@ximian.com>
25613
25614         * object.c, object.h: added mono_runtime_run_main () and
25615         mono_runtime_get_main_args () for use in System.Environment.
25616
25617 Mon Apr 29 13:45:11 CEST 2002 Paolo Molaro <lupus@ximian.com>
25618
25619         * gc.c: fix thinko, enable actual finalization since the jit is now
25620         fixed.
25621
25622 Mon Apr 29 12:47:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25623
25624         * gc.c, object.c: take into account that an object may be offset wrt the address
25625         returned by GC_malloc().
25626
25627 Mon Apr 29 12:14:39 CEST 2002 Paolo Molaro <lupus@ximian.com>
25628
25629         * image.c: handle files without entries in the assembly table (modules).
25630
25631 2002-04-28 Patrik Torstensson <patrik.torstensson@intel.com>
25632
25633         * reflection.c (mono_reflection_setup_internal_class): remove g_assert_not_reached() to allow 
25634         mcs selfhosting again (build breaker) and did move the check to class instead. parent is
25635         allowed to be null when it's System.Object class setup.
25636
25637 2002-04-27  Martin Baulig  <martin@gnome.org>
25638
25639         * reflection.c (mono_reflection_setup_internal_class): g_assert_not_reached()
25640         if `tb->parent == NULL' rather than crashing.
25641
25642 2002-04-28  Nick Drochak  <ndrochak@gol.com>
25643
25644         * sysmath.c (ves_icall_System_Math_Asin): Fix copy-paste error.  Was
25645         calling acos() where asin() should have been called.
25646
25647 2002-04-26  Martin Baulig  <martin@gnome.org>
25648
25649         * assembly.c (default_assembly_name_resolver): Use G_FILE_TEST_IS_REGULAR
25650         instead of G_FILE_TEST_EXISTS - if you're in mcs/class/corlib/System/Test,
25651         there's a subdirectory called `System', but we don't want to read that
25652         subdirectory as an assembly.
25653
25654 2002-04-25  Martin Baulig  <martin@gnome.org>
25655
25656         * debug-symfile.c: Reflect latest MonoString changes.
25657
25658 Thu Apr 25 16:38:01 CEST 2002 Paolo Molaro <lupus@ximian.com>
25659
25660         * rand.c, rand.h: instance method icalls need to have an explicit
25661         this pointer as first argument in the C implementation.
25662
25663 2002-04-25  Nick Drochak <ndrochak@gol.com>
25664
25665         * icall.c: Fix typo in map for GetNonZeroBytes
25666
25667 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25668
25669         * string-icalls.c : String does now passes unit tests without any 
25670         errors, the following changes has been made:
25671         
25672         Implemented replace methods.
25673         Renaming of methods to (try) follow the standard.
25674         Fixed compare ordinal
25675         Made all memory allocated directly to function instead of via icall function.
25676         Small performance fix in is_in_array function
25677                         
25678  (2002-04-23) Changes from Duncan Mak <duncan@ximian.com>
25679
25680         c (mono_string_Internal_ctor_charp_int_int):
25681         (mono_string_Internal_ctor_sbytep_int_int):  Removed check for
25682         sindex < 0, throw ArgumentOutOfRangeException instead of
25683         ArgumentNullException.
25684
25685         Added new check for length == 0, however
25686         I need to make it return String.Empty from the C code.
25687         
25688         (mono_string_Internal_ctor_sbytep): Use mono_string_new, and let
25689         that calculate the length for us here.
25690         
25691         (mono_string_Internal_ctor_sbytep_int_int): Replaced
25692         mono_string_new_utf16 with mono_string_new, since value is utf8.
25693
25694 Wed Apr 24 18:43:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25695
25696         * object.c: register the object for finalization if needed.
25697         Allocate one more char in the string for the terminating 0 char.
25698
25699 Wed Apr 24 18:22:27 CEST 2002 Paolo Molaro <lupus@ximian.com>
25700
25701         * class.c, class.h, image.c: check if a type implemenst a destructor.
25702         Use the proper key for array class lookups.
25703         * icall.c: register the icalls in the System.GC class.
25704         * gc.c, gc.h: GC-related functions and icalls.
25705
25706 2002-04-24  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25707
25708         * icall.c:
25709         * socket-io.c:
25710         * unicode.c: free some strings gotten from mono_string_to_utf8 and
25711         changed a couple of free () by g_free ().
25712
25713         * decimal.c: one-liner in the comments for decimal2string ().
25714
25715 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25716
25717         * object.c (mono_runtime_invoke_array) : Bug because of my incompetence.
25718
25719 2002-04-24      Patrik Torstensson <patrik.torstensson@labs2.com>
25720
25721         * reflection.c (mono_reflection_get_custom_attrs) : fixed image bug (crash)
25722         * object.c (mono_runtime_invoke_array) : handle null in params
25723
25724 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25725
25726         * string-icalls.c: fixed bug in split (one off bug)
25727
25728 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25729
25730         * string-icalls.c: fixed bug in remove and lastindexofany, add equals icall.
25731         * icalls.c: added String::Equals as internal method
25732
25733 2002-04-23      Patrik Torstensson <patrik.torstensson@labs2.com>
25734
25735         * threads.c: fixed bug in the double interlocked functions
25736
25737 2002-04-22      Patrik Torstensson <patrik.torstensson@labs2.com>
25738
25739         * threads.c: implemented all of the new interlocked icalls.
25740         * string-icalls.c: fix a bug in insert.
25741         * icalls.c: added the icalls for interlocked, removed old string functions.
25742         
25743 Mon Apr 22 19:44:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25744
25745         * loader.c: fix off-by-one error when reading argument names.
25746
25747 Mon Apr 22 19:28:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25748
25749         * profiler.c: win32 counter implementation (untested).
25750         * icall.cs: win32 GetNow() and GetTimeZoneData() implementations
25751         (the latter needs testing and more complete impl. from win32 folks).
25752
25753 2002-04-21  Dan Lewis  <dihlewis@yahoo.co.uk>
25754
25755         * object.c: mono_array_new_full workaround mono_array_class_get
25756         problem.
25757
25758 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25759
25760         * string-icalls.c (mono_string_InternalRemove): Fixed overwrite bug.
25761         * object.h (mono_string_chars): Changed casting type.
25762
25763 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25764
25765         * string-icalls.c: Fixed trim method, added the constructors done by Duncan, fixed
25766                            method signatures to use gunichar2 instead of gint16.
25767
25768 2002-04-20  Dan Lewis  <dihlewis@yahoo.co.uk>
25769
25770         * object.h, object.c: domain-specific versions of mono_object_new and
25771         mono_array_new.
25772
25773 2002-04-20  Dietmar Maurer  <dietmar@ximian.com>
25774
25775         * object.c: changed String layout
25776
25777         * string-icalls.c (mono_string_Internal_ctor_chara): added
25778         internal string constructors.
25779
25780 Sat Apr 20 13:33:07 CEST 2002 Paolo Molaro <lupus@ximian.com>
25781
25782         * threads.c: pass 'this' to the thread start routine.
25783
25784 2002-04-20  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25785
25786         * string-icalls.c: fix IndexOf and LastIndexOf. Now
25787         InternalCompareStr don't call twice mono_string_cmp_char for the last
25788         character. Improved performance in mono_string_cmp_char.
25789
25790 Fri Apr 19 19:26:28 CEST 2002 Paolo Molaro <lupus@ximian.com>
25791
25792         * Makefile.am, appdomain.c, class.c, object.c: split runtime-depended
25793         code into its own library: libmonoruntime.
25794
25795 2002-04-19  Dan Lewis  <dihlewis@yahoo.co.uk>
25796
25797         * object.h, object.c: changed array format so that szarrays do not
25798         require a bounds structure.
25799         * icall.c, appdomain.c: support for new szarray format.
25800
25801 Fri Apr 19 18:04:34 CEST 2002 Paolo Molaro <lupus@ximian.com>
25802
25803         * metadata.c: compare also the retuns type when comparing signatures:
25804         we didn't do this as an optimization since really overloaded methods
25805         must differ also in the arguments, but this doesn't work with
25806         low-level IL code (or when using explicit conversion operators: see
25807         bug#23498 for an example).
25808
25809 Fri Apr 19 16:14:52 CEST 2002 Paolo Molaro <lupus@ximian.com>
25810
25811         * loader.c: SZARRAY types can be saved as TYPESPEC, too.
25812
25813 Thu Apr 18 17:15:09 CEST 2002 Paolo Molaro <lupus@ximian.com>
25814
25815         * icall.c: make MonoType::GetElementType its own icall.
25816
25817 Thu Apr 18 16:41:30 CEST 2002 Paolo Molaro <lupus@ximian.com>
25818
25819         * icall.c: remove MonoMethod_get_Name().
25820         * reflection.c, reflection.h, verify: cache the method name in the MonoMethod
25821         object.
25822
25823 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25824
25825         * string-icalls.c: optimized a few methods.
25826
25827 2002-04-17      Patrik Torstensson <patrik.torstensson@labs2.com>
25828
25829         * icall.c: added all new string internal calls
25830         * string-icalls.c: added, new string internal call implementation.
25831         * object.c: added mono_string_new_size for allocating a string a size
25832
25833 2002-04-17  Dietmar Maurer  <dietmar@ximian.com>
25834
25835         * object.c (mono_object_isinst): use the same code as in the
25836         optimized x86 version.
25837
25838 Wed Apr 17 14:14:36 CEST 2002 Paolo Molaro <lupus@ximian.com>
25839
25840         * profiler.c: TSC-based timer code (faster and more accurate).
25841         Not hooked up in configure, yet (set USE_X86TSC to 1).
25842
25843 Wed Apr 17 12:33:10 CEST 2002 Paolo Molaro <lupus@ximian.com>
25844
25845         * profiler.c, profiler.h: track time spent compiling methods.
25846         * threads.c: track thread creation/destruction.
25847
25848 Tue Apr 16 20:08:43 CEST 2002 Paolo Molaro <lupus@ximian.com>
25849
25850         * profiler.c, profiler.h, profiler-private.h: profiling interface
25851         and sample implementation. Moved here so that it can be used also by
25852         the jit.
25853
25854 Tue Apr 16 12:58:12 CEST 2002 Paolo Molaro <lupus@ximian.com>
25855
25856         * reflection.c, reflection.h: keep types and other handles separate in
25857         the hash tables for referred tokens. Add guid for modules.
25858
25859 Mon Apr 15 11:37:33 CEST 2002 Paolo Molaro <lupus@ximian.com>
25860
25861         * assembly.c: fix bugs found with valgrind.
25862         * metadata.h, metadata.c: added mono_metadata_guid_heap().
25863
25864 2002-04-14      Patrik Torstensson <patrik.torstensson@labs2.com>
25865
25866         * threads: added icall support for getting current domain for
25867                    the thread.
25868  
25869 2002-04-13  Martin Baulig  <martin@gnome.org>
25870
25871         * debug-symfile.h (MonoDebugLocalInfo): Renamed to MonoDebugVarInfo.
25872         (MonoDebugVarInfo): Added `index' field for register based addresses.
25873         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 9.
25874         (MonoDebugMethodInfo): Replaced `guint32 *param_offsets' with
25875         `MonoDebugVarInfo *params' and `guint32 this_offset' with
25876         `MonoDebugVarInfo *this_var'.
25877
25878         * debug-symfile.c (relocate_variable): New static function to write
25879         a location description for a local variable or method parameter.
25880
25881 2002-04-12  Martin Baulig  <martin@gnome.org>
25882
25883         * debug-symfile.h (MonoDebugLocalInfo): New type. This contains the
25884         stack offset and begin/end scope address of a local variable.
25885         (MonoDebugMethodInfo): Replaced `guint32 *local_offsets' with
25886         'MonoDebugLocalInfo *locals', added `prologue_end' and `epilogue_begin'.
25887         (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 8.
25888
25889         * debug-symfile.c (MRT_variable_start_scope, MRT_variable_end_scope):
25890         Added new relocation types for start/end scope of a local variable.
25891
25892 Fri Apr 12 18:30:29 CEST 2002 Paolo Molaro <lupus@ximian.com>
25893
25894         * object.h: add mono_object_domain() macro.
25895         * reflection.c: handle typespecs.
25896         * icall.c: MonoMethod::get_Name() implementation.
25897
25898 Thu Apr 11 12:29Ni:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25899
25900         * icall.c: String::GetHashCode() icall implementation.
25901
25902 Wed Apr 10 21:16:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25903
25904         * icall.c: String::IndexOfAny icall.
25905         * object.c, object.h: make array->max_length more useful.
25906         Intrduced mono_object_class() and mono_string_length() macros.
25907
25908 2002-04-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25909
25910         * unicode.c (ves_icall_System_Char_IsNumber): use g_unichar_isxdigit
25911         instead of g_unichar_isdigit.
25912
25913 2002-04-11  Nick Drochak  <ndrochak@gol.com>
25914
25915         * icall.c: Implement a simple Double.ToString().
25916
25917 Tue Apr 9 21:31:16 CEST 2002 Paolo Molaro <lupus@ximian.com>
25918
25919         * appdomain.h: only io-layer.h is supposed to be included.
25920         * icall.c: explicitly import environ. Fix warning.
25921
25922 2002-04-10  Nick Drochak  <ndrochak@gol.com>
25923
25924         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData) :
25925                 return true even if it's not Daylight Savings time.
25926                 Only return false for the case where the function isn't
25927                 implemented for a plaform (read Windows).
25928
25929 Tue Apr 9 13:05:56 CEST 2002 Paolo Molaro <lupus@ximian.com>
25930
25931         * appdomain.h, appdomain.c, class.c, object.c: protect MonoDomain
25932         data with a mutex.
25933
25934 2002-04-09  Dietmar Maurer  <dietmar@ximian.com>
25935
25936         * mempool.c (mono_mempool_alloc): only use g_malloc when
25937         absolutely necessary.
25938
25939 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25940
25941         * mempool.c (MEM_ALIGN): hardcode MEM_ALIGN to 8
25942
25943         * class.c (mono_class_vtable): use domain mempool to allocate vtable
25944         (mono_class_proxy_vtable): use domain mempool
25945
25946 Mon Apr 8 17:17:04 CEST 2002 Paolo Molaro <lupus@ximian.com>
25947
25948         * appdomain.h, appdomain.c: split initialization that requires the
25949         execution engine support into mono_runtime_init().
25950
25951 2002-04-08  Dietmar Maurer  <dietmar@ximian.com>
25952
25953         * class.c (mono_class_init): don't include vtable inside MonoClass
25954         to save some memory, gather some statistics.
25955         (mono_class_vtable): use g_malloc instead of GC_malloc when possible
25956
25957 Sat Apr 6 20:07:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25958
25959         * icall.c: internalcall implementation for ValueType.Equals().
25960
25961 2002-04-06  Dietmar Maurer  <dietmar@ximian.com>
25962
25963         * object.c (mono_message_init): moved 
25964         (mono_runtime_exec_main): new arch. independent impl.
25965         (mono_runtime_invoke_array): new method - like
25966         mono_runtime_invoke, but you can pass an array of objects.
25967         (mono_remoting_invoke): new arch. independent impl.
25968         (mono_message_invoke): new arch. independent impl.
25969         (mono_runtime_class_init): new arch. independent impl.
25970         (mono_runtime_object_init): new arch. independent impl.
25971
25972 Fri Apr 5 18:29:14 CEST 2002 Paolo Molaro <lupus@ximian.com>
25973
25974         * metadata.c, object.c, reflection.c: documented the exported
25975         functions.
25976
25977 Fri Apr 5 15:42:31 CEST 2002 Paolo Molaro <lupus@ximian.com>
25978
25979         * icall.c: simpler code to pass the assembly builder data to corlib.
25980         Implement GetNestedTypes() internalcall.
25981
25982 Thu Apr 4 21:46:48 CEST 2002 Paolo Molaro <lupus@ximian.com>
25983
25984         * class.c: warn if a type can't be loaded.
25985
25986 2002-04-04  Dietmar Maurer  <dietmar@ximian.com>
25987
25988         * image.h: typedef MonoImageOpenStatus
25989         * types.h: removed unused file
25990         
25991 2002-04-04  Dan Lewis  <dihlewis@yahoo.co.uk>
25992
25993         * icall.c: Enum_ToObject accepts enum value arguments.
25994
25995 Thu Apr 4 11:35:37 CEST 2002 Paolo Molaro <lupus@ximian.com>
25996
25997         * class.c: move initialization of properties, events and nested
25998         classes, so that they happen for interfaces, too.
25999
26000 Wed Apr 3 20:03:32 CEST 2002 Paolo Molaro <lupus@ximian.com>
26001
26002         * icall.c: cleanup some ugly casts in Array_SetValue*.
26003
26004 Wed Apr 3 19:49:53 CEST 2002 Paolo Molaro <lupus@ximian.com>
26005
26006         * icall.c: the values array fro enums is of the correct type, now.
26007         Implement (correctly) getFullName instead of assQualifiedName for
26008         MonoType.
26009         * reflection.h, reflection.c: added mono_type_get_name ().
26010
26011 Wed Apr 3 17:56:22 CEST 2002 Paolo Molaro <lupus@ximian.com>
26012
26013         * assembly.c, image.h: for each MonoImage, record from wich assembly
26014         it was loaded.
26015         * reflection.h, icall.c: added System_Reflection_Assembly_GetTypes().
26016         Make Type.Assembly work.
26017
26018 2002-04-03  Dietmar Maurer  <dietmar@ximian.com>
26019
26020         * debug-symfile.h: use char* instead of gpointer to avoid
26021         unnecessary casts.
26022
26023         * appdomain.c (mono_jit_info_table_find): use char* instead of gpointer
26024
26025         * icall.c (ves_icall_InternalExecute): impl. FielSetter
26026         (ves_icall_System_Array_SetValueImpl): removed strange MonoArray cast
26027
26028 2002-03-30  Dietmar Maurer  <dietmar@ximian.com>
26029
26030         * icall.c (mono_message_init): impl. (code cleanup)
26031         (ves_icall_InternalExecute): impl. FieldGetter
26032
26033         * class.c (mono_class_init): added exerimental EXT_VTABLE_HACK, if
26034         defined we call all (non-static)methods through the vtable. 
26035
26036 Fri Mar 29 18:09:08 CET 2002 Paolo Molaro <lupus@ximian.com>
26037
26038         * class.c: it seems GC_debug_malloc() makes the Boehm GC call the
26039         finalizer even though the memory is still referenced (and the chunk of
26040         memory is not freed).
26041
26042 Fri Mar 29 17:43:04 CET 2002 Paolo Molaro <lupus@ximian.com>
26043
26044         * assembly.c: fix brokeness.
26045
26046 Fri Mar 29 16:09:54 CET 2002 Paolo Molaro <lupus@ximian.com>
26047
26048         * class.c: kill some warnings. Check explicit interface method
26049         implementation also without considering the namespace.
26050         Load also literal strings in static class data.
26051
26052 2002-03-29  Miguel de Icaza  <miguel@ximian.com>
26053
26054         * assembly.c (default_assembly_name_resolver): Kill memory leak. 
26055         (default_assembly_name_resolver): Make the resolver take the
26056         "base" directory where the assembly was originally defined, so we
26057         can load DLLs that are in the same directory as the assembly that
26058         is being referenced.
26059
26060 2002-03-28  Dick Porter  <dick@ximian.com>
26061
26062         * file-io.h: 
26063         * file-io.c:
26064         * socket-io.c: 
26065         * unicode.h: 
26066         * unicode.c: Warning cleanups
26067
26068 Thu Mar 28 18:06:14 CET 2002 Paolo Molaro <lupus@ximian.com>
26069
26070         * object.h, reflection.h: use the correct type instead of MonoObject.
26071
26072 2002-03-28  Martin Baulig  <martin@gnome.org>
26073
26074         * debug-symfile.c (mono_debug_class_get): Don't look in referenced assemblies.
26075         (mono_debug_update_symbol_file): Initialize classes if necessary.
26076
26077 Thu Mar 28 15:58:43 CET 2002 Paolo Molaro <lupus@ximian.com>
26078
26079         * assembly.c, debug-helpers.c, image.c, image.h, metadata.c, pedump.c,
26080         rawbuffer.c, reflection.c, verify.c: mare warning cleanups.
26081
26082 Thu Mar 28 15:20:39 CET 2002 Paolo Molaro <lupus@ximian.com>
26083
26084         * assembly.h: fix function prototype.
26085         * metadata.h, metadata.c, object.h, private.h: get rid of warnings.
26086         * mono-endian.h: use const cast.
26087
26088 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
26089
26090         * icall.c (ves_icall_MonoMethodMessage_InitMessage): moved from message.c
26091
26092 Thu Mar 28 12:32:00 CET 2002 Paolo Molaro <lupus@ximian.com>
26093
26094         * loader.c: don't assert when a typeref can't be loaded, give
26095         a chance to the runtime to trow an exception instead.
26096         * loader.h: fix warning.
26097
26098 2002-03-28  Dietmar Maurer  <dietmar@ximian.com>
26099
26100         * class.c (mono_class_proxy_vtable): added proxy support
26101
26102 2002-03-27  Dan Lewis <dihlewis@yahoo.co.uk>
26103
26104         * icall.c: removed last of PAL calls, added System.Environment
26105         * file-io.h, file-io.c: MonoIO implementation
26106         * object.h, object.c: mono_string_to_utf16() now returns gunichar2*
26107
26108 Tue Mar 26 19:56:10 CET 2002 Paolo Molaro <lupus@ximian.com>
26109
26110         * appdomain.c: do not use the byte marker in ldstr table lookup.
26111         * debug-helpers.c: allow two ':' to separate class and method name.
26112         * object.c: allocate arrays bounds with the GC, too.
26113         * verify: add a few more checks.
26114
26115 Tue Mar 26 18:45:46 CET 2002 Paolo Molaro <lupus@ximian.com>
26116
26117         * reflection.c: output also literal strings. Allocate parameter data
26118         with GC_malloc() (thanks, Martin, for catching this!).
26119
26120 2002-03-26  Martin Baulig  <martin@gnome.org>
26121
26122         * debug-symfile.h (MonoDebugMethodInfo): Added `this_offset', don't
26123         include the `this' offset in the `param_offsets'.
26124
26125 2002-03-25  Martin Baulig  <martin@gnome.org>
26126
26127         * debug-symfile.c (mono_debug_update_symbol_file): Use a new
26128         mono_debug_get_class() function to get the classes. Added new
26129         relocation types for arrays and strings.
26130         (mono_debug_get_class): New static function to search in all
26131         referenced assemblies for a metadata token.
26132
26133         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 7.
26134
26135 Mon Mar 25 13:08:18 CET 2002 Paolo Molaro <lupus@ximian.com>
26136
26137         * reflection.h, reflection.c: use a gc-safe hash for hash tables that
26138         hold gc-allocated objects. Make the string heap a stream like the
26139         others. Removed duplicated code when writing stream info.
26140         Added asserts to catch possible buffer overflows. Set the sorted map
26141         for tables that need sorting. Added some documentation.
26142
26143 Mon Mar 25 13:04:56 CET 2002 Paolo Molaro <lupus@ximian.com>
26144
26145         * appdomain.h, appdomain.c, class.c, object.c: use a GC-safe hash table 
26146         for interned strings and vtables.
26147
26148 2002-03-24  Martin Baulig  <martin@gnome.org>
26149
26150         * icall.c (ves_icall_Type_GetFields): Reverse the list before storing
26151         it in the array since it was created with g_slist_prepend().
26152
26153 2002-03-24  Martin Baulig  <martin@gnome.org>
26154
26155         * debug-symfile.c (mono_debug_local_type_from_signature): Renamed
26156         to ves_icall_Debugger_MonoSymbolWriter_get_local_type_from_sig().
26157         (mono_debug_method_from_token): Renamed to
26158         ves_icall_Debugger_MonoSymbolWriter_method_from_token().
26159         (ves_icall_Debugger_DwarfFileWriter_get_type_token): New interncall.
26160
26161         * debug-symfile.c (MRT_type_sizeof, MRT_type_field_offset): New
26162         relocation types.
26163
26164         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 6.
26165
26166 2002-03-24  Martin Baulig  <martin@gnome.org>
26167
26168         * debug-symfile.c (mono_debug_local_type_from_signature): New func.
26169         (mono_debug_method_from_token): New func.
26170
26171         * icall.c (Mono.CSharp.Debugger.MonoSymbolWriter::get_local_type_from_sig):
26172         New interncall, calls mono_debug_local_type_from_signature().
26173         (Mono.CSharp.Debugger.MonoSymbolWriter::get_method): New interncall,
26174         calls mono_debug_method_from_token().
26175
26176 2002-03-23  Martin Baulig  <martin@gnome.org>
26177
26178         * unicode.c (ves_icall_iconv_get_char_count): The `count' argument
26179         specifies the number of bytes to be converted, not the array size.
26180         Return the number of chars, not the number of bytes.
26181         (ves_icall_iconv_get_chars): The `byteCount' argument
26182         specifies the number of bytes to be converted, not the array size.
26183
26184 2002-03-23  Martin Baulig  <martin@gnome.org>
26185
26186         * reflection.h (MonoReflectionSigHelper): New type.
26187
26188         * reflection.c (mono_reflection_sighelper_get_signature_local),
26189         (mono_reflection_sighelper_get_signature_local): New functions.
26190
26191         * icall.c (System.Reflection.Emit.SignatureHelper::get_signature_local),
26192         (System.Reflection.Emit.SignatureHelper::get_signature_field): New
26193         interncalls.
26194
26195 2002-03-23  Martin Baulig  <martin@gnome.org>
26196
26197         * rawbuffer.c (mono_raw_buffer_load_mmap): Use MAP_SHARED when
26198         is_writeable is set.
26199         (mono_raw_buffer_update): New function to write the modified map
26200         back to disk.
26201
26202         * debug-symfile.h (MonoDebugSymbolFile): Added `raw_contents_size'.
26203
26204         * debug-symfile.c (mono_debug_update_symbol_file): Call
26205         mono_raw_buffer_update() when done writing.
26206
26207 2002-03-23  Martin Baulig  <martin@gnome.org>
26208
26209         * debug-symfile.h (MONO_DEBUG_SYMBOL_FILE_VERSION): Increased to 5.
26210
26211         * debug-symfile.c: Added support for arguments and local variables.
26212
26213 2002-03-23  Dick Porter  <dick@ximian.com>
26214
26215         * debug-symfile.c: Remove extraneous 'include <elf.h>' that wasn't
26216         protected by ifdefs, hence breaking the w32 build.
26217
26218 Thu Mar 21 17:35:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26219
26220         * object.c: implement is_interned() the right way.
26221
26222 2002-03-21  Martin Baulig  <martin@gnome.org>
26223
26224         * debug-symfile.[ch]: New files to handle debugging information
26225         files. There's also support to dynamically update these symbol
26226         files to include machine dependent information.
26227
26228 2002-03-20  Dietmar Maurer  <dietmar@ximian.com>
26229
26230         * threads.c (mono_thread_create): new function to create thread
26231         from C
26232
26233 2002-03-20  Martin Baulig  <martin@gnome.org>
26234
26235         * icall.c (ves_icall_InternalInvoke): Create a new object if the
26236         method is a constructor.
26237         (icall_map): Added "System.Reflection.MonoCMethod::InternalInvoke",
26238         points to ves_icall_InternalInvoke().
26239
26240 2002-03-20  Dan Lewis <dihlewis@yahoo.co.uk>
26241
26242         * file-io.c: Flush shouldn't throw exceptions.
26243
26244 2002-03-19  Dan Lewis <dihlewis@yahoo.co.uk>
26245
26246         * file-io.c: FileStream flush support; FileSetLength now
26247         restores file pointer.
26248
26249 Tue Mar 19 18:17:21 CET 2002 Paolo Molaro <lupus@ximian.com>
26250
26251         * class.c: set image for pointer classes.
26252
26253 2002/03/19  Nick Drochak <ndrochak@gol.com>
26254
26255         * sysmath.c: Forgot one.
26256
26257 2002-03-18  Miguel de Icaza  <miguel@ximian.com>
26258
26259         * sysmath.c: Avoid redefining existing names.
26260
26261 2002-03-18  Dan Lewis <dihlewis@yahoo.co.uk>
26262
26263         * sysmath.c, sysmath.h, icall.c, Makefile.am: math routines now
26264         handled by runtime as icall rather than dllimport from libm.so
26265         * file-io.c, file-io.h: fixed handle argument type.
26266
26267 2002-03-18  Dick Porter  <dick@ximian.com>
26268
26269         * reflection.c (mono_image_get_type_info): rename interface to
26270         iface, because of "#define interface struct" on windows.
26271
26272 Sat Mar 16 19:18:38 CET 2002 Paolo Molaro <lupus@ximian.com>
26273
26274         * class.c, class.h: rename and export mono_ptr_class_get().
26275         * metadata.c: support MONO_TYPE_ARRAY in MonoType compare.
26276         * reflection.c, reflection.h, icall.c: better/saner type name
26277         parsing and MonoType creation. Handle MONO_TYPE_ARRAY in
26278         method signatures.
26279
26280 2002-03-14  Dietmar Maurer  <dietmar@ximian.com>
26281
26282         * class.c (mono_class_init): removed hardcoded GHC_SLOT
26283
26284         * icall.c (ves_icall_InternalInvoke): impl.
26285
26286 Wed Mar 13 00:27:30 CET 2002 Paolo Molaro <lupus@ximian.com>
26287
26288         * reflection.c: output the interface map table, too.
26289
26290 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
26291
26292         * class.c (class_compute_field_layout): separate computation of 
26293         static field layout
26294
26295 2002-03-12  Dan Lewis <dihlewis@yahoo.co.uk>
26296
26297         * icall.c: added System.Buffer support.
26298         * file-io.c: moved file icalls from PAL to FileStream.
26299
26300 2002-03-12  Dietmar Maurer  <dietmar@ximian.com>
26301
26302         * icall.c (ves_icall_System_Object_GetHashCode): impl.
26303
26304 2002-03-11  Dietmar Maurer  <dietmar@ximian.com>
26305
26306         * icall.c (ves_icall_System_ValueType_GetHashCode): impl.
26307
26308 Mon Mar 11 14:45:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26309
26310         * verify.c, verify.h: moved here the corlib/runtime consistency checks.
26311
26312 Mon Mar 11 11:12:23 CET 2002 Paolo Molaro <lupus@ximian.com>
26313
26314         * debug-helpers.{c,h}: moved here from monograph some useful functions
26315         to locate a method by name/signature in a class or image. Included
26316         also a small and flexible IL disassembler.
26317
26318 Fri Mar 8 16:29:29 CET 2002 Paolo Molaro <lupus@ximian.com>
26319
26320         * reflection.c: fixup tokens in methods with small header size, too.
26321
26322 2002-03-08  Dietmar Maurer  <dietmar@ximian.com>
26323
26324         * object.c (mono_string_to_utf8): remove assert(!error), instead
26325         print a warning. 
26326
26327 Thu Mar 7 18:55:15 CET 2002 Paolo Molaro <lupus@ximian.com>
26328
26329         * icall.c: update to the new mono_Array_class_get interface.
26330
26331 Thu Mar 7 17:23:26 CET 2002 Paolo Molaro <lupus@ximian.com>
26332
26333         * appdomain.c, object.c: Boehm-GC enable.
26334         * icall.c: make get_data_chunk() support split data requests.
26335         Ensure a class is initialized in more cases. Return only the first
26336         property found in GetProperties() or the compiler gets confused. 
26337         Implemented GetEvents(). Temporary fix to GetType(), needs rewriting.
26338         * reflection.h, reflection.c: add fixup mechanism for field and method
26339         tokens. Initialize assembly->typeref in a single place. Output
26340         properties after events. Support custom attributes for events, too.
26341         Typo fix for paramter custom attrs.
26342
26343 2002-03-07  Martin Baulig  <martin@gnome.org>
26344
26345         * icall.c (ves_icall_System_Array_FastCopy): Small fix.
26346
26347 2002-03-07  Dietmar Maurer  <dietmar@ximian.com>
26348
26349         * class.c (mono_array_class_get): fix. for multi. dim. arrays
26350
26351 2002-03-06  Martin Baulig  <martin@gnome.org>
26352
26353         * icall.c (ves_icall_System_Array_CreateInstanceImpl): Make this work with
26354         non-zero lower bounds. See testcases #F10-#F13.
26355
26356 2002-03-05  Martin Baulig  <martin@gnome.org>
26357
26358         * exception.c (mono_get_exception_argument_out_of_range): New exception.
26359
26360         * icall.c (ves_icall_System_Array_GetValue): Moved actual implementation to
26361         ves_icall_System_Array_GetValue(), only calculate the absolute array position
26362         here.
26363         (ves_icall_System_Array_SetValue): Likewise.
26364         (ves_icall_System_Array_GetValueImpl): New interncall. Takes an array position
26365         as argument and does the actual work. This function is used when copying a
26366         multi-dimensional array.
26367         (ves_icall_System_Array_SetValueImpl): Almost completely rewrote this. It can
26368         now do all the widening conversions of value types.
26369         (ves_icall_System_Array_CreateInstanceImpl): Implemented.
26370
26371 Tue Mar 5 18:14:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26372
26373         * class.c: remove some magic numbers and use the smbolic names,
26374         instead. Added init_events() to load event info at class init time.
26375         * metadata.h, metadata.c: added mono_metadata_events_from_typedef()
26376         and mono_metadata_methods_from_event().
26377         * reflection.h, reflection.c: added support for writing out the evnets
26378         related information.
26379
26380 Mon Mar 4 20:32:43 CET 2002 Paolo Molaro <lupus@ximian.com>
26381
26382         * reflection.h, icall.c: use a different method (GetInterfaces)
26383         to gather interface info and add isbyref, isprimitive and
26384         ispointer to the ves_icall_get_type_info() return value.
26385
26386 Mon Mar 4 11:22:26 CET 2002 Paolo Molaro <lupus@ximian.com>
26387
26388         * class.h: stared adding support for events.
26389         * icall.c: split find_members implementation. Added debug icall to get
26390         the address of an object.
26391         * reflection.c: handle TypeBuilders in mono_type_get_object().
26392
26393 2002-03-01  Martin Baulig  <martin@gnome.org>
26394
26395         * icall.c (ves_icall_System_Array_GetLength): This must throw an
26396         ArgumentOutOfRangeException(), not an ArgumentException().
26397         (ves_icall_System_Array_GetLowerBound): Likewise.
26398         (ves_icall_System_Array_GetValue): Improved argument checking.
26399         (ves_icall_System_Array_SetValue): Improved argument checking.
26400
26401 2002-03-01  Martin Baulig  <martin@gnome.org>
26402
26403         * icall.c (ves_icall_System_Array_GetValue): Raise an exception when
26404         called with invalid arguments rather than just dying with g_assert().
26405         (ves_icall_System_Array_SetValue): Likewise.
26406         (ves_icall_System_Array_CreateInstanceImpl): Don't g_assert_not_reached(),
26407         raise a NotImplementedException instead.
26408         (ves_icall_System_Array_GetLength): Added argument checking.
26409         (ves_icall_System_Array_GetLowerBound): Added argument checking.
26410
26411 2002-03-01  Dietmar Maurer  <dietmar@ximian.com>
26412
26413         * object.h (mono_assert): new macros mono_assert and
26414         mono_assert_not_reached
26415
26416 2002-02-28  Martin Baulig  <martin@gnome.org>
26417
26418         * icall.c: Rename "System::String::Intern" to "System::String::_Intern"
26419         and "System::String::IsInterned" to "System::String::_IsInterned".
26420
26421 Thu Feb 28 19:19:35 CET 2002 Paolo Molaro <lupus@ximian.com>
26422
26423         * icall.c: remove hacks for typebuilder. Added icall to create a
26424         modified type from a tybebuilder.
26425         * reflection.c: removed hacks for TypeBuilder. Create also a MonoImage
26426         in mono_image_basic_init (). Added mono_reflection_setup_internal_class ()
26427         to create a backing MonoClass for a TypeBuilder.
26428
26429 Thu Feb 28 15:35:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26430
26431         * class.c, class.h: more refactoring of class init.
26432         Export mono_class_setup_mono_type() and mono_class_setup_parent().
26433
26434 Thu Feb 28 12:33:41 CET 2002 Paolo Molaro <lupus@ximian.com>
26435
26436         * marshal.c, marshal.h: start of marshaling interface.
26437
26438 Wed Feb 27 22:15:17 CET 2002 Paolo Molaro <lupus@ximian.com>
26439
26440         * icall.c: fix order in assembly qualified name icall.
26441
26442 Wed Feb 27 18:45:03 CET 2002 Paolo Molaro <lupus@ximian.com>
26443
26444         * class.c: do not free str, since we store it in the hash table.
26445         * reflection.h: add label field to MonoILExceptionInfo.
26446         * reflection.c: handle references to more than one assembly. Handle
26447         case when there isn't a module created in the assembly.
26448
26449 Wed Feb 27 12:35:10 CET 2002 Paolo Molaro <lupus@ximian.com>
26450
26451         * class.c: Fix typo. Start refactoring of class init code.
26452
26453 Wed Feb 27 12:23:00 CET 2002 Paolo Molaro <lupus@ximian.com>
26454
26455         * appdomain.c: exit with 1 on error.
26456         * class.c: we already have the name in MonoClassField.
26457         * image.c, image.h, metadata.c, pedump.c: use directly a pointer in
26458         MonoStreamHeader instead of an offset of image->raw_metadata.
26459
26460 2002-02-26  Miguel de Icaza  <miguel@ximian.com>
26461
26462         * appdomain.c (mono_init): Be even more descriptive about the error.
26463
26464 Tue Feb 26 16:18:07 CET 2002 Paolo Molaro <lupus@ximian.com>
26465
26466         * appdomain.c: give the user an informative message when corlib can't
26467         be loaded.
26468
26469 2002-02-26  Martin Baulig  <martin@gnome.org>
26470
26471         * icall.c (ves_icall_System_CurrentTimeZone_GetTimeZoneData):
26472         New icall to get the time zone data.
26473
26474 Mon Feb 25 15:51:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26475
26476         * reflection.c: set virtual and raw size of section correctly.
26477         * threads.c: transfer domain information to newly created threads.
26478
26479 Fri Feb 22 18:55:57 CET 2002 Paolo Molaro <lupus@ximian.com>
26480
26481         * class.c: when instancing a class in a domain, load the default
26482         vaules for static fields from the constant table. Fix System.Enum to
26483         not be an enum.
26484         * icall.c: implement Object::GetType() internalcall. Implemented
26485         MonoField::GetValue() internalcall. Avoid SEGV in search_method().
26486         Fixed checking of binding flags in find_members().
26487         * metadata.c, metadata.h: introduce mono_metadata_type_hash().
26488         * reflection.c: handle enumerations when writing to the constant
26489         table. Use a different object cache for types.
26490
26491
26492 2002-02-22  Dietmar Maurer  <dietmar@ximian.com>
26493
26494         * object.c (mono_object_isinst): fix for arrays
26495
26496         * icall.c (ves_icall_type_is_subtype_of): fix for 2 interfaces
26497
26498 Thu Feb 21 21:00:13 CET 2002 Paolo Molaro <lupus@ximian.com>
26499
26500         * object.c: don't use mprotect ()  and fix intern pool hash table
26501         lookup for big endian systems.
26502
26503 Thu Feb 21 19:30:29 CET 2002 Paolo Molaro <lupus@ximian.com>
26504
26505         * icall.c: change type_is_subtype_of () signature.
26506
26507 2002-02-21  Mark Crichton  <crichton@gimp.org>
26508
26509         * rand.c, rand.h: Added random number generator for
26510         System.Security.Cryptography classes.
26511
26512         * exception.c, exception.h: Added mono_get_exception_not_implemeted.
26513
26514         * icall.c: Added System.Security.Cryptography calls.
26515
26516 Thu Feb 21 16:45:34 CET 2002 Paolo Molaro <lupus@ximian.com>
26517
26518         * class.c, icall.c, metadata.c: better support for pointer types.
26519         Create a class for them as suggested by dietmar. Fix TYPE_ARRAY class.
26520         * reflection.c: Add support for getting custom attrs for properties
26521         and simplify some code.
26522
26523 Wed Feb 20 22:20:29 CET 2002 Paolo Molaro <lupus@ximian.com>
26524
26525         * icall.c: change getToken () and add custom attribute GetBlob()helper
26526         method.
26527         * reflection.h: add custom attrs array to the reflection builder structures.
26528         * reflection.c: encode and emit custom attributes for all the relevant
26529         reflection objects. Cache fieldref and methodref tokens. Change
26530         mono_image_create_token() interface to take a MonoDynamicAssembly.
26531         More complete custom attributes decoder. Load custom attributes for
26532         Assembly, Field, Method and Constructor objects, too. Make the
26533         returned array an Attribute[] one, not object[]. Added
26534         mono_reflection_get_custom_attrs_blob() to encode the arguments of a
26535         custom attribute constructor.
26536
26537 2002-02-20  Dick Porter  <dick@ximian.com>
26538
26539         * icall.c:
26540         * rawbuffer.c:
26541         * socket-io.c: Windows portability fixes (sometimes just ifdeffing
26542         problem code out for now).
26543
26544 2002-02-19  Radek Doulik  <rodo@ximian.com>
26545
26546         * object.c (mono_ldstr): use hash table to avoid multiple swapping
26547
26548 Tue Feb 19 20:23:11 CET 2002 Paolo Molaro <lupus@ximian.com>
26549
26550         * icall.c: register the GetCustomAttributes method.
26551         * object.c, object.h: add mono_string_new_len ().
26552         * reflection.h, reflection.c: added mono_runtime_invoke(),
26553         mono_install_runtime_invoke(). Added
26554         mono_reflection_get_custom_attrs () to load custom attributes and
26555         create the attribute objects.
26556
26557 2002-02-19  Dick Porter  <dick@ximian.com>
26558         * threads-dummy-types.c:
26559         * threads-dummy-types.h:
26560         * threads-dummy.c:
26561         * threads-dummy.h:
26562         * threads-pthread-types.c:
26563         * threads-pthread-types.h:
26564         * threads-pthread.c:
26565         * threads-pthread.h:  Deleted obsolete files
26566
26567 2002-02-19  Dietmar Maurer  <dietmar@ximian.com>
26568
26569         * class.c (mono_class_vtable): runtime init the class when we
26570         allocate static class data.
26571
26572         * icall.c (ves_icall_System_Array_SetValue): check for null values.
26573
26574         * appdomain.c (mono_domain_transfer_object): impl. hack for Arrays
26575         and String - but we will need generic marshalling support in the
26576         future. 
26577         (mono_init): set the domain name in a ms compatible way
26578
26579         * object.c (mono_string_new_utf16): bug fix: use char[] instead of
26580         String[].
26581
26582 2002-02-18  Dietmar Maurer  <dietmar@ximian.com>
26583
26584         * object.c (mono_array_clone): use alloca() instead of g_malloc  
26585         for sizes
26586
26587         * appdomain.c (mono_domain_unload): impl.
26588
26589 Mon Feb 18 15:52:20 CET 2002 Paolo Molaro <lupus@ximian.com>
26590
26591         * appdomain.c, object.c: fix intern pool implementation.
26592         * class.c: fix alignment code.
26593
26594 2002-02-16  Radek Doulik  <rodo@ximian.com>
26595
26596         * icall.c (ves_icall_System_Enum_ToObject): in case of big endian
26597         and s2 > s1, just copy lower bytes to be compatible with little
26598         endian (i.e. 64bit value & 0xffffffff --> 32bit value)
26599         (ves_icall_System_Enum_ToObject): and likewise for s1 > s2
26600
26601         * unicode.c (ves_icall_iconv_new_encoder): decide on big_endian,
26602         force big_endian to be 1 for big endian machines 
26603         (ves_icall_iconv_new_decoder): ditto
26604
26605 2002-02-16  Jeffrey Stedfast  <fejj@ximian.com>
26606
26607         * socket-io.c (convert_sockopt_level_and_name): If the system
26608         doesn't define SOL_IP or SOL_TCP, get them by hand using
26609         getprotobyname() and caching the values (because this could be a
26610         slow operation).
26611         (ves_icall_System_Net_Sockets_Socket_SetSocketOption_internal):
26612         Use the appropriate struct when the system does support it. Ie,
26613         not all systems have struct ip_mreqn so use struct ip_mreq when
26614         appropriate.
26615
26616 Fri Feb 15 18:15:44 CET 2002 Paolo Molaro <lupus@ximian.com>
26617
26618         * reflection.c: handle finally clauses.
26619
26620 Fri Feb 15 15:06:33 CET 2002 Paolo Molaro <lupus@ximian.com>
26621
26622         * socket-io.c: use g_snprintf() instead of snprintf.
26623
26624 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
26625
26626         * reflection.c (mono_param_get_objects): Cast second argument to
26627         mono_method_get_param_names to a const char** to silence the
26628         compiler warning.
26629
26630         * appdomain.c (mono_domain_assembly_open): Put parens around the
26631         truth statement in the for-loop.
26632
26633         * unicode.c (iconv_convert): Got rid of a compiler warning about
26634         int i being unused when the system has a new iconv.
26635         (iconv_get_length): Same.
26636
26637         * image.c (load_class_names): Cast the second argument to
26638         g_hash_table_insert() to char* to hush compiler warnings about the
26639         arg being a const.
26640         (mono_image_open): Same here.
26641
26642         * socket-io.c: Don't conditionally include sys/filio.h or
26643         sys/sockio.h here anymore since we now get them from
26644         io-layer/io-layer.h
26645         (inet_pton): If the system doesn't support inet_aton, implement
26646         using inet_addr and also #define INADDR_NONE if it isn't defined
26647         by the system.
26648
26649 Thu Feb 14 19:01:06 CET 2002 Paolo Molaro <lupus@ximian.com>
26650
26651         * metadata.c, metadata.h: added function to get packing and size info
26652         of a typedef.
26653         * reflection.h, reflection.c: handle field RVA data. Save info about
26654         the table layout if needed. Assign typedef indexes to all the types
26655         before dumping the info about them to avoid forward reference problems.
26656
26657 2002-02-14  Dietmar Maurer  <dietmar@ximian.com>
26658
26659         * socket-io.c (convert_sockopt_level_and_name): ifdef
26660         SO_ACCEPTCONN because it is not defined on my system (old debian)
26661
26662 Thu Feb 14 11:49:30 CET 2002 Paolo Molaro <lupus@ximian.com>
26663
26664         * opcode.c: use stddef.h to get NULL.
26665
26666 2002-02-14  Jeffrey Stedfast  <fejj@ximian.com>
26667
26668         * socket-io.c: conditionally include sys/filio.h and sys/sockio.h
26669         for FIONBIO, FIONREAD and SIOCATMARK.
26670         (ves_icall_System_Net_Dns_GetHostByAddr_internal): SunOS doesn't
26671         define INADDR_NONE and besides, inet_addr() is deprecated and
26672         should not be used. Use inet_pton() instead - it also has the
26673         added bonus that it can easily handle IPv6 addresses as well.
26674         (inet_pton): Implement using inet_aton() ifndef HAVE_INET_PTON.
26675
26676 Wed Feb 13 23:00:21 CET 2002 Paolo Molaro <lupus@ximian.com>
26677
26678         * decimal.c: remove _MSC_VER conditional.
26679
26680 2002-02-13  Dick Porter  <dick@ximian.com>
26681
26682         * socket-io.c: 
26683         * icall.c: Internal calls for Blocking, Select, Shutdown,
26684         GetSocketOption and SetSocketOption
26685
26686 Wed Feb 13 19:20:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26687
26688         * assembly.cs: better resolver: use it instead of some kludgy
26689         code.
26690
26691 Wed Feb 13 18:25:55 CET 2002 Paolo Molaro <lupus@ximian.com>
26692
26693         * reflection.c: the best way to speed-up the compiler is to avoid
26694         infinite loops.
26695
26696 2002-02-13  Dietmar Maurer  <dietmar@ximian.com>
26697
26698         * class.c (mono_class_vtable): changed the object layout
26699         (obj->vtable->class). 
26700         (mono_class_create_from_typespec): consider MONO_TYPE_PTR
26701
26702 Tue Feb 12 20:06:01 CET 2002 Paolo Molaro <lupus@ximian.com>
26703
26704         * assembly.c: look for assemblies in the assembly dir, too.
26705
26706 Tue Feb 12 14:03:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26707
26708         * class.c: fix thinko in mono_class_from_type().
26709
26710 Mon Feb 11 19:43:51 CET 2002 Paolo Molaro <lupus@ximian.com>
26711
26712         * exception.h, exception.c: added TypeLoadException.
26713         * object.h, object.c: added mono_array_clone ().
26714         * icall.c: handle throwOnError in AssemblyGetType().
26715         Added Array.Clone().
26716         * opcode.h, opcode.c: use a single value for the opcode val.
26717         Compile fix for non-gcc compilers.
26718
26719 Fri Feb 8 12:26:37 CET 2002 Paolo Molaro <lupus@ximian.com>
26720
26721         * opcodes.c, opcodes.h: export interesting info about opcodes.
26722
26723 2002-02-05  Dietmar Maurer  <dietmar@ximian.com>
26724
26725         * object.h (MONO_CHECK_ARG, MONO_CHECK_ARG_NULL): new macro for
26726         icalls. 
26727
26728         * class.c (class_compute_field_layout): set element_class for enums
26729         (mono_class_create_from_typedef): set element_class for normal classes
26730
26731         * icall.c (ves_icall_System_Enum_get_value): impl.
26732
26733         * class.c (mono_class_create_from_typedef): do not set valuetype
26734         flag for System.ValueType and System.Enum
26735
26736 2002-02-04  Dietmar Maurer  <dietmar@ximian.com>
26737
26738         * unicode.c (iconv_convert): fix big endian problem.
26739
26740 Fri Feb 1 16:13:20 CET 2002 Paolo Molaro <lupus@ximian.com>
26741
26742         * class.c: add asserts if we are ever going to scribble over memory.
26743         * socket-io.c: not all systems have AF_IRDA defined.
26744
26745 2002-01-31  Dietmar Maurer  <dietmar@ximian.com>
26746
26747         * class.c (class_compute_field_layout): do not consider static
26748         fields to compute alignment
26749
26750 2002-01-25  Dietmar Maurer  <dietmar@ximian.com>
26751
26752         * appdomain.c (mono_appdomain_get): impl.
26753         (ves_icall_System_AppDomain_ExecuteAssembly): impl.
26754
26755 Thu Jan 24 12:59:23 CET 2002 Paolo Molaro <lupus@ximian.com>
26756
26757         * icall.c: ignore "file://" prefix when loading an assembly.
26758
26759 2002-01-23  Dick Porter  <dick@ximian.com>
26760
26761         * socket-io.c:
26762         * icall.c:
26763         * Makefile.am: Added socket support
26764
26765 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
26766
26767         * icall.c (ves_icall_appdomain_get_default_assemblies): put this
26768         code back.  This should return the assemblies that are loaded by
26769         the runtime on behalf of an application domain. 
26770
26771         The current implementation is still broken, it just returns every
26772         assembly loaded, but until we get real applications domain this
26773         will do.
26774
26775 2002-01-23  Dietmar Maurer  <dietmar@ximian.com>
26776
26777         * icall.c (ves_icall_appdomain_get_cur_domain): runtime_init the
26778         AppDomain object.
26779
26780 2002-01-23  Miguel de Icaza  <miguel@ximian.com>
26781
26782         * icall.c (ves_icall_appdomain_get_cur_domain): Cache the value of
26783         the mono_class_from_name lookup.
26784         (ves_icall_get_parameter_info): ditto.
26785         (ves_icall_appdomain_get_assemblies, add_assembly): Implement new internal
26786         method.
26787         (ves_icall_System_Reflection_Assembly_get_code_base): Another new call.
26788
26789 Tue Jan 22 22:43:47 CET 2002 Paolo Molaro <lupus@ximian.com>
26790
26791         * class.c: load also nested classes on class init.
26792         System.ValueType instance methods gets passed boxed
26793         values, unless methods in derived classed that get a pointer to the
26794         data.
26795         * icall.c: use better name parsing code in GetType().
26796         * image.c, image.h: add mono_image_loaded ().
26797         * metadata.c, metadata.h: add mono_metadata_nesting_typedef ().
26798         * reflection.c, reflection.h: added mono_reflection_parse_type().
26799
26800 2002-01-22  Veronica De Santis <veron78@interfree.it>
26801
26802         * icall.c : Added mapping of internal calls for Manual and Auto reset events
26803         * threads.c : Added the implementation of internal calls for events
26804         * threads.h : Added prototypes of internal calls for events
26805         
26806 2002-01-21  Radek Doulik  <rodo@ximian.com>
26807
26808         * icall.c (ves_icall_InitializeArray): swap bytes on big endians
26809
26810 2002-01-21  Dietmar Maurer  <dietmar@ximian.com>
26811
26812         * class.c (mono_class_init): set min_align to 1 (instead of 0)
26813         (mono_class_value_size): use min_align
26814
26815 2002-01-20  Dick Porter  <dick@ximian.com>
26816
26817         * threads.h:
26818         * threads.c: Replaced all instances of WapiHandle * with HANDLE,
26819         so it compiles on w32.
26820
26821 2002-01-17  Dietmar Maurer  <dietmar@ximian.com>
26822
26823         * metadata.c (mono_type_stack_size): impl.
26824
26825         * class.c (mono_class_get_field): impl. memberref token
26826
26827 2002-01-16 Veronica De Santis <veron78@@interfree.it>
26828
26829         * icall.h : Added the internal calls mapping for CreateMutex_internal
26830                     and ReleaseMutex_internal.
26831         * threads.h : Added the prototype of mutexes internal calls.
26832         * threads.c : Added the implementations of mutexes internal calls.
26833
26834 Tue Jan 15 22:47:57 CET 2002 Paolo Molaro <lupus@ximian.com>
26835
26836         * metaparse.h: removed unused file.
26837         * reflection.c, reflection.h: added stream_data_align () function 
26838         to align data in streams and keep stream aligned. Add support for
26839         exception support in method headers.
26840
26841 Tue Jan 15 19:42:50 CET 2002 Paolo Molaro <lupus@ximian.com>
26842
26843         * unicode.c: make iconv_convert () return the number of bytess written
26844         in the output buffer.
26845
26846 2002-01-15  Dick Porter  <dick@ximian.com>
26847         * threads.c: Make the runtime's idea of infinite timeouts coincide
26848         with the class library's
26849
26850         Fix a particularly egregious bug in mono_thread_cleanup(). That
26851         code was so utterly bogus it must have been written on a Monday.
26852
26853 Mon Jan 14 17:01:03 CET 2002 Paolo Molaro <lupus@ximian.com>
26854
26855         * reflection.h: add subtypes field to TypeBuilder.
26856         * reflection.c: encode constants for literal fields.
26857         Handle subtypes. Fix user string token (and add a zero byte)
26858         at the end.
26859         
26860 2002-01-14  Dietmar Maurer  <dietmar@ximian.com>
26861
26862         * class.c (mono_class_init): bug fix: assign slot numbers for
26863         abstract methods.
26864
26865 Fri Jan 11 18:54:42 CET 2002 Paolo Molaro <lupus@ximian.com>
26866
26867         * reflection.c: don't try to output a code RVA for abstract methods.
26868         Small fixes for method header format. Output parameter info to the
26869         ParamDef table. Save method overriding info to MethodImpl table.
26870         Fix property support. Allow typedef.extends to be a type in the
26871         building assembly.
26872         * verify.c: fix off-by-one error.
26873
26874 Thu Jan 10 19:36:27 CET 2002 Paolo Molaro <lupus@ximian.com>
26875
26876         * class.c: fix mono_class_from_mono_type () for szarray types.
26877         Remove unused cache check in mono_class_from_type_spec().
26878         * icall.c: *type_from_name () functions handle simple arrays and byref.
26879         * reflection.c: handle byref and szarray types. Handle methods without
26880         body (gets P/Invoke compilation working). Handle types and fields in
26881         get_token ().
26882         * reflection.h: add rank to MonoTypeInfo.
26883
26884 2002-01-10  Dick Porter  <dick@ximian.com>
26885
26886         * threads.c: Implemented WaitAll(), WaitAny() and WaitOne()
26887         internal calls
26888
26889 Wed Jan 9 19:27:13 CET 2002 Paolo Molaro <lupus@ximian.com>
26890
26891         * icall.c: initialize class in type_from_handle ().
26892         Loop also in parent classes for get_method ().
26893         * reflection.c: properly encode class and valuetype types.
26894         Start on encoding TypeBuilder types. Handle fieldrefs.
26895         Use correct length when registering a user string.
26896         Handle ConstructorBuilder and MonoMethod in get_token ().
26897         Make mono_type_get_object () aware of cached types.
26898         * object.c: back out change to mono_string_new ().
26899
26900 Tue Jan 8 22:47:44 EST 2002 Matt Kimball <matt@kimball.net>
26901         * object.c: mono_string_new should return a NULL when the string 
26902         passed in is NULL -- not try to deference it.
26903         
26904 Sat Jan 5 15:48:04 CET 2002 Paolo Molaro <lupus@ximian.com>
26905
26906         * icall.c: hack to make IsSubType work for TypeBuilders.
26907         * reflection.c: emit constructors before methods.
26908         Retrieve param names in mono_param_get_objects().
26909
26910 2002/01/05  Nick Drochak  <ndrochak@gol.com>
26911
26912         * Makefile.am: fix list of headers and sources so automake 1.5
26913         doesn't complain. Removed \# at end of list.
26914
26915 Thu Jan 3 23:17:17 CET 2002 Paolo Molaro <lupus@ximian.com>
26916
26917         * reflection.c: get token for a method ref. Set return type of
26918         constructor to void.
26919         * loader.c: debug message.
26920         * class.c: typo fix.
26921
26922 Mon Dec 24 17:18:10 CET 2001 Paolo Molaro <lupus@ximian.com>
26923
26924         * icall.c: fix array init with rank > 1. FindMembers
26925         loops in parent class as well.
26926         * image.c: do not insert nested types in name cache.
26927         * reflection.c: warning fix.
26928         * reflection.h: add override method (for interface impl).
26929
26930 Mon Dec 24 16:16:56 CET 2001 Paolo Molaro <lupus@ximian.com>
26931
26932         * metadata.c: fix customattr decoding.
26933
26934 2001-12-21  Miguel de Icaza  <miguel@ximian.com>
26935
26936         * rawbuffer.cs: Added native Win32 implementation, avoids using
26937         mmap on Cygwin.  This patch is from Dan Lewis (dihlewis@yahoo.co.uk)
26938
26939 Thu Dec 20 20:11:26 CET 2001 Paolo Molaro <lupus@ximian.com>
26940
26941         * class.c: make the low-level routines handle the cache.
26942
26943 Thu Dec 20 15:20:35 CET 2001 Paolo Molaro <lupus@ximian.com>
26944
26945         * image.c: fopen (file, "rb") ("David Dawkins" <david@dawkins.st>).
26946
26947 Tue Dec 18 18:50:00 CET 2001 Paolo Molaro <lupus@ximian.com>
26948
26949         * class.c: fix mono_array_element_size() for objects.
26950         * class.h, class.c: add properties to MonoClass and load them
26951         at init time.
26952         * icall.c: check with isinst() when assigning a value to an array
26953         instead of requiring the classes to match exactly.
26954         Implemented icall for System.Type::GetType().
26955         Implemented icalls to get ParameterInfo, ProprtyInfo and info about
26956         enums. Handle bindingflags when looking for methods and fields.
26957         * metadata.h, metadata.c: implemented mono_metadata_properties_from_typedef()
26958         and mono_metadata_methods_from_property().
26959         * reflection.h, reflection.c: added structures for propreties,
26960         parameters and enums. Implemented mono_property_get_object() and
26961         mono_param_get_objects().
26962
26963 2001-12-18  Dick Porter  <dick@ximian.com>
26964
26965         * file-io.c: Use mono_string_to_utf16() instead of
26966         mono_string_chars()
26967
26968         * object.c: Added mono_string_to_utf16(), which copies the non
26969         NULL-terminated MonoString into a new double-null-terminated
26970         buffer.
26971
26972 2001-12-17  Dietmar Maurer  <dietmar@ximian.com>
26973
26974         * icall.c (ves_icall_System_DateTime_GetNow): added EPOCH adjustment
26975
26976 2001-12-16  Dietmar Maurer  <dietmar@ximian.com>
26977
26978         * file-io.c: raise exceptions if handle is invalid.
26979
26980 Thu Dec 13 20:27:08 CET 2001 Paolo Molaro <lupus@ximian.com>
26981
26982         * assembly.c: yet another check for mscorlib.
26983         * class.c, class.h: load nesting info for classes.
26984         * icall.c: many new functions to support the Reflection classes.
26985         * metadata.c, metadata.h: mono_metadata_nested_in_typedef() added.
26986         * reflection.h, reflection.c: mono_image_create_token(),
26987         mono_assembly_get_object(), mono_type_get_object(),
26988         mono_method_get_object(), mono_field_get_object(): methods to return
26989         objects that parallel the C representation of assemblies, types,
26990         methods, fields.
26991
26992 2001-12-11  Dick Porter  <dick@ximian.com>
26993
26994         * icall.c:
26995         * file-io.c: Internal calls for file IO.
26996
26997 Thu Dec 6 16:21:30 CET 2001 Paolo Molaro <lupus@ximian.com>
26998
26999         * tabledefs.h: missing FileAttributes.
27000         * verify.h, verify.c: use is_valid_string () to simplify and check for
27001         valid strings more correctly. Fix warnings and speeling.
27002         Check more tables: Filed, File, ModuleRef, StandAloneSig.
27003         Check code: branches, maxstack, method calls.
27004
27005 2001-12-04  Dietmar Maurer  <dietmar@ximian.com>
27006
27007         * object.c (mono_object_allocate): removed static, so that the jit
27008         can allocate value types.
27009
27010         * icall.c (ves_icall_System_DateTime_GetNow): impl.
27011
27012 Mon Dec 3 17:02:01 CET 2001 Paolo Molaro <lupus@ximian.com>
27013
27014         * class.c: init enum types right away and register the
27015         token->MonoClass map in mono_class_create_from_typedef ().
27016         * verify.h, verify.c: first cut of the verifier.
27017         * pedump.c: add --verify switch to verify metadata tables.
27018         * tabledefs.h: add some missing enums.
27019
27020 2001-11-30  Dietmar Maurer  <dietmar@ximian.com>
27021
27022         * class.c (mono_install_runtime_class_init): impl.
27023         (mono_class_init): renamed mono_class_metadata_init to
27024         mono_class_init, also removed the metadata_inited flag
27025
27026         * object.c (mono_object_isinst): use faster algorithm
27027
27028 2001-11-30  Radek Doulik  <rodo@ximian.com>
27029
27030         * mono-endian.h: reverted last change
27031         added function prototypes
27032
27033         * Makefile.am (libmetadata_a_SOURCES): reverted my last change and
27034         add mono-endian.c back
27035
27036         * mono-endian.c: returned back, as Paolo pointed out, it's needed
27037         for unaligned access, I've mistaked it with endianess. I am
27038         sorry.
27039         (mono_read16): fix reverted endianess
27040         (mono_read64): ditto
27041         (mono_read32): ditto
27042
27043 2001-11-30  Dick Porter  <dick@ximian.com>
27044
27045         * exception.c: Implement mono_exception_from_name()
27046
27047 Fri Nov 30 12:01:02 CET 2001 Paolo Molaro <lupus@ximian.com>
27048
27049         * metadata.h, metadata.c: remove params_size and locals_size and their
27050         calculation from the metadata code: they are only usefult to the
27051         interp.
27052
27053 2001-11-29  Radek Doulik  <rodo@ximian.com>
27054
27055         * object.c (mono_ldstr): swap bytes here, it's probably not the
27056         best place, but works for me now, I'll redo it once I know mono
27057         better, also note that I add PROT_WRITE and don't reset back, also
27058         note that it's only affects big endians, so x86 should be OK
27059
27060         * mono-endian.h (read16): use just glib macros for both endians
27061
27062         * mono-endian.c: removed as glib macros are used in in
27063         mono-endian.h so we don't need to care about endianess for read
27064         macros as glib does that for us already
27065
27066 Thu Nov 29 18:20:58 CET 2001 Paolo Molaro <lupus@ximian.com>
27067
27068         * class.h, class.h: take minimum alignment into consideration so
27069         that the fields of a class remain aligned also when in an array.
27070
27071 Tue Nov 27 16:39:01 CET 2001 Paolo Molaro <lupus@ximian.com>
27072
27073         * loader.h, loader.c: add mono_method_get_param_names().
27074         * class.c: 0-init class fields.
27075
27076 2001-11-26  Dick Porter  <dick@ximian.com>
27077
27078         * icall.c:
27079         * threads-types.h:
27080         * threads.c: New file that handles System.Threading on all platforms
27081
27082         * object.c: 
27083         * object.h: Remove the synchronisation struct from MonoObject,
27084         replace it with a pointer that gets initialised on demand
27085
27086         * Makefile.am: Replace all the system-specific threading code with
27087         a single file that uses the new wrapper library
27088
27089 Mon Nov 19 11:37:14 CET 2001 Paolo Molaro <lupus@ximian.com>
27090
27091         * class.c, class.h: add mono_install_trampoline() so that the runtime
27092         can register a function to create a trampoline: removes the ugly
27093         requirement that a runtime needed to export arch_create_jit_trampoline.
27094         * object.h, object.c: added mono_install_handler() so that the runtime
27095         can install an handler for exceptions generated in C code (with
27096         mono_raise_exception()). Added C struct for System.Delegate.
27097         * pedump.c: removed arch_create_jit_trampoline.
27098         * reflection.c: some cleanups to allow registering user strings and
27099         later getting a token for methodrefs and fieldrefs before the assembly
27100         is built.
27101         * row-indexes.h: updates and fixes from the new ECMA specs.
27102
27103 Thu Nov 15 17:44:49 CET 2001 Paolo Molaro <lupus@ximian.com>
27104
27105         * class.h, class.c: add enum_basetype field to MonoClass.
27106         * metadata.h, metadata.c: add mono_metadata_get_constant_index()
27107         to get index in the constant table reated to a field, param or
27108         property.
27109         * reflection.h, reflection.c: handle constructors. Set public-key and
27110         version number of the built assembly to 0.
27111         * row-indexes.h: update from new ECMA spec.
27112
27113 Wed Nov 14 19:26:06 CET 2001 Paolo Molaro <lupus@ximian.com>
27114
27115         * class.h, class.c: add a max_interface_id to MonoClass.
27116         * icall.c: rename my_mono_new_object() to my_mono_new_mono_type()
27117         since it's used to do that. Added mono_type_type_from_obj().
27118         Make GetType() return NULL instead of segfaulting if the type was not
27119         found. Handle simple arrays in assQualifiedName.
27120         * object.h: add a struct to represent an Exception.
27121         * reflection.c: output call convention in method signature.
27122         Add code to support P/Invoke methods and fixed offsets for fields.
27123
27124 Mon Nov 12 12:41:32 CET 2001 Paolo Molaro <lupus@ximian.com>
27125
27126         * decimal.c, decimal.h: mono_double2decimal() get the sign bit from
27127         the value.
27128         * icall.c: use mono_array_addr instead of array->vector: fixes the
27129         reflection image writing.
27130         * reflection.c: init call convention byte to 0 in method signature.
27131         Encode the property signature. Don't output property-related methods
27132         twice. Really process the properties for a type (don't cast a field to
27133         a property, my mom always told me that).
27134         Fix 64 bit issues in pointer alignment in a different and more
27135         readable way.
27136
27137 2001-11-10  Sean MacIsaac  <macisaac@ximian.com>
27138
27139         * loader.h: Removed type class from MonoDefaults, added monotype
27140
27141         * loader.c: Loaded MonoType, removed loading of Type
27142
27143         * icall.c (my_mono_new_object): Now returns a System.MonoType,
27144         and fills in System.Type._impl with a RuntimeTypeHandle rather
27145         than the actual MonoClass *
27146
27147         (ves_icall_type_from_handle): change from type_class to
27148         monotype_class
27149
27150         (ves_icall_System_Runtime_InteropServices_Marshal_ReadIntPtr):
27151         implemented
27152
27153         (ves_icall_System_Runtime_InteropServices_Marshal_PtrToStringAuto):
27154         implemented
27155
27156         (ves_icall_System_Reflection_Assembly_LoadFrom): implemented
27157
27158         (ves_icall_System_Reflection_Assembly_GetType): implemented
27159
27160         (ves_icall_System_MonoType_assQualifiedName): implemented
27161
27162         (ves_icall_System_PAL_OpSys_GetCurrentDirecotry): implemented
27163
27164 2001-11-09  Miguel de Icaza  <miguel@ximian.com>
27165
27166         * assembly.c (mono_assembly_open): Implement a cache for the
27167         assemblies. 
27168
27169         (mono_assembly_close): only destroy the assembly when the last
27170         reference is gone.
27171         
27172 2001-11-09  Dick Porter  <dick@ximian.com>
27173
27174         * Makefile.am (pedump_LDADD): Don't need THREAD_LIBS any more
27175
27176 2001-11-09  Dietmar Maurer  <dietmar@ximian.com>
27177
27178         * class.c (mono_class_metadata_init): bug fix: compute the right slot
27179
27180 Fri Nov 9 15:48:02 CET 2001 Paolo Molaro <lupus@ximian.com>
27181
27182         * icall.c, decimal.h, decimal.c: integrated decimal internalcalls
27183         from Martin Weindel.
27184         * object.h: add mono_string_chars ().
27185
27186 2001-11-07  Miguel de Icaza  <miguel@ximian.com>
27187
27188         * reflection.c (build_compressed_metadata): Eliminates warnings
27189         and uses 64-bit clean code.
27190
27191         * metadata.c (mono_type_hash): Change signature to eliminate warnings.
27192         (mono_type_equal): Change signature to eliminate warnings.
27193
27194 Wed Nov 7 15:40:01 CET 2001 Paolo Molaro <lupus@ximian.com>
27195
27196         * icall.c, loader.c: remove the internalcall array constructors.
27197         Changes to match the new MonoArray structure.
27198         * object.h, object.c: an array object doesn't allocate an extra
27199         vector. Add mono_array_new_full () to create jagged arrays easily.
27200
27201 Mon Nov 5 19:51:06 CET 2001 Paolo Molaro <lupus@ximian.com>
27202
27203         * metadata.h, metadata.c: add mono_metadata_field_info () to
27204         retreive all the info about a field from vairous tables.
27205         * icall.c: implement S.Runtime.CServices::InitializeArray () icall.
27206         * class.h, class.c: augment MonoClassField with more info.
27207         Implemented mono_ldtoken for fields. Implemented ExplicitLayout
27208         policy and load a field's RVA if needed.
27209
27210 2001-11-05  Dietmar Maurer  <dietmar@ximian.com>
27211
27212         * class.c (mono_class_metadata_init): create a trampoline for all
27213         virtual functions instead of actually compiling them.
27214
27215 Fri Nov 2 19:37:51 CET 2001 Paolo Molaro <lupus@ximian.com>
27216
27217         * class.h, class.c: include name in MonoClassField.
27218         * class.c: fix fundamental type of System.Object and System.String.
27219         Set the right fundamental type for SZARRAY, too. Handle TypeSpec
27220         tokens in ldtoken.
27221         * icall.c: remove internalcalls for the Reflection stuff that is now
27222         done in C# code.
27223         * loader.c: mono_field_from_memberref () implementation.
27224         * mono-endian.c: thinko (s/struct/union/g).
27225         * object.c, object.h: make the mono_string_* prototypes actually use
27226         MonoString instead of MonoObject.
27227         * reflection.c, reflection.h: updates for changes in the reflection
27228         code in corlib: we use C structures that map to the actual C# classes.
27229         Handle SZARRAYs when encoding types. Handle locals in methods. Use a
27230         fat method header if needed and use the info from the ILGenerator for
27231         methods. Handle fields in types. Misc fixes.
27232
27233 2001-10-17  Dietmar Maurer  <dietmar@ximian.com>
27234
27235         * class.c (mono_class_metadata_init): bug fix: always allocate
27236         space for static class data
27237
27238 2001-10-25  Dietmar Maurer  <dietmar@ximian.com>
27239
27240         * class.c (mono_compute_relative_numbering): use relative
27241         numbering to support fast runtime type checks.
27242
27243 2001-10-17  Sean MacIsaac  <macisaac@ximian.com>
27244
27245         * class.c (mono_class_create_from_typeref): added debugging output
27246         to print class name when MonoDummy is returned instead of real class
27247
27248 2001-10-15  Dietmar Maurer  <dietmar@ximian.com>
27249
27250         * class.c (mono_class_metadata_init): interface offset table now
27251         contains pointers into the vtable - this is more efficient for the jit
27252
27253 2001-10-12  Dietmar Maurer  <dietmar@ximian.com>
27254
27255         * class.c (mono_class_metadata_init): use a temporary vtable (the
27256         old algorithm only worked for the interpreter, but not for the jit)
27257
27258 2001-10-11  Dietmar Maurer  <dietmar@ximian.com>
27259
27260         * loader.c (method_from_memberref): use mono_class_get to get the
27261         class of an array instead of using System.Array directly.
27262         (mono_get_method): also add MEMBERREF methods to the method cache
27263         which usefull for arrays.
27264
27265 2001-10-10  Dietmar Maurer  <dietmar@ximian.com>
27266
27267         * pedump.c (arch_compile_method): added to compute vtable entry
27268
27269         * metadata.c (mono_metadata_interfaces_from_typedef): also return the
27270         number of interfaces.
27271         
27272         * class.h: merged MonoArrayClass into MonoClass
27273
27274         * class.c (mono_class_create_from_typedef): compute the vtable size and
27275         allocate space to include the vtable inside MonoClass
27276         (mono_class_metadata_init): initialize the vtable
27277
27278 Mon Oct 8 16:12:38 CEST 2001 Paolo Molaro <lupus@ximian.com>
27279
27280         * metadata.c, metadata.h: use MonoArrayType to describe the shape of an array.
27281         Guard against calling bsearch with a NULL pointer (pointed out by Laurent Rioux, smoux).
27282         * image.c: endian fixes by Laurent Rioux.
27283         * object.h, object.c: rename MonoStringObject to MonoString and
27284         MonoArrayObject to MonoArray. Change some function names to conform to
27285         the style mono_<object>_<action>. mono_string_new_utf16 () takes a
27286         guint16* as first argument, so don't use char*.
27287         Provide macros to do the interesting things on arrays in a portable way.
27288         * threads-pthread.c: updates for the API changes and #include <sched.h>
27289         (required for sched_yield()).
27290         * icall.c: updates for the API changes above.
27291         * Makefile.am, mono-endian.c. mono-endian.h: include unaligned read routines for
27292         platforms that need them.
27293
27294 Mon Oct 8 10:43:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
27295
27296         * class.c: set the correct type for all the fundamental
27297         type when loading the class.
27298
27299 2001-10-05  Dick Porter  <dick@ximian.com>
27300
27301         * threads-pthread.c (pthread_mutex_timedlock): Simple
27302         compatibility version for C libraries that lack this call.
27303
27304 Thu Oct 4 19:10:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
27305
27306         * class.c: MonoTypes stored in MonoClass are stored as
27307         fundamental MonoTypes when the class represents a
27308         fundamental type (System.Int32, ...).
27309         The TypeHandle return by ldtoken is a MonoType*.
27310         * icall.c: ves_icall_get_data_chunk () write out all the
27311         PE/COFF stuff. Implement ves_icall_define_method (),
27312         ves_icall_set_method_body (), ves_icall_type_from_handle ().
27313         * image.c: properly skip unknown streams.
27314         * loader.h, loader.c: add type_class to mono_defaults.
27315         * metadata.c, metadata.h: export compute_size () as
27316         mono_metadata_compute_size () with a better interface.
27317         Typo and C&P fixes.
27318         * pedump.c: don't try to print the entry point RVA if there is no entry point.
27319         * reflection.c, reflection.h: many cleanups, fixes, output method
27320         signatures and headers, typedef and typeref info, compress the metadata
27321         tables, output all the heap streams, cli header etc.
27322         * row-indexes.h: typo fixes.
27323
27324 2001-10-04  Dick Porter  <dick@ximian.com>
27325
27326         * object.h: Add a synchronisation mutex struct to MonoObject
27327
27328         * object.c (mono_new_object): Initialise the object
27329         synchronisation mutexes
27330
27331         * icall.c: System.Threading.Monitor internal calls
27332         
27333         * threads-pthread.h:
27334         * threads-pthread.c: System.Threading.Monitor internal calls
27335
27336         * threads-types.h: New file, includes the system-specific thread
27337         structures
27338         
27339         * threads-pthread-types.h:
27340         * threads-pthread-types.c: New files, handle pthread-specific
27341         synchronisation types
27342
27343         * threads-dummy-types.h: 
27344         * threads-dummy-types.c: New files of dummy support for
27345         thread-specific types
27346
27347         * metadata.c:
27348         * image.c:
27349         * pedump.c: include mono-endian.h not endian.h
27350         
27351         * Makefile.am: More threads files.
27352         Name mono-endian.h not endian.h
27353
27354 Tue Oct 2 20:33:48 CEST 2001 Paolo Molaro <lupus@ximian.com>
27355
27356         * Makefile.am, reflection.h, reflection.c: move here the reflection related 
27357         stuff and implement a few more bits.
27358         * icall.c: a field needs to be dereferenced twice. Do not use the same
27359         name for two variables in the same scope.
27360         * image.c, image.h: cleanups.
27361
27362 2001-10-02  Dietmar Maurer  <dietmar@ximian.com>
27363
27364         * class.c (mono_class_metadata_init): bug fix: compute the right size
27365
27366 Mon Oct 1 20:43:57 CEST 2001 Paolo Molaro <lupus@ximian.com>
27367
27368         * icall.c: implemented some of the Reflection internalcalls.
27369         * image.c, image.h: start writing out the PE/COFF image.
27370         * metadata.h, metadata.c: implement mono_metadata_encode_value ()
27371         that does the reverse than decode_blob_size ().
27372         * object.c: use mono_metadata_encode_value (). Move here
27373         temporary implementation of mono_string_to_utf8 ().
27374         * rawbuffer.c: make malloc_map static.
27375
27376 Fri Sep 28 19:26:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
27377
27378         * metadata.c: fix type comparison for arrays.
27379         * loader.h, loader.c: half-assed fix to get more tests work in cygwin.
27380         Added a couple of new classes to monodefaults.
27381         * icall.c: added a couple of Reflection-related internalcalls.
27382         * class.h, class.c: implemented mono_ldtoken () for RuntimeTypeHandles.
27383         Added a byval_arg MonoType to MonoClass.
27384
27385 2001-09-28  Dick Porter  <dick@ximian.com>
27386
27387         * icall.c:
27388         * threads-pthread.h: 
27389         * threads-pthread.c: Implemented internal calls for
27390         LocalDataStoreSlot operations.  Applied mutexes around all shared
27391         data.  Reworked the thread creation and Start() operations to
27392         avoid a race condition.
27393         
27394         * threads-dummy.h:
27395         * threads-dummy.c: Dummy calls for the LocalDataStoreSlot operations
27396
27397 Thu Sep 27 21:45:55 CEST 2001 Paolo Molaro <lupus@ximian.com>
27398
27399         * rawbuffer.c: disable mmap on cygwin since it seems to be broken there.
27400
27401 Thu Sep 27 19:52:11 CEST 2001 Paolo Molaro <lupus@ximian.com>
27402
27403         * class.c, loader.c: warn and return NULL instead of erroring out.
27404         * icall.c: added System.AppDomain::getCurDomain().
27405         * loader.c: we don't need to lookup the typedef again for p/invoke calls.
27406
27407 2001-09-25  Dick Porter  <dick@ximian.com>
27408
27409         * threads-pthread.h:
27410         * threads-pthread.c: Implemented timed thread joining and added
27411         System.Threading.Thread::Join_internal internal call
27412
27413         * icall.c: Added System.Threading.Thread::Join_internal internal call
27414
27415         * threads-dummy.h:
27416         * threads-dummy.c: Dummy calls for System.Thread.Thread::Join_internal
27417
27418 Mon Sep 24 18:56:59 CEST 2001 Paolo Molaro <lupus@ximian.com>
27419
27420         * object.c, object.h: added mono_ldstr (), mono_string_is_interned () and
27421         mono_string_intern () to implement the semantics of the ldstr opcode
27422         and the interning of System.Strings.
27423         * icall.c: provide hooks to make String::IsIntern and String::Intern
27424         internalcalls.
27425
27426 2001-09-23  Dick Porter  <dick@ximian.com>
27427
27428         * threads-dummy.c: 
27429         * threads-dummy.h: New files of dummy threading routines
27430
27431         * Makefile.am (THREAD_SOURCE): Arrange to compile different thread
27432         support code based on system specifics
27433
27434         Rename PTHREAD_LIBS to THREAD_LIBS
27435         
27436 2001-09-23  Dick Porter  <dick@ximian.com>
27437
27438         * threads-pthread.c: Implement the System.Threading.Thread::Sleep,
27439         Schedule (called when asked to Sleep for 0 ms) and CurrentThread
27440         internal calls.
27441         (mono_thread_init): Set up a Thread object instance to return when
27442         the main thread calls Thread.CurrentThread
27443         (mono_thread_cleanup): Wait for all subthreads to exit
27444
27445         * icall.c: New internal calls for System.Threading.Thread::Sleep
27446         (including Schedule) and CurrentThread
27447
27448         * threads.h: New file, to insulate thread-specific stuff from the
27449         rest of the code
27450
27451 2001-09-21  Dick Porter  <dick@ximian.com>
27452
27453         * threads-pthread.h: 
27454         * threads-pthread.c: New file, for handling pthreads-style
27455         threading support.  Start() now starts a new thread and executes
27456         the ThreadStart delegate instance.
27457
27458         * icall.c: Added the internalcall for
27459         System.Threading.Thread::Start_internal
27460
27461         * Makefile.am: Added new files, and PTHREADS_LIBS to the link line
27462
27463 Thu Sep 20 19:37:39 CEST 2001 Paolo Molaro <lupus@ximian.com>
27464
27465         * loader.c: work around the different signatures for delegates
27466         constructors csc generates in compiled code vs the ones compiled in mscorlib.
27467
27468 Tue Sep 18 13:16:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
27469
27470         * class.h, class.c: add mono_class_get_field_from_name ().
27471         * *: Fix C comments and other ANSI C issues.
27472
27473 Mon Sep 10 20:21:34 CEST 2001 Paolo Molaro <lupus@ximian.com>
27474
27475         * endian.h, assembly.c: fix some endianness issues.
27476
27477 Fri Sep 7 18:40:40 CEST 2001 Paolo Molaro <lupus@ximian.com>
27478
27479         * loader.h, load.c: add delegate_class to mono_defaults.
27480         Handle runtime provided methods in mono_get_method ().
27481
27482 2001-08-29  Dietmar Maurer  <dietmar@ximian.com>
27483
27484         * loader.c (mono_get_method): use pinvoke for internal call
27485
27486         * icall.c: use pinvoke for internal call
27487
27488         * loader.c (method_from_memberref): set the method name
27489
27490 Wed Aug 29 12:43:41 CEST 2001 Paolo Molaro <lupus@ximian.com>
27491
27492         * metadata.c: help the compiler generate better code for
27493         mono_class_from_mono_type ().
27494
27495 2001-08-28  Dietmar Maurer  <dietmar@ximian.com>
27496
27497         * class.c (mono_class_metadata_init): delayed computing of the
27498         class size to mono_class_metadata_init ()
27499
27500 Tue Aug 28 15:47:15 CEST 2001 Paolo Molaro <lupus@ximian.com>
27501
27502         * class.c, class.h: add an interfaces member to MonoClass.
27503         * image.c, image.h: add assembly_name field to MonoImage
27504         from the assembly table.
27505         * metadata.c, metadata.h: add mono_metadata_interfaces_from_typedef ().
27506
27507 Mon Aug 27 20:12:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
27508
27509         * class.c: Handle Array in mono_class_from_mono_type ().
27510         * metadata.c, pedump.c: some endian fixes.
27511
27512 Mon Aug 27 15:23:23 CEST 2001 Paolo Molaro <lupus@ximian.com>
27513
27514         * class.c, loader.c, loader.h: More types handled in mono_class_from_mono_type ().
27515         * metadata.c: fix small problem introduced with the latest commit.
27516
27517 Mon Aug 27 12:17:17 CEST 2001 Paolo Molaro <lupus@ximian.com>
27518
27519         * loader.c, metadata.c, metadata.h: Export mono_metadata_type_equal().
27520         We don't need a MonoMetadata pointer anymore to compare signatures in
27521         mono_metadata_signature_equal (), update callers.
27522         Reduced memory usage an number of allocations for MonoMethodHeader and
27523         MonoMethodSignature.
27524
27525 Sun Aug 26 23:03:09 CEST 2001 Paolo Molaro <lupus@ximian.com>
27526
27527         * metadata.c: added compare for szarray.
27528
27529 Sun Aug 26 11:34:24 CEST 2001 Paolo Molaro <lupus@ximian.com>
27530
27531         * class.h, class.c, loader.h, loader.c: export mono_class_from_mono_type ()
27532         and add a couple more types to it and mono_defaults. Give an hint on
27533         classes that need implementing in our corlib and are referenced
27534         in mscorlib.
27535
27536 Sat Aug 25 12:52:54 CEST 2001 Paolo Molaro <lupus@ximian.com>
27537
27538         * class.h, class.c: keep track if a class is also an Enum.
27539         * loader.c: Implement a couple more types for use in libffi
27540         marshalling. Gives better diagnostics when failing to dlopen
27541         a library. Set method->klass for P/Invoke methods, too.
27542
27543 Fri Aug 24 19:30:25 CEST 2001 Paolo Molaro <lupus@ximian.com>
27544
27545         * class.c, class.h: add a MonoType this_arg to MonoClass that
27546         represents a pointer to an object of the class' type that
27547         can be used by the interpreter and later the type cache.
27548         Add best guess alignment info for valuetype objects.
27549
27550 Fri Aug 24 15:50:31 CEST 2001 Paolo Molaro <lupus@ximian.com>
27551
27552         * metadata.h, metadata.c, class.h, class.c: squeezed MonoParam
27553         into MonoType: one less level of indirection and allocation and
27554         simplifies quite a bit of code. Added cache for MonoTypes that are
27555         used frequently, so that we don't need to allocate them all the time.
27556
27557 2001-08-24  Dietmar Maurer  <dietmar@ximian.com>
27558
27559         * class.c (mono_class_create_from_typedef): System.Enum is also a
27560         value type, although it does not derive from System.ValueType
27561         (maybe a bug in the ms compiler?)
27562
27563         * metadata.c (mono_type_size): return the right size for value types
27564
27565         * loader.c (mono_get_method): only initialize method header if not abstract
27566
27567         * class.c (mono_class_from_mono_type): use mono_default values. 
27568
27569 2001-08-23  Dietmar Maurer  <dietmar@ximian.com>
27570
27571         * *: use MonoClass pointers instead of <type_tokens>
27572         
27573         * class.h: new flag: metadata_inited.
27574
27575         * class.c (mono_class_metadata_init): impl.
27576         (mono_class_instance_size): impl.
27577         (mono_class_data_size): impl.
27578
27579 Wed Aug 22 16:27:30 CEST 2001 Paolo Molaro <lupus@ximian.com>
27580
27581         * metadata.c, loader.h, loader.c, image.h, image.c, class.h, class.c:
27582         MonoClass now has the name and name_space fields. 
27583         MonoMethod has a pointer to its MonoClass, instead of MonoImage.
27584         mono_get_method () takes and optional MonoClass as argument.
27585         Removed mono_typedef_from_name() and added mono_class_token_from_name()
27586         instead that takes advantage of a map from class names to typedef
27587         tokens in MonoImage.
27588
27589 Tue Aug 21 18:54:58 CEST 2001 Paolo Molaro <lupus@ximian.com>
27590
27591         * metadata.c: zero is not a valid alignment boundary.
27592         Merge MONO_TYPE_VOID in default decoding code.
27593
27594 2001-08-21  Dietmar Maurer  <dietmar@ximian.com>
27595
27596         * image.h: merged MonoMetadata into MonoImage
27597
27598         * class.h: cleanup of MonoArrayClass, use a MonoClass pointer to
27599         identify the type of elements.
27600
27601 Mon Aug 20 19:39:00 CEST 2001 Paolo Molaro <lupus@ximian.com>
27602
27603         * blob.h: fix MONO_TYPE_TYPEDBYREF value.
27604         * cil-coff.h: split MonoMSDOSHeader and add size info.
27605         * image.c: add some consistency checks.
27606         * metadata.c: fix row size computation: one programmer
27607         error and one LAMESPEC. Handle MONO_TYPE_TYPEDBYREF.
27608         add explanation for the locator routine.
27609         Fix decoding of size in method header.
27610         
27611 2001-08-20  Miguel de Icaza  <miguel@ximian.com>
27612
27613         * assembly.c    (g_concat_dir_and_file): Use _S for string concat.
27614         (g_concat_dir_and_file): Bring g_concat_dir_and_file
27615         function from gnome-libs.  This uses the right path separator
27616         based on the OS, and also works around a bug in some systems where
27617         a double slash is not allowed. 
27618         (default_assembly_name_resolver): Use g_concat_dir_and_file
27619         (mono_assembly_open): ditto.
27620
27621 2001-08-20  Dietmar Maurer  <dietmar@ximian.com>
27622
27623         * metadata.c (mono_metadata_signature_equal): impl.
27624
27625         * *: void is now a realy MonoType (instead of using NULL)
27626         
27627         * metadata.c (do_mono_metadata_parse_type): use
27628         mono_metadata_parse_type to parse void value.
27629
27630 Sat Aug 18 12:51:28 CEST 2001 Paolo Molaro <lupus@ximian.com>
27631
27632         * metadata.c, metadata.h: in the signature and method header store
27633         only the space required for holding the loca vars and incoming arguments.
27634
27635 2001-08-15  Dietmar Maurer  <dietmar@ximian.com>
27636
27637         * metadata.c (do_mono_metadata_parse_type): treat void like any
27638         other type (instead of assigning NULL);
27639
27640 2001-08-14  Dietmar Maurer  <dietmar@ximian.com>
27641
27642         * metadata.c (mono_metadata_parse_mh): fixxed pinned/byref value
27643
27644 2001-08-09  Dietmar Maurer  <dietmar@ximian.com>
27645
27646         * image.c (do_mono_image_open): added a cache for arrays.
27647
27648 Sat Aug 4 12:46:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
27649
27650         * metadata.h, metadata.c: add mono_metadata_decode_row_col () to
27651         decode a single column from a row in a metadata table and changes
27652         to take advantage of it in the typedef locator (gives a nice speed up).
27653         Store offset info for function params.
27654
27655 2001-08-02  Dietmar Maurer  <dietmar@ximian.com>
27656
27657         * image.h (MONO_IMAGE_IS_CORLIB): removed 
27658
27659 Wed Aug 1 22:54:08 CEST 2001 Paolo Molaro <lupus@ximian.com>
27660
27661         * assembly.c: how could mono_assembly_close () had ever worked?
27662         * metadata.c, metadata.h: provide offset info for local vars.
27663         Implement mono_type_size () to take care of alignment as well
27664         as size (it was mono_field_type_size in cli/class.c before).
27665
27666 2001-08-01  Dietmar Maurer  <dietmar@ximian.com>
27667
27668         * image.h (MONO_IMAGE_IS_CORLIB): new macro to check root image
27669
27670         * assembly.h (CORLIB_NAME): set to corlib.dll
27671
27672         * assembly.c (mono_assembly_open): replaced strcmp() with !strcmp()
27673
27674 Tue Jul 31 17:54:02 CEST 2001 Paolo Molaro <lupus@ximian.com>
27675
27676         * metadata.h, metadata.c, Makefile.am, private.h, assembly.c, blob.h,
27677         cil-coff.h, image.c, image.h, pedump.c, rawbuffer.c, rawbuffer.h, row-indexes.h,
27678         tokentype.h: massive namespace cleanup.
27679
27680 Mon Jul 30 20:11:01 CEST 2001 Paolo Molaro <lupus@ximian.com>
27681
27682         * metadata.h, metadata.c: decode exception clauses when parsing method header.
27683
27684 2001-07-27  Dietmar Maurer  <dietmar@ximian.com>
27685
27686         * metadata.c (mono_metadata_free_type): added check for type !=
27687         NULL (void) before calling mono_metadata_free_type()
27688
27689 Thu Jul 26 19:11:19 CEST 2001 Paolo Molaro <lupus@ximian.com>
27690
27691         * metadata.h, row_indexes.h: added header with enumerations to use
27692         to index in the columns from tables in metadata and to decode coded
27693         tokens: we should start using this instead of embedding magic numbers
27694         all over the code.
27695
27696 Thu Jul 26 13:03:27 CEST 2001 Paolo Molaro <lupus@ximian.com>
27697
27698         * assembly.c, cil-coff.h, image.c, image.h, pedump.c, typedef.c:
27699         Move metadata_t info from cli_image_info_t to MonoImage, where
27700         it's easily accessible. Changed all the uses accordingly.
27701         Added the method and class caches to MonoImage.
27702         * metadata.c, metadata.h: Changed mono_metadata_decode_blob_size ()
27703         and mono_metadata_decode_value () signature to be more consistent
27704         with the other parse functions (and simplify code). Taken advantage
27705         of zero-length array allocation with GCC. Removed reduntant (and
27706         wrong) MonoFieldType struct and use MonoParam instead. Changed
27707         mono_metadata_parse_field_type () to use common code for parsing.
27708         Added mono_metadata_typedef_from_field () and
27709         mono_metadata_typedef_from_method () to lookup a typedef index from a
27710         field or method token.
27711         Pack the MonoRetType structure more tightly (fits in 8 bytes now).
27712
27713 2001-07-23  Miguel de Icaza  <miguel@ximian.com>
27714
27715         * metadata.c (mono_metadata_parse_field_type): Implement. 
27716         (do_mono_metadata_parse_type): Split engine from
27717         mono_metadata_parse_type, so that we can create smaller structures
27718         for things that just have one pointer to the MonoType (look at
27719         the MonoFieldType)
27720
27721 2001-07-20  Miguel de Icaza  <miguel@ximian.com>
27722
27723         * metadata.c (mono_metadata_parse_mh): Correct the implementation,
27724         as Jan Gray found out, it is incorrect. 
27725
27726 2001-07-18  Miguel de Icaza  <miguel@ximian.com>
27727
27728         * assembly.c: Implement asssembly loading.  This loads an image
27729         and loads all the referenced assemblies.  Come to think of it, we
27730         could always do lazy loading of the assemblies. 
27731
27732         * image.c (mono_image_open): Keep loaded images in a hashtable.
27733
27734         * image.h (MonoImage): Add reference count.
27735
27736 2001-07-17  Miguel de Icaza  <miguel@ximian.com>
27737
27738         * assembly.c (mono_assembly_open): Keep track of the file name in
27739         case the assembly has no ASSEMBLY table.
27740
27741         * metadata.h: Fixed Paolo's quick hack.  Put the documnentation
27742         from get.c here.
27743
27744 Sun Jul 15 19:39:06 CEST 2001 Paolo Molaro <lupus@ximian.com>
27745
27746         * metadata.c, metadata.h: decode local vars in method header
27747         parse function. Change callers accordingly.
27748
27749 Sun Jul 15 17:40:47 CEST 2001 Paolo Molaro <lupus@ximian.com>
27750
27751         * metadata.h, cil-coff.h: protect against multiple inclusion.
27752         Added some new structures to hold information decoded from metadata:
27753         MonoType, MonoParam, MonoArray, MonoMethod, MonoMethodSignature
27754         and relevant decoding/free functions.
27755         * metadata.c: implement decoding functions. Add warning for out of bounds
27756         index in mono_metadata_locate(). Implement mono_get_method () to retreive
27757         all the info about a method signature and invocation. Remove check on
27758         uninitialized local var in parse_mh() and fix memory leak.
27759
27760 2001-07-12  Miguel de Icaza  <miguel@ximian.com>
27761
27762         * metadata.h: More macros.
27763
27764         * tokentype.h: New file.
27765
27766 Fri Jul  6 11:30:53 CEST 2001 Paolo Molaro <lupus@ximian.com>
27767
27768         * assembly.c: added a consistency check and initialize
27769         some structures with g_new0().
27770         * metadata.c: fixed a couple more bugs in table size computation
27771         and add other checks for out-of bound access to metadata.
27772
27773 Thu Jul  5 22:34:21 CEST 2001 Paolo Molaro <lupus@ximian.com>
27774
27775         * metatada.c: fix bugs computing table sizes. Spew a
27776         warning when index in string heap is out of bounds.
27777
27778 2001-07-04  Miguel de Icaza  <miguel@ximian.com>
27779
27780         * metadata.h: Add a couple of macros to manipulate tokens. 
27781
27782 Tue Jul  3 18:33:32 CEST 2001 Paolo Molaro <lupus@ximian.com>
27783
27784         * assembly.c: g_free(ii->cli_sections) (and avoid double free of
27785         cli_section_tables).
27786
27787 2001-07-01  Miguel de Icaza  <miguel@ximian.com>
27788
27789         * metadata.c (mono_metadata_user_string): New function, provides
27790         access to the UserString heap. 
27791
27792 2001-06-27  Miguel de Icaza  <miguel@ximian.com>
27793
27794         * metadata.c: Add inline documentation.
27795
27796 2001-06-26  Miguel de Icaza  <miguel@ximian.com>
27797
27798         * propertyattr.h, paramattr.h, methodsem.h, methodattr.h: New
27799         files. 
27800
27801 2001-06-22  Miguel de Icaza  <miguel@ximian.com>
27802
27803         * typeattr.h: New file, TypeAttribute flags. 
27804
27805 2001-06-21  Miguel de Icaza  <miguel@ximian.com>
27806
27807         * mono/metadata/assembly.c (mono_assembly_ensure_section_idx,
27808         mono_assembly_ensure_section): Section loading code.
27809         (load_section_tables): Load the sections.
27810
27811         * mono/metadata/metadata.c (mono_metadata_locate_token,
27812         mono_metadata_locate): Functions to locate the information
27813         definition given a token or a table and an index.
27814         (mono_metadata_compute_table_bases): New.
27815         (compute_size): New function to compute the sizes of the various
27816         tables.
27817
27818         * mono/metadata/metadata.h: Finish listing the different index
27819         types. 
27820
27821         * mono/metadata/pedump.c: Improve to dump new information.
27822
27823 2001-06-19  Miguel de Icaza  <miguel@ximian.com>
27824
27825         * mono/metadata/metadata.c: Entered all the tables matching
27826         Beta2. 
27827
27828         * mono/metadata/assembly.c (load_metadata_ptrs): Fix for Beta2
27829
27830
27831