30c818eab9977e8270b1f2484a61442dd4226622
[mono.git] / mono / mini / ChangeLog
1 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
2
3         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
4         initonly static fields when using moving GC.
5
6         Contributed under MIT/X11 license.
7
8 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
9
10         * exceptions-arm.c: Remove platform checks in favor of configure checks.
11
12 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
13
14         * exceptions-arm.c: Add Android support for sigcontext structure.
15
16 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
17
18         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
19         wrappers correctly now that their wrapper info is NULL.
20
21 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
22
23         * mini.c (mono_jit_compile_method_inner): Avoid calling
24         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
25
26 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
27
28         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
29         so the latter can be #ifndef DISABLE_JIT-ed.
30
31         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
32
33 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
34
35         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
36
37 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
38
39         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
40         stack.
41
42 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
43
44         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
45         calling mono_class_num_methods (). Fixes #592244.
46
47 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
48
49         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
50
51         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
52
53 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
54
55         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
56         version.
57         * (handle_alloc): Ditto.
58         (mono_method_to_ir): Remove the constrained call restriction added by a previous
59         change, its not needed anymore.
60
61 2010-04-12 Rodrigo Kumpera  <rkumpera@novell.com>
62
63         * mini-posix.c (sigusr1_signal_handler): Fix build on
64         non x86/amd64 systems.
65
66 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
67
68         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
69         calls where the constrained class needs a context. Fixes #595863.
70
71         * iltests.il.in: Add a test.
72
73 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
74
75         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
76         2.6/SVN seems to have broken support for them.
77
78 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
79
80         * mini-llvm.c: Fix support for LLVM 2.6.
81
82 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
83
84         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
85         MonoInternalThread belonging to the thread.
86
87 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
88
89         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
90         unsafe optimization that will remove bound checks.
91
92 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
93
94         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
95         CompareExchange not to be inlined for I8.
96
97         Contributed under MIT/X11 license.
98
99 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
100
101         * array.cs: Add tests for cast between primitive array types.
102
103 2010-04-07 Andreia Gaita  <avidigal@novell.com>
104
105         * Makefile.am: create a convenience library for moon to link with
106
107 2010-04-07 Paolo Molaro <lupus@ximian.com>
108
109         * method-to-ir.c: optimize array accesses from generic interfaces.
110
111 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
112
113         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
114
115 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
116
117         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
118         of marshalbyref classes.
119
120         Fixes #515884.
121
122 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
123
124         * aot-compiler.c (emit_exception_debug_info): Encode try holes
125         information.
126
127         * aot-runtime.c (decode_exception_debug_info): Decode try holes
128         information.
129
130         * mini.h: Increase AOT version.
131
132 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
133
134         * mini-x86.h: Only enable soft debugger when using sigaction or on
135         Windows. Fixes build on Haiku (lacks siginfo_t).
136
137         Code is contributed under MIT/X11 license.
138
139 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
140
141         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
142         BeOS-style signal handlers.
143
144         Code is contributed under MIT/X11 license.
145         
146 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
147
148         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
149
150 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
151
152         * mini-exceptions.c: Fix win32 build.
153
154 2010-04-01  Mark Probst  <mark.probst@gmail.com>
155
156         * mini.c, driver.c: Call mono_gc_base_init() before
157         mono_debug_init().
158
159 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
160
161         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
162         call_method]): Delegate the actual work in security-core-clr.c
163         to ease code sharing.
164
165 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
166
167         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
168         float conv.ovf.un opcodes are encountered, instead of asserting later.
169         Fixes #566296.
170
171 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
172
173         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
174
175         * iltests.il.in: Add a test.
176
177 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
178
179         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
180         large. Fixes #567040.
181
182         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
183
184 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
185
186         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
187         #592711.
188
189 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
190
191         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
192         mono_create_handler_block_trampoline with the proper #ifdef so that it
193         compiles on amd64.
194
195 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
196
197         * mini-exceptions.c: Introduce mono_walk_stack_full, which
198         allows to select if it's new or old context that is passed to 
199         the callback.
200
201         * mini-exceptions.c (mono_handle_exception_internal): Handle the
202         case when executing a guarded handler from the EH machinery.
203
204         * mini-exceptions.c (mono_install_handler_block_guard): New function
205         responsible for checking for handler blocks, installing the guard and
206         clearing abort state.
207
208         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
209         to check for handler blocks and skip interruption logic if one was found.
210
211         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
212         by the handler block guard trampoline. Resumes interruption by raising the
213         pending ThreadAbortException.
214
215         * mini.c (create_jit_info): Calculate the end address of a finally block.
216
217         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
218         of a finally block to a specified address and return the old one.
219
220         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
221         trampoline patches the original return address and calls the trampoline function.
222
223 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
224
225         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
226
227         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
228         does the patching if the callee is in the same domain.
229
230         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
231         of mono_arch_patch_plt_entry ().
232
233 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
234
235         * mini.c (create_jit_info): Fix try block hole length encoding.
236
237 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
238
239         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
240         duplicate information and print offsets instead of absolute addresses.
241
242 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
243
244         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
245         event is sent. Fixes #591733.
246
247 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
248
249         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
250         OpenBSD.
251
252 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
253
254         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
255         thread_to_tls hash table.
256
257         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
258         section. Fixes #591000.
259
260 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
261
262         * Makefile.am (version.h): Check for pure .git directory only,
263         fixes SVN revision when using git without git-svn.
264
265         Contributed under MIT/X11 license.
266
267 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
268
269         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
270
271 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
272
273         * basic-simd.cs: Test for vector x scalar binary operators.
274
275 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
276
277         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
278         intrinsics with expanded scalar arguments.
279
280 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
281
282         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
283         don't have an exception class, so don't decode it. This would crash
284         with filter clauses.
285
286 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
287
288         Make sure that trunk builds with DISABLE_JIT, an update to the
289         PlayStation 3 port.
290         
291         * mini.c (mini_get_shared_method): this code seems to be necessary
292         regardless of whether DISABLE_JIT has been defined.
293
294         (mono_jit_compile_method_inner): it seems that this method is
295         required even in full AOT mode, so ifdef out only the pieces that
296         try to genrate code (the body of code that applies patches to the
297         code).  
298
299         (mini_method_compile): do not compile when using DISABLE_JIT.
300
301         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
302         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
303         compile when DISABLE_JIT is set.
304
305 2010-03-24  Mark Probst  <mark.probst@gmail.com>
306
307         * mini.c (mono_create_tls_get): Only create a TLS operation if the
308         arch really supports it.
309
310 2010-03-24  Mark Probst  <mark.probst@gmail.com>
311
312         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
313
314 2010-03-23  Neale Ferguson <neale@sinenomine.net>
315
316         * exceptions-s390x.c: Add support for
317         mono_arch_get_throw_corlib_exception and fix throw by name.
318
319         * mini-s390x.c: Add IMT support; Fix stack parameter passing
320         logic (especially for varargs); Correct localloc sizing; Add
321         mono_arch_get_this_arg_from_call and
322         mono_arch_get_this_arg_from_call.
323
324         * mini-s390x.h: Add support for facility list extraction;
325         Correct/update MONO_ARCH_xxx settings.
326
327         * mini-s390.c: Minor corrections to instruction output for
328         varargs. No IMT implementation - I think it's time to deprecate
329         s390 and just leave s390x.
330
331         * tramp-s390x.c: Correct creation of trampoline instruction
332
333
334         * cpu-s390x.md: Update some instruction lengths
335
336 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
337
338         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
339         can be hit with partial sharing.
340
341         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
342         in non-shared classes correctly.
343         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
344         Turn on partial sharing.
345
346 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
347
348         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
349         by mistake.
350
351 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
352
353         * method-to-ir.c (mono_method_to_ir): Handle the failure of
354         mono_method_signature ().
355
356         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
357
358         * mini.c (mini_method_compile): Get the signature of cfg->method early with
359         error checking, so later calls do not need error checking.
360
361 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
362
363         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
364
365         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
366
367 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
368
369         * mini-exceptions.c (mono_handle_exception_internal): Don't
370         check try_end for archs different than s390. 
371
372         * mini.c (create_jit_info): Don't crash if the finallt block is the
373         last one.
374
375 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
376
377         * driver.c (mono_main): Don't free global codeman under linux since
378         glic now peeks at code on stack for more archs than just amd64.
379
380 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
381
382         * mini.c, method-to-ir.c: changes to support compressed interface
383         bitmaps.
384
385 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
386
387         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
388         Use sigaction on OpenBSD too.
389
390 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
391
392         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
393
394 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
395
396         * debugger-agent.c: #include sys/select.h for fd_set.
397
398         Code is contributed under MIT/X11 license.
399
400 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
401
402         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
403         (openbsd+amd64 ?).
404
405 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
406
407         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
408         some large methods with lots of exception handlers. Fixes #440924.
409
410 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
411
412         * method-to-ir.c: remove code duplication for interface checks.
413
414 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
415
416         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
417         (assembly_unload): Clear all event requests referencing the to-be unloaded
418         assembly.
419
420
421 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
422
423         * mini.h, mini-exceptions.c: restore the state of the stack
424         guard page permissions.
425
426 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
427
428         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
429         call site patching code, it doesn't appear to be needed.
430
431 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
432
433         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
434         sharing generic methods whose type arguments are a mix of reference and
435         non-reference types. Not yet turned on.
436
437         * mini.c (mini_get_shared_method): New helper function to return
438         the method which will be compiled/registered in the JIT tables when doing
439         generic sharing.
440         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
441         use mini_get_shared_method ().
442
443         * mini.c (mini_method_compile): Register the same method which is compiled when
444         doing generic sharing.
445
446         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
447
448         * generics.cs: Add partial sharing tests.
449
450 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
451
452         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
453                    Add an enum value that or's all possable values together. Add an enum value
454                    that marks the end of the used bit indexes.
455
456         * mini-amd64.c : Make changes to match the changes in mini.h 
457
458         * mini-x86.c : Make changes to match the changes in mini.h
459
460         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
461                    simd_version to support more simd versions. Changed the name of
462                    simd_version to simd_version_flags to make it more intuitive that
463                    it now contains bit flags. Reordered the *_intrinsics arrays to
464                    match the changes above. Changed emit_intrinsics() to use the new
465                    setup mentioned above.
466
467         Code is contributed under MIT/X11 license.
468
469 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
470
471         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
472         remaining archs. Alpha and hppa maintainers, please stand up.
473
474 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
475
476         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
477         is needed even when fail_tramp!=NULL.
478
479 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
480
481         * debugger-agent.c (insert_breakpoint): Write a log message.
482
483 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
484
485         * iltests.il.in: Add a few tests for LEAVE going over multiple
486         finally clauses.
487
488 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
489
490          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
491
492 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
493
494         * mini.h (MonoBasicBlock): Add native_length field.
495         * mini.h (MonoCompile): Add try_block_holes field.
496         * mini.h (MonoInst): Add exception_clause pointer to
497         the data union.
498
499         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
500         * mini.c (mono_cfg_add_try_hole): New function to register possible
501         holes in try blocks.
502         * mini.c (create_jit_info): Fill in the holes information.
503
504         * mini-exceptions.c: Verify for holes when checking if an IP is covered
505         by a try block.
506
507         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
508
509 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
510
511         * jit-icalls.c: adjusted for the array API changes.
512
513 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
514
515         * iltests.il.in: Disable the fconv_to_i test on sparc too.
516
517 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
518
519         * debugger-agent.c: Simplify the way breakpoints are processed by removing
520         the 'pending' flag. This fixes support for appdomains too.
521
522
523 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
524
525         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
526
527 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
528
529         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
530         when using LLVM, LLVM generates it itself when needed.
531
532         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
533
534         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
535         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
536         OP_ANDNPS/OP_ANDNPD.
537
538 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
539
540         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
541         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
542         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
543
544 2010-03-11  Martin Baulig  <martin@ximian.com>
545
546         * debugger-agent.c (type_commands): Add NULL check to
547         `CMD_TYPE_GET_SOURCE_FILES'.
548
549 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
550
551         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
552
553 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
554
555         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
556         #586664.
557
558         * iltests.il.in: Add a test.
559
560 2010-03-05  Martin Baulig  <martin@ximian.com>
561
562         Add support for aborting invocations.
563
564         * debugger-agent.c
565         (InvokeData): Added `InvokeData *last_invoke'.
566         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
567         added a new `invoke' field to keep the `InvokeData *' throughout
568         the invocation.
569         (ErrorCode): Added `ERR_NO_INVOCATION'.
570         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
571         (mono_debugger_agent_handle_exception): Don't report any exception
572         if an abort was requested.
573         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
574         a thread abort if necessary.
575         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
576
577 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
578
579         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
580         so we can release the whole list and not just the first one. Free
581         it in more places as well.
582
583 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
584
585         * method-to-ir.c: Revert r153222 as it doesn't belong here.
586
587 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
588
589         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
590
591 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
592
593         * driver.c: report also other misc build options.
594
595 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
596
597         * method-to-ir.c: Generate better code for the NewObject
598         intrinsic.
599         
600 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
601
602         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
603         is disabled. Fixes #582322.
604
605         * iltests.il.in: Add a test.
606
607 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
608
609         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
610         the handling of obj->synchronization == null and owner != current thread to
611         mono_monitor_exit ().
612
613         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
614
615
616 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
617
618         * mini.c: change the way emulated opcode info is stored and save about
619         4 KB of runtime memory.
620
621 2010-03-04  David S. Miller  <davem@davemloft.net>
622
623        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
624        that don't provide the siginfo in the second signal handler argument
625        are buggy, and this has been fixed for years.
626        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
627        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
628
629 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
630
631         * aot-runtime.c (find_symbol): Fix a leak.
632         (decode_patch): Ditto.
633
634 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
635
636         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
637
638 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
639
640         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
641
642 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
643
644         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
645
646 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
647
648         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
649         to check for errors, it's enough to create the metadata open.
650
651         Fixes #562150
652
653 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
654
655         * trace.c|h:
656         * mini-exceptions.c: Add support for printing stack traces when handling
657         exceptions, and when printing exceptions thrown while tracing also print
658         the exception message.
659
660 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
661
662         * trace.c: We need to parse exclude tokens ('-') before string tokens,
663         since the exclude token is a valid string character.
664
665 2010-03-02  Levi Bard  <levi@unity3d.com>
666
667         * debugger-agent.c: Invalidate thread stacks on domain unload.
668
669 2010-03-02  Mark Probst  <mark.probst@gmail.com>
670
671         * method-to-ir.c: Emit dummy_use for stored reference after write
672         barriers to make sure the object is pinned if the GC interrupts
673         before the write barrier is done.
674
675 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
676
677         * cpu-<ARCH>.md: dummy_use was missing src1:i.
678
679 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
680
681         * debugger-agent.c: Add a log message printing the protocol version.
682
683 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
684
685         * debugger-agent.c: Add a new command to communicate the protocol version used
686         by the client. This could be used to allow newer runtimes to communicate with
687         older clients.
688
689 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
690
691         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
692
693 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
694
695         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
696         type.
697
698 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
699
700         * mini-arm.c: make the arm cpu arch configurable with the
701         MONO_CPU_ARCH env var (for example: "armv4 thumb").
702         Bug #584198.
703
704 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
705
706         * mini.c, mini.h, driver.c: added the --jitmap option to enable
707         support for the perf tool on Linux.
708
709 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
710
711         * method-to-ir.c: make string.InsertenalSetChar() specialization
712         effective.
713
714 2010-03-01  Robert Jordan  <robertj@gmx.net>
715
716         * Makefile.am: fix the non-static build.
717
718 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
719
720         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
721         here.
722
723 2010-02-26  Robert Jordan  <robertj@gmx.net>
724
725         * tasklets.c (continuation_store): Return from an error condition
726         immediately.
727
728 2010-02-26  Martin Baulig  <martin@ximian.com>
729
730         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
731
732         * debug-mini.c
733         (MonoDebuggerThreadInfo): Added `internal_flags'.
734         (MonoDebuggerInternalThreadFlags): New enum.
735         (_mono_debugger_throw_exception): Don't signal the debugger if a
736         type abort was requested.
737         (_mono_debugger_unhandled_exception): Likewise.
738         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
739         (mono_debugger_runtime_invoke): If the debugger requested a thread
740         abort during the invocation, reset it here.
741
742 2010-02-26  Martin Baulig  <martin@ximian.com>
743
744         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
745         instead of `MonoThread *'.
746
747 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
748
749         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
750         code offsets table, as it is mostly sorted.
751
752 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
753
754         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
755         Fixes #582991.
756
757 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
758
759         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
760
761 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
762
763         * Makefile.am: build the new ABI version of the libmono library.
764         * debugger-agent.c, mini.c: fix warnings with the new API.
765         * jit.h: don't depend on glib.h being included.
766
767 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
768
769         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
770
771 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
772
773         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
774         ThreadStatic variables.
775
776 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
777
778         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
779         data is not freed yet. Fixes #582460.
780
781 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
782
783         * debugger-agent.c: Add support for the caught/uncaught flags on exception
784         event requests. Bump protocol minor version.
785
786 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
787
788         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
789
790 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
791
792         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
793         #581950.
794
795         * iltests.il.in: Add a test.
796
797 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
798
799         * mini.c (inline_method): Check for loader errors.
800
801 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
802
803         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
804         instead of mono_method_get_header as it doesn't decode locals
805         so the called method can have unresolved dependencies that will only
806         be satisfied after the current method is JIT'd.
807
808         Fixes #550968.
809
810 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
811
812         * basic.cs (test_0_div_opt): Speed this up a bit.
813
814 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
815
816         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
817
818         * mini.c (mono_jit_create_remoting_trampoline): Call
819         mono_create_specific_trampoline () instead of
820         mono_arch_create_specific_trampoline ().
821
822         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
823
824 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
825
826         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
827         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
828
829         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
830
831         * mini-amd64.c: Fix DISABLE_JIT support.
832
833 2010-02-20  Geoff Norton  <gnorton@novell.com>
834
835         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
836
837 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
838
839         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
840         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
841         CATCH_TXT. Send normal exception events for unhandled exceptions too.
842         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
843         handle_exception.
844
845 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
846
847         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
848         edx/ecx too. This is needed to support OP_SEQ_POINT.
849
850 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
851
852         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
853
854         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
855
856 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
857
858         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
859         LLVM+AOT+exceptions, not enabled yet.
860
861 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
862
863         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
864
865 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
866
867         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
868         xdebug info for these.
869
870         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
871         in a few places.
872
873         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
874         not used yet.
875
876 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
877
878         * aot-compiler.c (load_profile_files): Update after the profiler changes.
879
880 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
881
882         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
883         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
884
885         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
886         for mtouch.
887
888 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
889
890         * debugger-agent.c: handle incomplete reads and EINTR in
891         recv()/send(). This could have been causing random
892         disconnections.
893
894 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
895
896         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
897         points.
898
899         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
900         so they have small offsets. Fixes #566311.
901
902 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
903
904         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
905
906 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
907
908         * mini-amd64.c: Remove the special casing of byref in a few places now that
909         mini_type_get_underlying_type () handles it.
910
911         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
912         by returning native int. Fixes #577984.
913
914 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
915
916         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
917         a macro.
918
919         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
920         of putting the clause itself.
921
922         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
923
924 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
925
926         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
927         might be unaligned.
928
929 2010-02-10  Geoff Norton  <gnorton@novell.com>
930
931         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
932
933 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
934
935         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
936         llvm methods too.
937
938         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
939         it is not an LLVM generated symbol.
940
941         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
942
943         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
944         implementation in gshared mode because it causes regressions.
945
946         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
947
948         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
949         should be done by the caller.
950
951         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
952
953         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
954
955         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
956         since mono_jit_info_table_find () doesn't do it anymore.
957
958         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
959         instead of mono_jit_info_table_find ().
960
961 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
962
963         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
964
965         * aot-compiler.c (encode_method_ref): Update after the removal of
966         mono_gc_get_managed_allocator_type ().
967
968         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
969         Fixes #564538.
970
971 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
972
973         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
974         generic params as well.
975         (handle_isinst): Ditto.
976
977         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
978         instead of always calling an icall.
979
980         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
981         computing the size of the got.
982
983         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
984         when using LLVM. Instead of emitting it as an LLVM method, emit it using
985         the assembly directive '.set' so it points to the first LLVM emitted method.
986
987 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
988
989         * mini.c (mini_method_verify): Report the method which failed to verify.
990
991 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
992
993         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
994         to avoid JIT'ng dead basic blocks. This is the same behavior as the
995         runtime MS verifier.
996
997 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
998
999         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1000         #561962.
1001
1002 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * mini-llvm.c: Init the jit module only when first JITting.
1005
1006         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1007
1008         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1009
1010         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1011         replaced with the real got.
1012
1013         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1014
1015         * image-writer.c: Reduce the amount of #ifdefs a bit.
1016
1017         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1018         llvm on darwin/arm.
1019
1020         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1021
1022         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1023         global.
1024
1025 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1026
1027         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1028         (mono_llvm_emit_method): Fix unaligned stores too.
1029
1030         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1031         so async stack walks don't crash.
1032
1033 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1034
1035         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1036         was not patched if the callee needed an rgctx trampoline.
1037
1038 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1039
1040         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1041         vtable address in AOT code.
1042
1043 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1044
1045         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1046         MonoInst's.
1047
1048 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1049
1050         * genmdesc.pl: remove dependency on external cpp.
1051
1052 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1055         using LLVM, its not needed, and abcrem can't handle it.
1056
1057 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1058
1059         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1060         it easier to group instructions and reduce duplication.
1061
1062 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1063
1064         * decompose.c: Move the array/soft float decompose routines here from
1065         method-to-ir.c.
1066
1067         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1068
1069 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1070
1071         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1072         to tell LLVM that the got is constant, not used yet.
1073
1074         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1075
1076 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1077
1078         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1079         managed wrappers.
1080
1081 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * aot-compiler.c (add_wrappers): Commit the hack which generates
1084         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1085         custom attribute.
1086
1087 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1088
1089         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1090         a fault, only used by the LLVM backend.
1091
1092         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1093         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1094
1095         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1096         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1097
1098         * mini-llvm.c: Only generate volatile loads from load instructions which have
1099         the MONO_INST_FAULT flag set.
1100
1101 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1102
1103         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1104         64 bit platforms.
1105
1106 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1109         sequence points. Fixes #571236.
1110
1111 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1112
1113         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1114         end of the appdomain unload process, after assemblies have been unloaded.
1115         Fixes #574842.
1116
1117 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1118
1119         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1120         works.
1121
1122         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1123         Fixes #573988.
1124
1125 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1126
1127         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1128
1129 2010-01-26  Geoff Norton  <gnorton@novell.com>
1130
1131         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1132         with struct marshalability.
1133
1134 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1135
1136         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1137         it supports class names as well.
1138
1139         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1140         needed by the GC map code.
1141
1142         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1143         flags if needed.
1144
1145         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1146         if cfg->init_ref_vars is set.
1147
1148         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1149         cfg->disable_initlocals_op_refs is set.
1150
1151         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1152         using liveness info if cfg->compute_precise_live_ranges is set.
1153
1154         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1155         volatile variables correctly. Add comments about the live ranges. Not enabled
1156         yet.
1157
1158 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1159
1160         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1161         0x2a into them in method prologs.
1162
1163         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1164
1165 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1166
1167         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1168         classes, since llvm is compiled with -fno-rtti.
1169
1170         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1171
1172         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1173         llvm does not require it.
1174
1175         * aot-runtime.c (load_method): Print the full name of the last aot method.
1176
1177 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1180         thread has not fully started yet.
1181
1182 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1183
1184         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1185
1186 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1187
1188         * driver.c: Do not abort if LLVM is not supported, print a
1189         warning and add the information to the Mono JIT information.
1190
1191 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1192
1193         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1194         using explicit null checks.
1195
1196 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1199         related code.
1200
1201         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1202         () in one place.
1203         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1204         its no longer needed.
1205
1206         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1207
1208         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1209         define for platforms still using it (s390). Get rid of the
1210         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1211
1212         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1213         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1214
1215         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1216         the caller pushed the arguments.
1217
1218         * mini-llvm.c: Enable throwing exceptions on x86.
1219
1220         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1221         "Thread (nil) may have been prematurely finalized" messages if this is called
1222         on a thread not registered with the runtime.
1223
1224         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1225
1226 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1227
1228         * jit-icalls.c (mono_array_new_3): New jit icall.
1229
1230         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1231
1232         * arrays.cs: Add a test for 3 dimensional arrays.
1233
1234 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1235
1236         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1237         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1238         used.
1239
1240         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1241         thrown on x86.
1242
1243         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1244
1245         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1246
1247         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1248
1249 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1250
1251         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1252           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1253
1254         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1255
1256         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1257
1258         Code is contributed under MIT/X11 license.
1259
1260 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1261
1262         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1263
1264         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1265
1266         * mini.c (mini_method_compile): Set the new flag when running under the
1267         debugger.
1268
1269 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1270
1271         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1272         a ref/noref value + a global pin flag, so parts of stack frames can still be
1273         precisely marked even if they include stuff which needs pinning. Improve logging.
1274         Fix many bugs. Not enabled yet.
1275
1276         * gc-test.cs: Add a few tests.
1277
1278         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1279         the normal -v options. Avoid propagating liveness information through bblocks
1280         which end with a NOT_REACHED opcode.
1281
1282         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1283         after cfg has been freed.
1284
1285 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1288         if a clause is skipped because it uses the exception object, since it could
1289         have caught the exception.
1290
1291         * exceptions.cs: Add a test.
1292
1293 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1294
1295        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1296
1297         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1298         ICollection<T> wrappers.
1299
1300 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1301
1302         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1303
1304 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1305
1306         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1307         NOMAP32BIT or optimize_for_xen is set.
1308
1309 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1310
1311         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1312         mono_metadata_str_hash () instead.
1313
1314 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1315
1316         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1317         sizeof (void*).
1318
1319         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1320
1321 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1322
1323         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1324         flag is set.
1325
1326         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1327         throwing code correctly.
1328
1329         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1330
1331 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1332
1333         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1334         ftnptrs created by us, handle RGCTX_FETCH correctly.
1335         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1336
1337         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1338         ftnptr added by mono_aot_get_named_code ().
1339
1340 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1341
1342         * mini-arm.c: Fix a few LLVM problems.
1343
1344         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1345
1346 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1347
1348         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1349         AOT compiling.
1350
1351 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1352
1353         * jit.h, method-to-ir.c: added ability to set the policy for
1354         inserting breakpoints from the break IL instruction or the
1355         Debugger.Break () API call.
1356
1357 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1358
1359         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1360         assemblies need to be eagerly loaded.
1361
1362 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1363
1364         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1365
1366 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1367
1368         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1369         an argument which matches any exception.
1370
1371 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1372
1373         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1374         optimization if the called method is gshared and marshalbyref, since gshared
1375         methods can' have wrappers. Fixes #569390.
1376
1377         * generics.cs: Add a test.
1378
1379 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1382         callable from gdb.
1383
1384 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1385
1386         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1387
1388 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1389
1390         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1391         since it is not supported in win2000.
1392
1393 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1394
1395         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1396         error if loading an assembly fails.
1397         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1398
1399         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1400         if exists.
1401
1402         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1403         compiled methods.
1404
1405         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1406
1407         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1408         is not supported yet.
1409
1410         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1411
1412 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1413
1414         * method-to-ir.c: All types with variant arguments must fallback to the
1415         slow path. This makes cast of variant delegates work.
1416
1417         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1418         argument that is set to TRUE is the returned vtable slot is for a variant
1419         interface. Changed a g_print + g_assert_not_reached to a g_error.
1420
1421         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1422         a similar fashion of generic virtual methods.
1423
1424 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1425
1426         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1427         when cfg is null.
1428
1429         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1430         method using a variance aware function.
1431
1432         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1433
1434 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1435
1436         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1437         do an icall for now.
1438
1439 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1440
1441         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1442         If LLVM decides to set the code model to Large, reset it to Default.
1443
1444 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1445
1446         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1447         stripped binaries as well.
1448
1449 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1450
1451         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1452         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1453
1454         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1455         reg.
1456
1457 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1458
1459         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1460         separate function.
1461
1462         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1463         as the type info to llvm.eh.selector.
1464         (exception_cb): Use the type info for filling out some fields of
1465         MonoJitExceptionInfo like the flags and the exception class. This is needed
1466         because the LLVM produced exception handling clauses might not match the original
1467         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1468
1469         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1470         separate function. Add an extra argument which returns the type infos
1471         corresponding to the exception clauses.
1472
1473         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1474         exception handling clauses.
1475
1476 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1477
1478         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1479         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1480         to fix an AOT case.
1481
1482 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1483
1484         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1485         internal assembly.
1486
1487 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1490         llvm code.
1491
1492 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1493
1494         * mini.c (mini_method_compile): Verify the method before calling
1495         mono_compile_create_vars as this might crash since it uses method
1496         information.
1497
1498         Fixes #560196.
1499
1500 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1501
1502         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1503         one case if AOTing, since the class might not be a concrete class.
1504
1505 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1506
1507         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1508         functions which are now defined in mempool-internals.h.
1509
1510         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1511
1512         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1513
1514 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1515
1516         * mini.c:
1517         * method-to.ir.c:
1518         * mini-*.c: Properly handle generic enums.
1519
1520         Fixes #566294
1521
1522 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1523
1524         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1525         in a few more places.
1526
1527 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1528
1529         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1530         nullable parameters. Fixes #567351.
1531
1532 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1533
1534         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1535
1536 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1537
1538         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1539         mono_get_generic_context_from_code () call.
1540
1541         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1542
1543 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1544
1545         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1546         needed.
1547
1548 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1549
1550         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1551         mono_method_get_signature returns NULL. Fix #567084
1552
1553 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1554
1555         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1556         instead of once for each module.
1557
1558 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1559
1560         * debugger-agent.c (ss_start): Implement step over for the last sequence
1561         point in methods.
1562
1563         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1564         have the STEP_LOC flag set.
1565
1566         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1567         fails. Fixes #566689.
1568
1569 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * mini.c (mono_add_seq_point): New helper function.
1572         (mono_save_seq_point_info): New function to save sequence point info, extracted
1573         from mini_method_compile ().
1574
1575         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1576
1577         * mini.h (MonoSeqPointInfo): New structure containing information about
1578         the sequence points of a JITted method.
1579         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1580         'bucket' field.
1581
1582         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1583         point information is stored, use a MonoSeqPointInfo structure instead of a
1584         GPtrArray. For each seq point, compute a list of successor seq points.
1585
1586         * debugger-agent.c: Use the successor list to implement step-over more
1587         efficiently: instead of single stepping until a different line/IL offset is
1588         reached, place breakpoints into all successor seq points.
1589
1590         * mini.h: Bump AOT file format version.
1591
1592 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1593
1594         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1595
1596         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1597
1598 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1599
1600         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1601         build.
1602
1603 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1604
1605         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1606         alloca as g_malloc is not signal safe.
1607
1608 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1609
1610         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1611         VALGRIND_DISCARD_TRANSLATIONS.
1612
1613         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1614         checks, they are no longer needed.
1615
1616         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1617         a function into a sigctx which can handle function pointers.
1618
1619         * mini-ppc.c: Implement soft debugger support on ppc64.
1620
1621         * mini-ppc.c: Implement soft debugger support.
1622
1623 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1624
1625         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1626
1627 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1628
1629         * mini.c (mono_get_runtime_build_info): include Mono version in
1630         the returned value.
1631
1632         * driver.c (mono_main): VERSION is now included in the string
1633         returned from mono_get_runtime_build_info()
1634
1635 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1636
1637         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1638         signatures. Fixes #565143.
1639
1640         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1641
1642 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1643
1644         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1645
1646 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1647
1648         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1649         making max stack 10x smaller.
1650
1651 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1652
1653         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1654
1655 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1656
1657         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1658
1659 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1660
1661         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1662         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1663
1664         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1665
1666         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1667
1668         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1669
1670         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1671         the compilation.
1672
1673 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1674
1675         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1676         raise an invalid program exception.   
1677
1678         For other opcodes that we might not handle use a g_warning and
1679         raise the exception.   Beats termination.
1680
1681         Fixes #561724
1682
1683 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1684
1685         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1686
1687         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1688         by merging the LLVM and !MAP_32BIT cases.
1689
1690 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1691
1692         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1693         sigctx being passed in, as we have no CONTEXT available in the APC.
1694
1695         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1696         for now.
1697
1698         Code contributed under MIT/X11 license.
1699
1700 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1701
1702         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1703         in the LLVM backend on AMD64.
1704
1705         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1706         FDE.
1707
1708         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1709
1710         * mini-llvm.c: Export mono_personality for AOT.
1711
1712         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1713
1714         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1715         implicit exception can occur.
1716
1717         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1718         OP_IMPLICIT_EXCEPTION instruction.
1719
1720         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1721
1722         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1723
1724         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1725         inside a protected block.
1726
1727         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1728         trampolines doesn't include the argument.
1729
1730         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1731         trampolines on amd64.
1732
1733         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1734         of RDI.
1735
1736         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1737         disabled for methods with clauses.
1738
1739         * mini-llvm.c: Enable support for catch clauses.
1740
1741         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1742         end of an LLVM compiled finally clause.
1743         (mono_handle_exception_internal): Save the exception handling state in TLS
1744         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1745         resume unwinding from that point.
1746
1747         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1748         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1749         to obtain the addresses of the exception handling regions.
1750
1751         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1752         finally clauses are supported.
1753
1754         * mini.c (mini_method_compile): Add support for LLVM code with exception
1755         handlers.
1756
1757 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1758
1759         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1760         proper size.
1761
1762 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1763
1764         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1765         as a primitive type.
1766
1767 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1768
1769         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1770         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1771         #564000.
1772
1773 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1774
1775         * method-to-ir.c (mini_redirect_call): do not redirect the
1776         InternalAllocateStr internal call if string profiling is enabled.
1777
1778 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1779
1780         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1781         generic methods.
1782
1783         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1784         unwind.h header file.
1785
1786         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1787         newer valgrind versions seems to handle this fine.
1788
1789 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1790
1791         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1792         on the debugger thread.
1793
1794 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1795
1796         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1797
1798         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1799
1800         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1801
1802         * cpu-<ARCH>.md: Make call_handler clob:c.
1803
1804         * mini.c: Reenable SSA for methods with clauses.
1805
1806         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1807         as it causes failures on x86.
1808
1809 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
1810
1811         * driver.c: Fail gracefully with --compile-all if mono_method_signature
1812         returns NULL (e.g. a bad assembly).
1813
1814 2009-12-08  Geoff Norton  <gnorton@novell.com>
1815
1816         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
1817         stepping out into native code.  There were issues with nested invokes
1818         like .cctors.
1819
1820 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
1821
1822         * mini.c (mini_method_compile): Do the disable_llvm checks early
1823         and avoid the LLVM compile pass if the checks fail.
1824
1825         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
1826
1827         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
1828         LLVM optimizations don't try to remove them.
1829
1830         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
1831         different file so the original remains.
1832
1833 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
1834
1835         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
1836
1837         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
1838
1839         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
1840         support for non-inline unwind descriptors.
1841
1842 2009-12-07  Geoff Norton  <gnorton@novell.com>
1843
1844         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
1845         the interrupt_count slightly differently.  Native threads were never
1846         marked as resumed.
1847
1848 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1849
1850         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
1851         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
1852         yet generate this info.
1853
1854         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
1855
1856         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
1857         client can distinguish between intptrs and longs.
1858
1859 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
1862         blob.
1863
1864         * aot-runtime.c (load_function): Update after the change above.
1865
1866         * mini.h: Bump AOT file format version.
1867
1868         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
1869         if the delegate class is dynamic.
1870
1871         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
1872         in gshared code too using the new rgctx info type
1873         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
1874
1875 2009-12-04  Geoff Norton  <gnorton@novell.com>
1876
1877         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
1878         we need to track the original suspend count so the thread properly
1879         wakes up in resume_thread.
1880
1881 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
1882
1883         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
1884         code.
1885
1886         * generics.cs: Add a test.
1887
1888         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
1889         is 0. Simplify a lot of code using this.
1890
1891         * mini-trampolines.c (mono_delegate_trampoline): Call
1892         mono_create_static_rgctx_trampoline () before saving the final address in
1893         delegate->method_code, to avoid calling it each time a delegate is first called.
1894
1895         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
1896         which need static rgctx trampolines.
1897
1898         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
1899         keyed on the method+addr pair, since addr could be either the method addr or
1900         an unbox trampoline in the AOT case. Fixes #560246.
1901
1902 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
1905         place it was called before too.
1906
1907 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1908
1909         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
1910         if no security manager is present, to speed up the AOT case. Call
1911         mono_class_vtable () full with raise_on_error == TRUE instead.
1912
1913 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1914
1915         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
1916         the local optimization passes can take its result into account. Fixes
1917         #559876.
1918
1919         * exceptions.cs: Add a test.
1920
1921 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
1922
1923         This patch is contributed under the terms of the MIT/X11 license
1924
1925         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
1926
1927 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
1928
1929         * mini.h (MonoInst): Remove unused 'ssa_op' field.
1930
1931         * debugger-agent.c: Rework the handling of stack traces of running threads to
1932         avoid crashes if compute_frames () tries to walk the stack of running thread.
1933
1934         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
1935
1936         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
1937
1938         * mini.h (StackFrameInfo): Add an 'lmf' field.
1939
1940 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
1941
1942         * debugger-agent.c (suspend_current): Always set really_suspended.
1943
1944         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
1945
1946         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
1947
1948 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1949
1950         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
1951         really suspended.
1952
1953 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
1954
1955         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
1956
1957 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1958
1959         * mini-trampolines.c: Fix MSVC build.
1960
1961 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
1962
1963         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
1964
1965 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1966
1967         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
1968         the instruction following an OP_FCOMPARE is optimized away.
1969
1970 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
1971
1972         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
1973         emit_autoreg () into this arch-specific function.
1974
1975         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
1976         code, it is no longer needed.
1977
1978         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
1979
1980         * mini.h: Bump AOT file format version.
1981
1982         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
1983         using the sorted_code_offsets array, instead of reading it from the
1984         exception debug info.
1985         (load_method): Call mono_aot_find_jit_info instead of
1986         decode_exception_debug_info ().
1987
1988         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
1989         LLVM compiled as a flag.
1990
1991 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * debugger-agent.c (resume_thread): Fix a warning.
1994
1995         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
1996         generated.
1997
1998 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
1999
2000         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2001         contents to MonoAotFileInfo.
2002
2003 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2004
2005         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2006         Put all binary data into a giant blob, similarly to the way .net assemblies
2007         store binary data. Emit offset tables in a compact form to reduce their size.
2008
2009         * mini.h: Bump AOT file format version.
2010
2011         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2012         places.
2013
2014         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2015         avoid linear searches at runtime.
2016
2017         * aot-runtime.c (find_symbol): Update this to use the hash.
2018
2019         * mini.h: Bump AOT file format version.
2020
2021 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2022
2023         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2024         container.
2025
2026         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2027         too.
2028
2029         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2030         the distribution of got slot types.
2031
2032         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2033
2034         * method-to-ir.c: Add support for generating explicit null checks.
2035
2036 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2039         on a random thread if possible.
2040
2041         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2042         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2043         correctly.
2044
2045         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2046         regs. Pass the real size of the regs array to mono_unwind_frame ().
2047
2048         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2049         ones instead.
2050
2051 2009-11-24  Geoff Norton  <gnorton@novell.com>
2052
2053         * mini-darwin.c: Work around apple bug rdar://7209349  See
2054         http://openradar.appspot.com/7209349 for details.  Synopsis,
2055         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2056         never been initialized before.
2057
2058 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2059
2060         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2061
2062         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2063
2064 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2067         OP_SHL_IMM is not 32 bit.
2068
2069 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2070
2071         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2072
2073 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2074
2075         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2076         encountered.
2077
2078         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2079         > 0 since some threads can resume if their resume_count is > 0.
2080         (invoke_method): Avoid reading freed memory.
2081
2082         * debugger-agent.c (process_suspend): Extract the suspend code from
2083         process_single_step_inner () to a separate function. Rework the code to prevent
2084         races between this function and thread interrupts.
2085
2086         * debugger-agent.c (suspend_current): Check the resume_count field instead
2087         of resume_one so suspends+resumes during single threaded invokes work
2088         correctly.
2089
2090 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2091
2092         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2093         to make the generated code smaller.
2094
2095         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2096         sequence generated by recent LLVM versions.
2097
2098         * mini-llvm.c: Add support for a few simple cases which weren't supported
2099         before.
2100
2101         * mini-trampolines.c (mono_magic_trampoline): Don't call
2102         mono_arch_get_vcall_slot () when llvm is enabled.
2103
2104         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2105
2106         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2107         into a new function called common_call_trampoline () which is used by the
2108         llvm vcall trampoline as well.
2109
2110         * debugger-agent.c: Implement single threaded invokes.
2111
2112         * debugger-agent.c: Revert change which broke the agent on linux.
2113
2114         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2115         #557606.
2116
2117         * generics.cs: Add a test.
2118
2119 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2120
2121         * debugger-agent.c: Fix the cygwin build.
2122
2123 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2124
2125         * cprop.c: Remove this unused file.
2126
2127 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2128
2129         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2130         #557262.
2131
2132         * basic.cs: Add a test.
2133
2134 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2135
2136         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2137         in one more place.
2138
2139 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2140
2141         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2142         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2143         it. Use this flag to control llvm related code paths instead of #ifdef
2144         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2145         AOT code.
2146
2147         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2148
2149         * mini.h: Bump AOT file format version.
2150
2151         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2152         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2153
2154         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2155         was used as an assembly filter.
2156
2157 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2158
2159         * unwind.c: Fix support for ppc.
2160
2161         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2162         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2163
2164 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2165
2166         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2167         port.
2168         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2169         added by the ps3 changes.
2170
2171 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2172
2173         * mini-gc.c: Resurrect this, so at least it compiles.
2174
2175         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2176
2177 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2178
2179         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2180         create_event_list () so assembly filters can be used.
2181
2182         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2183         from the LMF.
2184
2185 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2186
2187         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2188         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2189         is disabled.
2190
2191         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2192         classes for char/bool too.
2193
2194         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2195
2196         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2197         used.
2198
2199         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2200         Fix warnings.
2201
2202 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2203
2204         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2205         
2206         Code contributed under MIT/X11 license.
2207
2208 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2209
2210         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2211         threads in native code work.
2212
2213         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2214         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2215         version.
2216
2217 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2218
2219         * debugger-agent.c: Implementation for Windows platform.
2220
2221         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2222         primitives. Use SEH to implement breakpoints and single stepping.
2223
2224         * mini-x86.h: Enable soft debugger on Windows.
2225
2226         Code contributed under MIT/X11 license.
2227
2228 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2229
2230         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2231         under XEN. Fixes #522894.
2232
2233         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2234
2235         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2236         interface calls in LLVM AOT code.
2237
2238         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2239         is found.
2240
2241         * mini-llvm.c: Add support for OP_VPHI.
2242
2243         * objects.cs: Add a test.
2244
2245 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2246
2247         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2248         this is called on the debugger thread.
2249
2250 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2251
2252         * mini-llvm.c: Add soft-float support.
2253
2254         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2255         FCALL which returns an R4.
2256
2257         * driver.c (mono_main): Add a missing '\n'.
2258
2259         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2260         platforms which doesn't support the LLVM IMT trampoline.
2261
2262 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2263
2264         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2265
2266         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2267
2268         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2269         virtual calls.
2270
2271         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2272
2273 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2274
2275         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2276         Instead of emitting a method_order table, sort the contents of the code_offsets
2277         table and do a binary search in the sorted table. The previous approach doesn't
2278         work with LLVM which emits methods in a arbitrary order.
2279
2280         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2281         in the .eh_frame section in ELF files.
2282
2283         * mini.h: Bump corlib file format version.
2284
2285         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2286
2287         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2288         LDMIA->LDM macro name change.
2289
2290 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2291
2292         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2293         x86.
2294
2295         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2296         SVN.
2297
2298         * aot-compiler.c: Ditto.
2299
2300         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2301         &align to mini_type_stack_size_full ().
2302
2303         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2304
2305         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2306
2307 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * mini-arm.c: Compute the stack space used by arguments using
2310         mini_type_stack_size_full ().
2311
2312 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2313
2314         * optflags-def.h: Remove dead TREEPROP optimization.
2315
2316 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2317
2318         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2319
2320         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2321
2322 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2323
2324         * driver.c (mono_jit_parse_options): New public API function to parse options
2325         as done by the runtime executable.
2326
2327         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2328         when handling named arguments.
2329
2330 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2331
2332         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2333         for passing small vtypes in registers, make the CallInfo structures more
2334         similar to the code on the other platforms.
2335
2336         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2337         the code in the prolog requires it.
2338
2339 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2342         (koush@koushikdutta.com).
2343
2344         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2345         where the thunk memory should be allocated from. Fixes appdomain unloading
2346         on arm.
2347
2348 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2349
2350         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2351         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2352
2353 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2354
2355         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2356         AOT, as it is not implemented yet.
2357
2358         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2359
2360 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2361
2362         * debugger-agent.c: Fix windows build.
2363
2364 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2365
2366         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2367         after the client connects/disconnects.
2368
2369         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2370         when an exception of a given type is thrown.
2371
2372         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2373         only on an uncaught exception.
2374
2375         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2376
2377         * debugger-agent.c: Add a 'launch' option.
2378
2379 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2380
2381         * debugger-agent.c: Add a 'timeout' option.
2382
2383 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2384
2385         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2386         the JDWP agent.
2387
2388 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2389
2390         * debugger-agent.c (set_breakpoint): Emit a log message.
2391
2392 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2393
2394         * mini-arm.c: Fix the arm build.
2395
2396 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2397
2398         * aot-compiler.c: don't leak the value returned from
2399         mono_type_full_name().
2400
2401 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2402
2403         * debugger-agent.c: defer including mono-mutex.h until we know the
2404         agent is supported.
2405
2406 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2407
2408         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2409         of pthreads directly.
2410
2411         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2412         exception handlers. Pass info argument.
2413
2414         * mini.h: Adjust signatures of soft debugger functions to pass void*
2415         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2416
2417         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2418         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2419         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2420         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2421
2422         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2423
2424         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2425         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2426         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2427         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2428
2429         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2430
2431         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2432
2433         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2434
2435         * mono-semaphore.h: Skeleton implementation for Windows.
2436
2437         Code contributed under MIT/X11 license.
2438
2439 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2440
2441         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2442
2443         Code contributed under MIT/X11 license.
2444
2445 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2446
2447         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2448
2449         Code contributed under MIT/X11 license.
2450
2451 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2452
2453         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2454         debug info to 100 because 10 still slows down gdb too much.
2455
2456         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2457         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2458         them in the wrappers.
2459
2460 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2461
2462         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2463
2464         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2465
2466         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2467         function mono_aot_get_array_helper_from_wrapper ().
2468
2469         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2470         array helper methods.
2471
2472 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2473
2474         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2475         the value was loaded from memory.
2476
2477         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2478         the value was loader from there.
2479
2480         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2481         without constant swizzle.
2482
2483 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2484
2485         * mini-amd64.c: Put soft debugger functions behind a
2486         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2487
2488         * mini-amd64.h: disable the soft debugger in windows.
2489
2490         Code contributed under MIT/X11 license.
2491
2492 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2493
2494         * mini-x86.c: Put soft debugger functions behind a
2495         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2496
2497         Code contributed under MIT/X11 license.
2498
2499 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2500
2501         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2502         to mono_arch_find_jit_info_ext.
2503
2504         Code contributed under MIT/X11 license.
2505
2506 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2509
2510         * debugger-agent.c: Add support for filtering events by assemblies.
2511
2512         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2513         the agent is not enabled.
2514
2515 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2516
2517         * exceptions-x86.c: hopefully last change to fix the windows build.
2518         This one courtesy of Jonathan Chambers.
2519
2520 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2521
2522         * debugger-agent.c: remove unused function.
2523
2524 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2525
2526         * debugger-agent.c: add #ifdefs for a few header files.
2527         * mini-x86.h: disable the soft debugger in windows.
2528         Step 1 of 2 to make this compile on windows with gcc.
2529
2530 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2531
2532         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2533         as it breaks the build.
2534
2535 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2536
2537         Merge the soft debugger branch.
2538
2539         * debugger-agent.h debugger-agent.c: New files containing the soft
2540         mode debugger module.
2541
2542         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2543         at the appropriate locations.
2544
2545         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2546         opcode.
2547
2548         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2549         enable/disable single stepping.
2550
2551         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2552         which returns all information in a StackFrameInfo structure, and can handle the
2553         LMF frames added by the debugger.
2554
2555         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2556         about an LMF frame.
2557
2558         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2559         walker function which works on a specific thread and passes a StackFrameInfo
2560         structure to its callback.
2561
2562         * mini.c (mini_init): Initialize the debugger agent.
2563
2564         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2565
2566         * mini-ops.h: Add OP_SEQ_POINT opcode.
2567
2568         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2569         arguments to the debugger agent.
2570
2571 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2572
2573         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2574         speed things up.
2575
2576         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2577
2578         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2579
2580         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2581
2582         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2583         if needed.
2584         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2585         sets the IMT argument and makes a virtual call.
2586
2587         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2588
2589 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2592         the windows build.
2593
2594 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2597         runtime. Fixes #551228.
2598
2599 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2602
2603         * basic.cs: Add a test.
2604
2605         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2606         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2607         CONSTRAINED. Fixes #550964.
2608
2609         * generics.cs: Add a test.
2610
2611 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2612
2613         * mini-posix.c (add_signal_handler): Use
2614         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2615
2616 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2617
2618         Contributed under the terms of the MIT/X11 license by
2619         Jerry Maine <crashfourit@gail.com>.
2620
2621         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2622         sse4a for simd intrinsics.
2623
2624         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2625         sse4a for simd intrinsics.
2626
2627 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2628
2629         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2630         instead of inst_p1 which is not the same on ILP32 platforms.
2631
2632 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2633
2634         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2635         not the mscorlib one before calling mono_get_lmf_addr.
2636
2637         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2638         of the ip to the LMF.
2639
2640         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2641         immediate in the op->op_imm optimization.
2642
2643         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2644         understand. VTypes now work, but are not abi compliant, as they are
2645         split into 4 byte parts instead of 8.
2646         (emit_memcpy): Fix the unrolled case to work on the PS3.
2647
2648         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2649
2650         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2651         the default when static linking.
2652
2653         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2654
2655         * aot-compiler.c: Add an autoreg option to automatically register
2656         statically linked aot modules using ELF .ctors.
2657
2658         * genmdesc.pl: Add __ppc64__ to allowed defines.
2659
2660 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2661
2662         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2663         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2664
2665 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2666
2667         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2668
2669 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2670
2671         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2672         which will contain the domain where the method was found.
2673
2674         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2675         mini_jit_info_table_find ().
2676
2677         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2678
2679         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2680
2681 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2682
2683         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2684         set, its not supported yet.
2685
2686 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2687
2688         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2689         iface wrapper is not found.
2690         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2691
2692 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2693
2694         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2695         which have a different name.
2696
2697         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2698         wrappers and Array.GetGenericValueImpl ().
2699
2700         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2701         because of the change above.
2702
2703         * generics.cs: Add a test for full aot + generic array ifaces.
2704
2705 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2706
2707         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2708         that hides the previous one.
2709
2710 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2711
2712         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2713         marshalled. Fixes #541623.
2714
2715 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2716
2717         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2718
2719 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2720
2721         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2722
2723 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2724
2725         * mini-posix.c (sigprof_signal_handler):
2726         Implemented support for building stat call chans in different ways.
2727
2728 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2729
2730         * mini-exceptions.c (mono_find_jit_info):
2731         Also check that a jit info has been found (fixes a profiler crash).
2732
2733 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2734
2735         * mini.c (mono_codegen):
2736         Call mono_profiler_code_buffer_new with correct code address.
2737
2738 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2739
2740         * driver.c (mono_main): Change the date in the copyright.
2741
2742 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2743
2744         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2745         allocator in shared generic code for open classes, because we
2746         can't get those classes' vtables.  We need to make managed
2747         allocators not depend on the vtable at compile-time to solve this.
2748
2749 2009-10-13  Martin Baulig  <martin@ximian.com>
2750
2751         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2752         `const guint8 *trampoline' argument; send both the old and the new
2753         notification.
2754
2755 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2756
2757         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2758         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2759         (can_marshal_struct): Skip structures with auto layout.
2760
2761         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2762
2763 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2764
2765         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2766         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2767         a variable to hold the stack slot used by the int<->float conversion opcodes.
2768
2769         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2770
2771 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2772
2773         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2774         when using full-aot.
2775
2776 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2779         each instance of Comparer<T>.
2780
2781         * generics.cs: Add a new test.
2782
2783 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2784
2785         * driver.c (parse_debug_options): Add a 'gdb' option.
2786
2787         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2788
2789         * image-writer.c: Add support for emitting the image into a memory buffer.
2790
2791         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2792
2793         * aot-compiler.c: Add support for registering debug info with GDB using the
2794         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2795         MONO_XDEBUG to 'gdb'.
2796
2797 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2798
2799         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2800         gdb mode.
2801
2802 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2803
2804         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2805         can be used to set breakpoints in gdb.
2806
2807         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2808         segment to an absolute address.
2809
2810 2009-10-13  Mark Probst  <mark.probst@gmail.com>
2811
2812         * method-to-ir.c: Use the managed array allocator method if
2813         available.
2814
2815 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
2816
2817         * aot-compiler.c : Fix the MSVC builds
2818
2819         Code is contributed under MIT/X11 license.
2820
2821 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
2822
2823         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
2824         avoid registering 1 symbol file per method with gdb.
2825
2826 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
2827
2828         * mini-sparc.c: Fix the handling of enums with base type long.
2829
2830         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
2831
2832         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
2833         instead of using type->data.klass as the later doesn't work with generics.
2834
2835 2009-09-25  Mark Probst  <mark.probst@gmail.com>
2836
2837         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
2838         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
2839         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
2840         works differently now and we don't handle it in the JIT anymore.
2841
2842         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
2843         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
2844         the Thread class split.
2845
2846 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * driver.c: Don't run tests with the obsolete treeprop optimization.
2849
2850         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
2851         variable volatile. Fixes #541577.
2852
2853         * basic-calls.cs: Add a new test.
2854
2855         * basic-long.cs: Remove tests which are now in basic-calls.cs.
2856
2857 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
2858
2859         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
2860         work/required with recent iphone sdk versions.
2861
2862         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
2863         structures.
2864
2865         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
2866         in the VCALL decomposition code.
2867
2868 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
2869
2870         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
2871
2872         * basic.cs: Add a test.
2873
2874         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
2875         generic invokes.
2876
2877         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
2878         searches all the domains of the current thread.
2879
2880         * exceptions-<ARCH>.c: Use it. Fixes #539394.
2881
2882 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
2883
2884         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
2885         so catching exceptions thrown in the same method works. Fixes exception17.exe.
2886
2887         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
2888         for non-jit trampolines.
2889
2890         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
2891
2892         * aot-compiler.c (add_wrappers): Ditto.
2893
2894         * mini-arm.c: Implement support for passing vtypes and floats, and increase
2895         the size of the param area used by dyn_call to 6 which covers the majority of
2896         methods.
2897
2898         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
2899
2900         * mini-arm.c: Implement support for passing/receiving
2901         longs and receiving floats in the dyn_call code.
2902
2903         * mini-amd64.c: Implement support for receiving vtypes in registers in
2904         the dyn_call code.
2905
2906         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
2907         the dyn_call code.
2908
2909 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * mini-arm.c (get_call_info): Return more precise information in
2912         ArgInfo->regtype.
2913         (dyn_call_supported): Use the information in CallInfo.
2914
2915         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
2916
2917         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
2918         code.
2919
2920         * mini-arm.c: Update after the dyn_call api changes.
2921
2922         * mini.c (mini_create_jit_domain_info): Register a destructor function
2923         for the runtime_invoke_hash.
2924
2925         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
2926         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
2927         this function.
2928         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
2929         (dyn_call_supported): Simplify this by using get_call_info ().
2930         (mono_arch_dyn_call_free): New destructor function.
2931
2932         * generics.cs: Remove a printf.
2933
2934         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
2935
2936         * mini-arm.c: Add support for enum return values and passing a few arguments
2937         on the stack.
2938         
2939         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
2940         dyn invoke.
2941
2942         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
2943
2944         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
2945         the dynamic invoke wrappers.
2946
2947         * mini-arm.c: Implement OP_DYN_CALL for arm.
2948
2949         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
2950         supported by the dynamic runtime invoke wrapper.
2951
2952         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
2953         runtime invoke wrapper.
2954
2955         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
2956         if possible when running with full-aot.
2957
2958         * mini-ops.h: Add OP_DYN_CALL opcode.
2959
2960         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
2961         with dynamic arguments lists similar to libffi.
2962
2963 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
2964
2965         * method-to-ir.c: Fix the previous change on 64 bit platforms.
2966         
2967         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
2968         to NEWARR.
2969
2970         * iltests.il.in: Add a new test.
2971         
2972 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
2973
2974         * aot-compiler.c (add_generic_instances): Add more instances of
2975         GenericEqualityComparer.
2976
2977 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2978
2979         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
2980
2981 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
2982
2983         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
2984         comments on some functions that now can fail.
2985
2986 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
2987
2988         * Makefile.am: Add Info.plist to EXTRA_DIST
2989
2990 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
2991
2992         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
2993         static synchronized wrappers. Fixes #539500.
2994
2995 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
2996
2997         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
2998         properly.
2999
3000 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3001
3002         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3003         lmf before calling filter clauses as well. Fixes #539550.
3004
3005         * exceptions.cs: Add a test.
3006         
3007 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3008
3009         * aot-compiler.c (add_generic_class): Add instances of
3010         Array.GetGenericValueImpl as well.
3011
3012         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3013         can be tested too.
3014
3015         * generics.cs: Add a fullaot linq test.
3016
3017 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3018
3019         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3020         reg r1 on arm.
3021
3022 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3023
3024         * mini-trampolines.c (mono_delegate_trampoline) : Call
3025           mono_cominterop_get_invoke if the delegate target object
3026           is a COM object.
3027
3028         Code is contributed under MIT/X11 license.
3029
3030 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3031
3032         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3033         internal call is defined outside platform code. Reduce code 
3034         duplication with existing [Method|Field]AccessException
3035
3036 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3037
3038         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3039         if the return value is a small struct passed on regs.
3040
3041 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3042
3043         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3044
3045         * mini-codegen.c: Enable the cpu description validation for arm.
3046
3047 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3050         test which depends on structs to objects.cs.
3051         
3052         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3053         require object model related stuff working.
3054
3055         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3056
3057         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3058
3059         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3060         against the instruction metadata in mini-ops.h. amd64 only for now.
3061
3062         * mini-ops.h: Fix some instruction descriptions.
3063
3064         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3065         unused instructions.
3066
3067 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3068
3069         * exceptions.cs: Add a new test.
3070
3071 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3072
3073         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3074
3075 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3076
3077         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3078         skip empty phi opcodes.
3079         
3080         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3081         correctly by zero extending after loads. Skip methods containing calls
3082         to the monitor enter/exit trampolines.
3083
3084         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3085         when calling mono_thread_force_interruption_checkpoint ().
3086
3087         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3088
3089         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3090         64 bit thunks.
3091         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3092
3093         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3094         bootstrap could run.
3095
3096 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3097
3098         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3099
3100 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3101
3102         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3103         of the method to
3104         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3105         LLVM might be very short.
3106
3107         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3108         in OP_THROW/RETHROW.
3109
3110         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3111         alignment on osx.
3112
3113 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3116         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3117         LLVM might be very short.
3118
3119 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3120
3121         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3122         the alignment for the value of sp.
3123
3124 2009-09-01  Geoff Norton  <gnorton@novell.com>
3125
3126         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3127         managed wrappers in full aot.
3128
3129 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3130
3131         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3132
3133 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3134
3135         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3136
3137 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3138
3139         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3140
3141         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3142         saved info.
3143
3144         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3145
3146         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3147         depend on the info MonoMethodHeader which could be missing in IL stripped
3148         assemblies.
3149
3150 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3151
3152         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3153         they are only 4 byte aligned.
3154
3155 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3156
3157         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3158         was done previously, since using SP causes too many problems.
3159
3160         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3161         frames without a frame pointer works.
3162
3163         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3164         global register in methods with calls, since the calls can go through
3165         a static rgctx trampoline which doesn't save it.
3166
3167 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3168
3169         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3170
3171 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3172
3173         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3174
3175 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3176
3177         * method-to-ir.c: Fix warnings for uninitialized variables.
3178
3179 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3180
3181         * mini-exceptions.c:
3182         * aot-compiler.c: Fix printf warnings.
3183
3184 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3187         Add GetGenericValueImpl<string>.
3188         
3189         * aot-compiler.c (add_generic_instances): Add instances of
3190         GenericEqualityComparer<T> for primitive types. Only emit the array
3191         wrappers into the mscorlib image.
3192
3193 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3194
3195         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3196         the methods_loaded array using amodule->info->nmethods.
3197
3198         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3199         (MONO_AOT_FILE_VERSION): Bump this.
3200
3201         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3202         to work.
3203
3204         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3205         MonoJitInfo doesn't belong to its methods aot image.
3206
3207 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3210
3211         * mini-arm.c: Fix warnings.
3212         
3213         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3214
3215         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3216         supports it.
3217
3218 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3219
3220         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3221         avoid clobbering IP.
3222
3223         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3224         hold the trampoline argument, so its initial value is available during
3225         debugging.
3226
3227 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3228
3229         * exceptions-arm.c:
3230         * exceptions-hppa.c:
3231         * mini.c:
3232         * exceptions-s390x.c:
3233         * exceptions-mips.c:
3234         * exceptions-ppc.c:
3235         * exceptions-sparc.c:
3236         * exceptions-alpha.c:
3237         * aot-runtime.c:
3238         * mini-trampolines.c:
3239         * exceptions-x86.c:
3240         * exceptions-s390.c: add and use #define's instead of sizeof()
3241         for MonoJitInfo and MonoJitInfoTable.
3242
3243 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3244
3245         * tramp-arm.c:
3246         * tramp-amd64.c:
3247         * tramp-ppc.c:
3248         * tramp-x86.c: use a #define instead of sizeof() for a few
3249         structures that use a zero-length array.
3250
3251 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3252
3253         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3254         case when the method is dynamic. Fixes #529238.
3255
3256 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3257
3258         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3259         of asserting when a method is JIT compiled in full-aot mode.
3260
3261 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3262         
3263         Contributed under the terms of the MIT/X11 license by
3264         Jerry Maine <crashfourit@gail.com>.
3265         
3266         * fixed wrong dates in changelog.
3267
3268 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3269         
3270         Contributed under the terms of the MIT/X11 license by
3271         Jerry Maine <crashfourit@gail.com>.
3272
3273         * basic-simd.cs: added test for packed double square root.
3274         * cpu-amd64.md: added opcode info for packed double square root.
3275         * cpu-x86.md: added opcode info for packed double square root.
3276         * mini-ops.h: added IR opcode for packed double square root.
3277         * mini-x86.c: added IR to native translation code for packed double square root.
3278         * mini-amd64.c: removed todo for packed double square root.
3279         * simd-intrinsics.c: added method to IR opcode converstion for
3280         packed double square root.
3281
3282 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3283
3284         Contributed under the terms of the MIT/X11 license by
3285         Jerry Maine <crashfourit@gail.com>.
3286
3287         * mini-amd64.c: Added a change to help tell the difference as 
3288         to what perpose the xmm register is being used--mainly to help
3289         with debuging.
3290         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3291         (one used for special cases) xmm registers for both fp
3292         and simd ops. Added define to turn on new feature in the regalloc
3293         that allows fp and simd ops to share the xmm regs happily.
3294         * codegen.c: Added code to detect for which perpose an xmm reg is
3295         being used (fp or simd) and to translate back and forth to the
3296         correct logical reg bank (fp or simd) for 'spill load's.
3297
3298 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3299
3300         Contributed under the terms of the MIT/X11 license by
3301         Jerry Maine <crashfourit@gail.com>.
3302
3303         * basic-simd.cs: Added tests for stressing the regalloc when running with
3304         16 simd regs and when simd and fp ops share the same reg bank.
3305
3306 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3307
3308         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3309         in shared generic code, we might have to look up the class in the
3310         RGCTX.  If we use the class directly, compute its GC descriptor.
3311
3312 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3313
3314         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3315
3316 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3317
3318         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3319         check for errors. Fixed the case when the class with the Main
3320         method is broken.
3321
3322 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3323
3324         Contributed under the terms of the MIT/X11 license by
3325         Jerry Maine <crashfourit@gail.com>.
3326
3327         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3328
3329 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3330
3331         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3332
3333 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3334
3335         * method-to-ir.c: Fix naming of stelem and ldelem.
3336
3337 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3338
3339         * driver.c (main_thread_handler): Check that the assembly loaded
3340         matches the filename when doing AOT.
3341
3342 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3343
3344         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3345         call it anymore.
3346
3347         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3348         utils/mono-sigcontext.h).
3349
3350         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3351         #ifdef.
3352
3353 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3354
3355         * mini.c (mono_codegen):
3356         Call profiler hook to keep track of method code buffers.
3357
3358 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3359
3360         * method-to-ir.c: Invoke write barriers for the
3361         Interlocked.(Compare)Exchange JIT intrinsics.
3362
3363 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3364
3365         * Makefile.am (version.h): Fix issues when built out of tree.
3366         Remove some redundant 'grep's piped through 'sed's.
3367
3368 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3369
3370         This patch is contributed under the terms of the MIT/X11 license
3371
3372         * mini-ppc.c (mono_arch_output_basic_block):
3373         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3374         for bits 32-47 with signed load/store diplacements for bits
3375         48-63.  Use prefered base/offset order for indexed form.
3376         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3377         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3378         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3379         OP_LOADI2_MEMBASE): Same.
3380         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3381         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3382         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3383         indexed form.
3384         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3385         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3386         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3387         OP_LOADI1_MEMINDEX): Same
3388         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3389         OP_STORER8_MEMINDEX): Same
3390         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3391         computations.
3392         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3393         for bits 32-47 with signed load/store diplacements for bits
3394         48-63.  Use prefered base/offset order for indexed form.
3395
3396 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3397
3398 This patch is contributed under the terms of the MIT/X11 license
3399
3400         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3401         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3402         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3403         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3404         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3405         cfg->stack_usage to avoid size warnings.
3406         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3407         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3408         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3409         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3410         to convert.
3411         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3412         after code varible is initialized.
3413         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3414         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3415         (mono_arch_emit_epilog): 
3416         Move Use ppc_load32 for cfg->stack_usage to avoid size
3417         warnings.
3418
3419 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3420
3421         * method-to-ir.c: The write barrier doesn't do the store anymore,
3422         so we have always to emit it.  Also, emit the wbarrier after the
3423         store.
3424
3425 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3426
3427         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3428         for argument count 3 too.
3429
3430 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3431
3432         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3433         the caller handle the exceptions.
3434         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3435         method. Fixes #524498.
3436
3437 2009-07-22  Geoff Norton  <gnorton@novell.com>
3438
3439         * mini-exceptions.c: Fix build on ia64.
3440
3441 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3442
3443         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3444         barriers.
3445
3446 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3447
3448         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3449         code.
3450
3451 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3452
3453         * basic-simd.cs (Main): Pass args to the test driver.
3454
3455 2009-07-20  Geoff Norton  <gnorton@novell.com>
3456
3457         * mini-x86.h: Fix the x86 version guards to use Apple's
3458         properly defined macros.
3459
3460 2009-07-20  Geoff Norton  <gnorton@novell.com>
3461
3462         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3463         aligned access.
3464
3465 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3466
3467         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3468         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3469         the information which is needed for invokes, so only one locking+hash table
3470         lookup is needed.
3471
3472         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3473         
3474         * aot-compiler.c (add_generic_instances): Emit instances of 
3475         GenericComparer<T> for primitive types.
3476
3477 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3478
3479         * mini-posix.c: Fix linux build.
3480
3481 2009-07-19  Geoff Norton  <gnorton@novell.com>
3482
3483         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3484         mono_gdb_render_native_backtraces
3485         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3486         so we implement the sane semantics to the runtime here
3487         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3488         so we need to call it differently (mono_gdb_render_native_backtraces)
3489         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3490         here for default implementations.
3491         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3492         support Apple's weird syscall (SYS_fork) implementation and not busy
3493         loop in abort() on native crashes on OSX anymore.
3494
3495 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3496
3497         * aot-runtime.c (load_method): Change the handling of the
3498         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3499         are used.
3500
3501         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3502
3503 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3504
3505         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3506         seems to break the aot tests.
3507         
3508         * mini.c (mono_patch_info_equal): Fix the handling of 
3509         MONO_PATCH_INFO_RGCTX_FETCH.
3510
3511 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3512
3513         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3514
3515         * mini.c (mono_patch_info_hash): Fix the handling of 
3516         MONO_PATCH_INFO_INTERNAL_METHOD.
3517         (mono_patch_info_equal): Ditto.
3518
3519 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3522         in a few places.
3523         
3524         * mini-llvm.c: Add some infrastructure for AOT support.
3525
3526 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3527
3528         * mini-llvm-cpp.c: Update to the latest llvm api.
3529         
3530         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3531         option to false to prevent llvm from installing signal handlers which
3532         trip up the gc.
3533         
3534 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3535
3536         * cpu-x86.md:
3537         * cpu-amd64.md: Revert previous change as those instructions
3538         take 2 separate arguments. Remember to read the arch docs more
3539         carefully next time.
3540
3541 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3542
3543         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3544
3545 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3546
3547         * mini-ppc.c: exploit multiple load/store units if available (rest of
3548         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3549         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3550
3551 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3552
3553         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3554         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3555
3556 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3557
3558         * cpu-x86.md: Fix missing clobbering from trancendental simd
3559         ops.
3560
3561         * cpu-amd64.md: Same.
3562
3563 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3564
3565         Contributed under the terms of the MIT/X11 license by
3566         Jerry Maine <crashfourit@gail.com>.
3567
3568         * basic-simd.cs: Added tests for single and doulble indexers.
3569
3570         * cpu-amd64.md: Added simd opcode information.
3571
3572         * mini-amd64.c: Added IR to native simd generation code.
3573         Added simd register names and function that returns them.
3574
3575         * mini-amd64.h: Added marcos to turn on simd code compilation in
3576         amd64. Added max simd register count marco. Added caller/callee
3577         register mask marcos. Added marcos to use simd register bank.
3578
3579         * mini.h: Added helper marco for shufling dwords and simple
3580         floats.
3581
3582 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3583
3584         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3585
3586         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3587
3588         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3589         the length of the native code as well.
3590
3591         * basic-simd.cs: Add a test for #521662.
3592
3593 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3594
3595         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3596
3597 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3598
3599         * mini.c: Register function for getting the IP from a signal
3600         context with metadata.
3601
3602 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3603
3604         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3605         call a generic class init trampoline if needed. Fixes #519336.
3606
3607         * generics.cs: Add a test.
3608         
3609 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3610
3611         * method-to-ir.c: When doing a call which might be remote from
3612         shared generic code to other shared code with open type arguments,
3613         get the remoting invoke wrapper from the RGCTX and do an indirect
3614         call to it.
3615
3616 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3617
3618         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3619         after the unbox trampoline in the full-aot case.
3620
3621 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3622         
3623         * mini.c: Move initialization of jit_mutex before debugger initialization
3624         
3625         to avoid crashes.
3626         
3627         
3628         * Info.plist: added Info.plist and link flag to enable the mono executable
3629         to access other processes. Requires codesigning of the executable to work.
3630         
3631         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3632         
3633         compile on OS X.
3634         
3635
3636 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3639
3640 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3641
3642         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3643         when the generic instance is an instantiation of a subclass of the
3644         methods class. Fixes #517166.
3645
3646 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3649         code.
3650
3651         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3652         AOTed code.
3653
3654         * CMakeLists.txt: Add minimal support for installation.
3655
3656 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3657
3658         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3659         determine whenever a method is directly callable to a separate function.
3660
3661         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3662         needed ones as a result of the previous change.
3663
3664         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3665         type of register arrays.
3666
3667         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3668         type of register arrays.
3669
3670 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3671         
3672         Contributed under the terms of the MIT/X11 license by
3673         Jerry Maine <crashfourit@gail.com>.
3674
3675         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3676
3677 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3678
3679         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3680
3681 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3682
3683         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3684         dump of structure return value. Fix some formatting.
3685         * cpu-s390x.md: Fix lengths of instruction sequences.
3686         * mini-s390.c: Minor formatting changes.
3687
3688 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3689
3690         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3691         Use sigaction on freebsd as well.
3692
3693 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3694
3695         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3696         uses #ifdef on it.
3697         
3698         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3699
3700 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3701
3702         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3703
3704 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3705
3706         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3707
3708 2009-06-20  Martin Baulig  <martin@ximian.com>
3709
3710         * debug-mini.c
3711         (MonoDebuggerThreadFlags): New enum typedef.
3712         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3713         (mono_debugger_thread_created): Added `gpointer func' argument;
3714         initialize the new `thread_flags' field.
3715
3716 2009-06-18  Martin Baulig  <martin@ximian.com>
3717
3718         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3719         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3720
3721         * debug-debugger.c
3722         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3723         flag in `MONO_DEBUGGER__info.runtime_info'.
3724
3725         * driver.c
3726         (mono_main): Call mini_debugger_set_attach_ok() if generics
3727         sharing is disabled.
3728
3729 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3730
3731         * aot-compiler.c (add_wrappers): Fix a warning.
3732
3733         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3734         the ppc load/store macro changes.
3735
3736 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3737
3738         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3739
3740         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3741         not just the got symbol.
3742
3743         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3744         on ppc.
3745
3746         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3747         ppc.
3748         
3749         * aot-compiler.c: Remove some fixmes.
3750
3751         * driver.c (mono_main): Print a helpful message when cross-compiling.
3752
3753         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3754
3755         * method-to-ir.c (initialize_array_data): Do the optimization if the
3756         target byte order is little endian, instead of the host byte order.
3757
3758         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3759         wrappers into the mscorlib image, Emit a unique plt symbol for each
3760         image, emit symbols for plt entries.
3761
3762         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3763         a .size directive.
3764         
3765 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3766
3767         * aot-compiler.c (add_wrappers): Avoid calling 
3768         mono_marshal_get_type_info () since it can assert for some types.
3769
3770         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3771         ldtoken are used inside wrappers.
3772
3773         * helpers.c: Add support for prefixing tools with the arch name.
3774
3775         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3776         quantities when using ilp32.
3777
3778         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3779         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3780
3781         * image-writer.c: Use .long on ilp32.
3782
3783         * aot-compiler.c: Use 32 bit loads on ilp32.
3784         
3785 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3786
3787         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3788
3789         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3790
3791         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3792
3793         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3794         second got slot of every aot image.
3795         
3796         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3797         aot on platforms with function pointers.
3798
3799         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3800         support for aot/full aot on ppc/ppc64.
3801         
3802         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3803         arguments which are needed on ppc.
3804
3805         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3806         argument.
3807
3808         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3809         
3810         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
3811
3812         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
3813
3814         * aot-compiler.c (emit_got_info): Fix reading unused memory.
3815
3816         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
3817
3818 2009-06-17  Geoff Norton  <gnorton@novell.com>
3819
3820         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
3821
3822 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
3823
3824         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
3825         to control whenever the dwarf writer is in xdebug or aot mode.
3826         (emit_class_dwarf_info): Use a separate abbrev for structures without
3827         children.
3828
3829         * aot-compiler.c: Pass the appending parameter to 
3830         mono_dwarf_writer_create ().
3831
3832         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
3833         falls through to its next bblock. Fixes #513931.
3834
3835         * iltests.il: Add a test.
3836
3837         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
3838         infor even if emit_line is FALSE, as the apple linker seems to require it.
3839
3840         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
3841
3842         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
3843         gcc does.
3844         (emit_fde): Ditto.
3845
3846 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
3847
3848         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
3849         mips build.
3850
3851 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
3852
3853         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
3854         'has_call_handler' fields.
3855
3856         * method-to-ir.c (mono_method_to_ir): Set them if needed.
3857
3858         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
3859         first bblock if not needed. Fixes #512790.
3860         
3861 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
3862
3863         * aot-compiler.c (mono_compile_assembly): Fix a warning.
3864         
3865         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
3866         wrappers.
3867
3868         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
3869         remoting-invoke-with-check wrappers, which are not needed when running with
3870         full-aot, since it doesn't support remoting.
3871         
3872 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3873
3874         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
3875
3876         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
3877         method info, it is not used anymore.
3878
3879         * mini.h: Bump AOT file format version.
3880         
3881         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
3882         word smaller.
3883
3884         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
3885         change above.
3886         
3887         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
3888
3889         * mini.h: Bump AOT file format version.
3890         
3891 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
3892
3893         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
3894         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
3895         iphone.
3896
3897         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
3898         of CKFINITE and FBGE for VFP.
3899
3900 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
3901
3902         * aot-compiler.c: Don't align code to 16 bytes on arm.
3903         
3904         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
3905         before the methods they belong to.
3906
3907         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
3908         the full-aot case if possible, since the trampoline will be called right 
3909         away.
3910
3911         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
3912         trampolines to 1024 after the change above.
3913
3914         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
3915         trampoline to save 8 bytes per trampoline.
3916
3917         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
3918         change above.
3919
3920 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3921
3922         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
3923
3924 2009-06-08  Martin Baulig  <martin@ximian.com>
3925
3926         * debug-mini.c
3927         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3928         (_mono_debugger_throw_exception): Don't make this static.
3929         (_mono_debugger_unhandled_exception): Likewise.
3930         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3931
3932         * debug-mini.c
3933         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3934         (_mono_debugger_throw_exception): Add function prototype.
3935         (_mono_debugger_unhandled_exception): Likewise.
3936
3937         * mini-exceptions.c
3938         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3939         arg; return the first exception handler if the exception is caught
3940         and we're running inside the debugger.
3941         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3942         improve exception handle inside runtime-invoke, check whether the
3943         exception is actually caught in the method being invoked and not
3944         by the runtime-invoke-wrapper.
3945
3946 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
3947
3948         * image-writer.c: Improve support for the osx assembler.
3949
3950         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
3951         support them.
3952
3953 2009-06-08  Martin Baulig  <martin@ximian.com>
3954
3955         * debug-mini.c
3956         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
3957         (_mono_debugger_throw_exception): Don't make this static.
3958         (_mono_debugger_unhandled_exception): Likewise.
3959         (mono_debugger_handle_exception): Moved to mini-exceptions.c
3960
3961         * debug-mini.c
3962         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
3963         (_mono_debugger_throw_exception): Add function prototype.
3964         (_mono_debugger_unhandled_exception): Likewise.
3965
3966         * mini-exceptions.c
3967         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
3968         arg; return the first exception handler if the exception is caught
3969         and we're running inside the debugger.
3970         (mono_debugger_handle_exception): Moved here from debug-mini.c;
3971         improve exception handle inside runtime-invoke, check whether the
3972         exception is actually caught in the method being invoked and not
3973         by the runtime-invoke-wrapper.
3974
3975 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * image-writer.c (append_subsection): Don't align subsections of the
3978         debug_line section as a workaround.
3979
3980         * dwarfwriter.c: Emit line number info in the AOT case as well.
3981
3982 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
3983
3984         This patch is contributed under the terms of the MIT/X11 license
3985
3986        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
3987        code_len <= code_size
3988
3989 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
3990
3991         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
3992
3993 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
3994
3995         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
3996         invoke wrappers, we now use trampolines instead.
3997
3998 2009-06-04  Mark Probst  <mark.probst@gmail.com>
3999
4000         * mini-darwin.c: The exception thread must not be registered with
4001         the GC.
4002
4003 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4004
4005         * mini-gc.c: Disable the code because it makes SGen crash.
4006
4007 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4008
4009         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4010         instead of asserting.
4011
4012 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4013
4014         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4015         output file after the code has been compiled.
4016
4017 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4018
4019         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4020
4021 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4022
4023         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4024         entries distinction to simplify the code.
4025
4026         * mini.h: Bump AOT file format version.
4027         
4028 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4029
4030         * objects.cs: Fix the signature of one of the tests.
4031
4032         * mini.c (mini_create_ftnptr): New helper function, moved here from
4033         object.c.
4034         (mini_get_addr_from_ftnptr): Ditto.
4035         (mini_init): Install the new helpers.
4036
4037 2009-05-28  Martin Baulig  <martin@ximian.com>
4038
4039         Correctly initialize the debugger when embedding Mono.
4040
4041         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4042         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4043         see documentation in mini_debug_running_inside_mdb().
4044
4045         * debug-debugger.c
4046         (mini_debug_running_inside_mdb): New function to check whether
4047         we're running inside mdb.
4048
4049         * mini.c (mini_init): Call mini_debugger_init() if we're running
4050         inside the debugger.
4051
4052         * driver.c (mono_main): Moved the call to mini_debugger_init()
4053         into mini_init() to make this work when embedding Mono.
4054
4055         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4056         calls to mini_debugger_init().
4057
4058         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4059         mono_debugger_main() -> mini_debugger_main() and put them inside a
4060         `MONO_DEBUGGER_SUPPORTED' conditional.
4061
4062 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4063
4064         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4065         this is no longer in use.
4066         * mini.h: Same.
4067
4068 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4069
4070         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4071
4072         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4073         methods.
4074
4075 2009-05-27  Martin Baulig  <martin@ximian.com>
4076
4077 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4078
4079         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4080         long_conv_to_r_un to 64 bits.
4081
4082         * cpu-x86.md: Increase the instruction size due to the changes.
4083
4084         * iltests.il.in: Add regression test.
4085
4086         Fixes #467201.
4087
4088 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4089
4090         * objects.cs: Move the previous test from basic.cs to here.
4091
4092 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4093
4094         * basic.cs: Add regression test for #506915.
4095
4096 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4097
4098         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4099         optimization we must check the bb of the first byte of stobj as
4100         it's the only one set in cil_offset_to_bb.
4101
4102         Fixes #506915.  
4103
4104 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4105
4106         * image-writer.c: Fix pointer directive on ppc64.
4107
4108 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4109
4110         * image-writer.c (asm_writer_emit_section_change): Avoid using
4111         .bss subsections on ppc too.
4112
4113 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4114
4115         * image-writer.c: Fix the definition of TARGET_ASM_....
4116         
4117         * image-writer.c: Fix the emission of assembler directives in the last
4118         change.
4119
4120         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4121         exception throwing code to accomodate ppc64.
4122
4123         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4124         size to work on ppc64 too.
4125
4126         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4127         too.
4128
4129         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4130         the assembler dialect instead of using platform specific defines.
4131
4132 2009-05-22  Geoff Norton  <gnorton@novell.com>
4133
4134         * mini-arm.c (get_call_info): If a structure is split between the stack
4135         and argument registers, we should not advance the stack pointer by the entire
4136         native size, but just by the amount that spilled.
4137
4138 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4141         correctly.
4142
4143 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4144
4145         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4146         wrappers normally.
4147         
4148         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4149         methods so wrapper don't get added twice.
4150         (add_generic_instances): Don't add methods of arrays.
4151
4152         * generics.cs: Mark one test as !FULLAOT.
4153
4154 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4155
4156         * mini-x86.c (emit_move_return_value): Remove unused vars.
4157
4158 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4159
4160         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4161         decomposing 8 bytes structs into a LCALL.
4162
4163         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4164         pointer for where to store the returned regs.
4165
4166         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4167         state the concern.
4168
4169         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4170
4171 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4172
4173         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4174         without getenv.
4175
4176 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4177
4178         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4179
4180         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4181         generics.
4182
4183 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4184
4185         * local-propagation.c (mono_local_cprop): Avoid local propagation
4186         across paired add/sub if the first instruction dest reg is it's
4187         source reg. For example:
4188
4189         int_add_imm R12 <- R12 [1] clobbers: 1
4190         int_sub_imm R42 <- R12 [1] clobbers: 1
4191
4192         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4193         maintain the math identify.
4194
4195         Fixes #505375.
4196
4197 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4198
4199         * Makefile.am: avoid going on the network just to get the revision,
4200         use git log instead
4201
4202 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4203
4204         Fixed estimate for short branches on amd64 (they were off mark, and
4205         enabling call prolog-epilog instrumentations caused assertions).
4206         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4207         estimate for the maximum length of this basic block.
4208         * mini-amd64.c:
4209         - mono_arch_emit_prolog: compute max_length for each basic block
4210           (instead of max_offset), and inflate size estimate also for entry bb
4211           in case of code instrumentation.
4212         - mono_arch_output_basic_block: get rid of "cpos" (the current
4213           estimated "position" in the code), and always use "offset" instead,
4214           which is accurate; at the beginning of the function quickly recompute
4215           max_offset for all the remaining blocks, starting from the current
4216           cfg->code_len (which is correct, and not estimated) and using the
4217           estimated block lengths computed previously.
4218
4219 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4220
4221         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4222         functions, it is already done in the caller.
4223
4224         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4225
4226         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4227         MONO_ARCH_GSHARED_SUPPORTED define.
4228
4229         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4230
4231         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4232         function.
4233
4234 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4235
4236         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4237         call to mono_marshal_get_rgctx_invoke ().
4238
4239         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4240         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4241         gshared use the static rgctx trampolines now.
4242         
4243         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4244         platform supports it.
4245
4246 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4247
4248         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4249
4250         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4251
4252 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4253
4254         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4255
4256         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4257         for ppc.
4258
4259 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4260
4261         Made it possible for mono_arch_instrument_epilog to preserve
4262         argument registers, otherwise instrumenting the "epilogue" before
4263         a tail call would clobber them.
4264         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4265         if like mono_arch_instrument_epilog but with an additional parameter
4266         that states if argument registers must be preserved.
4267         * mini.c: implemented mono_arch_instrument_epilog as a call to
4268         mono_arch_instrument_epilog_full without asking to preserve argument
4269         registers (this makes the existing code work as usual).
4270         * mini-amd64.c:
4271         - mono_arch_instrument_epilog: add parameter to transform it into
4272         mono_arch_instrument_epilog_full, and preserve argument registers
4273         when required.
4274         - mono_arch_output_basic_block, OP_TAILCALL case: call
4275         mono_arch_instrument_epilog_full.
4276         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4277         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4278         only transformed mono_arch_instrument_epilog into
4279         mono_arch_instrument_epilog_full.
4280
4281 2009-05-15  Geoff Norton  <gnorton@novell.com>
4282
4283         * mini-darwin.c: This works on arm now.
4284
4285 2009-05-14  Geoff Norton  <gnorton@novell.com>
4286
4287         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4288         embedding api.
4289
4290 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4291
4292         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4293         label names.
4294
4295         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4296         wrappers during full aot mode correctly.
4297
4298         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4299         methods correctly.
4300
4301         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4302         mono_metadata_type_hash ().
4303
4304 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4305
4306         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4307         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4308         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4309         Removed MONO_INST_BRLABEL from the instruction flags, and the
4310         remaining code that used it, because we do not support branches inside
4311         basic blocks (and branch target labels) anymore.
4312         * Makefile.am: As part of the above cleanup, remove reference to
4313         BURG files which don't exist anymore.
4314
4315 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4316
4317         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4318         osx.
4319
4320         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4321         to use mono_arch_throw_corlib_exception.
4322
4323         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4324         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4325
4326         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4327         domain mempool.
4328
4329         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4330
4331         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4332         for the got to make debugging easier and to avoid confusing it with the
4333         system got.
4334         
4335         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4336         method so a breakpoint can be set when using gdb.
4337
4338 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4339
4340         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4341         on mono_method_get_imt_slot ().
4342
4343         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4344         num_decodes variables.
4345
4346         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4347         change as it doesn't seem to work.
4348         
4349         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4350         wrappers.
4351
4352 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4353
4354         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4355         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4356
4357         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4358         builder when using full aot.
4359
4360         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4361         here, it is already handled.
4362         
4363         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4364         correctly for IMT.
4365
4366         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4367
4368         * mini-arm.h: Enable IMT for full aot.
4369         
4370         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4371         arch doesn't support it.
4372
4373         * mini.c (mini_init): Don't disable IMT for full aot if the
4374         architecture supports it.
4375
4376         * mini.h (MonoAotTrampoline): New enum containing the different types
4377         of 'numerous' trampolines.
4378         (MONO_AOT_FILE_VERSION): Bump this.
4379
4380         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4381         static rgctx trampolines. Add support for full-aot IMT thunks.
4382
4383         * mini-amd64.h: Enable IMT for full aot.
4384
4385         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4386         to exclude tests belonging to a category.
4387
4388         * generics.cs: Mark some tests with a !FULLAOT category.
4389
4390         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4391         generics tests.
4392
4393 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4394
4395         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4396         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4397         (emit_plt): Fix a warning.
4398
4399 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4400
4401         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4402         back into aot-compiler.c to a place where the other functions shared by
4403         the runtime and aot compiler are.
4404         
4405         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4406         as done previously, instead of in MonoAotFileInfo, since pointers might have
4407         alignment requirements.
4408
4409         * mini.h: Bump AOT file format version.
4410
4411 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4412
4413         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4414         that is used at runtime from the aot-compiler.c, this makes it
4415         work on setups that remove the AOT compiler from the output
4416         image. 
4417
4418 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4419
4420         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4421         PPC.
4422
4423         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4424
4425         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4426
4427         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4428         stuff to mono_arch_decompose_long_opts ().
4429         (mono_decompose_opcode): Remove some dead code.
4430
4431 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4432
4433         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4434         cmethod can be null for quite a some reasons.
4435
4436 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4437
4438         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4439
4440 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4441
4442         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4443
4444 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4445
4446         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4447         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4448         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4449         calls returning structures by addr on amd64.
4450
4451         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4452
4453         * iltests.il.in: Restructure the tail call tests a bit.
4454         
4455 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4456
4457         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4458         for virtual methods too.
4459
4460 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4461
4462         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4463         due to regression in verifying System.dll.
4464
4465 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4466
4467         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4468         in dynamic methods.
4469
4470         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4471         instances.
4472
4473         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4474         g_str_hash () which can change.
4475
4476         * driver.c (mini_regression): Disable optimizations not supported by
4477         the cpu. Fixes #500019.
4478
4479         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4480         build.
4481
4482 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4483
4484         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4485         to the latest LLVM code.
4486
4487 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4488
4489         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4490
4491 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4492
4493         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4494         x86/amd64.
4495
4496         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4497         no longer saving offsets, so just save the patch types along with the other
4498         info.
4499         * aot-runtime.c (load_patch_info): Update after the changes to 
4500         encode_patch_list ().
4501         (decode_got_entry): Removed, merged into load_patch_info ().
4502         (is_shared_got_patch): Removed, call the same function from
4503         aot-compiler.c.
4504
4505         * mini.h: Bump aot file format version.
4506         
4507         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4508         half-finished no-dlsym code.
4509
4510         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4511         option.
4512
4513         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4514         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4515
4516 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4517
4518         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4519         buffer length to work with AOT code.
4520
4521         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4522         ldfld/stfld opcodes.
4523
4524         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4525         as it is not used.
4526
4527         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4528
4529         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4530
4531         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4532         LLVM API.
4533
4534         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4535         if needed. Don't decompose long operations when using llvm.
4536
4537 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4538
4539         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4540         PAGESIZE constant.
4541
4542         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4543
4544 2009-05-03  Martin Baulig  <martin@ximian.com>
4545
4546         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4547         mono_debugger_insert_method_breakpoint() since the class init
4548         handler we're inserting at the top of the method already gives us
4549         a notification.
4550
4551 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4552
4553         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4554         to mono_arch_decompose_long_opts () for x86 and arm.
4555
4556 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4557
4558         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4559         TARGET_AMD64 here.
4560
4561 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4562
4563         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4564         JIT code.
4565
4566 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4567
4568         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4569         number of trampolines used in full-aot mode.
4570
4571         * aot-compiler.c: Add an ntrampolines option to set the number of 
4572         trampolines emitted in full-aot mode.
4573
4574 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4575
4576         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4577         a volatile load. Get rid of get_tempname (), llvm assigns names
4578         automatically.
4579
4580         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4581         builder function.
4582
4583         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4584         a value.
4585
4586         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4587         level 1.
4588
4589         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4590         to the same register as a fixed sreg2. Fixes #497271.
4591
4592         * iltests.il.in: Add a new test.
4593
4594 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4595
4596         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4597         stack, since pushes complicate exception handling.
4598
4599         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4600         the stack if they are passed using moves.
4601
4602         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4603
4604         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4605         when using llvm.
4606
4607         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4608         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4609         of FMOVE if it is an R4.
4610
4611 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4612
4613         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4614
4615         * mini.h (LLVMCallInfo): New structure to store calling convention 
4616         information for the LLVM back end similar to the CallInfo structures in 
4617         the back-ends.
4618
4619         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4620         call information in a format usable by LLVM.
4621         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4622
4623         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4624         mono_llvm_emit_call () when compiling using LLVM.
4625
4626         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4627         comments to all functions. Fix memory leaks. Add a public init/cleanup
4628         function.
4629
4630         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4631
4632         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4633         mono_array_new_va () jit icall.
4634         
4635 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4636
4637         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4638         multiple machine description files to be specified.
4639         * mini-ops.h: fixes for cross-compilation.
4640
4641 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4642
4643         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4644         some porting work.
4645
4646 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4647
4648         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4649         to prevent asserts in various passes. Fixes #497220.
4650
4651 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4652
4653         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4654         a racy assert.
4655
4656         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4657         table to avoid duplicates.
4658
4659         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4660         
4661         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4662         option is used.
4663
4664 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4665
4666         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4667         is for method or field access.
4668
4669 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4670
4671         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4672         a Value to stdout.
4673
4674         * mini-llvm.c (mono_llvm_emit_method): Use it.
4675         
4676         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4677         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4678         on volatile values.
4679
4680         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4681         synchronized methods.
4682
4683         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4684
4685         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4686
4687         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4688         OP_LOADI8_MEM.
4689
4690         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4691         allowing some options to be set dynamically.
4692
4693 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4696         unconditional branch.
4697
4698         * mini.h (MonoTrampolineType): Add new trampoline type 
4699         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4700         compiled code.
4701
4702         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4703         function.
4704
4705         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4706         creation function.
4707
4708         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4709         is enabled. Instead, use the llvm vcall trampoline.
4710         
4711         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4712
4713         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4714         
4715         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4716         functions.
4717
4718         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4719         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4720
4721         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4722         OP_IA64_CSET opcode.
4723
4724         * mini.c: Fix a warning.
4725
4726         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4727         THROW to the appropriate llvm type.
4728
4729 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4730
4731         * mini.c (mini_method_compile): Add statistics for methods JITted
4732         with/without LLVM.
4733
4734 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4735
4736         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4737         OP_IA64_CMP_<cond>_IMM opcodes.
4738
4739 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4742         corlib exceptions.
4743
4744         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4745         correctly.
4746
4747         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4748         GENERICINST.
4749
4750 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4751
4752         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4753
4754 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4755
4756         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4757         support.
4758
4759         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4760         rgctx invoke trampolines for x86.
4761
4762         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4763         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4764         (mono_arch_get_vcall_slot): Simplify this.
4765
4766 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4767
4768         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4769         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4770
4771 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4774         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4775
4776         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4777
4778         * liveness.c (visit_bb): Remove a needless assert.
4779
4780 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4781
4782         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4783         full aot support to the arch specific code.
4784
4785         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4786
4787         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4788
4789         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4790         
4791         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4792         collect information about the delegate invoke impl trampolines.
4793
4794         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4795         to save trampolines during full-aot mode.
4796
4797         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4798         creation function which returns a trampoline which sets the rgctx
4799         argument.
4800         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4801         wrapper if possible.
4802         (mono_delegate_trampoline): Ditto.
4803
4804         * mini.c (mono_jit_runtime_invoke): Ditto.
4805
4806         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4807         
4808         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4809
4810         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4811         
4812 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
4813
4814         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
4815         just setting the opcode to OP_NOP.
4816
4817 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
4818
4819         * mini.c (mini_method_compile): Put the last change inside an 
4820         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
4821         
4822         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
4823         and extend live ranges to cover the whole method when using xdb.
4824
4825         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
4826         do it in the trampolines.
4827
4828         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
4829         needed.
4830
4831         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
4832         
4833         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
4834         call code in full-aot mode since IMT is disabled there.
4835         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
4836         new JIT no longer has that restriction.
4837
4838         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4839
4840         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
4841         a more compact format.
4842         (mono_aot_wrapper_name): New function to return a unique name for a
4843         wrapper method, also used by the AOT runtime.
4844
4845         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
4846         aot-compiler.c.
4847
4848         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
4849         when a ICollection<T> etc is encountered.
4850         (add_generic_instances): Process method arguments/locals too.
4851         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
4852         trampoline names.
4853
4854         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
4855         
4856 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
4857
4858         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
4859
4860         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
4861
4862         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
4863         representing the result of the decomposition. Nullify instructions
4864         instead of setting them to OP_NOP since nops can't have registers
4865         set.
4866
4867 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * aot-compiler.c (mono_compile_assembly): Split this huge function into
4870         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
4871         info. Strip 'mapping symbols' on ARM.
4872
4873         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
4874         
4875         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
4876         this with the native genmdesc.
4877
4878 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
4879
4880         * aot-runtime.c:  Fixing the MSVC build.
4881
4882         Code is contributed under MIT/X11 license.
4883
4884 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4885
4886         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
4887         JITted code depends on it.
4888
4889 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4890
4891         * aot-compiler.c: Use new MonoGenericParam accessors.
4892
4893 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
4894
4895         Reduce memory usage and improve correctness wrt MonoGenericParam
4896         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
4897         handing.  Avoid allocating MonoGenericParams, but use the ones in
4898         the container itself.
4899
4900 2009-04-07  Miguel de Icaza  <miguel@novell.com>
4901
4902         * tasklets.c: Return exceptions in the out argument.
4903
4904 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
4905
4906         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
4907         opcode. Use pointer types in more places instead of casting them to 
4908         integers.
4909
4910         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
4911         optimizations.
4912         (mono_llvm_optimize_method): New helper function to optimize a method.
4913
4914         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
4915         widening code so it could be called from more places.
4916         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
4917         code paths in the call opcodes.
4918
4919 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
4920
4921         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
4922
4923 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
4924
4925         * dwarfwriter.c: Use _ to separate class name 
4926         components as gdb can't handle '.'. Represent reference variables
4927         as 'class <NAME>&'.
4928         
4929         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
4930
4931         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
4932         
4933         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
4934
4935         * gc-test.cs: New file with GC stack marking tests.
4936         
4937         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
4938         negative numbers for vfp.
4939
4940         * basic-float.cs: Add a test.
4941         
4942 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
4943
4944         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
4945
4946 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
4947
4948         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
4949         part of tasklet/continuation support.
4950
4951 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
4952
4953         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
4954         amd64 opcodes inside an ifdef.
4955
4956         * dwarfwriter.c: Emit inheritance information for classes, emit fields
4957         of complex types.
4958         
4959         * dwarfwriter.c (emit_type): Emit the class info for classes.
4960
4961 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
4962
4963         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
4964
4965         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
4966
4967         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
4968
4969         * ssa.c (mono_ssa_compute): Fix some memory leaks.
4970
4971 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
4972
4973         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
4974
4975         * mini-llvm.c: Update comments.
4976
4977         * mini.h (COMPILE_LLVM): New macro.
4978
4979         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
4980
4981         * ssa.c (mono_ssa_compute): Ditto.
4982         
4983         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
4984         the unwind ops from a DWARF FDE.
4985
4986         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
4987         methods by extracting the dwarf unwind ops from the unwind info generated
4988         by LLVM.
4989         
4990         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
4991         calls.
4992
4993         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
4994         addressing modes.
4995
4996 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * Makefile.am (llvm_sources): Enable this.
4999
5000         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5001         failing back to the JIT if something cannot be handled.
5002
5003         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5004         compiling with LLVM.
5005
5006         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5007         compiling with LLVM.
5008
5009         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5010         compiling with LLVM.
5011
5012         * mini-ops.h: Add a few opcodes needed by LLVM.
5013
5014         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5015         has no unwind info.
5016
5017         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5018         backend.
5019
5020         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5021
5022         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5023
5024 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5025
5026         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5027         ridiculously large methods.
5028
5029 2009-03-31  Martin Baulig  <martin@ximian.com>
5030
5031         * debug-debugger.c (debugger_remove_breakpoint): Call
5032         mono_debugger_remove_class_init_callback ().
5033
5034 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5035
5036         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5037         right before emitting code, not at the start.
5038
5039         * mini.c (mono_postprocess_patches): Extract this into a separate function
5040         from mono_codegen ().
5041
5042         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5043         byref types correctly.
5044
5045 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5046
5047         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5048         by the last change.
5049
5050 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5051
5052         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5053         indirect calls, this avoids problems where get_vcall_slot () would get
5054         confused by the native code for the instruction preceeding the call.
5055         (mono_arch_get_vcall_slot): Simplify this.
5056         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5057
5058         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5059         register allocator now seems to depend on them instead of the data in
5060         cpu-<ARCH>.md.
5061
5062         * mini.c (mini_method_compile): Throw the correct type of exception if
5063         mono_method_get_header () fails because of a loading error.
5064
5065 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5066
5067         * mini.c (mini_method_compile): Clear the loader error if the method
5068         header cannot be decoded.
5069
5070         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5071         interface methods on proxies correctly.
5072
5073         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5074         this argument for vtype methods. Add precise liveness info for arguments.
5075
5076         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5077         LIVERANGE_START/END opcodes.
5078
5079         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5080         for arguments and values in registers.
5081
5082 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5083
5084         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5085         return a valuetype. Fixes #487518.
5086
5087         * iltests.il: Add a test.
5088         
5089         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5090
5091         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5092         closed over a null reference correctly.
5093
5094 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5097
5098 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5099
5100         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5101         allocated to the same registers as fixed sregs.
5102
5103 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5104
5105         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5106         ATOMIC_CAS_IMM ops.
5107
5108         * method-to-ir.c: Handle more cases for
5109         Interlocked.CompareExchange.
5110
5111         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5112         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5113         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5114
5115 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5116
5117         * aot-runtime.c (decode_method_ref): Fix a warning.
5118
5119         * unwind.c (mono_unwind_frame): Ditto.  
5120
5121 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5122
5123         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5124         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5125
5126         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5127         fix the handling of large values in the ALU_PC_G0_NC relocation.
5128
5129 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5130
5131         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5132
5133 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5134
5135         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5136         ops.
5137
5138 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5139
5140         * method-to-ir.c: MINI_OP3 needs a comma.
5141
5142         * method-to-ir.c, mini.h, mini.c: Remove
5143         mono_init_op_sreg_counts ().
5144
5145 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5146
5147         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5148         OP_JMP.
5149         
5150         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5151         assertion.
5152
5153         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5154
5155         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5156         code somewhat.
5157
5158 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5159
5160         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5161         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5162         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5163         operations.
5164
5165 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5166
5167         * driver.c: Change location of gc_wrapper.h.
5168
5169         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5170         inside finally clauses correctly. Fixes #485721.
5171
5172         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5173         after the change above.
5174
5175         * exceptions.cs: Add a test.
5176         
5177 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5180
5181         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5182         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5183         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5184
5185         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5186         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5187
5188 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5189
5190         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5191         Simplify logic for ensure_method_is_allowed_to_call_method. 
5192         Handle wrappers on callers.
5193
5194 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5195
5196         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5197         them don't run yet.
5198
5199         * basic-simd.cs: Fix the names of some test methods.
5200
5201 2009-03-18  Geoff Norton  <gnorton@novell.com>
5202
5203         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5204
5205 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5206
5207         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5208
5209 2009-03-17  Jb Evain  <jbevain@novell.com>
5210
5211         * driver.c: remove now uneeded call to mono_gc_base_init before
5212         mono_profiler_load.
5213
5214 2009-03-17  Jb Evain  <jbevain@novell.com>
5215
5216         * dwarfwriter.c (token_handler): handle more cases.
5217
5218 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5219
5220         * method-to-ir.c: Remove more dead code (that was required only
5221         because of method_is_safe). Fix compiler warnings.
5222
5223 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5224
5225         * method-to-ir.c: Remove unneeded/useless method_is_safe
5226         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5227
5228 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5229
5230         * mini.c (mini_method_compile): Print the method been compiled with
5231         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5232         for people not familiar with the runtime.
5233
5234 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5235
5236         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5237         a managed object which is later put into a GList. Return its class instead.
5238
5239         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5240         stack slots when using sgen.
5241
5242 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5243
5244         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5245
5246 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5247
5248         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5249         > so it works on the first vreg as well.
5250
5251 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5252
5253         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5254         trigger randomly.
5255
5256         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5257         
5258         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5259         implement GArray.
5260
5261 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5262
5263         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5264         native->IL offset mapping.
5265
5266 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5269
5270         * basic.cs: Add a test.
5271
5272 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5273
5274         * mini-x86.c (mono_arch_output_basic_block): Use different
5275         registers in case the ones we want to overwrite are used by the
5276         other operand.  Fixes regression in #480807.
5277
5278 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5279
5280         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5281
5282         * dwarfwriter.c (emit_line_number_info): The line number info for
5283         IL code was off by one. Fix that.
5284
5285         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5286         stack.
5287
5288 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5289
5290         Contributed under the terms of the MIT/X11 license by Steven
5291         Munroe <munroesj@us.ibm.com>.
5292
5293         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5294         Fixes #483462.
5295
5296 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5297
5298         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5299         as well.
5300
5301 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5302
5303         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5304         the delegate ctor handling code. Fixes #482638.
5305         
5306         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5307         #481458.
5308
5309         * iltests.il.in: Add a test.
5310         
5311         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5312         mini-posix.c.
5313
5314 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5315
5316         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5317         is shared generic code, return the trampoline, even if the method
5318         has already been compiled.  Fixes #479763.
5319
5320         * mini.c, mini.h: New function
5321         mono_jit_find_compiled_method_with_jit_info() which is the same as
5322         mono_jit_find_compiled_method() but also returns the jit info.
5323
5324 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5325
5326         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5327         for methods which actually have one.  For all other methods, make
5328         sure the this argument var is live the whole method.
5329
5330         * mini.c (mini_method_compile): Every shared method has a
5331         this/vtable/mrgctx info.  Fixes #480807.
5332
5333 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5334
5335         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5336         generic/imt thunks where some entries branch through the vtable,
5337         while other entries branch directly.
5338
5339 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5340
5341         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5342
5343         * mini-windows.c: Ditto.
5344         
5345         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5346         ctors.
5347
5348 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5349
5350         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5351         down an assert.
5352
5353 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5354
5355         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5356         #481403.
5357
5358 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5359
5360         * exceptions-x86.c: Include debug-mini.h - fixes build.
5361
5362 2009-03-04  Martin Baulig  <martin@ximian.com>
5363
5364         * debug-mini.c: Clean up the exception API and add documentation.
5365         (mono_debugger_handle_exception): New public method; this is
5366         called when throwing an exception or encountering an unhandled one.
5367         (mono_debugger_call_exception_handler): Formerly known as
5368         mono_debugger_handle_exception(); this is used to tell the
5369         debugger that we're about to invoke an exception handler.
5370
5371 2009-03-04  Martin Baulig  <martin@ximian.com>
5372
5373         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5374         ../metadata/mono-debug-debugger.c; save and reset exception state.
5375
5376 2009-03-02  Martin Baulig  <martin@ximian.com>
5377
5378         * debug-mini.c: Moved the debugger exception handling here from
5379         ../metadata/mono-debug-debugger.c.
5380
5381         * debug-mini.h
5382         (MonoDebuggerExceptionAction): New exception typedef.
5383
5384         * debug-mini.c
5385         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5386
5387         * exceptions-amd64.c
5388         (mono_amd64_throw_exception): Use the new debugger exception
5389         handling code.
5390
5391         * mini-exceptions.c
5392         (mono_handle_exception_internal): Don't call
5393         mono_debugger_unhandled_exception() here.
5394
5395 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5396
5397         * mini.c aot-compiler.c: Update after the changes to 
5398         mono_marshal_get_runtime_invoke ().
5399
5400         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5401         Virtual generic methods might not have method->slot set, work around
5402         that.
5403
5404         * generics.cs: Add a test.
5405
5406 2009-03-02  Geoff Norton  <gnorton@novell.com>
5407
5408         * mini.c:
5409         * driver.c: Allow signal chaining of SIGFPE as well.
5410
5411 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5412
5413         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5414         this since it now receives the method not its generic context in the
5415         IMT reg.
5416
5417         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5418         generic/imt thunks where some entries branch through the vtable, while
5419         other entries branch directly.
5420
5421         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5422
5423         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5424         support for interface methods as well.
5425
5426         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5427         using the normal IMT thunks.
5428
5429         generics.cs: Add new tests.
5430         
5431         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5432         the generic inst to the generic imt thunks. This fixes AOT support, 
5433         improves consistency with the normal IMT thunks, and makes it easier to
5434         add support for interface generic virtual methods later.
5435
5436         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5437         
5438 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5439
5440         * driver.c (mono_set_signal_chaining): New public API function to enable
5441         signal chaining on POSIX platforms.
5442
5443         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5444         (si@lindenlab.com) to implement signal chaining. The original patch was
5445         contributed under the MIT X/11 license:
5446         https://bugzilla.novell.com/show_bug.cgi?id=318894
5447
5448 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5451         too until it can be made to run on amd64.
5452
5453 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5456         to  get_generic_context_from_code () + get_call_info () if possible.
5457
5458 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5459
5460         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5461         suspend-on-sigsegv functionality.
5462
5463         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5464         to suspend when a native SIGSEGV is received. This is useful for debugging
5465         crashes which don't happen under gdb, since a live process contains more
5466         information than a core file.
5467
5468         * mini-exceptions.c (mono_print_thread_dump): Use 
5469         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5470
5471         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5472
5473         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5474         
5475         * basic-float.cs: Disable the tests which currently fail on amd64.
5476
5477         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5478         value to mono_arch_patch_callsite () to fix crashes.
5479         
5480         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5481
5482 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5483
5484         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5485         nop code by patching the call address to point to the nullified class init
5486         trampoline, as the former does not seem to be safe on SMP machines.
5487
5488 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5489
5490         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5491         they were wrong.
5492
5493 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5494
5495         * basic-float.cs basic-calls.cs: Fix warnings.
5496
5497 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5498
5499         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5500         correct frame pointer in the LMF.  Should fix #478394.
5501
5502 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5503
5504         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5505
5506         * image-writer.c: Make the binary writer less verbose.
5507
5508 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5509
5510         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5511         are called from runtime invoke wrappers.
5512
5513 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5514
5515         * cpu-ppc.md (store_memindex): Increase the size of this.
5516
5517 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5518
5519         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5520
5521         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5522
5523         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5524         OP_LCONV_TO_R_UN.
5525
5526         Last fix for of #467201.
5527
5528
5529 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5530
5531         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5532
5533         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5534         and long_conv_to_r8_2:
5535
5536         Fixed part of #467201.
5537
5538 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5539
5540         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5541
5542         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5543         conversion to 32 bits.
5544
5545         * cpu-x86.md: Increase the size of int_conv_to_r4.
5546
5547         * basic-float.cs: Add a test for this.
5548
5549         Fixed part of #467201.
5550
5551 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5552
5553         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5554
5555         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5556         conversion to 64 bits.
5557
5558         * basic-float.cs: Add a test for this.
5559
5560         Fixed part of #467201.
5561
5562 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5563
5564         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5565
5566         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5567         This behavior is compatible with MS.
5568
5569         * iltest.il.in: Add a test for this.
5570
5571         Fixed part of #467201.
5572
5573 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5574
5575         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5576
5577         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5578         change the precision of the value.
5579
5580         * cpu-x86.md: Define len for float_conv_to_r4.
5581
5582         * basic-float.cs: Add a test for this.
5583
5584         Fixed part of #467201.
5585
5586 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5587
5588         * mini.c: Adjust locking order to the new semantics where the loader lock
5589         comes first.
5590
5591 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5592
5593         * aot-runtime.c:
5594         * mini-amd64.c:
5595         * mini-arm.c:
5596         * mini-ia64.c:
5597         * mini-mips.c:
5598         * mini-ppc.c:
5599         * mini-sparc.c:
5600         * mini-trampolines.c:
5601         * mini-x86.c:
5602         * mini.c:
5603         * tramp-alpha.c:
5604         * tramp-amd64.c:
5605         * tramp-arm.c:
5606         * tramp-hppa.c:
5607         * tramp-ia64.c:
5608         * tramp-mips.c:
5609         * tramp-ppc.c:
5610         * tramp-s390.c:
5611         * tramp-s390x.c:
5612         * tramp-sparc.c:
5613         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5614
5615 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5616
5617         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5618         as it is incorrect.
5619
5620 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5621
5622         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5623         for cctors if needed.
5624
5625 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5626
5627         * mini-ppc.c: Fix build on Darwin.
5628
5629 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5630
5631         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5632         version instead of 3 as valgrind doesn't like version 3.
5633
5634         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5635
5636         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5637         usable for hashing methods.
5638         (emit_extra_methods): Use the new hash to avoid putting every method in the
5639         same hash bucket.
5640
5641         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5642
5643         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5644         whenever a method ref could match a method.
5645         
5646         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5647         test to fail.
5648         
5649         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5650         methods refs.
5651
5652         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5653
5654         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5655         the encoding buffer.
5656
5657         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5658         mono_method_get_header () on inflated methods as an optimization.
5659
5660 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * ssa.c (fold_ins): Fix another crash if the instruction following the
5663         switch was optimized away.
5664
5665 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5666
5667         Contributed under the terms of the MIT/X11 license by Steven
5668         Munroe <munroesj@us.ibm.com>.
5669
5670         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5671
5672 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5675         around the mono_domain_alloc calls, it is now done by the functions
5676         themselves.
5677
5678         * aot-compiler.c (compile_method): Only add wrappers referenced by
5679         the method if compiling with full AOT.
5680         (mono_compile_assembly): Error out if --aot=full is specified on
5681         a platform where it is not supported.
5682
5683         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5684         on ARM too.
5685
5686         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5687         AOT support.
5688
5689         * aot-runtime.c (load_named_code): Handle 
5690         mono_arm_throw_exception_by_token.
5691
5692         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5693
5694         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5695         unaligned.
5696
5697         * Makefile.am (fullaotcheck): Exit if a test fails.
5698
5699         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5700         on ARM.
5701         (mono_compile_assembly): Handle the assembler failing.
5702
5703         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5704         accepting subsections of .bss.
5705
5706         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5707         was optimized away.
5708
5709         * aot-compiler.c: Remove some unused includes.
5710         
5711         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5712         now in MonoImageWriter.
5713
5714         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5715         code sequence which matches a non-virtual call. Fixes #472654.
5716
5717 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5718
5719         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5720         xdebug code.
5721         
5722         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5723         use the image/dwarf writers directly.
5724
5725         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5726         field.
5727
5728         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5729         MonoDwarfWriter.
5730
5731         * image-writer.h: Fix some typos.
5732
5733         * dwarfwriter.h dwarfwriter.c: New files.
5734         
5735         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5736         separate module.
5737
5738         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5739         argument to return unwind info.
5740
5741         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5742
5743         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5744         
5745         * aot-runtime.c (decode_method_ref): Add a case for 
5746         MONO_AOT_METHODREF_WRAPPER_NAME.
5747
5748         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5749         for AOT.
5750
5751         * aot-compiler.c (encode_method_ref): Use the new constants.
5752
5753         * aot-runtime.c (decode_method_ref): Ditto.
5754
5755         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5756         be compiled, not the icall itself.
5757
5758 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5759
5760         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5761         using decode_method_ref ().
5762
5763         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5764         convert it to an in32. Fixes #475859.
5765
5766         * arrays.cs: Add a test.
5767
5768 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5769
5770         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5771         OP_LCONV_TO_U2.
5772
5773         * basic-long.cs: Add a test.
5774
5775 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5776
5777         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5778         remove the frame pointer in leaf methods which don't receive any
5779         arguments, don't throw exceptions and don't do dynamic stack
5780         allocations.
5781
5782 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5783
5784         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5785         the fail_tramp changes. Hopefully fixes #475132.
5786
5787 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5788
5789         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5790         instead of mono_metadata_signature_dup_full.
5791
5792 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5793
5794         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5795         for processing jump tables. Fixes #473787.
5796
5797 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5798
5799         * mini-generic-sharing.c: mini_method_get_context() just calls
5800         mono_method_get_context_general() now.
5801
5802         * mini.c, mini.h: Moved get_object_generic_inst(),
5803         construct_object_context_for_method() and
5804         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5805
5806 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5807
5808         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5809         basic block fell through to its successor bblock without a branch. Fixes
5810         #474718.
5811
5812         * iltests.il.in: Add a test.
5813         
5814         * aot-compiler.c (encode_method_ref): Encode methods of array types.
5815         (can_encode_patch): We can now handle arrays of generic parameters and
5816         array methods.
5817
5818         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
5819
5820         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
5821         the AOT file to avoid some #ifdefs in aot-runtime.c
5822
5823         * mini.h: Bump AOT file format version.
5824
5825 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5826
5827         * Makefile.am (fullaotcheck): Make this run the tests.
5828
5829         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
5830
5831 2009-02-10  Mark Probst  <mark.probst@gmail.com>
5832
5833         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
5834         individually.  Fixes #473482.
5835
5836 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5837
5838         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
5839
5840 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
5841
5842         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
5843         (mono_compile_assembly): Hush compile warnings about
5844         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
5845         code path.
5846
5847 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
5848
5849         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
5850
5851         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
5852
5853         * aot-compiler.c: Fix arm support.
5854
5855         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
5856         img_writer_emit_unset_mode () function.
5857
5858         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
5859         (mono_unwind_get_dwarf_pc_reg): Ditto.
5860
5861         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
5862         Move almost all platform specific code to a set of arch_ functions, 
5863         and document them to ease porting.
5864         
5865         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
5866
5867         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
5868
5869         * aot-compiler.c: Extract the image writing functionality into a separate
5870         module to reduce the size of this file.
5871
5872 2009-02-09  Geoff Norton  <gnorton@novell.com>
5873
5874         * mini-s390.c: Fix the signature of emit_sig_cookie.
5875
5876 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
5879
5880         * aot-runtime.c (is_shared_got_patch): Ditto.
5881
5882         * aot-runtime.c (load_named_code): Cope with the fact that 
5883         decode_got_entry () won't decode the patch fully if its corresponding got
5884         entry is already filled.
5885         
5886         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
5887         Initialize *ji.
5888         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
5889
5890         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
5891         as the moving pointer instead of 'buf' for consistency with the rest of the
5892         codebase.
5893         (mono_arch_create_monitor_exit_trampoline): Ditto.
5894
5895         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
5896         generic_class_init trampolines.
5897         (add_generic_class): Extract some code from add_generic_instances () into a
5898         separate function so it can be called from other places too.
5899         (compile_method): Call add_generic_class () for the classes of inflated methods
5900         referenced by the method.
5901         (can_encode_patch): Allow references to generic parameters.
5902
5903         * aot-runtime.c: Add support the patches required by the new trampolines.
5904         
5905         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
5906         support.
5907
5908         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
5909         full-aot support.
5910
5911         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
5912         this from get_throw_pending_exception, make the signature full aot compatible.
5913
5914         * Makefile.am (fullaotcheck): New target to run full-aot tests.
5915
5916         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
5917
5918         * exceptions.cs: Add a test.
5919
5920 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5921
5922         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
5923         use the DWARF_DATA_ALIGN constant instead.
5924
5925         * exception-<ARCH>.c: Update after the above change.
5926
5927         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
5928         dwarf unwinder.
5929
5930         * mini-arm.c: Enable the dwarf unwinder.
5931
5932         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
5933         instead of mono_class_setup_vtable ().
5934
5935 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
5936
5937         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
5938         dwarf unwinder.
5939
5940         * mini-x86.h: Enable the dwarf unwinder.
5941
5942 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
5943
5944         Fix mcs/tests/test-7.cs
5945         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
5946         2009-02-03.
5947
5948 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
5949
5950         * mini.c (print_jit_stats): Remove some unused statistics.
5951
5952 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5953
5954         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
5955
5956 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5957
5958         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
5959         the method we get from mono_object_get_virtual_method() because
5960         that function does it properly, now.
5961
5962 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5963
5964         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
5965         opcodes. Fixes #472775.
5966
5967 2009-02-05  Mark Probst  <mark.probst@gmail.com>
5968
5969         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
5970         fact that mono_find_jit_info() sometimes returns the context
5971         corresponding to the jit info in new_ctx.  Fixes #472600.
5972
5973 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
5974
5975         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
5976         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
5977         klass->enum_basetype directly.
5978
5979         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
5980         enum subtypes.
5981
5982         * unwind.c: Avoid 0 sized arrays.
5983
5984 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
5985
5986         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
5987         size on systems with 64k pages. Fixes #471389.
5988
5989 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5990
5991         Contributed under the terms of the MIT/X11 license by Steven
5992         Munroe <munroesj@us.ibm.com>.
5993
5994         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
5995         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
5996         necessary.
5997
5998 2009-02-04  Mark Probst  <mark.probst@gmail.com>
5999
6000         Contributed under the terms of the MIT/X11 license by Steven
6001         Munroe <munroesj@us.ibm.com>.
6002
6003         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6004         comparison fix.
6005
6006         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6007         The trampoline can be longer on PPC64.
6008
6009 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6010
6011         Contributed under the terms of the MIT/X11 license by Steven
6012         Munroe <munroesj@us.ibm.com>.
6013
6014         * mini-ppc.c: Compiler warning fixes and trivial code
6015         simplifications.
6016
6017 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6018
6019         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6020         ins->dreg which could be a hardware register, not a vreg.
6021
6022         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6023         
6024         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6025         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6026
6027         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6028         
6029         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6030         ->dreg, that is not the vreg we are looking for.
6031
6032         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6033
6034         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6035         LIVERANGE_END.
6036
6037         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6038         strange crashes.
6039
6040 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6041
6042         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6043
6044         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6045         the line diff is 0.
6046
6047         * aot-compiler.c: Add xdebug support on x86.
6048
6049         * unwind.c: Add x86 support.
6050         
6051         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6052         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6053
6054         * mini.c (mini_method_compile): Ditto.
6055         
6056         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6057         the variable index.
6058
6059         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6060         which mimic .push_section/.pop_section in GAS.
6061         
6062         * aot-compiler.c: Emit precise live range information for variables.
6063
6064         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6065
6066         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6067         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6068         them.
6069
6070         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6071         the live ranges of variables.
6072
6073         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6074         of the variable in terms of native offsets.
6075
6076 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6077
6078         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6079         
6080 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6081
6082         Contributed under the terms of the MIT/X11 license by Steven
6083         Munroe <munroesj@us.ibm.com>.
6084
6085         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6086         order (offset then base reg) for ppc_load_multiple_regs.
6087         (emit_save_saved_regs) Correct operand order for
6088         ppc_store_multiple_regs.
6089         (mono_arch_get_call_filter): Correct operand order for
6090         ppc_load_multiple_regs.
6091
6092         * mini-ppc.c (emit_memcpy): Fix operand order for
6093         ppc_load_reg_update and ppc_store_reg_update.
6094         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6095         (mono_arch_emit_epilog): Correct operand order for
6096         ppc_load_multiple_regs.
6097
6098         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6099         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6100
6101 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6102
6103         * cpu-ppc64.md: Fixed storer4_memindex length.
6104
6105 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6106
6107         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6108         line number info.
6109         
6110         * aot-compiler.c (emit_line_number_info): Optimize this.
6111
6112 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6113
6114         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6115         
6116         * aot-compiler.c: Add debug info for methods without debug info by
6117         emitting an IL file and having the line number info referencing that file.
6118
6119         * aot-compiler.c: Optimize the size of the generated line number info.
6120
6121         * aot-compiler.c: Emit line number info in xdebug mode.
6122
6123         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6124         million arguments.
6125
6126 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6127
6128         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6129
6130         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6131         is used.
6132
6133 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6134
6135         * basic-calls.cs: Test for the weird crash found on arm.
6136         
6137 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6138
6139         * cpu-arm.md: Increase the size of storer8_membase_reg and
6140         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6141
6142         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6143         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6144         reg to LR otherwise we'll be loading/storing from just the offset.
6145
6146 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6147
6148         Question: if we are storing gint32's inside the "*native_offset",
6149         should we change the signature to "gint32 *native_offset" to
6150         ensure that we do not have type definition problems?
6151         
6152         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6153         an int * as this is what the other function expects, causes
6154         problems with Freescale's compiler that defined int32_t to be a
6155         long and makes int incompatible 
6156
6157 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6158
6159         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6160         filename conflict with bjam.
6161
6162 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6163
6164         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6165         as it might use decomposed ops.
6166
6167 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6168
6169         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6170
6171         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6172         is defined.
6173
6174         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6175
6176         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6177         offsets.
6178
6179         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6180         way registers are stored in MonoContext on arm.
6181
6182         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6183         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6184
6185         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6186
6187         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6188
6189         * mini.c (mini_init): Register mono_isfinite.
6190
6191         * jit-icalls.c (mono_isfinite): New jit icall.
6192
6193         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6194         
6195         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6196         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6197         the parent frame.
6198
6199 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6200
6201         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6202         separate frame and stack pointers, so we must use FP to find the register
6203         spill area.
6204         The FP reg is retrieved from the MonoContext::regs array.
6205
6206 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6207
6208         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6209         as FPA requires it.
6210
6211 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6212
6213         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6214         return R4 and R8 when not running under softfloat.
6215
6216         Fixes basic-calls.exe
6217
6218 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6219
6220         * mini-arm.c: Implement some overflow opcodes.
6221
6222 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6223
6224         * ssa.c: handle another alloca.h
6225
6226         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6227         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6228         MONO_ARCH_USE_SIGACTION. 
6229
6230         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6231         capability defines.
6232
6233         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6234
6235         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6236         PPC targets as sigaction does not exist on all platforms, define
6237         this on a per-platform basis.
6238
6239         Instead of erroring out if the platform is not defined, include
6240         mini-ppc-os.h, and expect that the OS specific setting provides
6241         the required information.   
6242
6243 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6244
6245         * aot-compiler.c: Fix --enable-minimal=aot.
6246
6247 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6248
6249         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6250         previous change.
6251
6252 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6253
6254         * exceptions-arm.c: Fix warnings.
6255
6256         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6257         ARM.
6258
6259         * mini-x86.c: Fix --enable-minimal=jit build.
6260
6261         * mini.c: Really fix --enable-minimal=jit build.
6262         
6263         * mini.c (construct_object_context_for_method): Move this outside
6264         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6265
6266         "Backported" of r124984 from 2.0 branch.
6267         
6268         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6269
6270         "Backport" of r124977 + r124978 from 2.0 branch.
6271         
6272         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6273         to avoid calling mono_exception_from_token () from the throw trampoline.
6274         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6275         for throwing corlib exceptions, this fixes full-aot support for corlib
6276         exceptions.
6277
6278         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6279
6280 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6281
6282         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6283         part of the changes to split the code in mini into operating
6284         system specific files.
6285
6286         This patch was done by copying mini.c to the respective files to
6287         preserve SVN history.
6288
6289 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6292
6293 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6294
6295         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6296         remoting-invoke-with-check wrappers of shared methods.
6297
6298         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6299
6300 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6301
6302         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6303         optimization if the top of stack is the last instruction in the
6304         bblock.  Otherwise it might have been used after its definition.
6305         Fixes #469742.
6306
6307 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6310         method as well when get_vcall_slot () fails to match a code sequence.
6311
6312         * mini-arm.c: Fix the android build, which doesn't have
6313         __aeabi_read_tp.
6314
6315 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6316
6317         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6318         the s390x build.
6319
6320 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6321
6322         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6323
6324 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6325
6326         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6327         and put its id into jinfo->used_regs. This is only used on amd64,
6328         which is currently the only platform generating unwind info.
6329
6330         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6331         the dwarf unwinder. This is required to correctly handle async exceptions
6332         like thread abort and stack overflows, which can happen while a method
6333         is in the middle of its prolog or epilog.
6334         
6335         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6336         the unwind info belonging to an AOTed method.
6337
6338         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6339         into cfg->unwind_ops.
6340         
6341         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6342
6343         * mini.c (mini_init): Call mono_unwind_init ().
6344         (mini_cleanup): Call mono_unwind_cleanup ().
6345
6346         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6347         unwind info to be shared between methods.
6348
6349         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6350         saved in the LMF.
6351
6352         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6353         get_throw_pending_exception () to avoid initialization races.
6354
6355         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6356         mono_arch_exceptions_init () function.
6357
6358         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6359
6360 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6361
6362         * mini.c (mono_get_domain_intrinsic): New helper function.
6363         (mono_get_thread_intrinsic): Ditto.
6364
6365         * mini-arm.c mini-ia64.c: Use the new helper functions.
6366         
6367         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6368         the last constrained_call change, since it is needed in the non-AOT
6369         case as well.
6370
6371         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6372         
6373         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6374         mono_get_lmf_addr () on arm eabi linux.
6375
6376 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6377
6378         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6379         code sequence which matches a non-virtual call.
6380
6381 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6382
6383         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6384         stack pointer (r1).
6385
6386 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6387
6388         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6389         runtime-invoke wrappers, since they are also shared based on signature.
6390
6391 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6392
6393         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6394         info from the (correct) context.
6395
6396 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6397
6398         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6399         
6400         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6401         using dwarf unwinding info. Not yet used.
6402
6403         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6404
6405 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6406
6407         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6408         descriptors.
6409
6410         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6411         special case and handle mono_arch_delegate_invoke_impl() returning
6412         function descriptors.
6413
6414         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6415         trampolines return function descriptors, too.
6416
6417 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6418
6419         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6420         out_of_line optimization.
6421
6422 2009-01-21  Martin Baulig  <martin@ximian.com>
6423
6424         * mini.h
6425         (MonoCompile): Added `disable_deadce_vars' to disable removing
6426         unused variables.
6427
6428         * mini.c
6429         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6430         inside the debugger.
6431
6432         * liveness.c (mono_analyze_liveness): Don't remove any unused
6433         variables if `cfg->disable_deadce_vars' is set.
6434
6435 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6436
6437         * method-to-ir.c: Only apply exception constructor optimization if
6438         the the method actually belongs to an exception class.  Fixes
6439         #467456.
6440
6441 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6442
6443         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6444         change inside a #ifdef __mono_ppc64__.
6445
6446         * aot-compiler.c (compile_method): Remove the previous limitation.
6447
6448         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6449         on type variables in AOTed code.
6450         
6451         * aot-compiler.c (compile_method): Skip generic methods having type 
6452         constraints on their generic parameters.
6453
6454         * aot-compiler.c (compile_method): Check for methods which cannot be
6455         encoded inside RGCTX_FETCH patches as well.
6456
6457         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6458         build.
6459
6460 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6461
6462         * method-to-ir.c: Force the vtable variable in shared generic code
6463         for the case that they might show up on a stack trace where they
6464         are needed.
6465
6466         * mini-exceptions.c: Save and use generic sharing info as well as
6467         IP in stack traces to resolve shared generic instantiations.
6468
6469 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6470
6471         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6472         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6473
6474 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6475
6476         * method-to-ir.c: Do generic sharing for array constructors.
6477
6478 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6479
6480         * mini-exceptions.c (mono_print_thread_dump): Add information
6481         about the thread state using wapi_current_thread_desc.
6482
6483 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6484
6485         * basic-simd.cs: Tests for the new constructors. 
6486
6487 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6488
6489         * mini-ops.h: Added OP_EXPAND_*
6490
6491         * cpu-x86.md: Same.
6492
6493         * mini-x86.c (mono_arch_output_basic_block): Same.
6494         
6495         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6496
6497 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6498
6499         * iltests.il.in: Add a test for #467385.
6500
6501 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6502
6503         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6504         thread been cleaned up is not the same currently in execution.
6505
6506         Fixes appdomain-unload crashes on windows, osx and linux variants
6507         without the __thread keyword.
6508
6509 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6510
6511         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6512         (koush@koushikdutta.com). Implement this for android.
6513
6514         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6515         begins with a digit.
6516
6517         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6518         mono_marshal_get_write_barrier ().
6519
6520 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6521
6522         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6523         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6524         that pass them on a register pair.
6525
6526         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6527         test was crashing due to that.
6528
6529 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6530
6531         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6532         trampoline code. Include ucontext.h only if available.
6533
6534 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6535
6536         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6537         and doesn't check whether it's sharable, like it was before
6538         removing the shared generics hash.  This brings IronPython
6539         performance back to what it was before that change.
6540
6541 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6542
6543         * method-to-ir.c: Handle delegate invocation optimization earlier,
6544         otherwise it would be handled (much more slowly) by the
6545         final/sealed optimization.
6546
6547 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6548
6549         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6550         domain is not set. Fixes #465864.
6551
6552 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6553
6554         * method-to-ir.c: Don't stop sharing of generic methods with catch
6555         clauses - we already handle those.
6556
6557 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6558
6559         * mini.c, mini.h: lookup_generic_method() is now
6560         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6561         making the shared_generics_hash obsolete.
6562
6563 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6564
6565         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6566         use the red zone.  Make room on the stack first and then use it,
6567         not the other way around.
6568
6569 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6570
6571         * mini.c (mini_init): Call mono_xdebug_init ().
6572
6573         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6574
6575 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6576
6577         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6578
6579         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6580         trampolines.
6581
6582         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6583         debug+unwind info for trampolines.
6584
6585         * mini.c (mono_create_unwind_op): New helper function.
6586
6587         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6588
6589 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6590
6591         * aot-compiler.c: Fix the build.
6592
6593 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6594
6595         * Makefile.am: Update dtrace-prelink.sh location.
6596
6597 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6598
6599         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6600         optimization. Fixes #464520.
6601
6602 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6603
6604         * mini-amd64.c : Adding code to save/restore non-volatile registers
6605            on Winx64.
6606
6607         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6608           registers on Winx64.
6609
6610         Contributed under MIT/X11 license.
6611
6612 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6615         __GNUC_MINOR__ which can break when the major version changes.
6616
6617 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6618
6619         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6620
6621 2009-01-07  Geoff Norton  <gnorton@novell.com>
6622
6623         * helpers.c:  Allow mono -v -v -v to work on darwin.
6624
6625 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6626
6627         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6628           pattern. 
6629
6630         Contributed under MIT/X11 license.
6631
6632 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6633
6634         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6635         instead of directly accessing type->data.klass. Fixes #462016.
6636         (mono_allocate_stack_slots_full): Ditto.
6637
6638         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6639         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6640
6641         * aot-compiler.c (emit_plt): Fix ARM build.
6642
6643 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6644
6645         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6646         
6647         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6648         change.
6649
6650         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6651         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6652         #463357.
6653
6654         * iltests.il.in: Add a regression test.
6655
6656 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6657
6658         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6659
6660 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6661
6662         * basic-simd.cs: Add a regression test for #462457.
6663
6664 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6665
6666         * mini-ops.h: Add a definition of XPHI.
6667
6668         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6669
6670         * ssa.c (op_phi_to_move): Handle XPHI.
6671
6672         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6673
6674         Fixes #462457
6675
6676 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6677
6678         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6679
6680 2008-12-31  Geoff Norton  <gnorton@novell.com>
6681
6682         * mini-ppc.c: The prolog size allocated can be too small for darwin
6683         ppc32 under certain circumstances.  Also fix a small logic bug.
6684
6685 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6686
6687         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6688         while loading AOT methods.
6689
6690         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6691         since only the former is nulled out after a successful cast. This prevents
6692         crashes with rethrown exceptions when using --debug=casts.
6693
6694 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6695
6696         * mini.h: New macro for checking whether a method is final,
6697         i.e. whether the method or its class is marked final.
6698
6699         * method-to-ir.c: Use the new macro for all final-checks
6700         consistently.  Fixes the crash in the System.ServiceModel tests.
6701
6702 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6703
6704         * mini-exceptions.c (get_exception_catch_class): Corrected another
6705         overly strict assertion.
6706
6707 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6708
6709         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6710         Clobbering it is not allowed because the caller might use it as
6711         the vtable register in the interface call.
6712
6713 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6714
6715         * mini-exceptions.c (get_exception_catch_class): Corrected an
6716         overly strict assertion.
6717
6718 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6719         
6720         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6721
6722         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6723
6724         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6725
6726         * cpu-mips.md: correct lengths for certain long_ opcodes.
6727
6728         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6729
6730         * mini-mips.c: Add support for more long operations. Fix issues with stack frame layout for n32 (still not perfect yet). Add mips_emit_load_const().
6731         
6732 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6733
6734         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6735         
6736 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6737         
6738         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6739         
6740 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6741
6742         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6743         next basic block.
6744         
6745 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6746
6747         * mini.h: Allow MonoInst 'p' field to alias with the low-order bits of the 'const_val' fields correctly on big-endian systems when SIZEOF_VOID_P < SIZEOF_REGISTER
6748
6749         * ir-emit.h: Change SIZEOF_VOID_P to SIZEOF_REGISTER, init instruction through inst_c* fields instead of inst_p* fields in case sizeof(inst_p) < sizeof(inst_c)
6750         
6751 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6752         
6753         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6754         
6755 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6756
6757         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6758         gshared code. Fixes #458947.
6759
6760         * generics.cs: Add a test.
6761
6762 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6763         
6764         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6765         
6766         * mini-mips.c: first pass n32 code generation.
6767
6768         * mini-mips.h: datatypes and defines for n32 support.
6769
6770         * exceptions-mips.c: first pass n32 code generation.
6771         
6772         * tramp-mips.c: first pass n32 code generation.
6773         
6774         * cpu-mips.md: add long_ opcodes.
6775         
6776 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6777
6778         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6779
6780         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6781         
6782         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6783         
6784         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6785
6786         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6787
6788         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6789
6790         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6791
6792         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6793
6794         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6795
6796 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6797
6798         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6799
6800 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6801
6802         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6803
6804 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6805
6806         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6807         descriptors for helper functions directly in front of the code.
6808
6809 2008-12-11  Mark Probst  <mark.probst@gmail.com>
6810
6811         * method-to-ir.c: Removed an unnecessary assertion.
6812
6813 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * method-to-ir.c: Merge SGEN changes from the old JIT.
6816
6817 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
6818
6819         * driver.c (compile_all_methods_thread_main): Handle failure of
6820         mono_get_method ().
6821
6822 2008-12-10  Mark Probst  <mark.probst@gmail.com>
6823
6824         * mini-ppc.c: Merged with mini-ppc64.c.
6825
6826         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
6827
6828         * Makefile.am: Use the same sources for PPC and PPC64.
6829
6830         * mini-ppc64.c: Removed.
6831
6832 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6833
6834         * branch-opts.c (remove_block_if_useless): Extract fall through detection
6835         code to mono_bb_is_fall_through.
6836         
6837         * branch-opts.c (mono_remove_critical_edges): Same.
6838
6839 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6840
6841         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
6842         expect that an OP_BR_REG will be there.
6843
6844 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
6845
6846         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
6847         for the many branch ops. The original check miss OP_BR_REG.
6848
6849         Fixes #457574.
6850         
6851 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6852
6853         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
6854
6855 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6856
6857         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
6858         while holding the aot lock.
6859
6860 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6861
6862         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
6863         
6864 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6865
6866         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
6867           to release all runtime callable wrappers held by the runtime.
6868
6869         Contributed under MIT/X11 license.
6870
6871 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
6872
6873         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
6874           for Winx64.
6875
6876         Contributed under MIT/X11 license.
6877
6878 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
6879
6880         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
6881         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
6882
6883 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
6884
6885         * cpu-mips.md: fix ckfinite length
6886
6887         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
6888         (mono_arch_lowering_pass): cleanup, rearrange for clarity
6889         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
6890         
6891 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
6892
6893         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
6894         
6895 2008-12-08  Geoff Norton  <gnorton@novell.com>
6896
6897         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
6898         size by 8 bytes as well.
6899
6900 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6901
6902         * basic-simd.cs: Fix method names for Vector16b.
6903         
6904 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6905
6906         * basic-simd.cs: Fix method names for Vector16sb.
6907
6908 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6909
6910         * basic-simd.cs: Fix method names for Vector8us.
6911         
6912 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6913
6914         * basic-simd.cs: Fix method names for Vector8s.
6915         
6916 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6917
6918         * basic-simd.cs: Fix method names for Vector4ui.
6919
6920 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6921
6922         * basic-simd.cs: Fix method names for Vector2l.
6923
6924 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6925
6926         * basic-simd.cs: Fix method names for Vector2d.
6927
6928 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6929
6930         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
6931         that are extension methods.
6932
6933 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
6934
6935         * basic-simd.cs: Fix method names for Vector4f.
6936
6937 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
6938
6939         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
6940         as such. Fixes #456669.
6941
6942 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6943
6944         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
6945         
6946 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
6947
6948         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
6949         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
6950         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
6951         (mips_adjust_stackframe): handle FP spills
6952                 
6953         * mini-ops.h: add mips_mtc1_s2
6954         
6955         * cpu-mips.md: add mips_mtc1_s2
6956         
6957 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
6958
6959         * unwind.c: New file, move the unwind info encoding functions here from
6960         aot-compiler.c, so they could be used at runtime too.
6961
6962 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6963
6964         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
6965         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
6966         
6967 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
6968
6969         * mini-mips.c: cleanup warnings
6970         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
6971         (mips_adjust_stackframe): handle case of taking the address of stack locals
6972         
6973 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6974
6975         * aot-compiler.c: Implement a few functions missing from the asm writer.
6976         (emit_method_code): Only write symbols for methods when using the bin
6977         writer, since the assembler can't deal with the characters in our method
6978         names.
6979
6980         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
6981
6982         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
6983         call.
6984
6985         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
6986         a bit to also restore %rax.
6987
6988 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6989
6990         * mini-ppc.c: Some simple merges from mini-ppc64.c.
6991
6992 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
6993
6994         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
6995         arguments.
6996
6997 2008-12-05  Mark Probst  <mark.probst@gmail.com>
6998
6999         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7000
7001         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7002         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7003
7004         * exceptions-ppc64.c: Removed.
7005
7006         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7007
7008 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7009
7010         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7011         tramp-ppc64.c.
7012
7013         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7014
7015         * tramp-ppc64.c: Removed.
7016
7017 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7018
7019         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7020         the TYPESPEC table.
7021
7022 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7023
7024         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7025
7026         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7027         mini-ppc.h instead of mini-ppc64.h.
7028
7029         * mini-ppc64.h: Removed.
7030
7031 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7032
7033         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7034         
7035         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7036         
7037 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7038
7039         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7040         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7041         code easier.
7042
7043 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7044
7045         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7046
7047 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7048
7049         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7050
7051 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7052
7053         * basic-simd.cs: Tests for operator == and != on Vector4f.
7054
7055 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7056
7057         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7058
7059         * simd-intrinsics.c: Kill useless enum.
7060
7061 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7062
7063         * cpu-mips.md: add long_conv_to_ovf_i4_2
7064         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7065
7066 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7067
7068         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7069         
7070         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7071
7072 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7073
7074         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7075         
7076 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7077
7078         * basic-simd.cs: Add tests for new methods.
7079
7080 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7081
7082         * simd-intrinsics.c: Add support for operator == and !=
7083         on Vector4(u)i.
7084
7085         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7086
7087 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7088
7089         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7090
7091 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7092
7093         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7094
7095         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7096         MONO_PATCH_INFO_ICALL_ADDR.
7097
7098         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7099
7100         * aot-compiler.c: Resurrect full-aot support.
7101
7102 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7103
7104         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7105         
7106 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7107
7108         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7109         
7110 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7111
7112         * basic-simd.cs: Fix tests to work under ppc.
7113         Remove tests for methods that will be removed.
7114
7115 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7116
7117         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7118         generic type (via a typedef or typeref) correctly.
7119
7120 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7121
7122         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7123         diagnose an assertion failure.
7124
7125 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7126
7127         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7128         Fix trampoline size.
7129
7130         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7131         conversion opcodes are implemented natively instead via emulation.
7132
7133 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7134
7135         * cpu-mips.md: remove mips_xori
7136
7137         * mini-ops.h:  remove mips_xori
7138
7139         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7140
7141         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7142         
7143         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7144         
7145 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7146
7147         * cpu-mips.md: fix instruction lengths.
7148
7149         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7150
7151         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7152
7153         * mini-ops.h: fix slti / sltiu op profiles.
7154         
7155 2008-12-02  Martin Baulig  <martin@ximian.com>
7156
7157         * method-to-ir.c (mono_method_to_ir): Disable debugging
7158         information for the init locals block to make the debugger stop
7159         after all locals have been initalized.
7160
7161 2008-12-02  Martin Baulig  <martin@ximian.com>
7162
7163         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7164         running inside the debugger.
7165
7166 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7167
7168         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7169         is enabled.
7170
7171         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7172         alu->alu imm optimization which only shows if deadce is disabled.
7173
7174         * aot-compiler.c: Rename the function names for the binary and asm writers
7175         so they can coexist in the same process. Rework the xdebug code to use the
7176         asm writer. This avoids the need to call into the runtime to dump the
7177         debugging info. Add more debugging info for types.
7178
7179         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7180
7181         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7182         cpu description tables, they can't occur in cpu-<ARCH>.md.
7183
7184         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7185         the stack in CEE_LDFLDA. Fixes #450542.
7186
7187         * generics.cs: Add a new test.
7188
7189 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7190
7191         * mini-ops.h: updated MIPS opcodes
7192         * mini-mips.c: decompose long opts
7193         * mini-mips.h: decompose long opts
7194         
7195 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7196
7197         * cpu-mips.md: fix length on int_rem_un
7198         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7199         
7200 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7201
7202         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7203
7204         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7205
7206 2008-11-29  Martin Baulig  <martin@ximian.com>
7207
7208         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7209         mono_debug_using_mono_debugger() in addition to the
7210         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7211
7212 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7213
7214         * mini-ops.h: updated more MIPS opcodes
7215         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7216         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7217         
7218 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7219
7220         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7221
7222 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7223
7224         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7225         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7226         * mini-ops.h: correct selected mips opcode entries
7227         
7228 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7229
7230         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7231         make them work.
7232
7233 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7234
7235         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7236
7237 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7238
7239         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7240         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7241         * mini-mips.h: disable IMT
7242         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7243         
7244 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7245
7246         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7247
7248 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7249
7250         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7251
7252 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7253
7254         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7255         consistency.
7256
7257 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7258
7259         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7260         for Set/GetVector aligned versions.
7261
7262 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7263
7264         * basic-simd.cs: Add tests for Get/SetVector.
7265
7266 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7267
7268         * mini.c: Removed g_slist_append_mempool().  Now in
7269         metadata/mempool.c.
7270
7271 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7272
7273         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7274         size properly and make the bounds check optional.
7275
7276         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7277         for SetVector and IsAligned.
7278
7279 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7280
7281         * mini.c: Remove unused mono_normalize_opcodes () function.
7282
7283 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7284
7285         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7286         using the new atomic add ops now.
7287
7288         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7289         add.
7290
7291 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7292
7293         * mini-ppc64.c: Several fixes.
7294
7295 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7296
7297         * cpu-mips.md: added jump_table
7298         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7299
7300 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7301
7302         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7303
7304 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7305
7306         * mini-ops.h: corrected a handful of MIPS opcodes.
7307
7308 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7309
7310         * aot-compiler.c: MIPS to use ELF writer
7311
7312 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7313
7314         * mini-codegen.c: remove MIPS specific assert.
7315
7316 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7317
7318         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7319         fixes.  PPC64 now passes most of the runtime regressions.
7320
7321 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7322
7323         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7324         volatile intervals a bit.
7325
7326 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7327
7328         * basic-long.cs: New test case.
7329
7330 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7331
7332         * mini.c (mini_method_compile): Disable globalra for large methods for 
7333         now.
7334
7335         * regalloc2.c (order_moves): Add fp support.
7336
7337         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7338         source bblock ends with an OP_BR_REG.
7339
7340         * ratests.cs: Add a new test.
7341
7342 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7343
7344         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7345         sharing.  PPC64 now passes generics.exe.
7346
7347 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7348
7349         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7350
7351 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7352
7353         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7354         memory when mono_jit_info_table_find () can't find the method in the
7355         LMF case.
7356
7357         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7358         AOTed code too.
7359         
7360         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7361         writer too.
7362
7363 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7364
7365         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7366         Several fixes.  PPC64 now runs exceptions.exe and
7367         devirtualization.exe.
7368
7369 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7370
7371         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7372         arrays.exe and basic-math.exe.
7373
7374 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7375
7376         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7377         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7378
7379 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7380
7381         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7382
7383 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7384
7385         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7386
7387         * ir-emit.h: Move macros from method-to-ir.c to here.
7388
7389 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7390
7391         * mini-ops.h: Correct the long simd ops to use LREG.
7392
7393 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7394
7395         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7396         
7397         * mini-ops.h: Correct the dreg type of a few long opcodes.
7398
7399         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7400         Add netbsd support.
7401
7402 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7403
7404         * mini-ppc.c: remove negative stack references in epilog
7405         for platforms that don't support the red zone.
7406
7407 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7408
7409         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7410         point regs.  Now PPC64 passes basic-calls.exe.
7411
7412 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7413
7414         * basic-simd.cs: Add tests for accessors of Vector2l.
7415
7416 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7417
7418         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7419
7420         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7421         
7422         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7423
7424 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7425
7426         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7427         PPC64 passes basic-long.exe.
7428
7429 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7430
7431         * decompose.c: Decompose carry and overflow add on PPC64 like on
7432         other 64 bit archs.  Don't decompose sub at all on PPC64.
7433
7434         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7435         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7436         basic-long.exe.
7437
7438 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7439
7440         * basic-simd.cs: Add tests for accessors of Vector2d.
7441
7442 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7443
7444         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7445
7446         * cpu-x86.md: Same.
7447
7448         * mini-x86.c (mono_arch_output_basic_block): Same.
7449         
7450         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7451
7452 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7453
7454         * basic-simd.cs: Add tests for accessors of Vector4f.
7455
7456 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7457
7458         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7459
7460         * cpu-x86.md: Same.
7461
7462         * mini-x86.c (mono_arch_output_basic_block): Same.
7463         
7464         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7465
7466 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7467
7468         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7469
7470 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7471
7472         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7473
7474         * cpu-x86.md: Same.
7475
7476         * mini-x86.c (mono_arch_output_basic_block): Same.
7477         
7478         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7479
7480 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7481
7482         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7483
7484 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7485
7486         * simd-intrinsics.c: Enable setters for Vector16sb.
7487
7488 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7489
7490         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7491
7492         * cpu-x86.md: Same.
7493
7494         * mini-x86.c (mono_arch_output_basic_block): Same.
7495         
7496         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7497
7498 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7499
7500         * simd-intrinsics.c: Implement setter for Vector8us.
7501
7502 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7503
7504         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7505         for dead variables.
7506
7507 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7508
7509         * mini-ppc.c: remove references to the red zone in the prolog
7510         (for systems that don't support it).
7511
7512 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7513
7514         * cpu-ppc64.md: Fixed a few instruction lengths.
7515
7516         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7517         now.
7518
7519 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7520
7521         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7522         basic.exe now.
7523
7524 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7525
7526         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7527
7528 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7529
7530         * mini-ops.h: Added OP_INSERT_I2.
7531
7532         * cpu-x86.md: Same.
7533
7534         * mini-x86.c (mono_arch_output_basic_block): Same.
7535         
7536         * simd-intrinsics.c: Implement setter for Vector8s.
7537
7538         * simd-methods.h: Add the names of get setters of Vector8s.
7539
7540 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7541
7542         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7543         
7544         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7545         parameters.
7546
7547         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7548
7549 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7550
7551         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7552         for PPC64.  An empty program runs now.
7553
7554 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7555
7556         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7557
7558         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7559         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7560         info for JITted code is emitted into a shared library, loadable into gdb.
7561
7562 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7563
7564         * Makefile.am: Changes to build PPC64.
7565
7566         * mini-arch.h: Include mini-ppc64.h on PPC64.
7567
7568 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7569
7570         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7571         in PPC code up to r119147.
7572
7573 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7574
7575         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7576         cpu-ppc64.md: Changes for PPC64.
7577
7578         Based on code submitted by andreas.faerber@web.de at
7579         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7580         X11/MIT license.
7581
7582 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7583
7584         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7585         cpu-ppc64.md: Copied from the corresponding PPC files from
7586         r118846.
7587
7588 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7589
7590         * mini-ops.h: Added OP_ROUND.
7591
7592         * cpu-x86.md: Added round.
7593
7594         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7595
7596         * basic-math.cs: Added test_0_round to test rounding.
7597
7598         Contributed under MIT/X11 license.
7599
7600 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7601
7602         * aot-compiler.c : Fix the Winx64 build.
7603
7604         Contributed under MIT/X11 license.
7605
7606 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7607
7608         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7609         in OP_EXTRACT_R8 to avoid possible stack corruption.
7610
7611 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7612
7613         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7614
7615         * cpu-x86.md: Added extract_r8.
7616
7617         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7618         
7619         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7620         a couple of OP_EXTRACT_I4.
7621
7622         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7623
7624         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7625
7626 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7627
7628         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7629         and not 4.1. 
7630
7631 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7632
7633         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7634         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7635
7636         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7637         are not needed any more.
7638
7639         * mini.h: Remove the unused INS_LIST macros.
7640
7641         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7642         longer needed.
7643
7644         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7645         ir-emit.h.
7646
7647         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7648         mono_alloc_ireg () instead.
7649
7650         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7651         macros.
7652
7653         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7654         on amd64.
7655
7656         * aot-runtime.c (load_aot_module): Disable AOT when running under
7657         CAS.
7658
7659         * mini-amd64.h: Change the monitor fastpath defines to check for
7660         !PLATFORM_WIN32 so they work on *bsd too.
7661
7662         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7663
7664         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7665
7666         * mini.h (MonoCompile): Remove new_ir flag.
7667
7668         * regalloc.h regalloc.c: Remove unused code.
7669
7670         * cpu-*.md: Remove more unused opcodes.
7671
7672         * simple-cee-ops.h simple-mini-ops.h: Removed.
7673
7674         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7675         
7676 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7677
7678         * aliasing.h: Removed.
7679
7680         * *.c: Remove references to aliasing.h and inssel.h.
7681
7682         * mini.c: Remove additional unused functions.
7683
7684         * mini-ops.h cpu-*.md: Remove unused opcodes.
7685
7686 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7687
7688         Remove the old JIT code.
7689
7690         * inssel*.brg: Removed.
7691
7692         * ssa.c abcremoval.c aliasing.c: Removed.
7693
7694         * ssa2.c: Renamed to ssa.c.
7695
7696         * abcremoval2.c: Renamed to abcremoval.c.
7697
7698         * *.c: Removed all !cfg->new_ir code.
7699
7700         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7701         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7702
7703         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7704         
7705 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7706
7707         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7708         to simplify the code and cut back on the number of global symbols in the AOT
7709         file.
7710         
7711         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7712
7713 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7714
7715         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7716         with the got/got_info tables.
7717
7718         * mini.h: Bump AOT file format version.
7719         
7720         * unwind.h: New file, contains definitions for stack unwinding.
7721
7722         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7723         to cfg->unwind_ops.
7724         
7725         * aot-compiler.c: Generalize the emitting of unwind information to use the
7726         information in cfg->unwind_ops.
7727
7728         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7729
7730         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7731         AOT method frames. Enable writing symbols for methods by default.
7732
7733 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7734
7735         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7736         and make it work with vectors of element sizes 1, 2 and 4.
7737
7738         * simd-intrinsics.c: Enable getter for all vectors with element size
7739         1, 2 or 4.
7740
7741         * simd-methods.h: Add the names of other getters.
7742
7743         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7744
7745         * cpu-x86.md: Same.
7746
7747         * mini-x86.c: Same.
7748
7749 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7750
7751         * mini-ppc.h: portability fix.
7752
7753 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7754
7755         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7756         buggy and will overwrite it.
7757
7758 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7759
7760         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7761         Use it to emit local symbols for all methods so AOTed methods show up with
7762         their full name in gdb/valgrind output.
7763
7764 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7765
7766         * mini-ppc.c: portability fixes.
7767
7768 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7769
7770         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7771         entries out of the if (!generic_shared...) code so it is always done.
7772         (mono_class_init_trampoline): Do the patching when running under valgrind
7773         too, newer versions of valgrind have no problems with it.
7774
7775 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7776
7777         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7778         further sections.
7779
7780 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7781
7782         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7783         filters.
7784
7785 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7786
7787         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7788
7789 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7790
7791         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7792
7793         * cpu-x86.md: Same.
7794
7795         * mini-x86.c: Same.
7796
7797         * simd-intrinsics.c: Same.
7798
7799 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7800
7801         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7802
7803 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7804
7805         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7806         to work with more Vector types.
7807
7808 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
7811         store the elemens directly instead of using and intermediate.
7812
7813 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7814
7815         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
7816
7817         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
7818         to preserve %eax for aot plt trampolines.
7819
7820         * aot-compiler.c (compile_method): Don't skip synchronized methods.
7821         (encode_method_ref): Flag synchronized methods so they won't go through
7822         the AOT trampoline.
7823
7824         * aot-compiler.c: Additional work to support AOTing synchronized methods/
7825         wrappers.
7826
7827         * cpu-ia64.md (jmp): Increase max length.
7828
7829 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7830
7831         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
7832         open generic classes.
7833
7834         * aot-compiler.c: Enable the ELF writer on ELF platforms.
7835
7836         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
7837         box+brtrue optimization since it causes test failures on x86.
7838
7839 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7840
7841         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
7842
7843         * cpu-x86.md: Same.
7844
7845         * mini-x86.c: Same.
7846
7847         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
7848         for simd ctor values. 
7849
7850         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
7851         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
7852
7853 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
7854
7855         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
7856         LogicalRightShift.
7857
7858         * simd-instrincs.c: Same.
7859
7860         * basic-simd.cs: Same.
7861
7862 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
7863
7864         * ratests.cs: Add more tests.
7865
7866         * regalloc2.c (add_spill_code): Handle more corner cases.
7867
7868 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7869
7870         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
7871         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
7872         both the source an destination of an instruction.
7873
7874 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7875
7876         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
7877         wapihandles.c: more portability changes.
7878
7879 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
7880
7881         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
7882         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
7883         safe to execute in a signal handler and the kernel provides better
7884         the info in /proc/self/smaps. Avoid the assert on sigaction during
7885         cleanup.
7886
7887 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
7888
7889         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
7890         do the bblock linking hack if it is actually needed.
7891
7892         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
7893         up linking.
7894
7895         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
7896         crash problem is fixed.
7897
7898         * branch-opts.c (mono_remove_critical_edges): Link up newly added
7899         bblocks.
7900
7901         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
7902         for catch clauses.
7903         (mini_method_compile): Set the starting value of next_vreg to 
7904         MAX_IREGS + MAX_FREGS when using globalra.
7905
7906         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
7907         filter clauses with BB_EXCEPTION_HANDLER.
7908
7909         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
7910
7911 2008-11-10  Mark Probst  <mark.probst@gmail.com>
7912
7913         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
7914         space for stdcall.  Fixes regressions on Win32.
7915
7916 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
7917
7918         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
7919         bblocks.
7920         (linear_scan): Remove an assert which doesn't seem to be needed.
7921
7922         * local-propagation.c (mono_local_deadce): Avoid a call to
7923         MONO_DELETE_INS which would screw up the instruction linking.
7924
7925         * mini.c (mono_decompose_op_imm): Make this work with globalra.
7926
7927         * regalloc2.c: Upgrade to work the current JIT code.
7928
7929 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
7930
7931         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
7932         case.
7933
7934         * aot-runtime.c: Remove some dead code.
7935
7936         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
7937         consistency.
7938         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
7939
7940         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
7941         trampolines using sscanf since atoi doesn't work on large unsigned values.
7942
7943         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
7944         Initialize code_size.
7945
7946 2008-11-08  Mark Probst  <mark.probst@gmail.com>
7947
7948         * method-to-ir.c (mini_emit_inst_for_method): Make
7949         Interlocked.CompareExchange work for Int arguments on 32 bit
7950         archs, as well.
7951
7952 2008-11-07  Mark Probst  <mark.probst@gmail.com>
7953
7954         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
7955
7956 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
7957
7958         * main.c Fix MSVC build.
7959
7960         Contributed under MIT/X11 license.
7961
7962 2008-11-06  Mark Probst  <mark.probst@gmail.com>
7963
7964         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
7965         alignment larger than 8 bytes are aligned correctly, too.
7966
7967         * mini.c: Honor the min_align field of MonoClass when laying out
7968         the stack.
7969
7970 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
7973
7974         * aot-compiler.c (emit_plt): Fix a warning.
7975         
7976         * aot-compiler.c: Implement ARM support in the binary writer.
7977
7978 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
7979
7980         * basic-simd.cs: Add test for getter with byref arg.
7981         Fix the naming of a few tests.
7982         Add missing checks to a test.
7983
7984 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
7985
7986         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
7987
7988         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
7989         most of the full-aot support for monitor enter/exit trampolines.
7990
7991         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
7992         enter/exit trampoline creation functions.
7993
7994         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
7995         make dist.
7996
7997 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
7998
7999         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8000         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8001         implement the needed functionality without adding crap to the runtime.
8002
8003 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8004
8005         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8006         non-x86 builds.
8007
8008         * mini.c (mono_build_date): New global version holding the build date in
8009         string format.
8010         
8011         * Makefile.am (buildver.c): Generate a file containing the build date.
8012
8013         * main.c: Set the build date from the generated file.
8014
8015         * mini.c (mono_get_runtime_build_info): New helper function returning build
8016         information in a string format.
8017         
8018         * driver.c (mono_main): Print the build date in --version.
8019
8020         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8021         file when the bind-to-runtime-version option is used.
8022
8023 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8024
8025         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8026
8027 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8028
8029         * simd-methods.h: Rename prefetch methods.
8030
8031         * simd-intrinsics.c: Same.      
8032
8033 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8034
8035         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8036         sizes.
8037
8038 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8039
8040         * aot-compiler.c: Use the bundled elf header files instead of depending on
8041         the system one.
8042         
8043         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8044         mempool.
8045
8046         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8047         on every call.
8048
8049 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8050
8051         * cpu-x86.md: Add store nta ops.
8052
8053         * mini-ops.h: Same.
8054
8055         * mini-x86.c: Same.
8056
8057         * mini.h: Add an enum for simd prefetch modes.
8058
8059         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8060         of store. Use the changed code to support store nta.
8061
8062         * simd-intrinsics.c: Add prefetch ops for all vector types.
8063
8064 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8065
8066         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8067         threads.
8068         
8069         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8070         names.
8071
8072         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8073         trampolines.
8074
8075 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8076
8077         * mini-x86.c: Fixed commit.
8078
8079 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8080
8081         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8082
8083 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8084
8085         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8086         and MONITOR_EXIT, for the ASM fastpaths.
8087
8088         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8089         available.
8090
8091         * mini.c, patch-info.h: Signature and patch infos for
8092         Monitor.Enter/Exit trampolines.
8093
8094         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8095
8096         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8097         Monitor.Enter/Exit ASM fastpath for Linux.
8098
8099 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8100
8101         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8102
8103         * objects.cs: Add a new test.
8104         
8105         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8106
8107         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8108         if MONO_LOG_LEVEL is set.
8109
8110         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8111
8112         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8113
8114         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8115         
8116         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8117         of file offsets. Align the sections belonging to the data segment to 
8118         PAGESIZE.
8119
8120 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8121
8122         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8123         elf.h. Port it to amd64.
8124
8125 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8126
8127         * driver.c: Enable SIMD by default.
8128
8129 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8130
8131         * cpu-x86.md: Add prefetch op.
8132
8133         * mini-ops.h: Same.
8134
8135         * mini-x86.c: Same.
8136
8137         * mini.h: Add an enum for simd prefetch modes.
8138
8139         * simd-methods.h: Add prefetch function names.
8140
8141         * simd-intrinsics.c: Add prefetch ops for all vector types.
8142
8143 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8144
8145         * aot-compiler.c (emit_bytes): Speed this up a little.
8146
8147 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8148
8149         * aot-compiler.c: Add JIT time etc. statistics.
8150         
8151         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8152
8153         * mini.h (MonoCompile): Add 'got_offset' field.
8154
8155         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8156         method_got_offsets array.
8157
8158         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8159         wrappers.
8160
8161         * aot-compiler.c (compile_method): Add generic method instances referenced
8162         by the method to the list of methods to be compiled, this is required so if
8163         A<T> references B<T>, and another assembly references A<int>, then it will
8164         also get a copy of B<int>.
8165
8166         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8167         when checking for monitor enter/exit.
8168
8169 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8170
8171         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8172         for Monitor.Enter and Monitor.Exit if enabled.
8173
8174         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8175         Solaris.
8176
8177 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8178
8179         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8180         of an OP_MOVE. Fixes #440046.
8181
8182         * basic-long.cs: Add a new test.
8183
8184 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8185
8186         * mini.h: Add synchronization note for the managed counter-part.
8187
8188         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8189         returns the simd caps of the current cpu.
8190
8191 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8192
8193         * basic-simd.cs: Remove Console.WriteLine.
8194
8195 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8196
8197         * basic-simd.cs: New tests for Vector2ul.
8198
8199 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8200
8201         * simd-intrinsics.c: Add new vector type Vector2ul.
8202
8203 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8204
8205         * basic-simd.cs: New tests for Vector2l.
8206
8207 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8208
8209         * cpu-x86.md: Add long version of most packed int ops.
8210
8211         * mini-ops.h: Same.
8212
8213         * mini-x86.h: Same.
8214
8215         * simd-intrinsics.c: Add new vector type Vector2l.
8216
8217 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8218
8219         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8220
8221         * simd-methods.h: Remove SN_op_BitwiseXor.
8222
8223 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8224
8225         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8226         alignment.
8227
8228 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8229
8230         * basic-simd.cs: Test for Vector2d.
8231
8232         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8233         value.
8234
8235 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8236
8237         * cpu-x86.md: Add double version of all packed float ops.
8238
8239         * mini-ops.h: Same.
8240
8241         * mini-x86.h: Same.
8242
8243         * simd-intrinsics.c: Add new vector type Vector2d.
8244
8245         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8246
8247         * simd-methods.h: Add Duplicate.
8248
8249 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8250
8251         * basic-simd.cs: Test for packing with signed saturation.
8252
8253 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8254
8255         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8256         found in the TYPESPEC table.
8257
8258 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8259
8260         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8261         too.
8262
8263         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8264
8265         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8266         instead of the RVA, since the RVA can be changed by tools like the cil 
8267         stripper.
8268
8269         * method-to-ir.c (mono_method_to_ir2): Ditto.
8270
8271         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8272         (deserialize_variable): Ditto.
8273
8274 2008-10-25  Martin Baulig  <martin@ximian.com>
8275
8276         * debug-mini.c (write_variable): Use
8277         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8278
8279 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8280
8281         * cpu-x86.md: Add unsigned variants of packd and packw.
8282
8283         * mini-ops.h: Same.
8284
8285         * mini-x86.h: Emit the right instruction for packd and packw.
8286         Add unsigned variants of packd and packw.
8287
8288         * simd-intrinsics.c: Packd and packw were used in place of their
8289         unsigned variants. Change that.
8290         Add intrinsics for (Signed)PackWithSignedSaturation.
8291
8292         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8293
8294 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8295
8296         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8297
8298 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8299
8300         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8301
8302         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8303
8304         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8305         sse instructions.
8306
8307         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8308
8309 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8310
8311         * method-to-ir.c, mini.c: Special casing for the synchronized
8312         wrapper for the ldtoken+GetTypeFromHandle case.
8313
8314 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8315
8316         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8317
8318         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8319         created/split bblocks.
8320
8321 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8322
8323         * mini-ops.h: Add packed signed mul high.
8324         
8325         * cpu-x86.md: Same.
8326
8327         * mini-x86.c (mono_arch_output_basic_block): Same.
8328
8329         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8330
8331         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8332
8333 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8334
8335         * basic-simd.cs: Tests for Vector16sb.
8336
8337 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8340
8341 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8342
8343         * mini-ops.h: Add packed signed min, max and compare greater.
8344         
8345         * cpu-x86.md: Same.
8346
8347         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8348         saturation.
8349
8350         * simd-methods.h: Add CompareGreaterThan.
8351
8352         * simd-methods.h: Remove CompareEquals.
8353
8354         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8355
8356         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8357
8358         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8359         CompareEqual.
8360
8361 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8362
8363         * basic-simd.cs: Fix tests due to change in the API.
8364
8365 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8366
8367         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8368
8369 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8370
8371         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8372
8373         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8374         inst_offset as this has invalid values for LDADDR.
8375
8376 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8377
8378         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8379
8380         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8381
8382 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8383
8384         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8385         for accessing field->data.
8386
8387 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8388
8389         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8390
8391 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8392
8393         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8394
8395         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8396
8397 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8398
8399         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8400         from the cfg mempool.
8401
8402 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8403
8404         * basic-simd.cs: Tests for new methods in Vector8us.
8405
8406 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8407
8408         * mini-ops.h: Add multiply and store high.
8409         
8410         * cpu-x86.md: Same.
8411
8412         * mini-x86.c (mono_arch_output_basic_block): Same.
8413
8414         * simd-methods.h: Same.
8415
8416         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8417         and CompareEqual.
8418
8419 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8420
8421         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8422         mono_class_setup_vtable ().
8423
8424         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8425         mono_class_get_vtable_entry () for accessing klass->vtable.
8426
8427         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8428
8429         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8430         found.
8431
8432         * method-to-ir.c (mono_save_token_info): Don't save references made from
8433         wrappers.
8434
8435         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8436         of generic instances.
8437
8438         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8439
8440 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8441
8442         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8443         OP_JMP depends on the method signature.  Calculate it properly.
8444
8445 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8446         
8447         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8448         called directly.
8449
8450         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8451         instances.
8452         (emit_extra_methods): Add another table mapping method indexes to 
8453         offsets in the extra_method_info table.
8454
8455         * mini.h: Bump AOT file format version.
8456         
8457         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8458         and mono_aot_get_method_from_token () into one function.
8459
8460 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8461
8462         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8463         separate counter.
8464
8465 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8466
8467         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8468         methods.
8469
8470         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8471         disable_aot.
8472
8473         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8474
8475         * mini.h: Bump aot file format version.
8476
8477         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8478         AOT file can contain native code for methods which are not in the METHOD
8479         table. Generate code for non-sharable generic instances of generic methods
8480         found in the METHODSPEC table.
8481         
8482         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8483         encoding generic type handles.
8484
8485         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8486         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8487
8488         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8489         macros + MONO_ADD_INS.
8490
8491         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8492         context as well.
8493
8494         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8495
8496         * mini.h: Bump aot file format version.
8497
8498         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8499
8500 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8501
8502         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8503         platforms, with definable stack alignment value.  Set to 16 now
8504         for all platforms.
8505
8506         * mini.c, mini.h, driver.c: Command line option for disabling
8507         stack alignment.
8508
8509 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8510
8511         * basic-simd.cs: Tests for new methods in Vector4ui.
8512
8513 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8514
8515         * mini-ops.h: Add packed int shuffle.
8516         
8517         * cpu-x86.md: Same.
8518
8519         * mini-x86.c (mono_arch_output_basic_block): Same.
8520
8521         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8522         extract mask, max, min, shuffle.
8523
8524         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8525
8526 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8527
8528         * basic-simd.cs: Tests for new methods in Vector8us.
8529
8530 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8531
8532         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8533         RuntimeTypeHandle, not a TypedReference.
8534
8535 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8536
8537         * simd-intrinsics.c: remove relocations.
8538
8539 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8540
8541         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8542         optimizations from the x86 backend.
8543
8544 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8545
8546         * simd-methods.h, simd-intrinsics.c: debloat method names and
8547         prepare for no relocations.
8548
8549 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8550
8551         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8552         
8553         * cpu-x86.md: Same.
8554
8555         * mini-x86.c (mono_arch_output_basic_block): Same.
8556
8557         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8558         extract mask, max, min and sum of absolute differences.
8559
8560         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8561         method name.
8562
8563 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8564
8565         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8566         Renamed one test for consistency.
8567
8568 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8569
8570         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8571         fix to the code that deal with other blocks.
8572
8573 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8574
8575         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8576
8577 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8578
8579         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8580         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8581         able to process the source reg.
8582
8583 2008-10-16  Martin Baulig  <martin@ximian.com>
8584
8585         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8586
8587         * inssel.brg: Add `OP_HARD_NOP'.
8588
8589         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8590
8591         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8592         `OP_HARD_NOP' instruction when running inside the debugger.
8593
8594         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8595         `OP_HARD_NOP' instruction when running inside the debugger.
8596
8597 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8598
8599         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8600         now works. The issue with the regalloc tripping up no longer
8601         happens.
8602
8603         * simd-intrinsics.c (load_simd_vreg): Same.
8604
8605 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8606         
8607         * basic-simd.cs: Tests for new Vector8ui methods.
8608
8609 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8610
8611         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8612         only for type. This fixes crashes where MonoInst::klass is checked
8613         for ops of type != VTYPE or OBJ.
8614
8615         * simd-intrinsics.c (load_simd_vreg): Same.
8616
8617 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8618
8619         * mini-ops.h: Add ops for packed shuffle/max/avg and
8620         extract mask.
8621         
8622         * cpu-x86.md: Same.
8623
8624         * mini-x86.c (mono_arch_output_basic_block): Same.
8625
8626         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8627         extract mask.
8628
8629         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8630         to emit extract mask op.
8631
8632         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8633         to emit word shuffles.
8634
8635 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8636
8637         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8638         the largest alignment needed by a variable, but at least
8639         sizeof(gpointer).
8640
8641 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8642
8643         * basic-simd.cs: Tests for the fixes in the last commit.
8644
8645 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8646
8647         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8648         no longer handles STACK_PTR input.
8649
8650         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8651
8652         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8653         get_simd_vreg   but handles STACK_PTR input.
8654
8655         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8656         as the input can be an arbitrary pointer.
8657
8658         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8659         LDADDR local optimization directly otherwise use a store op.
8660
8661 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8662
8663         * basic-simd.cs: Tests for dup low and dup high.
8664
8665 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8666
8667         * mini-ops.h: Add dup low and dup high ops.
8668         
8669         * cpu-x86.md: Same.
8670
8671         * mini-x86.c (mono_arch_output_basic_block): Same.
8672
8673         * simd-intrinsics.c (vector4f_intrinsics): Same.
8674
8675 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8676
8677         * basic-simd.cs: Tests for recently added functionality.
8678
8679 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8680
8681         * mini-ops.h: Add remaining sse1 fp ops.
8682         
8683         * cpu-x86.md: Add remaining sse1 fp ops.
8684
8685         * mini-x86.c (mono_arch_output_basic_block): Same.
8686
8687         * mini.h: Add enum for simd FP compare conditions.
8688
8689         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8690
8691         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8692         so the backed can generate the appropriate op.
8693
8694 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8695         This patch squeese one more byte from the SimdIntrinsc struct.
8696
8697         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8698         a a shift amount intead of simply or'ing it.
8699
8700         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8701
8702         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8703         byte so we can have an aditional flags field without increasing struct size.
8704
8705         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8706         against the simd_supported_versions bitmask.
8707
8708         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8709
8710 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8711
8712         * mini.c: remove rawbuffer code (the only use here is unsafe because
8713         it takes locks during signal handling and the kernel now provides much
8714         better info in proc/pid/smaps these days).
8715
8716 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8717
8718         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8719         OP_X86_PUSH_OBJ. Fixes #434620.
8720
8721         * objects.cs: Add a test.
8722         
8723 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8724
8725         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8726         that the packuswb/packusdw don't work with unsigned numbers for what
8727         would be negative numbers in signed format.
8728
8729         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8730         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8731
8732         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8733
8734         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8735
8736         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8737
8738         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8739
8740         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8741         add more ops.
8742
8743         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8744         version as the enum in mini.h.
8745
8746         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8747         for sse3 ops, check the simd_version field if present. This way the code
8748         works with all versions of sse.
8749
8750 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8751
8752         * simd-intrinsics.c: Fixed intrinsic name typo.
8753
8754         * mini.h: Added missing simd exported function.
8755
8756         * basic-simd.cs: Added tests for Vector4ui.
8757         Fixed broken test for Vector16b.
8758
8759 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8760
8761         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8762         the max length to 64.
8763
8764 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8765
8766         * method-to-ir.c: Only do the fast virtual generic method call for
8767         non-wrapper methods.
8768
8769         * mini.h, mini-trampolines.c: The new generic virtual remoting
8770         trampoline handles virtual method calls via the vtable (as done by
8771         the fast virtual generic method calls) to remoting proxies.
8772
8773         * mini.c (mono_jit_create_remoting_trampoline): For generic
8774         methods reate a generic virtual remoting trampoline.
8775
8776         * mini-amd64.h: Enable fast virtual generic method calls again.
8777
8778 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8779
8780         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8781         restore registers when doing tail calls.
8782
8783 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8784
8785         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8786         Vector4ui.
8787
8788 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8789
8790         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8791
8792 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8793
8794         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8795
8796 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8797
8798         * basic-simd.cs: Retrofit for API changes.
8799
8800 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8801
8802         * mini-ppc.c: Handle integer stack arguments for tail calls.
8803
8804 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8805
8806         * optflags-def.h: Removed sse3 optimization.
8807
8808         * driver.c: Same.
8809
8810         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
8811         sse3.
8812
8813         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
8814
8815         * mini.h: Added enumeration with simd versions.
8816
8817         * simd-intrinsics.c (emit_intrinsics): Use the new static var
8818         for detecting SSE3.
8819
8820         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
8821
8822         * mini.c (mini_init): Call mono_simd_intrinsics_init.
8823
8824 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8825
8826         * basic-simd.cs: Added tests for Vector8u and Vector16u.
8827
8828         * basic-simd.cs: Fixed test naming.
8829
8830 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
8831
8832         * mini-ops.h: Added ops for packed and saturated math, shifts
8833         and packing/unpacking.
8834
8835         * cpu-x86.md: Added descriptors for the above ops.
8836
8837         * mini-x86.c: Added code to emmit the above ops.
8838
8839         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
8840
8841 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
8842
8843         * aot-compiler.c (compile_method): Enable AOT for generic code.
8844
8845         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
8846
8847 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
8848
8849         * mini.c: add a workaround for a common screwup that ends up blamed
8850         to mono (other processes blocking signal delivery).
8851
8852 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8853
8854         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
8855         in the LDFLD/STFLD opcodes. Fixes #432673.
8856
8857         * iltests.il.in: Add a new test.
8858
8859 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
8860
8861         * mini-arm.c: attach the thread in unmanaged->managed transitions
8862         using delegates (bug #433148).
8863
8864 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8865
8866        * basic-simd.cs: Use new ShuffleSel constants.
8867
8868 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
8869
8870         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
8871
8872         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
8873         only disable simd intrinsics if no sse2 is detected.
8874
8875         * optflags-def.h: Added sse3.
8876
8877         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
8878         is disabled.
8879
8880 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8881
8882         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
8883         when adding delegate-invoke wrappers.
8884
8885 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8886
8887         * Makefile.am: Reenable the simd tests.
8888
8889 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
8890
8891         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
8892           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
8893           other vreg is allocated to that hreg.
8894
8895         Contributed under MIT/X11 license.
8896
8897 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
8898
8899         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
8900         yet checked in.
8901
8902 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8903
8904         * basic-simd.cs: New test suite for SIMD intrinsics.
8905
8906         * Makefile.am: Added new tests.
8907
8908 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
8909
8910         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
8911
8912         * mini-ops.h: Same.
8913
8914         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
8915
8916         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
8917         using SSE2 aware opcodes.
8918
8919         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
8920         is enabled, this code path is only reachable if conversion ops are emmited after
8921         mono_method_to_ir.
8922
8923         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
8924
8925         This optimization saves 6 bytes per conversion against the old version.
8926
8927 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8928
8929         * aot-compiler.c (compile_method): Don't skip methods referencing 
8930         generic methods without a corresponding entry in token_info_hash, since
8931         encode_method_ref () can handle all generic methods now.
8932
8933         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
8934         generic context is set.
8935         
8936         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
8937         generic sharing of LDTOKEN.
8938
8939 2008-10-06  Mark Probst  <mark.probst@gmail.com>
8940
8941         * mini-amd64.h: Temporarily disabled fast virtual generic method
8942         calls because it breaks the System.Runtime.Remoting tests.
8943
8944 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8945
8946         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
8947
8948         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
8949         so inlining actually works.
8950         (check_inline_caller_method_name_limit): Ditto.
8951
8952 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
8953
8954         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
8955         64 bit safety (from Olaf Hering and Andreas Farber).
8956
8957 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
8958         
8959         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
8960         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
8961         unused virtual call support code.
8962
8963         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
8964         
8965         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
8966         which can't use aot trampolines.
8967         (decode_patch): Don't create aot trampolines for methods which can't use
8968         them.
8969
8970         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
8971         use aot trampolines.
8972
8973         * mini.h: Bump AOT image format version.
8974         
8975 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
8976
8977         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
8978         to save_token_info () since cmethod is inflated for constrained calls.
8979
8980         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
8981
8982 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
8983
8984         * Makefile.am: Add build rules for ppc64.
8985         This avoids the build failing at pedump with unresolved symbols
8986         due to lack of arch_sources. Instead it will now fail earlier
8987         due to lack of cpu-ppc64.md.
8988
8989         Contributed under MIT/X11 license.
8990
8991 2008-10-04  Mark Probst  <mark.probst@gmail.com>
8992
8993         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
8994         tail calls.
8995
8996         * iltests.il.in: Add test case for tail call with many arguments.
8997
8998 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
8999
9000         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9001         to the fast virtual generic method code until the aot case is fixed.
9002
9003 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9004
9005         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9006
9007 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9008
9009         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9010         thunks.
9011
9012 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9013         
9014         * simd-intrinsics.c: Forgot to add this one.
9015
9016         * mini-codegen.c: Fix macro in case SIMD is not supported.
9017
9018 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9019         
9020         This patch land initial JIT support for simd intrinsics.
9021
9022         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9023
9024         * Makefile.am: Added simd-intrinsics.c
9025
9026         * simd-intrinsics.c: New file with simd instrinsic related
9027         code.
9028
9029         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9030
9031         * cpu-x86.md: Add simd related instructions.
9032
9033         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9034
9035         * driver.c: Added two new --regression variants.
9036
9037         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9038
9039         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9040
9041         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9042         extract some complicated logic to helper functions.
9043
9044         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9045
9046         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9047
9048         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9049         the specialized simplification pass.
9050
9051         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9052
9053         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9054
9055         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9056         table.
9057
9058         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9059         if MONO_ARCH_NEED_SIMD_BANK is defined.
9060
9061         * mini-ops.h: Added the new simd ops.
9062
9063         * mini-x86.c: Added mono_arch_xregname.
9064
9065         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9066
9067         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9068
9069         * mini-x86.h: Define simd related MONO_ARCH macros.
9070
9071         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9072
9073         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9074
9075         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9076         MONO_CLASS_IS_SIMD to deal with simd related IR.
9077
9078         * mini.h (MonoInst): Added spill_var to the backend union.
9079
9080         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9081
9082         * mini.h: Added forward declarations of the new simd fuctions.
9083
9084         * optflags-def.h: Added new optimization names SIMD.
9085
9086         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9087
9088         * regalloc.h: Added support for working with 3 register banks.
9089
9090         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9091
9092         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9093
9094 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9095
9096         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9097
9098 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9099
9100         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9101         instead of one on 64 bit systems.
9102
9103         * method-to-ir.c: Remove unused includes.
9104
9105 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9106
9107         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9108         cfg->used_int_regs, since the two are different on arm.
9109
9110 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9111
9112         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9113         mono_method_get_vtable_index() to get the vtable index.
9114
9115 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9116
9117         * method-to-ir.c (mono_method_to_ir2): Don't create native
9118         wrappers for array methods, because they're never called (and if
9119         they were called they wouldn't work).
9120
9121 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9122
9123         * method-to-ir.c (mono_method_to_ir2): Array methods are
9124         special-cased and must not be invoked indirectly via the (M)RGCTX
9125         when generic sharing is turned on.  Fixes #431413.
9126
9127 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9128
9129         * method-to-ir.c: When generic sharing is active, call
9130         non-interface virtual generic methods via the standard trampoline.
9131
9132         * mini-trampolines.c: Handle virtual generic shared methods.
9133
9134         * mini.h, mini-x86.c, mini-x86.h: New argument for
9135         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9136         method thunks and which is the trampoline to call if the lookup
9137         fails.  Enable the virtual generic method thunk for x86.
9138
9139         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9140         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9141         argument but assert that it's NULL, because these archs don't yet
9142         implement the virtual generic method thunk.  Changes in the IMT
9143         thunk data structures.
9144
9145 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9146
9147         * aot-compiler.c (emit_globals): Avoid invalid characters in
9148         the static linking symbol.
9149
9150         * objects.cs: Add a test for the range check optimization. Fix warnings.
9151
9152         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9153         optimization from the current JIT.
9154
9155         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9156         later in decompose_array_access_opts () to allow more optimizations.
9157
9158         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9159         mono_decompose_soft_float () for consistency.
9160
9161         * mini-ops.h: Fix arguments of OP_STRLEN.
9162
9163         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9164         into a separate function.
9165         (reset_cast_details): Ditto.
9166         (handle_unbox): Save cast details. Fixes #431254.
9167
9168         * method-to-ir.c: Remove some obsolete FIXMEs.
9169
9170 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9171
9172         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9173
9174 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9175
9176         * mini-codegen.c: More work on macros to make them
9177         ready for multiple regbanks.
9178
9179 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9180
9181         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9182
9183         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9184
9185 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9186
9187         * mini-codegen.c (mono_spillvar_offset): Proper support for
9188         multiple regbanks.
9189
9190 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9191
9192         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9193         the stack overflow changes.
9194
9195 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9196
9197         * mini-codegen.c: Make all bank macros depend on reg_bank.
9198
9199         * mini-codegen.c (mono_local_regalloc): Make free mask
9200         initialization regbank aware.
9201
9202 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9203
9204         * mini-codegen.c (mono_local_regalloc): Extract callee
9205         mask selection to a function and make it regbank aware.
9206
9207 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9208
9209         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9210         code to deal with many regbanks.
9211
9212 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9213
9214         * mini-codegen.c: More fp->regbank changes.
9215
9216 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9217
9218         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9219         of a hardcoded constant.
9220
9221 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9222
9223         * method-to-ir.c (type_from_stack_type): Fix typo.
9224
9225 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9226
9227         * mini-ia64.c (emit_move_return_value): Convert float return values to
9228         double.
9229
9230         * objects.cs: Add a new test.
9231         
9232         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9233         VARARG methods to fix an assert later.
9234
9235         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9236         end so it at least compiles.
9237
9238 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9239
9240         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9241
9242 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9243
9244         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9245         optimization to a new function (emit_optimized_ldloca_ir) and enable
9246         it for both ldloca and ldloca_s.
9247
9248 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9249
9250         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9251         gshared CASTCLASS code.
9252
9253         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9254         amd64, where the libc stack unwinder encounters stack frames referring to
9255         native code in unmapped memory.
9256
9257         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9258         sharing.
9259
9260         * generics.cs: Add new test.
9261
9262 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9263
9264         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9265         add a check that one of the ARM_FPU_ constants is defined.
9266
9267         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9268         
9269         * mini-exceptions.c: Fix build on non-altstack platforms.
9270
9271         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9272         sharing of vtypes.
9273
9274         * ir-emit.h: Add a comment to NEW_PCONST.
9275
9276         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9277
9278         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9279
9280         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9281         after the changes to MonoJitDomainInfo.
9282
9283 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9284
9285         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9286
9287 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9288
9289         * mini-ppc.c: Compiler warning fixes.
9290
9291 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9292
9293         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9294         for pinvokes.
9295
9296 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9297
9298         * exceptions-ppc.c, mini-ppc.h: Compile
9299         mono_arch_handle_altstack_exception() on Darwin, too.
9300
9301 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9302
9303         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9304         work on archs which don't have generic sharing implemented, only
9305         without the vtable_arg.
9306
9307 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9308
9309         * mini.c: Added comment explaining why delegate ctor icall
9310         wrappers are compiled.
9311
9312 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9313
9314         * mini.c: Don't produce trampolines to delegate ctor icall
9315         wrappers but compile them upfront.
9316
9317 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9318
9319         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9320         runtime-set function when going back to managed code. Currently this
9321         is used to set back the protection on the soft ovf pages and/or to
9322         throw the stack overflow exception that happened in unmanaged code.
9323
9324 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9325
9326         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9327         runtime-set function when going back to managed code. Currently this
9328         is used to set back the protection on the soft ovf pages and/or to
9329         throw the stack overflow exception that happened in unmanaged code.
9330
9331 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9332
9333         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9334         the support code for restoring stack protection after stack overflows
9335         that happen in unmanaged code. Don't set the exec permission on the
9336         soft overflow area.
9337
9338 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9339
9340         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9341         delegate->method_ptr is set. Fixes #428054.
9342
9343 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9344
9345         * tests.cs: Rename to ratests.cs.
9346
9347         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9348         emit_get_rgctx_... functions.
9349
9350 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9351
9352         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9353
9354 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9355
9356         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9357         before asserting that method is sharable.
9358
9359 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9360
9361         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9362         whether method needs a static RGCTX wrapper used instead of
9363         complex conditions.
9364
9365         * generic-sharing.c, mini.h: A few functions moved to
9366         metadata/generic-sharing.c.
9367
9368 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9369
9370         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9371         Generic code sharing for value types, which essentially means
9372         treating value type methods like static methods.  The RGCTX is
9373         passed in the same way.
9374
9375 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9376
9377         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9378         opcode when creating multi-dimensional arrays of open types.
9379
9380         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9381         open generic types.
9382
9383         * generics.cs: Add a test.
9384
9385         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9386
9387 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9388
9389         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9390
9391         * mini.c (mini_method_compile): Set it when running under the debugger. 
9392
9393         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9394         vreg optimization if the flag is set.
9395
9396         * driver.c (mono_main): Add --attach= option to pass options to
9397         the attach agent.
9398
9399         * mini.c (sigquit_signal_handler): Start the attach agent.
9400
9401         * ssapre.c: Disable this to save space since it is not yet ported to
9402         linear IR.
9403
9404         * regalloc2.c: Disable this to save space.
9405
9406         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9407
9408 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9409
9410         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9411         the -v option useful again.
9412
9413 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9414
9415         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9416         --break-at-bb.
9417
9418         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9419         arrays of arrays. Fixes #428406.
9420
9421         * method-to-ir.c (mini_emit_castclass): Ditto.
9422
9423         * objects.cs: Add new test.
9424         
9425 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9426
9427         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9428         was wrong at it choked against target_type_is_incompatible for byref types.
9429
9430 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9431
9432         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9433         places.
9434
9435 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9436
9437         * mini-exceptions.c: update a few more exceptions-related counters.
9438
9439 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9440
9441         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9442         new functions to allocate from persistent mempools.
9443
9444 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9445
9446         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9447         multiple register banks in the future.
9448
9449         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9450
9451 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9452
9453         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9454
9455         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9456
9457         * mini.h: Export type_to_eval_stack_type.
9458
9459         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9460         is only ins->klass of byref types.
9461
9462 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9463
9464         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9465         (mini_emit_memcpy2): Ditto.
9466
9467         * mini-amd64.c: Fix a warning.
9468
9469 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9470
9471         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9472         linking.
9473
9474 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9475
9476         * method-to-ir.c: Extract stloc micro-optimization to a
9477         function and apply it to all cases.
9478
9479 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9480
9481         * method-to-ir.c: Don't fail generic code sharing in cases we
9482         already support.
9483
9484 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9485
9486         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9487
9488 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9489
9490         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9491         implementation.
9492
9493 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9494
9495         * trace.c: make tracing more useful and correct, with per-thread
9496         id and indent info.
9497
9498 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9499
9500         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9501         doing a method call and the argument is an R4.
9502
9503 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9504
9505         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9506         generic methods.
9507
9508 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9509
9510         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9511
9512 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9513
9514         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9515         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9516
9517 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9518
9519         * driver.c: Add a --agent argument (not supported yet) to load managed
9520         agent assemblies before loading the main assembly, similarly to how the
9521         Java VM handles agents.
9522
9523 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9524
9525         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9526         function to do stack layout of local variables.
9527
9528 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9529
9530         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9531         calculation.
9532
9533 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9534
9535         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9536         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9537         JIT if DISABLE_JIT is defined.
9538
9539         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9540         defined.
9541
9542 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9543
9544         * iltests.il.in: Disable the fconv test on PPC (the result is
9545         undefined according to ECMA).
9546
9547 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9548
9549         * iltests.il.in: Enable tail call tests for PPC.
9550
9551         * mini.h: Add variable for storing incoming valuetype argument
9552         addresses for tail calls.
9553
9554         * mini-ppc.c: Implement valuetype arguments and return values for
9555         tailcalls on Linux.
9556
9557 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9558
9559         * mini-ppc.c: Partially implement tail calls (struct arguments and
9560         return values not supported).
9561
9562         * method-to-ir.c: Enable tail calls on PPC.
9563
9564 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9567         runtime-invoke wrappers to work around the problem of them getting
9568         assigned to a random class.
9569
9570         * aot-runtime.c (mono_aot_get_method): Ditto.
9571         
9572 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9573
9574         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9575         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9576
9577 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9578
9579         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9580         until they're implemented properly.
9581
9582         * exceptions-ppc.c: Use arch-independent exception-handling code
9583         instead of custom one.
9584
9585         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9586         for Linear IR.
9587
9588         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9589
9590         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9591         applies when __powerpc__ is defined.
9592
9593 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9594
9595         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9596         methods to their code to avoid computing the full name of wrappers and
9597         doing a lookup in a string hash table.
9598
9599 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9600
9601         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9602         we identify bblocks before method_to_ir () is ran.
9603
9604         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9605         Also avoid optimizing branches pointing to themselves.
9606
9607         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9608
9609 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9610
9611         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9612
9613 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9614
9615         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9616         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9617         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9618         'buf'.
9619
9620         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9621         jumped to the same entry in plt_jump_table.
9622
9623 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9624
9625         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9626         dynamic images.
9627
9628 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9629
9630         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9631         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9632         #421807.
9633
9634 2008-08-29  Geoff Norton  <gnorton@novell.com>
9635
9636         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9637         segment, and doesn't properly handle .space as .text.  Fixes
9638         AOT Mach/ARM
9639
9640 2008-08-29  Geoff Norton  <gnorton@novell.com>
9641
9642         * mini.c: Disable the mach exception handler when running on 
9643         ARM
9644
9645 2008-08-29  Geoff Norton  <gnorton@novell.com>
9646
9647         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9648         globals on Darwin/ARM
9649
9650 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9651
9652         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9653         since too many things depend on it. Instead, call 
9654         mono_runtime_set_no_exec ().
9655         
9656         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9657         the new JIT.
9658
9659         * aot-compiler.c: Add an 'asm-only' AOT option.
9660
9661         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9662                 
9663         * aot-compiler.c (compile_method): Disable gshared support for now as it
9664         doesn't yet work.
9665
9666 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9667
9668         * mini-amd64.h : Fix a compiler warning.
9669
9670         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9671           Changed to use a callback function to retrieve the unwind info.
9672           This avoids problems observed when code blocks were removed by
9673           unloading an app domain.
9674
9675         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9676           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9677           to work properly.
9678
9679         Contributed under MIT/X11 license.
9680
9681 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9682
9683         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9684           case to keep the stack aligned to 8.
9685
9686         Contributed under MIT/X11 license.
9687
9688 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9689
9690         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9691         avoid repeated linear searches.
9692
9693 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9694
9695         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9696         methods it can't handle.
9697         
9698         * aot-compiler.c (add_method): Avoid adding a method twice.
9699         (add_wrappers): Add runtime invoke wrappers for all methods.
9700
9701         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9702         function to create an aot-compatible version of this trampoline.
9703
9704         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9705
9706 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9707
9708         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9709
9710         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9711         with a generic sharing failure.
9712
9713         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9714
9715         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9716         CEE_RETHROW. Fixes #419634.
9717
9718         * mini.c (mono_method_to_ir): Ditto.
9719
9720         * exceptions.cs: Add a new test.
9721         
9722         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9723         to mono_type_stack_size_internal () since some callers might not pass in
9724         an rgctx.
9725
9726         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9727         instrument_prolog. Fixes #419878.
9728
9729         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9730         doubles in soft float mode volatile.
9731
9732 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9733
9734         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9735
9736         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9737         to handle soft float correctly.
9738
9739         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9740         the fast path.
9741
9742         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9743
9744         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9745         to sp, since the generics catch code requires it.
9746
9747         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9748         copying.
9749
9750         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9751         mono_arch_emit_imt_argument ().
9752
9753         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9754
9755         * mini-arm.c tramp-arm.c: Generic sharing updates.
9756
9757 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9758
9759         * mini-arm.c: Fix the arm build.
9760
9761         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9762         handling enums, generic instances and generic sharing.
9763         (mini_type_stack_size_full): Ditto.
9764
9765         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9766         
9767         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9768
9769         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9770
9771         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9772         trampolines.
9773
9774         * mini-arm.c: Various small generic sharing changes.
9775
9776         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9777         this for x86.
9778         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9779         custom code.
9780
9781         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9782         helper function to return a generic class init trampoline.
9783
9784         * method-to-ir.c mini.c: Use it.
9785         
9786         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9787         arch-specfic function to return a generic class init trampoline.
9788
9789         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9790         the GENERIC_CLASS_INIT custom code.
9791
9792         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9793         a fatal error, not a sharing failure.
9794
9795         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9796         needed.
9797
9798         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9799         trampoline argument from MONO_ARCH_VTABLE_REG.
9800
9801         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9802         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9803         argument, and pass the vtable in VTABLE_REG.
9804
9805         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9806         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9807         argument, and pass the vtable in VTABLE_REG.
9808         (mono_arch_create_trampoline_code_full): Remove some special casing for
9809         the rgctx fetch trampoline.
9810
9811         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
9812         Fixes #419273.
9813
9814         * iltests.il: Add a test for it.
9815
9816 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
9817
9818         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
9819
9820         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
9821         no longer needed.
9822
9823         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
9824         use mono_jit_info_table_find () to avoid recursion.
9825         (mono_delegate_trampoline): Add a sync wrapper here.
9826
9827         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
9828         here.
9829
9830         * mini.c (mono_method_to_ir): Ditto.
9831         
9832         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
9833         add_sync_wrapper argument. Don't add a sync wrapper here.
9834         (mono_create_jump_trampoline): Don't add a sync wrapper here.
9835
9836         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
9837         
9838 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9839
9840         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
9841           of nonvolatile registers back from MonoContext to CONTEXT.
9842
9843         Contributed under MIT/X11 license.
9844
9845 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
9846
9847         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
9848           arguments on Winx64 there are only 4 argument registers.  For this
9849           logic to work the last argument must be pulled from the stack.  
9850
9851         Contributed under MIT/X11 license.
9852
9853 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
9854
9855         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9856
9857         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
9858         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
9859         encode/decode_method_ref ().
9860
9861         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
9862
9863         * aot-runtime.c (decode_patch): Ditto.  
9864
9865         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
9866         MONO_PATCH_INFO_METHOD.
9867
9868         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
9869         MonoGenericJitInfo.
9870
9871         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
9872         MonoGenericJitInfo.
9873
9874         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
9875
9876         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
9877         one from the caller.
9878
9879         * aot-runtime.c (decode_generic_inst): New function to decode and
9880         return a interned generic inst.
9881         (decode_klass_ref): Use it.
9882         (decode_method_ref): Ditto.
9883
9884         * aot-compiler.c (emit_exception_debug_info): Save 
9885         jinfo->has_generic_jit_info too.
9886
9887 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9888
9889         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
9890
9891         * iltests.il.in: Add a test for fconv_to_i.
9892
9893         * liveness.c: Disable the liveness2 pass for now to save space.
9894
9895         * regalloc2.c: Include mempool-internals.h to fix warnings.
9896
9897         * aot-compiler.c (encode_method_ref): Encode the context of generic
9898         instance methods.
9899
9900         * aot-runtime.c (decode_method_ref): Inflate generic methods using
9901         the context saved in the aot file.
9902
9903         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
9904
9905         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
9906
9907         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
9908         volatile so they won't be optimized away.
9909
9910 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
9911
9912         * ssa.c:
9913         * ssa2.c:
9914         * mini.c:
9915         * regalloc2.c:
9916         * dominators.c: Remove duplicated functions that now are in
9917         mempool-internals.h.
9918
9919 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
9920
9921         * aot-compiler.c: Fix warnings.
9922
9923         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
9924
9925         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
9926
9927         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
9928         as the patch type.
9929
9930         * mini.c (mono_resolve_patch_target): Ditto.
9931         
9932         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
9933         (encode_klass_ref): Add support for encoding VARs/MVARs.
9934
9935         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
9936
9937         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
9938         the handling of the got entries into a separate 'decode_got_entry' function.
9939         Add support for RGCTX_FETCH.
9940
9941         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
9942         clobbered by the trampoline code.
9943
9944         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
9945         not clobbered by the indirect calling code.
9946
9947 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9948
9949         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
9950         to fix the build.
9951
9952 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
9953
9954         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
9955         signature using the compilation mempool otherwise we would leak it.
9956
9957 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
9958
9959         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
9960         mono_emit_abs_call ().
9961
9962         * patch-info.h: Add GENERIC_CLASS_INIT.
9963
9964         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
9965
9966         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
9967         as their target as a near call.
9968
9969         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
9970         ABS handling code.
9971         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
9972
9973         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
9974         call to a runtime function described by a patch.
9975
9976         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
9977         mono_emit_abs_call, this has the advantage that the ABS handling code in
9978         mono_codegen () can handle them both, and can handle other stuff in the
9979         future without additional code.
9980
9981         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
9982         entry.
9983         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
9984         abs addresses.
9985
9986         * mini.h: Add missing bblock related prototypes.
9987
9988         * mini.h (MonoCompile): Remove unused reverse_inst_list and
9989         reverse_inst_list_len fields.
9990
9991         * mini.c: Refactor this file a bit by moving branch optimizations to 
9992         branch-opts.c.
9993
9994         * method-to-ir.c: Merge generic sharing changes missed earlier.
9995
9996         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
9997
9998         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
9999         shared patches. Process METHODCONST as a shared patch.
10000
10001         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10002         as it crashes on the 2.0 mscorlib.
10003
10004         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10005         to cause crashes.
10006         
10007         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10008         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10009         by IMT.
10010
10011         * aot-compiler.c: Reorganize the got handling code to be a bit more
10012         understandable.
10013
10014 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10015
10016         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10017         mono_patch_info_equals/hash, and use it to massively simplify
10018         get_plt_index ().
10019
10020         * mini.c (mono_patch_info_hash): Simplify this and add support for
10021         more patch types.
10022
10023         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10024
10025         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10026         handling code, since an offset is not enough to identify a trampoline.
10027
10028         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10029
10030 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10031
10032         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10033
10034         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10035
10036         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10037
10038         * decompose.c: PPC decompositions for various ops.
10039
10040         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10041
10042 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10043
10044         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10045         call the generic trampoline code using a call, instead of a jump, to
10046         remove some special casing from the generic trampoline code.
10047
10048         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10049         (mono_codegen): Ditto.
10050
10051         * aot-compiler.c aot-runtime.c: Ditto.
10052
10053         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10054
10055         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10056         helper function to find the offset corresponding to a lazy fetch trampoline.
10057
10058         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10059         when doing generic sharing.
10060
10061         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10062         places.
10063         
10064         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10065         mini-trampolines.c to be with the other trampoline creation functions.
10066
10067         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10068         as it is equal to method->signature in most cases, add a 
10069         mono_emit_method_call_full variant which takes a signature and an imt
10070         argument as well.
10071
10072 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10073
10074         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10075         to this function, since it could be computed easily from the method 
10076         argument.
10077         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10078         more.
10079
10080         * method-to-ir.c mini.c: Remove references to 
10081         compile_generic_method_wo_context.
10082
10083         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10084         generic method calls.
10085         
10086         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10087         dimensional non-szarrays.
10088
10089         * mini.c (mini_init): Register mono_array_new_1.
10090
10091         * jit-icalls.c (mono_array_new_1): New jit icall.
10092
10093         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10094         pointing to the method.
10095
10096         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10097         method addresses belonging to METHOD_JUMP patches in the 
10098         jump_target_got_slot_hash.
10099         (mono_aot_load_method): Ditto.
10100
10101         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10102         METHOD_JUMP patches.
10103
10104         * mini.c (mini_create_jit_domain_info): New helper function which 
10105         initializes/frees domain->runtime_info.
10106         (mini_free_jit_domain_info): Ditto.
10107         (mini_init): Install the domain hook functions with the runtime.
10108
10109         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10110         information maintained by the JIT.
10111
10112         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10113         insertion into jump_table_hash into mono_codegen (), also implement proper
10114         locking.
10115
10116         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10117         tail calls, it is already done by the aot code.
10118         
10119         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10120         mechanism on amd64.
10121
10122         * iltests.il.in: Make the jmp test a bit more complex.
10123
10124         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10125         generic instances which doesn't have a token.
10126
10127         * aot-runtime.c (decode_method_ref): Ditto.
10128         
10129         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10130         can handle this case now.
10131         (handle_box): Ditto.
10132
10133 2008-08-15  Geoff Norton  <gnorton@novell.com>
10134
10135         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10136         debugging check.
10137
10138 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10139
10140         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10141         calling generic methods.
10142
10143         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10144
10145         * aot-runtime.c (decode_patch_info): Ditto.
10146
10147         * mini.c (mono_resolve_patch_target): Ditto.
10148         
10149         * patch-info.h: Add METHOD_RGCTX.
10150
10151         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10152
10153 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10154
10155         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10156         arguments in registers.
10157
10158         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10159         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10160
10161         * mini.c (mini_method_compile): Abort aot compilation for generic
10162         methods if generic sharing is disabled.
10163         
10164         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10165         an mrgctx.
10166
10167         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10168         requiring an mrgctx.
10169
10170         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10171         store instructions when converting a vcall to a normal call.
10172
10173         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10174         mono_arch_find_jit_info.
10175
10176 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10177
10178         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10179         avoid calling mono_method_full_name () for every method even if the
10180         env var is not set.
10181         (check_inline_caller_method_name_limit): Ditto.
10182
10183 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10184
10185         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10186         assemblies in one run.
10187
10188         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10189         skipped methods if it is not 0.
10190
10191         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10192
10193 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10194
10195         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10196           MONO_ARCH_HAVE_UNWIND_TABLE.
10197
10198         Contributed under MIT/X11 license.
10199
10200 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10201
10202         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10203           from default optimizaton list on Winx64.
10204
10205         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10206
10207         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10208           the LMF from the MonoJitTlsData structure.
10209
10210         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10211
10212         Contributed under MIT/X11 license.
10213
10214 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10215
10216         * mini.c (sigsegv_signal_handler): Fix the build.
10217
10218         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10219         assembly->aot_module.
10220
10221         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10222         hash table. This simplifies and speeds up a lot of code, and fixes support
10223         for .netmodules.
10224
10225         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10226         with the runtime.
10227
10228         * mini-exceptions.c: Ditto.
10229         
10230         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10231         'native_offset' argument, since these are computed in the 
10232         mono_find_jit_info () function.
10233
10234         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10235         is used by exceptions-ppc.c.
10236
10237         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10238         mono_arch_find_jit_info ().
10239         
10240         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10241         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10242         generic code in mini-exceptions.c.
10243
10244 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10247
10248         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10249         
10250         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10251         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10252         called while holding the loader lock. Fixes #415608.
10253         (mono_aot_get_method_from_token_inner): Ditto.
10254
10255 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10256
10257         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10258         to reduce differences between this and the generic implementation in
10259         mini-exceptions.c.
10260         (ves_icall_get_frame_info): Ditto.
10261
10262         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10263
10264         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10265         longer neccesarry.
10266
10267         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10268         mono_arch_get_call_filter () and make it non-static, for consistency with the
10269         other architectures.
10270
10271 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10272
10273         * mini.c:
10274         * local-propagation.c:
10275         * mini-x86.c: Correct the name of arch defines.
10276
10277 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10278
10279         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10280         NO_EMULATE_LONG_SHIFT_OPS define.
10281
10282 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10283
10284         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10285         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10286
10287         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10288         MACH fixes. Merged from the 2.0 branch.
10289
10290         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10291
10292         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10293         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10294
10295         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10296
10297         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10298         mono_marshal_get_native_wrapper () signature changes.
10299
10300 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10301
10302         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10303         conversion bug under arm.
10304
10305 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10306
10307         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10308
10309         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10310         with overflow checking.
10311
10312 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10313
10314         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10315         to the genmdesc.pl file
10316
10317 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10318
10319         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10320         arg_array in the soft-float versions of the LOAD/STORE macros.
10321
10322         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10323         implementation.
10324
10325         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10326
10327 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10328
10329         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10330         a float HFA. Fixes #413621.
10331
10332 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10333
10334         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10335         frame_size to args_size. Fixes build.
10336
10337 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10338
10339         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10340         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10341
10342         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10343         the stack are not unaligned. Fixes #413247.
10344         
10345 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10346
10347         * mini.c: update jitted methods performance counters.
10348
10349 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10350
10351         * mini-exceptions.c: increase the exceptions thrown performance
10352         counter in mono_handle_exception ().
10353
10354 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10355
10356         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10357         can work with netmodules.
10358
10359 2008-07-28  Geoff Norton  <gnorton@novell.com>
10360
10361         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10362         regression tests.
10363
10364 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10365
10366         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10367         correct place.
10368
10369 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10370
10371         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10372           The float param registers and other param registers must be the 
10373           same index on Windows x64.
10374
10375         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10376           ArgValuetypeAddrInIReg argument case.  Setting the argument
10377           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10378
10379         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10380           variable computed above as the copy length for arguments of storage
10381           type ArgValuetypeAddrInIReg.
10382
10383         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10384           ArgValuetypeAddrInIReg argument case.  This case will rely on
10385           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10386
10387         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10388           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10389           jump and tail call instructoins as they do not follow the typical call behavior.
10390
10391         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10392           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10393           local variable and pass the local variable by reference to the called method.
10394
10395         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10396           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10397           of a struct is passed in a register it must be saved with the other
10398           volatile argument on the stack.
10399
10400         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10401           frame pointer the stack adjustment value must be saved to the unwind 
10402           info structure.
10403
10404         Contributed under MIT/X11 license.
10405
10406 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10407
10408         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10409         which got lost in the merge.
10410
10411 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10412
10413         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10414         build.
10415
10416         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10417         
10418         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10419         icalls, since they won't be patched.
10420
10421         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10422         different code sequence when running under valgrind to prevent some valgrind
10423         errors.
10424
10425         * iltests.il.in: Add new regression test.
10426
10427         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10428         end with a throw.
10429
10430         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10431         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10432
10433         * iltests.il.in: Add new test.
10434
10435         * aot-compiler.c: Fix some warnings.
10436
10437         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10438         Fixes #412494.
10439
10440 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10441
10442         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10443         (mini_usage_jitdeveloper): Add a missing --wapi option.
10444
10445 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10446
10447         * mini-codegen.c: Simplify the is_fp macros.
10448         (free_up_ireg): Remove, use free_up_reg instead.
10449         (free_up_reg): Fix the fp case.
10450
10451 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10452
10453         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10454         lowered earlier.
10455
10456         * exceptions-x86.c: Merge some changes which seemed to have got lost
10457         in the linear-ir merge.
10458
10459         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10460
10461         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10462         long vreg volatile even if the variable was already created.
10463
10464         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10465         volatile variables.
10466
10467 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10468
10469         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10470
10471         * mini.c (mono_jit_compile_method_inner): Add support for 
10472         MONO_EXCEPTION_BAD_IMAGE.
10473
10474         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10475         mini_method_get_context () returns NULL. Fixes #356531.
10476
10477         * mini.c (mono_method_to_ir): Ditto.
10478         
10479         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10480         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10481
10482 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10483
10484         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10485         in the LDFTN implementation.
10486
10487 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10488
10489         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10490         code, patch calls to icalls, too, even if they're not in the
10491         shared generic code hash.  Fixes #411962.
10492
10493 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10494
10495         * cpu-x86.md: Increase the length of the fcall opcodes.
10496
10497         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10498         calls returning floats.
10499
10500         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10501         on NEWARR.
10502         
10503         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10504         missed earlier.
10505
10506         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10507         into the domain->method_code_hash.
10508
10509         * aot-compiler.c: Fix win32 build.
10510
10511         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10512         
10513         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10514         gshared NEWARR implementation.
10515
10516         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10517
10518         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10519         can be used outside of method_to_ir.
10520
10521         * mini.h (MonoCompile): Add arg_types field.
10522
10523         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10524         
10525         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10526         the values of the local arg_array and param_types array.
10527
10528 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10529
10530         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10531         got accesses might only get generated later when NEWOBJ is decomposed.
10532         
10533         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10534         looking up the native code of the target method when a delegate is called
10535         for the first time.
10536
10537         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10538         optimization.
10539
10540         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10541
10542         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10543         AOT work on platforms without a working dlsym implementation.
10544
10545         * mini.h: Bump AOT image format version.
10546         
10547 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10548
10549         * mini-exceptions.c: Free a MonoType with
10550         mono_metadata_free_type() instead of g_free().
10551
10552         * aot-runtime.c: Free a MonoType.
10553
10554 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10555
10556         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10557         optimization.
10558
10559         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10560         fp stack on x86.
10561
10562 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10563         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10564         profiler hook.
10565
10566 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10567
10568         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10569         NEWOBJ calls on valuetypes.
10570
10571         * iltests.il.in: Add new test.
10572
10573         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10574
10575 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10576
10577         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10578         is no longer needed.
10579
10580         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10581         non register sized integer arguments.
10582         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10583         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10584         emit_memcpy2 ().
10585
10586         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10587         CEE_MONO_RETOBJ.
10588         
10589         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10590         two a binop with different sized arguments is emitted.
10591
10592         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10593         instruction in the ins==NULL case.
10594
10595 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10596
10597         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10598
10599         * mini-x86.c: Fix osx build.
10600
10601         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10602         opcodes as well.
10603
10604         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10605         instruction for non int sized variables.
10606
10607         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10608         implementation.
10609
10610 2008-07-23  Robert Jordan  <robertj@gmx.net>
10611
10612         * method-to-ir.c: Fix MSVC build.
10613
10614 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10615
10616         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10617         a non int sized type, widen it to an int since newer versions of gcc seem to
10618         generate code which needs this.
10619
10620         * ssa2.c abcremoval2.c: Fix warnings.
10621
10622         * *: Merge the Linear IR branch.
10623
10624         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10625         the ChangeLog file there describes all the changes done over the years. 
10626         Further documentation can be found at www.mono-project.com/Linear_IL.
10627
10628 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10629
10630         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10631           The float param registers and other param registers must be the 
10632           same index on Windows x64.
10633
10634         Contributed under MIT/X11 license.
10635
10636 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10637
10638         * mini.c: Make the previous fix GC safe.
10639
10640 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10641
10642         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10643
10644 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10645
10646         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10647           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10648           ArgValuetypeAddrInIReg instead.
10649
10650         Contributed under MIT/X11 license.
10651
10652 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10653
10654         * mini-codegen.c (get_register_spilling): Fix a warning.
10655
10656 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10657
10658         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10659         for types which the initialization fails. Raises the provided exception
10660         at the right stop after cleanup.
10661
10662 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10663
10664         * aot-compiler.c: Free most of the memory allocated during compilation.
10665
10666         * mini.c (mini_parse_debug_options): Fix a leak.
10667         
10668         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10669         during aot compilation.
10670
10671 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10672
10673         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10674         it has too much register pressure.
10675
10676 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10677
10678         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10679
10680 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10681
10682         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10683         on x86.
10684
10685         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10686         on amd64 similar to the way it is done on arm.
10687
10688         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10689
10690         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10691         consistency, normalize error messages, avoid loading aot-only modules in
10692         normal mode.
10693
10694         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10695         for consistency.
10696
10697         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10698
10699 2008-07-11  Martin Baulig  <martin@ximian.com>
10700
10701         * debug-debugger.h
10702         (MonoDebuggerInfo): Add `interruption_request'.
10703
10704 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10705
10706         * aot-compiler.c (emit_plt): Remove some dead code.
10707
10708         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10709
10710         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10711         return the plt info offset belonging to a given plt entry.
10712
10713         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10714         mono_aot_get_plt_info_offset.
10715         
10716         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10717         similar to the amd64 code by makeing jumps through a separate jump table 
10718         instead of embedding the jump addresses into the code.
10719
10720 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10721
10722         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10723         method.
10724
10725 2008-07-10  Martin Baulig  <martin@ximian.com>
10726
10727         * mini.c (mini_method_compile): Disable generics sharing when
10728         running in the debugger.
10729
10730 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10731
10732         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10733
10734         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10735         the local register allocator from running out of registers on x86 when 
10736         using aot.
10737
10738 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10739
10740         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10741         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10742         C4146.
10743
10744         Contributed under MIT/X11 license.
10745
10746 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10747
10748         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10749         speed up the assembler.
10750
10751 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10752
10753         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10754         support.
10755
10756         * mini.c: Move the soft float handling macros a bit earlier, add 
10757         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10758         place.
10759
10760         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10761
10762         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10763         read-only to help catch code allocation requests.
10764         
10765         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10766         and turn it off when using --aot-only or when compiling with --aot=full.
10767
10768         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10769         jump table for switches from the normal domain mempool, not the code
10770         manager.
10771
10772         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10773         unbox trampoline which handles aot-only mode too.
10774
10775         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10776         an AOTed unbox trampoline.
10777
10778         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10779
10780 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10781
10782         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10783         ""
10784
10785         Contributed under MIT/X11 license.
10786
10787 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10788
10789         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10790           the unwind information for the method at the end of the allocated block.
10791           
10792         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10793           MonoCompileArch to hold the unwind info for SEH on Winx64
10794         
10795         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10796           frame pointer info for the method being compiled.
10797           
10798         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10799           the call to mono_exception_from_token.
10800           
10801         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10802           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10803           information is stored a the end of the method block because it is all 32-bit offset based.
10804
10805         Contributed under MIT/X11 license.
10806
10807 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10808
10809         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
10810
10811         * wapihandles.c: Fix warnings.
10812
10813         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
10814         mode.
10815
10816         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
10817         mono_jit_compile_method in aot-only mode since that calls the type 
10818         initializer.
10819         
10820         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
10821         get_delegate_invoke_impl in aot-only mode.
10822
10823         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
10824
10825 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
10826
10827         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
10828
10829         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
10830         is on by default.
10831
10832         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
10833
10834         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
10835         init trampoline from the AOT file as well.
10836
10837         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
10838         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
10839         code.
10840
10841         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
10842         mono_init.
10843
10844         * exceptions-amd64.c: Add _full variants for the remaining exception code
10845         creation functions as well, allow emission of relocatable code, remove
10846         caching since that is now done by the caller.
10847
10848         * mini-exceptions.c: Add _full variants for the remaining exception code
10849         creation functions as well, add aot-only support.
10850
10851         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
10852         if we can determine a proper token for them.
10853         (add_wrappers): Add a few more wrappers.
10854         (emit_method_code): Remove some dead code.
10855         (emit_trampolines): Emit exception code too.
10856
10857         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
10858
10859         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
10860         mono_array_new_va which avoids varargs.
10861
10862         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
10863
10864         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
10865         mono_arch_create_specific_trampoline () in all places.
10866
10867         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
10868         a bit so it can be used for other things as well.
10869         
10870         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
10871         on demand as well.
10872
10873         * exceptions-amd64.c: Rename the caching from the exception code creation
10874         functions, it is done by the caller instead.
10875         
10876         * exceptions-amd64.c: Change the signature of the exception code creation 
10877         functions to allow the creation of relocatable code later.
10878
10879         * mini-exceptions.c: Add a set of functions to query the various 
10880         runtime-generated exception functions.
10881
10882         * mini.c mini-exceptions.c: Use the newly added functions instead of the
10883         mono_arch_.. () functions.
10884         
10885 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10886
10887         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
10888
10889         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
10890
10891         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
10892         (mini_get_vtable_trampoline): Ditto.
10893
10894         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
10895         code in the AOT case by returning the code size and a list of relocations to
10896         the caller.
10897
10898         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
10899
10900 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
10901
10902         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
10903           clean the stack.
10904
10905         Contributed under MIT/X11 license.
10906
10907 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
10908
10909         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
10910         so the buffer size can be computed correctly. Fixes #404735.
10911
10912         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
10913         normally as cfg->debug_info is already freed.
10914
10915 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
10916
10917         * mini-amd64.c: For calls returning vtypes in registers, don't store
10918         the return address on the stack, instead allocate a separate local for
10919         it. Fixes #404729.
10920
10921 2008-07-05  Mark Probst  <mark.probst@gmail.com>
10922
10923         * mini-trampolines.c, mini.h: Add an argument to
10924         mono_create_jit_trampoline_in_domain() for turning off the adding
10925         of the sync wrapper.
10926
10927         * mini.c: Use the JIT trampoline without sync instead of
10928         ldftn_nosync in static RGCTX invoke wrappers so that the call can
10929         be patched.
10930
10931 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10932
10933         * driver.c: Turn on GSHARED optimization by default.
10934
10935 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
10936
10937         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
10938         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
10939
10940         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
10941         create a variant of the generic trampoline code callable from AOTed trampolines.
10942
10943         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
10944         trampoline code callable from AOTed trampolines.
10945
10946         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
10947
10948 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10949
10950         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
10951         pass-through manner.
10952
10953         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
10954         and don't fail sharing for them anymore.
10955
10956         * mini-exceptions.c: Handle exceptions in shared generic methods.
10957
10958         * generic-sharing.c: When checking the context of a generic
10959         method, also check its class's context.  Don't treat wrappers as
10960         sharable.
10961
10962         * mini-trampolines.c: Some code factored out to
10963         metadata/generic-sharing.c.  Handle the MRGCTX case.
10964
10965         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
10966         we must deal with the method being of another instantiation of the
10967         class.  Add static rgctx invoke wrappers to generic methods.
10968
10969 2008-07-04  Mark Probst  <mark.probst@gmail.com>
10970
10971         * mini.c: Provide all jit infos of generic shared methods with a
10972         generic jit info.
10973
10974         * mini-exceptions.c: Handle the new situation that a generic info
10975         might be available, but not info about the this/vtable/mrgctx
10976         variable.
10977
10978 2008-07-03  Mark Probst  <mark.probst@gmail.com>
10979
10980         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
10981         generic methods.
10982
10983 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
10984
10985         * dominators.c (check_dominance_frontier): Fix a warning.
10986
10987         * mini.h: Add some missing prototypes.
10988
10989         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
10990
10991         * driver.c (mono_jit_init_version): Correct the comments since the first
10992         argument should be the name of the root domain, not a filename.
10993
10994         * aot-runtime.c (make_writable): Error out if this is called while running
10995         with --aot-only.
10996         (load_aot_module): Ditto.
10997
10998         * aot-compiler.c: Really fix the computation of method indexes.
10999
11000         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11001         optimizations as this is no longer called frequently.
11002
11003         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11004         method and the invoke impl code and pass it to the delegate trampoline instead of
11005         just the delegate class.
11006
11007 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11008
11009         * aot-compiler.c: Fixup the computation of method indexes.
11010         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11011         the method builder infrastructure.
11012
11013         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11014         has no header.
11015
11016         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11017         mode, load the method right away instead of creating a trampoline.
11018
11019         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11020
11021         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11022         some checks a bit.
11023
11024 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11025
11026         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11027         (mono_aot_load_method): Use method_index instead of method->token.
11028
11029         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11030         can handle icalls etc. properly.
11031
11032         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11033
11034         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11035
11036         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11037         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11038         JIT_ICALL_ADDR patch type.
11039
11040         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11041
11042         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11043         request flag.
11044         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11045
11046         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11047
11048 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11049
11050         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11051         domain->jit_code_hash.
11052
11053 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11054
11055         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11056
11057 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11058
11059         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11060         get_this_arg_from_call, let it compute it when needed.
11061
11062         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11063         gsctx from code only when needed.
11064
11065         * mini-trampolines.c (get_generic_context): Rename this to 
11066         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11067         it can be called by the arch backends.
11068
11069         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11070
11071 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11072
11073         * driver.c (mono_main): Add experimental --aot-only command line option.
11074
11075         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11076         set.
11077
11078 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11079
11080         * driver.c (DllMain): Remove mono_module_handle.
11081
11082         Contributed under MIT/X11 license.
11083
11084 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11085
11086         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11087         for emitting methods which are not in the source assembly. Detect and report
11088         failure of assembling+linking.
11089         
11090         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11091
11092         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11093
11094 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11095
11096         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11097
11098 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11099
11100         * mini.h: Remove some obsolete prototypes.
11101
11102         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11103
11104 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11105
11106         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11107         supported by Visual Studio, so use alloca().
11108
11109 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11110
11111         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11112         Fixes #402585.
11113
11114 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11115
11116         * mini.c: Fail sharing of a generic method if it contains an open
11117         catch clause (because we don't pass MRGCTXs yet).
11118
11119 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11120
11121         * mini.c: When compiling a method with generic sharing, insert the
11122         method instantiated with an all-Object generic context into the
11123         jit info table, instead of the context of the first instantiation
11124         of the method we happen to compile.
11125
11126 2008-06-18  Martin Baulig  <martin@ximian.com>
11127
11128         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11129         `major_version' and `minor_version'.
11130
11131 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11132
11133         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11134         mono_method_is_generic_sharable_impl() takes an additional
11135         argument specifying whether to treat type variables as reference
11136         types.
11137
11138 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11139
11140         * mini.h: Removed obsolete prototypes.
11141
11142 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11143
11144         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11145         already handle them.
11146
11147 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11148
11149         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11150         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11151         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11152         tramp-x86.c: Added a MonoGenericContext* argument to
11153         mono_arch_get_unbox_trampoline() so that it can call other
11154         functions which require it.
11155
11156 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11157
11158         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11159         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11160         mono_arch_get_this_arg_from_call() takes a
11161         MonoGenericSharingContext* as well.
11162
11163 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11164
11165         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11166         implement generic sharing of unbox.
11167
11168 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11169
11170         * mini.c: Don't compute the vtable to determine whether a field is
11171         special static, because it might not work for open types.
11172
11173 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11174
11175         * mini.c: Removed the unused token_type and token_source arguments
11176         from get_runtime_generic_context_ptr().
11177
11178 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11179
11180         * mini.c (ADD_BINOP): fix the build
11181
11182 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11183
11184         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11185         a widening op.
11186
11187 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11188
11189         * mini.h: Removed class relations enum that's not used anymore.
11190
11191 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11192
11193         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11194
11195         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11196         the lazy fetch trampoline access code.
11197
11198 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11199
11200         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11201
11202 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11203
11204         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11205
11206         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11207
11208         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11209
11210 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11211
11212         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11213         intrinsics.
11214
11215         * mini-ops.h: Add MIN/MAX_UN opcodes.
11216
11217         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11218         intrinsics.
11219
11220         * basic-math.cs: Add more min/max tests.
11221
11222         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11223
11224 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11225
11226         * mini.c: Small fix in the prologue of emit_castclass.
11227
11228 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11229
11230         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11231
11232         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11233         do not work even for unsigned types. Fixes #400014.
11234
11235         * basic-math.cs: Add regression tests for unsigned Min/Max.
11236
11237 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11238
11239         * mini.c: Added additional context_used argument to several
11240         functions, which will be needed for sharing generic methods.  Use
11241         GET_RGCTX macro wherever appropriate.  Declare only one
11242         context_used in mono_method_to_ir().
11243
11244 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11245
11246         * mini.c, generic-sharing.c: Removed generic class relations.
11247
11248         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11249         functions due to MRGCTX changes.
11250
11251 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11252
11253         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11254         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11255         with calculated IMT.
11256
11257         * mini.c: Generic sharing of calls via generic interfaces.
11258
11259         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11260         generic method with non-constant MonoGenericContext*.  Instead,
11261         the context is taken out of the method itself.
11262
11263 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11264
11265         * mini.c: Generic sharing of ldvirtftn.
11266
11267 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11268
11269         * mini.c: Generic sharing of ldftn.
11270
11271 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11272
11273         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11274
11275 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11276
11277         * mini.c: Generic sharing of the special case of ldtoken followed
11278         by a call to GetTypeFromHandle.
11279
11280 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11281
11282         * mini.c: Generic sharing of box for nullable types.
11283
11284 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11285
11286         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11287         are passed on the stack. Fixes #324807.
11288
11289 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11290
11291         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11292         for the ArgValuetypeAddrInIReg case.
11293
11294         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11295         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11296
11297         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11298         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11299         local variable and pass the local variable by reference to the called method.
11300           
11301         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11302         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11303
11304         Contributed under MIT/X11 license.
11305
11306 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11307
11308         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11309
11310         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11311         everything.
11312
11313 2008-06-10  Martin Baulig  <martin@ximian.com>
11314
11315         * debug-mini.c
11316         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11317
11318 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11319
11320         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11321         possible error when no arguments are passed.
11322
11323         Contributed under MIT/X11 license.
11324
11325 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11326
11327         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11328         where the file name is NULL.
11329
11330 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11331
11332         * mini.c: Fix s390 build.
11333
11334 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11335
11336         * trace.c (mono_trace_parse_options): Fix warnings.
11337
11338         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11339
11340 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11341
11342         * mini.c (remove_block_if_useless): Avoid printing the method name.
11343         
11344         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11345         MONO_INST_NEW.
11346
11347         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11348         LMF. Not yet used.
11349
11350         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11351         translated code after it has been patched.
11352
11353 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11354
11355         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11356         avoid problems during code patching on SMP systems.
11357         (emit_call): Avoid adding a patch info which is already added by 
11358         emit_call_body.
11359         (mono_arch_emit_exceptions): Ditto.
11360
11361 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11362
11363         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11364         MONO_TYPE_ISSTRUCT already checks for it.
11365
11366 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11367
11368         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11369           structs with floats on Winx64 the float registers are not used.  
11370           The integer registers are always used..
11371         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11372           only one register will be used and only if the size of the struct 
11373           is 1,2,4, or 8 bytes.
11374
11375         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11376           to work for Winx64.
11377
11378         Contributed under MIT/X11 license.
11379
11380 2008-06-05  Martin Baulig  <martin@ximian.com>
11381
11382         * debug-debugger.c (debugger_lookup_class): Also call
11383         mono_class_setup_methods() here; we're only called from RTI.
11384
11385 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11386
11387         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11388         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11389         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11390         Post-process object files and add dtrace-generated object, if necessary.
11391
11392         Contributed under MIT/X11 license.
11393
11394 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11395
11396         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11397         element class.
11398
11399         * mini.c: Generic sharing for unbox.any and castclass.
11400
11401 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11402
11403         * mini.c: Ignore tailcall prefix in shared generic code and when
11404         doing calls which require a vtable/rgctx argument.
11405
11406 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11407
11408         * mini.c: Don't free the JIT info.
11409
11410         * driver.c: Changes in the JIT info table testing code.
11411
11412 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11413
11414         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11415         interruption. Fix some warnings.
11416
11417         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11418         interruption_checkpoint.
11419
11420 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11421
11422         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11423         from embedding applications.
11424
11425 2008-06-02  William Holmes  <billholmes54@gmail.com>
11426
11427         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11428           reserving 32 bytes on the stack when making calls. 
11429
11430         Contributed under MIT/X11 license.
11431
11432 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11433
11434         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11435         the linear IL branch.
11436
11437         * driver.c: Print out more information for --version on arm.
11438
11439 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11440
11441         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11442         bb_exit instead, since out of line bblocks might not actually be emitted
11443         out-of-line.
11444         
11445         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11446         maximum epilog size for out of line bblocks if tracing is enabled.
11447
11448         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11449
11450 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11451
11452         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11453
11454 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11455
11456         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11457         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11458         opcodes.
11459
11460 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11461
11462         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11463         the 'value' to store is a constant.
11464
11465         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11466
11467         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11468         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11469
11470 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11471
11472         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11473         for accessing method->generic_container.
11474
11475 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11476
11477         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11478         
11479         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11480
11481         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11482
11483         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11484         fails.
11485
11486 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11487
11488         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11489
11490         * mini.c: Handle the case when mono_class_vtable () fails.
11491
11492 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11493         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11494         the stat profiler.
11495
11496 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11497
11498         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11499         together with domain sharing.
11500
11501 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11502
11503         * mini.c: Treat callvirts to final methods like non-virtual calls
11504         when doing generic sharing, i.e. look them up in the runtime
11505         generic context.
11506
11507 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11508
11509         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11510         with computed types (for generic sharing).
11511
11512         * mini.c: Generic sharing for mkrefany and refanyval.
11513
11514 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11515
11516         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11517         possible.
11518
11519         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11520         the generic sharing code.
11521         
11522         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11523         when needed.
11524
11525 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11526
11527         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11528
11529 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11530
11531         * driver.c: updated copyright date
11532
11533 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11534
11535         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11536         needed.
11537
11538 2008-05-19  Martin Baulig  <martin@ximian.com>
11539
11540         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11541         pointing to the new `_mono_debug_using_mono_debugger' variable.
11542
11543         * driver.c
11544         (mono_main): Check mono_debug_using_mono_debugger() rather than
11545         the `MONO_INSIDE_MDB' environment variable to check whether we're
11546         inside the debugger.
11547
11548 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11549
11550         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11551         argument.
11552
11553 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11554
11555         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11556
11557         * mini.c: Added mini_assembly_can_skip_verification. This
11558         function checks if the assembly requested to skip verification. 
11559         Fixes part of #387274.
11560
11561 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11562
11563         * mini.c (mini_get_method): Disable the check for open generic classes when
11564         using generic sharing.
11565
11566         * generics.cs: Add a test for #387034.
11567
11568         * mini.c (mini_get_method): Check whenever the method class is an open generic
11569         type, and return NULL in that case, causing a verification error. Fixes
11570         #384123.
11571
11572 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11573
11574         * driver.c (mono_main): Revert r102623. The right
11575         thing to do is to enable the verifier under verifiable
11576         unless a --security flag was passed.
11577
11578         We need this non-trivial behavior for --verify-all otherwise
11579         mcs-compileall won't be able to use it. As it needs everything to
11580         be verified under validil.
11581
11582 2008-05-06  Martin Baulig  <martin@ximian.com>
11583
11584         Fix #383749.
11585
11586         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11587         (mono_debugger_thread_cleanup): Likewise.
11588         (mono_debugger_extended_notification): Likewise.
11589
11590 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11591
11592         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11593         against both inflated and non-inflated methods. We need to check against the
11594         generic definition for cases where the instantiated method is not visible.
11595         We need to check against the inflated types for cases where the instantiation
11596         changes any super type. This fixes #382986.
11597
11598         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11599         that check for visibiliy as generic params only appears as the type subject
11600         of tokens on call opcodes. Field manipulation and ldftn must always
11601         target an exact type.
11602
11603 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11604
11605         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11606         if no related --security flag is passed.
11607
11608 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11609
11610         * mini-arch.h: Prepare support for ppc64.
11611
11612         Contributed under MIT/X11 license.
11613
11614 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11615
11616         * aot-runtime.c: Prepare support for ppc64.
11617
11618         Contributed under MIT/X11 license.
11619
11620 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11621
11622         * mini-ops.h: Prepare support for ppc64.
11623
11624         Contributed under MIT/X11 license.
11625
11626 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11627
11628         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11629
11630         Contributed under MIT/X11 license.
11631
11632 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11633
11634         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11635         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11636         assemblies on windows.
11637
11638 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11639
11640         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11641         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11642         * main.c: Use UTF-8 encoded command line instead of Windows default code
11643         page on Windows to support Unicode.
11644         * driver.c (DllMain): New function for mixed-mode assembly support.
11645         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11646         export __stdcall functions without decoration.
11647
11648         Contributed under MIT/X11 license.
11649
11650 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11651
11652         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11653         saving it very early.
11654
11655 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11656
11657         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11658         deleted.  The only way to access the new RGCTX is via the
11659         trampline.
11660
11661         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11662         vtable instead of the RGCTX to static methods.
11663
11664         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11665         accessing the new RGCTX.
11666
11667         * generic-sharing.c: There is no separation between self, type
11668         arguments and other types in the RGCTX anymore.
11669
11670 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11671
11672         * mini-amd64.c (add_general): Remove previous stack adjustment.
11673         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11674         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11675         for 32 bytes of stack space reserved for all calls.
11676         
11677         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11678         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11679         adjustment.
11680         
11681         Code contributed under MIT/X11 license.
11682
11683 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11684
11685         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11686         against the root definition, peeling out method and type instantiations.
11687         Cache verify success results, code that fails verification is still
11688         checked multiple times.
11689
11690 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11691
11692         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11693
11694 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11695
11696         * mini-amd64.c (add_general): Always increment stack on Win64.
11697         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11698         on Win64.
11699         
11700         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11701         stack based argument handling on Win64.
11702         
11703         Code contributed under MIT/X11 license.
11704
11705 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11706
11707         * Makefile.am (version.h): Add support for git-svn.
11708
11709 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11710
11711         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11712         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11713         avoiding allocations and libc functions which might deadlock.
11714         
11715         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11716         'no-gdb-backtrace' option is set.
11717
11718         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11719
11720         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11721
11722 2008-04-21  Martin Baulig  <martin@ximian.com>
11723
11724         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11725         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11726
11727 2008-04-21  Martin Baulig  <martin@ximian.com>
11728
11729         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11730         `thread_vtable', `event_handler_ptr' and `event_handler'.
11731
11732 2008-04-21  Martin Baulig  <martin@ximian.com>
11733
11734         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11735         allows delayed initialization of the `executable_code_buffer' when
11736         attaching.
11737
11738 2008-04-21  Martin Baulig  <martin@ximian.com>
11739
11740         * mini.h (mono_debugger_create_notification_function): Removed.
11741         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11742
11743         * mdb-debug-info64.s
11744         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11745
11746         * mdb-debug-info32.s
11747         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11748
11749         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11750         currently only works on x86 and x86_64, so don't create it on ppc.
11751
11752 2008-04-21  Martin Baulig  <martin@ximian.com>
11753
11754         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11755
11756         * mini.c
11757         (mini_method_compile): In the fp elimination check, check
11758         `debug_options.mdb_optimizations' in addition to
11759         mono_debug_using_mono_debugger().       
11760
11761         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11762         disable some JIT optimizations which are only disabled when
11763         running inside the debugger.
11764         Added `--help-debug' option to describe the debugging options.
11765         (parse_debug_options): New static function to parse the `--debug'
11766         options, so we can easily add more stuff in future.
11767
11768 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11769
11770         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11771         the method has no body.
11772
11773 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11774
11775         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11776         assembly is not allowed in MSVC 64-bit compiler. 
11777         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11778         as we get floating point exceptions everywhere.
11779         
11780         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11781         correctly align arguments for call to throw_exception.
11782         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11783         
11784         Code contributed under MIT/X11 license.
11785
11786 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11787
11788         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11789
11790 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11791
11792         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11793
11794         * mini-amd64.c (NEW_INS): Set cil_code.
11795
11796         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11797         from mini-amd64.c so all debugger related logic is in one place.
11798
11799         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11800         later won't have a random ip assigned to them.
11801
11802 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11803
11804         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11805         the arch specific function initializes code_size.
11806         (mono_create_delegate_trampoline): Ditto.
11807
11808         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11809         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
11810         platforms.
11811
11812         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
11813         running under the debugger.
11814
11815         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
11816         debugger.
11817
11818         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
11819         debugger. Also move the disabling of optimizations here from driver.c.
11820         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
11821         debugger.
11822
11823         * mini.h (MonoCompile): Add a few new flags.
11824
11825 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
11826
11827         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
11828         so the cil_code field of created MonoInst's is properly set.
11829         (mini_select_instructions): Ditto.
11830
11831         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
11832         (MONO_INST_NEW_CALL): Ditto.
11833
11834         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
11835         in many places so the ins->cil_code field is properly initialized.
11836
11837         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
11838         place.
11839
11840 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
11841
11842         * mini.c (mini_method_compile): Print a different message when compiling a 
11843         shared method.
11844         
11845         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
11846         > 1.
11847
11848 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11849
11850         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
11851         SSE2 instructions.
11852
11853         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
11854         
11855 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
11856
11857         * mini.c (handle_stack_args): Make this return void since its return value was
11858         never used. Also set cfg->unverifiable for invalid IL instead of calling
11859         G_BREAKPOINT ().
11860
11861 2008-04-10  Mark Probst  <mark.probst@gmail.com>
11862
11863         * mini.c: Make sure "this" is live in catch clauses with type
11864         variables in shared generic code.
11865
11866 2008-04-08  Mark Probst  <mark.probst@gmail.com>
11867
11868         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
11869         generic_class_is_reference_type() to ensure the proper behaviour
11870         when sharing generic code and the type in question is a type
11871         argument.
11872
11873 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11874
11875         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
11876         race conditions when printing thread dumps. Fixes #377738.
11877
11878 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
11879         
11880         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
11881         shows up when both MonoInst arguments can cause aliasig.
11882         There is likely no way in the current JIT to trigger this problem, but
11883         it showed up in the development of generics sharing, when in a new
11884         opcode both args of an OP_GROUP can be aliases (addresses of a local).
11885         When the generics sharing code will be committed, its tests will be
11886         valid also for this bug.
11887
11888 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
11889
11890         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
11891         PATCH_INFO_METHOD.
11892
11893         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
11894         NULL.
11895
11896 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
11897
11898         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
11899         use a more detailed exception message for InvalidCastException.
11900
11901         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
11902
11903         * driver.c (mono_main): Add --debug=casts option to turn on better 
11904         InvalidCastException message details.
11905
11906         * mini.c (mini_get_debug_options): New helper function to return the address of
11907         the debug_options variable.
11908
11909         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
11910         the jit_tls TLS variable.
11911
11912         * mini.c (mono_jit_tls): New TLS variable.
11913
11914         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
11915         option is used.
11916
11917 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
11918
11919         * mini.h: Removed verifer related stuff. This code was moved to verify.c
11920
11921         * mini.c: Removed verifer related stuff, code moved to verify.c.
11922
11923         * driver.c: Using code from verify.c instead of mini.c.
11924
11925 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
11926
11927         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
11928         longer valid.
11929
11930 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
11931
11932         * mini.c (check_for_method_verify): Enabling verification of
11933         corlib if mono_verify_all is set. Bugs in the verifier preventing that
11934         have been fixed.
11935
11936 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
11937
11938         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
11939         caller saved registers as well.
11940         
11941         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
11942         saved registers as well.
11943
11944 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
11945
11946         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
11947
11948         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
11949         code.
11950
11951 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
11952
11953         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
11954         to get_call_info.
11955         (get_call_info): Take a gsctx argument instead of 'cfg'.
11956
11957 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
11958
11959         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
11960         mono_verify_all is set.
11961
11962         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
11963
11964         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
11965
11966 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
11967
11968         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
11969         an exception.
11970
11971         * driver.c mini.c mini.h: Add a --verify-all development option to test the
11972         verifier and the code generated by the compiler.
11973
11974 2008-03-25  Mark Probst  <mark.probst@gmail.com>
11975
11976         * mini.c: Generic sharing of the non-nullable case of the box
11977         instruction.
11978
11979 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
11980
11981         * inssel.brg: Fix the build.
11982
11983         * iltests.il.in: Add a test for lconv.ovf.u8.un.
11984
11985 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
11986
11987         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
11988         Array:Address. Fixes #372410.
11989
11990         * iltests.il.in: New tests for readonly prefix.
11991
11992 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
11993
11994         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
11995         mini-trampolines.c.
11996
11997         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
11998         mini-exceptions.c.
11999
12000         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12001         
12002         * mini.c (mono_decompose_op_imm): New helper function.
12003
12004         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12005         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12006         return value.
12007
12008         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12009         mono_arch_output_basic_block. Fix warnings.
12010
12011         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12012         for now.
12013
12014 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12015
12016         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12017         since the extra frame is now detected automatically inside the loop.
12018
12019         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12020         opts which are now in mono_peephole_ins ().
12021         
12022         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12023
12024         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12025         frames and skip duplicate managed-to-native frames. Fixes #367665.
12026
12027         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12028         opts which are now in mono_peephole_ins ().
12029         (mono_arch_peephole_pass_2): Ditto.
12030
12031         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12032
12033         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12034         arch independent peephole optimizations.
12035
12036         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12037         opts which are now in mono_peephole_ins ().
12038
12039         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12040         
12041         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12042
12043         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12044         pattern.
12045
12046         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12047         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12048         opcode. 
12049
12050 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12051
12052         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12053         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12054         return value.
12055
12056         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12057         mono_arch_output_basic_block. Fix warnings.
12058
12059 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12060
12061         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12062         conv.ovf.u.un.
12063
12064 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12067         conv.ovf.u.un.
12068
12069         * iltests.il: Add new tests.
12070
12071 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12072
12073         * mini.c: Removed Windows version macros.
12074
12075 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12076
12077         * generic-sharing.c: Put reflection types in the extensible part
12078         of the runtime generic context.
12079
12080         * mini.c: Generic sharing of the GetTypeHandle special case of the
12081         ldtoken instruction.
12082
12083 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12084
12085         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12086
12087         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12088         
12089         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12090         consistency with the other version on the linear IR branch.
12091
12092         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12093
12094         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12095
12096         * iltests.il.in: Add new tests.
12097
12098 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12099
12100         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12101
12102         * iltests.il.in: Add new tests.
12103
12104 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12105
12106         * mini.c: Two variables with the same name were declared in
12107         nesting contexts and one wasn't initialized.  Fixed.
12108
12109 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12110
12111         * mini.c: Generic sharing of the initobj instruction.
12112
12113 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12114
12115         * mini.c: make the test to optimize ldtoken from typeof() more
12116         precise.
12117
12118 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12119
12120         * mini.c: Generic sharing of the initobj instruction for reference
12121         types.
12122
12123 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12124
12125         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12126         the mono_breakpoint_clean_code() code to perform bound checks.
12127
12128 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12129
12130         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12131         mono_arch_patch_callsite() to include the start of the managed method
12132         to be able to perform bound checks.
12133
12134 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12135
12136         * mini.c: Generic sharing for the isinst instruction.
12137
12138 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12139
12140         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12141         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12142         with the runtime generic context argument.
12143
12144         * mini.c: Share calls to several types of unsharable methods by
12145         putting the address of the method code in the runtime generic
12146         context and doing an indirect call.
12147
12148         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12149         to switches.
12150
12151 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12152
12153         * generic-sharing.c: Change due to a change in the runtime genric
12154         context API.
12155
12156 2008-03-15  Martin Baulig  <martin@ximian.com>
12157
12158         * tramp-x86.c
12159         (mono_arch_nullify_class_init_trampoline): Add call to
12160         mono_breakpoint_clean_code() to make things work when running
12161         inside the debugger.
12162
12163         * tramp-amd64.c
12164         (mono_arch_nullify_class_init_trampoline): Add call to
12165         mono_breakpoint_clean_code() to make things work when running
12166         inside the debugger.
12167
12168 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12169
12170         * inssel-long.brg (reg): Fix 64 bit build.
12171
12172 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12173
12174         * mini.c, mini.h: Share static generic code by passing it an
12175         implicit argument pointing to the runtime generic context.
12176
12177         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12178         inssel-long32-mips.brg: New opcodes for calling shared static,
12179         which need to be passed the runtime generic context.
12180
12181         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12182         argument on the stack in the prologue if needed.  New function for
12183         finding the runtime generic context argument from the registers
12184         saved by the trampoline.
12185
12186         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12187         runtime generic context argument.
12188
12189         * tramp-amd64.c: Also restore the register used for the runtime
12190         generic context argument.
12191
12192         * mini-trampoline.c: Resolve shared static calls by consulting the
12193         runtime generic context via the new argument.
12194
12195         * generic-sharing.c: Add an argument to sharability-checking
12196         functions that specifies whether type variables should be treated
12197         as sharable type arguments.
12198
12199         * inssel-x86.brg: Removed a superfluous, buggy rule.
12200
12201         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12202         to switches.
12203
12204 2008-03-14  Martin Baulig  <martin@ximian.com>
12205
12206         * debug-debugger.c (main_thread_handler): Call
12207         mono_runtime_run_main() without sending any notifications.
12208
12209         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12210
12211 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12212
12213         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12214
12215 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12216
12217         * tramp-x86.c: Fixed register restore offsets in the trampoline
12218         code for ECX and EDX.
12219
12220 2008-03-12  Geoff Norton  <gnorton@novell.com>
12221
12222         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12223         different ucontext_t implementations.
12224         * exceptions-arm.c: Use the above defines to get exceptions working on 
12225         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12226         * mini-arm.c: Implement iPhone icache support (based on a patch by
12227         Luke Howard lukeh@padl.com)
12228
12229 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12230
12231         * mini.c: Enable generic sharing of calls to non-static
12232         non-interface non-generic non-value-type methods.
12233
12234         * mini-trampolines.c: Resolve calls from shared generic code.
12235
12236 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12237
12238         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12239
12240         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12241
12242 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12243
12244         * mini.c: some fixes for the AOT compiler.
12245
12246 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12247
12248         * cpu-amd64.md: Add clob:1 to some float opcodes.
12249
12250 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12251
12252         * mini.h: Added MiniVerifierMode enumeration.
12253
12254         * mini.c: Added mini_verifier_set_mode to control
12255         the usage of the new verifier.
12256
12257         * mini.c (mono_method): Integrated the new verifier.
12258
12259         * driver.c: Extended --security option with validil and
12260         verifiable options to activate the new verifier.
12261
12262 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12263
12264         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12265         optimization to ctors taking 0 or 2 arguments too.
12266
12267         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12268         a bit.
12269
12270         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12271
12272         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12273
12274 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12275
12276         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12277         non-aot case as well.
12278
12279         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12280
12281         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12282         changes.
12283
12284         * aot-compiler.c (encode_patch): Ditto.
12285
12286         * mini.h (G_MININT32): Fix the definition of this.
12287
12288 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12289
12290         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12291
12292         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12293
12294 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12295
12296         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12297         methods returning vtypes in registers.
12298         (mono_arch_allocate_vars): Ditto.
12299
12300         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12301
12302         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12303
12304         * generics.cs: Add a test from the linear IR branch.
12305
12306         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12307
12308         * mini.c (inline_method): Cache failed inline attempts.
12309
12310 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12311
12312         * mini.c: For shared methods of generic classes put the location
12313         of "this" into the MonoGenericJitInfo.
12314
12315         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12316         register out of a MonoContext by register number.  Add the generic
12317         sharing context as an argument to mono_arch_find_this_argument().
12318
12319         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12320         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12321         for new arch function.
12322
12323         * mini-exception.c: Handle open exception clauses in shared
12324         generic code.
12325
12326         * mini-trampolines.c: Supply additional argument to
12327         mono_arch_find_this_argument().
12328
12329 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12330
12331         * Makefile.am (regtests): Run the bench.exe tests last.
12332
12333 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12334
12335         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12336         a bit.
12337
12338 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12339
12340         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12341         with MS.
12342
12343         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12344         
12345         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12346
12347         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12348         whose class has no cctor.
12349
12350         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12351
12352 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12353
12354         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12355         unverified.
12356
12357 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12358
12359         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12360         to be in sync with the code on the linear IR branch.
12361
12362         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12363
12364         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12365
12366 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12369
12370         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12371
12372         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12373
12374         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12375
12376         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12377         
12378         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12379         body.
12380
12381 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12382
12383         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12384         OP_LOADR4_MEMBASE emission.
12385
12386         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12387         (mono_spillvar_offset_float): Ditto.
12388
12389         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12390
12391         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12392         emission.
12393
12394         * basic-long.cs: Add regression tests for them.
12395
12396         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12397         use.
12398         (mono_arch_allocate_vars): Fix representation of single-precision float
12399         argument.
12400         (mono_arch_output_basic_block): Ditto.
12401
12402         * inssel-mips.brg: Ditto, remove duplicate items.
12403
12404         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12405         arguments of tail calls as on other platforms.
12406         (mono_arch_output_basic_block): Handle tail calls.
12407
12408         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12409         register.
12410
12411         * objects.cs (test_5_pass_static_struct): Add test for it.
12412
12413         Contributed under MIT/X11 license.
12414
12415 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12416
12417         * Makefile.am: Use gmcs for compiling the regression tests.
12418
12419         * *.2.cs *.2.il: Rename to *.cs and *.il.
12420
12421 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12422
12423         * regalloc.h: Make the vassign array smaller.
12424
12425         * mini.c (mini_method_compile): Remove an unused field in cfg.
12426
12427         * mini-codegen.c: Add a bunch of micro optimizations.
12428
12429 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12430
12431         * regalloc.h: Remove some unused fields.
12432
12433 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12434
12435         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12436
12437         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12438
12439 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12440
12441         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12442
12443         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12444         trampoline: Fetch an entry from the runtime generic context.  If
12445         it's NULL, jump to the actual trampoline to fill the runtime
12446         generic context.  Otherwise, return it.
12447
12448         * mini.c: Call the lazy fetch trampoline to get entries out of the
12449         runtime generic context.
12450
12451         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12452         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12453         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12454
12455 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12456
12457         * mini.c: Fetch data out of the extensible part of the runtime
12458         generic context instead of calling a helper function.
12459
12460         * generic-sharing.c: Some functions moved into
12461         metadata/generic-sharing.c.  Helper function for fetching other
12462         types now checks and asserts against extensible rgctx (just for
12463         debugging purposes - the helper function isn't called anymore
12464         unless for debugging).
12465
12466 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12467
12468         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12469         for tail calls up to the point that the tests in iltests.exe run. Also add a
12470         dummy CKFINITE implementation.
12471         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12472         needed for trampoline LMF frames.
12473
12474         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12475         trampoline LMF frames.
12476
12477 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12478
12479         * mini.c (inline_method): clean any pending loader error when inlining fail.
12480         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12481
12482 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12483
12484         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12485
12486         * aot-runtime.c (decode_patch_info): Ditto.
12487
12488         * mini.c (mono_resolve_patch_target): Ditto.
12489         
12490         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12491         icall wrappers.
12492
12493         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12494         
12495         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12496         if it references an icall address.
12497
12498 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12499
12500         * cpu-s390x.md: Remove some more unused opcodes.
12501         
12502         * cpu-s390x.md: Remove some unused opcodes.
12503
12504         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12505         mono_op_imm_to_op ().
12506
12507         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12508         instead of a switch statement.
12509         
12510         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12511         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12512
12513         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12514         
12515         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12516
12517         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12518         -1.
12519
12520 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12521
12522         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12523         opened. Fixes #362607.
12524
12525         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12526
12527         * iltests.il.in: Add a test for static methods in interfaces.
12528
12529 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12530
12531         * genmdesc.c (build_table): Fix a crash on older glib versions.
12532
12533         * cpu-sparc.md: Remove some unused opcodes.
12534         
12535         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12536         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12537
12538         * cpu-amd64.md: Remove some unused opcodes.
12539
12540         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12541         like the other opcodes.
12542
12543 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12544
12545         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12546
12547         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12548
12549         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12550         variables 'cfg' instead of 'm' for consistency.
12551
12552         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12553
12554         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12555         argument holding the vtype return address, to avoid the ambigious use of
12556         cfg->ret for this purpose.
12557
12558         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12559
12560         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12561         
12562         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12563         new mono_print_ins () function which only takes one argument.
12564
12565 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12566
12567         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12568         macro arguments.
12569
12570 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12571
12572         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12573
12574         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12575
12576         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12577         opcodes and other small changes.
12578
12579         * mini-ops.h: Add some new opcodes from the linear IR branch.
12580
12581         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12582
12583         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12584         opcodes, use the REG_MEMBASE opcodes instead.
12585         
12586         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12587         opcodes, use the REG_MEMBASE opcodes instead.
12588         
12589         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12590         linear IR branch.
12591
12592         * mini.c (mono_op_imm_to_op): New helper function.
12593
12594         * mini-ops.h: Add some opcodes from linear IR branch.
12595
12596 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12597
12598         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12599         <tsv@solvo.ru>.
12600
12601 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12602
12603         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12604         OP_ICONV_TO_R4/R8.
12605
12606         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12607
12608 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12609
12610         * aot-compiler.c (emit_method_code): Add an assert.
12611
12612         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12613         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12614         methods.
12615
12616 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12617
12618         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12619         some load/store opcodes so they are consistent. 
12620         (mono_arch_emit_prolog): Simplify some code.
12621
12622         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12623
12624         * objects.cs: Add tests for large argument offsets on ARM.
12625
12626         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12627         stack offsets. Fixes #359651.
12628
12629         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12630
12631         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12632
12633         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12634
12635         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12636
12637         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12638
12639         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12640         rid of CEE_CONV_R_UN.
12641
12642         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12643
12644 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12645
12646         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12647
12648         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12649
12650         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12651
12652         * cpu-amd64.md: Remove some unused opcodes.
12653
12654         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12655
12656         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12657
12658         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12659         arch specific functions for its parts. Call the peephole pass after local
12660         regalloc so the prolog can compute a more accurate max_offset.
12661         
12662         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12663         the corresponding OP_I/OP_L opcodes.
12664
12665         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12666
12667         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12668
12669 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12670
12671         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12672         as they are handled in mini.c.
12673
12674         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12675         
12676         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12677         case since it is handled in mini.c.
12678
12679         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12680
12681         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12682
12683         * *.c: Use the new opcodes in the IR and back end code.
12684
12685         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12686
12687         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12688
12689 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12690
12691         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12692         an assert because it has a race condition.
12693
12694 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12695
12696         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12697
12698         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12699
12700         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12701
12702         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12703         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12704
12705 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12706
12707         * cpu-amd64.md (move): Correct the maximum size of move.
12708
12709 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12710
12711         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12712         the generic class init trampoline to return quickly if the class
12713         is already inited.
12714
12715 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12716
12717         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12718         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12719
12720 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12721
12722         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12723         branch.
12724
12725 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12726
12727         * objects.cs: Add some soft-float tests.
12728
12729         * mini.c: Fix a couple more soft-float issues.
12730
12731         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12732
12733         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12734         avoid a REX prefix.
12735
12736 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12739         exception happens while compiling a virtual method.
12740
12741 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12742
12743         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12744         
12745         * mini-sparc.c: Fix build.
12746
12747         * mini-sparc.c (get_call_info): Add support for generic sharing.
12748
12749         * mini-exceptions.c: Add a FIXME.
12750
12751 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12752
12753         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12754         altstack handling code.
12755
12756         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12757         
12758         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12759
12760         * mini-s390.c: Add support for generic sharing.
12761
12762         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12763         Fix CAS on s390.
12764         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12765
12766         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12767
12768         * mini-s390x.c: Add support for generic sharing.
12769         
12770         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12771         Fix CAS on ia64.
12772         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12773
12774         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12775         can be used since it takes a 16 bit signed immediate.
12776
12777         * inssel-s390x.brg: Fix OP_SETRET.
12778
12779         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12780
12781         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12782
12783         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12784
12785         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12786
12787         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12788         in one place.
12789
12790         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12791         stuff.
12792
12793         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12794         of the unused mono_arch_patch_delegate_trampoline stuff.
12795
12796 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12797
12798         * basic-long.cs: Move the fp related tests to basic-float.cs.
12799
12800         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12801
12802         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12803
12804         * basic-calls.cs: Add a test for proper float argument passing.
12805
12806         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12807         if the context corresponds to an exception received through a signal.
12808
12809         * exceptions.cs: Add a test for nullref handling at the start of a try
12810         clause.
12811
12812         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
12813
12814         * jit-icalls.c (mono_break): New JIT icall.
12815
12816         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
12817
12818         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
12819
12820 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
12821
12822         * cpu-*.md: Get rid of unused opcodes.
12823
12824         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
12825
12826         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
12827         by all platforms.
12828
12829         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
12830         define.
12831
12832         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
12833         the arch independent trampoline code in mini-trampolines.c.
12834
12835         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
12836
12837         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
12838
12839         * mini-s390.h: Remove an unused define.
12840         
12841         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
12842         the arch independent trampoline code in mini-trampolines.c.
12843
12844         * mini-arm.c (mono_arch_emit_prolog): Fix build.
12845
12846 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
12849
12850         * mini-s390.c (mono_arch_emit_prolog): Fix build.
12851
12852         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
12853
12854         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
12855
12856         * cpu-amd64.md: Use smaller sizes for int opcodes.
12857
12858         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
12859
12860         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
12861         objects.cs.
12862
12863         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
12864         debugging.
12865
12866         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
12867         instead of though a pointer to save an indirection when accessing elements of
12868         the array.
12869
12870         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
12871         some typos.
12872         (NOT_IMPLEMENTED): New helper macro.
12873         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
12874         of a bb.
12875
12876         * *.c: Use the new helper macro.
12877
12878 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
12879
12880         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
12881
12882 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
12883
12884         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
12885         stack slots.
12886
12887 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
12888
12889         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
12890         profiling is enabled.
12891         
12892         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
12893         the end.
12894         (mono_arch_emit_prolog): Add more first bblock optimizations.
12895
12896         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
12897         in order if possible.
12898         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
12899         bblock, since the arguments are still in their original registers.
12900
12901         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
12902
12903 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
12904
12905         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
12906         as well.
12907
12908         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
12909         offset 0.
12910
12911         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
12912
12913         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
12914         process async exceptions received while in unmanaged code.
12915
12916         * mini.c (mini_init): Install a callback with the runtime which will be called
12917         when a thread receives an async exception while in unmanaged code.
12918
12919         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
12920
12921         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
12922
12923 2008-01-16  Wade Berrier  <wberrier@novell.com>
12924
12925         * cpu-g4.md:
12926         * cpu-arm.md:
12927         * cpu-s390x.md:
12928         fix build
12929
12930 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
12931
12932         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
12933         compilation with sun cc.
12934
12935         * cpu-*.md: Fix the build.
12936
12937         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
12938
12939         * mini-amd64.h: Add some comments to the MonoLMF structure.
12940
12941         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
12942         
12943         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
12944         in the LMF structure if possible. This saves two instructions in the
12945         managed->native wrappers.
12946
12947         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
12948
12949 2008-01-16  Mark Probst  <mark.probst@gmail.com>
12950
12951         * generic-sharing.c: New type argument lookup code which uses the
12952         runtime generic context template.
12953
12954 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
12955
12956         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
12957
12958         * mini-arm.c (add_general): Fix arm eabi parameter passing.
12959         (mono_arch_output_basic_block): Fix localloc implementation.
12960
12961         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
12962
12963         * mini-ia64.c (peephole_pass): Fix ia64 build.
12964
12965         * mini-amd64.c (peephole_pass): Fix a warning.
12966         
12967         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
12968         at a constant offset from sp/fp.
12969
12970         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
12971         instead of obtaining it from *lmf in the managed method case.
12972
12973 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
12974
12975         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
12976
12977 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
12978
12979         * mini.h (MonoInstList): New type.
12980         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
12981         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
12982         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
12983         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
12984         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
12985         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
12986         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
12987         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
12988         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
12989         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
12990         MONO_INST_LIST_FOR_EACH_ENTRY,
12991         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
12992         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
12993         mono_inst_list_first, mono_inst_list_last,
12994         mono_inst_list_next, mono_inst_list_prev): New instruction
12995         list handling interfaces.
12996         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
12997         list head 'ins_list'.
12998         (MonoInst): Replace next pointer with list head 'node'.
12999         (MonoCallInst): Make 'out_args' a MonoInstList.
13000         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13001         (MonoCompile): Delete reverse_inst_list and
13002         reverse_inst_list_len.
13003         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13004         mono_arch_lowering_pass, mono_arch_local_regalloc,
13005         mono_arch_output_basic_block, mono_arch_emit_prolog):
13006         Convert to new instruction lists.
13007         (insert_after_ins): Delete.
13008         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13009         instruction lists.
13010         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13011         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13012         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13013         mono_emulate_opcode, mono_emit_load_got_addr,
13014         inline_method, mono_method_to_ir, mono_print_bb_code,
13015         print_dfn, decompose_pass, nullify_basic_block,
13016         replace_out_block_in_code, remove_block_if_useless,
13017         merge_basic_blocks, move_basic_block_to_end,
13018         try_unsigned_compare, optimize_branches, mono_print_code,
13019         mini_select_instructions, remove_critical_edges): Likewise.
13020         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13021         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13022         mono_arch_output_basic_block, mono_arch_emit_prolog):
13023         Likewise.
13024         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13025         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13026         mono_arch_output_basic_block): Likewise.
13027         (inst_list_prepend, insert_after_ins): Delete.
13028         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13029         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13030         instruction lists.
13031         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13032         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13033         mono_arch_emit_prolog): Likewise.
13034         * cfold.c (mono_constant_fold): Likewise.
13035         * liveness.c (visit_bb, mono_analyze_liveness,
13036         optimize_initlocals): Likewise.
13037         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13038         * graph.c (mono_draw_code_cfg): Likewise.
13039         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13040         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13041         mono_ssa_cprop): Likewise.
13042         * abcremoval (get_relations_from_previous_bb, process_block):
13043         Likewise.
13044         * local-propagation (mono_cprop_invalidate_values,
13045         mono_local_cprop_bb): Likewise.
13046         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13047         peephole_pass, mono_arch_output_basic_block,
13048         mono_arch_emit_prolog): Likewise.
13049         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13050         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13051         mono_arch_emit_prolog): Likewise.
13052         (insert_after_ins): Delete.
13053         * aliasing.c (print_code_with_aliasing_information,
13054         mono_build_aliasing_information, mono_aliasing_deadce):
13055         Convert to new instruction lists.
13056         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13057         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13058         mono_arch_local_regalloc, mono_arch_output_basic_block):
13059         Likewise.
13060         (insert_after_ins): Delete.
13061         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13062         peephole_pass, mono_arch_output_basic_block): Convert to
13063         new instruction lists.
13064         * mini-codegen (InstList, inst_list_prepend,
13065         insert_after_ins): Delete.
13066         (insert_before_ins, get_register_force_spilling,
13067         get_register_spilling, free_up_ireg, free_up_reg,
13068         create_copy_ins, create_spilled_store, alloc_int_reg,
13069         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13070         to new instruction lists.
13071         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13072         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13073         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13074         (insert_after_ins): Delete.
13075         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13076         mono_arch_local_regalloc, mono_arch_output_basic_block,
13077         mono_arch_call_opcode): Convert to new instruction lists.
13078         (insert_after_ins): Delete.
13079         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13080         peephole_pass, mono_arch_output_basic_block,
13081         mono_arch_emit_prolog): Convert to new instruction lists.
13082
13083 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13084
13085         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13086
13087         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13088         Fixes #353182.
13089
13090         * Makefile.am (version.h): Make this work with non-bash shells.
13091
13092 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13093
13094         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13095
13096 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13097
13098         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13099         the InitializeArray optimization.
13100
13101 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13102
13103         * mini.c driver.c: Don't include os/gc_wrapper.h.
13104
13105 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13106
13107         * mini.c (print_jit_stats): Print GC statistics if available.
13108
13109 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13110
13111         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13112
13113 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13114
13115         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13116
13117 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13118
13119         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13120         
13121         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13122
13123         * driver.c (mono_main): Ditto.
13124
13125 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13126
13127         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13128
13129         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13130         in the vtable can't be encoded.
13131         (compile_method): Ditto.
13132
13133 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13134
13135         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13136         defined.
13137
13138         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13139         lmf->rbp.
13140
13141         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13142         the top LMF entry belongs to the current method.
13143
13144         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13145
13146 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13149         
13150         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13151
13152         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13153
13154         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13155
13156         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13157
13158         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13159         implementation.
13160
13161         * basic-float.cs: Add an ulong->double cast test.
13162
13163 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13164
13165         * mini.c (mono_method_to_ir): Fix a warning.
13166
13167 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13168
13169         * mini-ops.h: Add OP_SWITCH.
13170
13171         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13172         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13173
13174 2007-12-11  Geoff Norton  <gnorton@novell.com>
13175
13176         * mini-s390x.c: Minor change to the MAX() define to allow
13177         it to compile with other gcc versions.
13178
13179 2007-12-11  Geoff Norton  <gnorton@novell.com>
13180
13181         * cpu-s390x.md:
13182         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13183
13184 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13185
13186         exceptions-arm.c (mono_arch_get_restore_context): Restore
13187         the frame pointer.
13188
13189         exceptions-arm.c (throw_exception): Save the frame pointer.
13190         This is a partial fix for #323747. Only the client side is
13191         fixed.
13192
13193 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13194
13195         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13196         was using an unrelated variable to log the class which
13197         needed the cctor to be called. This was crashing on arm.
13198
13199 2007-12-09  Robert Jordan  <robertj@gmx.net>
13200
13201         * mini-x86.c (mono_arch_emit_epilog):
13202         Consider all kinds of 64-bit types. Fixes #323114.
13203
13204 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13205
13206         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13207
13208 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13209
13210         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13211
13212 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13213
13214         * mini.c: run type ctor before allocating an object, not only
13215         when running it's constructor method (fixes at least part of bug #342507).
13216
13217 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13218         
13219         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13220         
13221         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13222         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13223         function.
13224
13225         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13226         mono_generic_class_init_trampoline () the same as it is done with the other
13227         trampolines.
13228
13229         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13230         aot-runtime.c aot-compiler.c: Implement AOT support.    
13231
13232 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13233
13234         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13235         build for archs which don't have the vtable trampoline defined
13236         yet.
13237
13238 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13239
13240         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13241
13242         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13243
13244         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13245
13246         * tramp-<ARCH>.c: Use the new helper function.
13247
13248 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13249
13250         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13251         trampoline call, which takes a vtable argument.
13252
13253         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13254         OP_TRAMPCALL_VTABLEs like other calls.
13255
13256         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13257         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13258         call.  Implemented a support function which fetches the vtable
13259         from a register set.
13260
13261         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13262         Implemented a generic class init trampoline, using the
13263         OP_TRAMPCALL_VTABLE opcode.
13264
13265         * mini.c: Implemented static field access when sharing generic
13266         code.  This implies initing the class using the new
13267         OP_TRAMPCALL_VTABLE call.
13268
13269 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13270
13271         * mini.c: Don't compile methods with sharing enabled if their
13272         classes are disabled for sharing.
13273
13274 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13275
13276         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13277         opcodes. Fixes #346563.
13278
13279         * objects.cs: Add a new test.
13280
13281         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13282
13283         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13284         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13285
13286 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13287
13288         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13289
13290 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13291
13292         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13293         code stream.
13294
13295 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13296
13297         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13298
13299         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13300         optimization in the AOT case.
13301         
13302 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13303
13304         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13305         
13306         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13307
13308         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13309
13310         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13311
13312         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13313         is created by the inlined delegate ctor.
13314
13315         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13316
13317         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13318
13319 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * cpu-x86.md: Fix the length of ckfinite.
13322
13323 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13324
13325         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13326         
13327         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13328         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13329
13330         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13331
13332         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13333         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13334
13335 2007-11-28  Martin Baulig  <martin@ximian.com>
13336
13337         * mini-x86.c
13338         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13339         after creating the trampoline.
13340
13341 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13342
13343         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13344
13345         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13346         the same version.
13347
13348         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13349         instead of the calling method to help AOT.
13350
13351         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13352
13353 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13354
13355         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13356         is defined.
13357
13358 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13359
13360         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13361         
13362         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13363         (encode_method_ref): No need to handle generic method definitions specially.
13364
13365         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13366
13367         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13368         decode_klass_info.
13369
13370         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13371         encode_klass_info.
13372         (compile_method): Enable generic sharing.
13373
13374 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13375
13376         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13377         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13378
13379         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13380         generic code.
13381
13382         * mini-trampolines.c: Fix a warning.
13383
13384         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13385         NEW_PCONST.
13386         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13387         (generic_class_is_reference_type): Remove unused function.
13388
13389         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13390         in the generic vtable trampoline case.
13391
13392         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13393         
13394         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13395         return an AOT method based on a vtable slot.
13396
13397         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13398
13399         * mini.c (mini_get_vtable_trampoline): Export this.
13400
13401 2007-11-22  Martin Baulig  <martin@ximian.com>
13402
13403         * debug-debugger.h
13404         (MonoDebuggerInfo): Move `debugger_version' up.
13405
13406 2007-11-22  Martin Baulig  <martin@ximian.com>
13407
13408         * mini-amd64.c
13409         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13410
13411         * mini-trampolines.c
13412         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13413         after compiling the method.
13414
13415 2007-11-20  Martin Baulig  <martin@ximian.com>
13416
13417         * debug-mini.c
13418         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13419         (mono_debugger_remove_breakpoint): Likewise.
13420         (mono_debugger_check_breakpoints): Likewise.
13421
13422         * debug-debugger.c: Implement the new breakpoint interface here.
13423
13424 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13425
13426         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13427         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13428
13429         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13430
13431 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13432
13433         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13434
13435         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13436         mini.c.
13437
13438         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13439         mini.c.
13440
13441         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13442         returning a vtype in a register.
13443
13444         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13445         here from the arch specific code.
13446
13447         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13448         mini.c.
13449
13450         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13451         (mono_arch_emit_prolog): Increment maximum prolog size.
13452
13453         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13454         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13455
13456         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13457         MonoGenericSharingContext.
13458
13459         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13460         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13461
13462 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13463
13464         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13465         which extract fields out of the runtime generic context.  Full
13466         sharing of the NEWARR opcode.
13467
13468 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13469
13470         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13471         --enable-minimal=ssa.
13472
13473 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13474
13475         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13476         mono_marshal_get_delegate_invoke () signature change.
13477
13478 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13479
13480         * mini.c: Removed the shared context in favor of the generic
13481         sharing context.  Allocate the MonoJitInfo structure with room for
13482         the generic sharing context if it's needed.
13483
13484         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13485         domain-internals.h now.
13486
13487         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13488
13489         * generic-sharing.c: Several changes for working without a shared
13490         context and instead operating on open types instead.
13491
13492 2007-11-12  David S. Miller  <davem@davemloft.net>
13493
13494        * inssel-sparc.brg: Fix double instruction emit.
13495
13496 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13497
13498         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13499         Get/Set/Address methods.
13500         
13501         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13502         mono_marshal_get_delegate_invoke signature change.
13503
13504 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13505
13506         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13507         This can happens with dynamic methods. Fixes the other bug in #322722.
13508
13509 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13510
13511         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13512         BX call sequence.
13513
13514         * mini-arm.c (arm_patch): Implement patching of BX call
13515         sequence. Fixes one of the bugs in #322722.
13516
13517 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13518
13519        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13520        under Linux.  We only need to flush every 32-byte cache line.    
13521
13522 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13523
13524         * mini.c:
13525         move_basic_block_to_end: Add branches when needed, eventually creating
13526         a new BB.
13527         optimize_branches: added a parameter that tells if it's ok to create
13528         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13529         and avoid calling move_basic_block_to_end when it's not ok.
13530         Fixes bug 318677.
13531
13532 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13533
13534         * mini.c: Abort inlining call to InitializeArray if something
13535         looks wrong.  Let the icall handle it, which now has proper safety
13536         checks.
13537
13538 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13539
13540         * mini.c (mono_spill_call): add support for soft-float.
13541
13542         * mini.c (mono_method_to_ir): add support for soft-float
13543         to inlined functions that return float.
13544
13545         * mini.c (mono_method_to_ir): add support for soft-float
13546         to cee_stsfld opcode on float fields.
13547
13548 2007-11-05  Geoff Norton  <gnorton@novell.com>
13549
13550         * mini-x86.h: Fix the structure access for X86 Leopard.
13551
13552
13553 2007-11-05  Martin Baulig  <martin@ximian.com>
13554
13555         * mini-trampolines.c
13556         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13557         after compiling the method to notify the debugger.
13558
13559 2007-11-05  Martin Baulig  <martin@ximian.com>
13560
13561         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13562
13563 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13564
13565         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13566         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13567
13568 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13569
13570         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13571         native-to-managed wrappers.
13572         
13573 2007-11-01  Geoff Norton  <gnorton@novell.com>
13574
13575         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13576         members.
13577
13578 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13579
13580         * mini.c, mini-x86.c: when getting back from unmanaged code
13581         to managed via a marshaled delegate we also need to set the
13582         right domain.
13583
13584 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13585
13586         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13587         for amd64.
13588
13589 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13590
13591         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13592         let the debugger or other external agents to tell the JIT when
13593         a sw breakpoint has been inserted in the code that the JIT needs
13594         to be able to inspect.
13595
13596 2007-10-31  Martin Baulig  <martin@ximian.com>
13597
13598         * debug-debugger.h
13599         (MonoDebuggerInfo): Remove `runtime_class_init'.
13600
13601 2007-10-30  Martin Baulig  <martin@ximian.com>
13602
13603         * debug-mini.h
13604         (mono_debugger_thread_created): Added `MonoThread *' argument.
13605         (mono_debugger_extended_notification): New public method.
13606         (mono_debugger_trampoline_compiled): New public method.
13607
13608         * debug-mini.c
13609         (MonoDebuggerThreadInfo): Added `thread' and
13610         `extended_notifications' fields.
13611
13612         * debug-debugger.c
13613         (debugger_executable_code_buffer): New static variable.
13614
13615         * debug-debugger.h
13616         (MonoDebuggerInfo): Added `executable_code_buffer',
13617         `executable_code_buffer_size', `breakpoint_info_area',
13618         `breakpoint_table' and `breakpoint_table_size'.
13619
13620 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13621
13622         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13623         that IP  either is an unused value or the vtable pointer. IMT 
13624         calls use vtable + offset now. Reduced by almost half the size
13625         of IMT entries.
13626
13627 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13628
13629         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13630         defines to access param registers. Replace long usage with
13631         gsize as sizeof(long) != sizeof(void*) on Win64.
13632
13633         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13634         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13635         instead of non-existant _GetAddressOfReturnAddress.
13636
13637         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13638         param registers. Save/restore %rdi and %rsi in MonoLMF.
13639
13640         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13641         param registers. Modify (throw_exception) signature to take 
13642         %rdi and %rsi on Win64. 
13643
13644         Code is contributed under MIT/X11 license.
13645
13646 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13647
13648         * helpers.c: unlink debugging output files.
13649
13650 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13651
13652         * mini.c: Move mono_create_ftnptr () to object.c.
13653
13654 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13655
13656         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13657         optional. This function can now be used to disassemble code generated
13658         outside the JIT such as trampolines and IMT thunks.
13659
13660         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13661
13662         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13663         vtable pointer from a ldr instruction.
13664
13665         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13666         new IMT call sequence.
13667
13668         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13669         call sequence for interface invocations.
13670
13671         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13672         for imt support. This function is empty since IMT on ARM requires no
13673         special handling on the IR side.
13674
13675         * mini-arm.c (mono_arch_find_imt_method): added, required for
13676         imt support.
13677
13678         * mini-arm.c (mono_arch_find_this_argument): added, required
13679         for imt support.
13680
13681         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13682         a ldr instruction to load a value stored in the code stream.
13683
13684         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13685         for imt support.
13686
13687
13688 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13689
13690         * mini.c (mini_init): Install the jump trampoline callback.
13691
13692 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13693
13694         * mini-trampolines.c: handle synchronized methods with the common
13695         vtable trampoline (bug #335601).
13696
13697 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13698
13699         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13700
13701         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13702         64 bit platforms.
13703
13704         * mini-ia64.h mini-ia64.c: Add support for IMT.
13705
13706         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13707         prolog. Fixes #331958.
13708
13709 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13710
13711         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13712
13713 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13714
13715         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13716         trampoline.
13717
13718 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13719
13720         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13721         trampoline.
13722
13723 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13724
13725         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13726         trampoline.
13727
13728 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13729
13730         * mini-trampolines.c: changed the magic rampoline to understand
13731         the common vtable trampoline method: the method to invoke is
13732         determined by the vtable displacement of the call.
13733
13734 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13735
13736         * mini.c, mini.h: register the common vtable trampoline if the
13737         architecture supports it.
13738
13739 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13740
13741         * cpu-amd64.md: use the correct max length for tls_get.
13742
13743 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13744
13745         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13746         CEE_STELEM_ANY. Fixes #333696.
13747
13748 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13749
13750         * exceptions-x86.c: provide more graceful handling of the case where
13751         we followed a bogus function pointer from managed code (bug #332866).
13752
13753 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13754
13755         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13756         replaces the generic_shared flag and will carry more information
13757         in the future.
13758
13759         * generic-sharing.c: Added mini_type_stack_size() which allows
13760         allows open types if given a generic sharing context.
13761         mini_get_basic_type_from_generic() takes a
13762         MonoGenericSharingContext* instead of a MonoCompile* now.
13763
13764         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13765         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13766         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13767         changes above.  Just passing arguments through to the right
13768         places.
13769
13770 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13771
13772         * mini-arm.c: unify the call emission to emit_code_seq().
13773
13774 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13775
13776         * tramp-arm.c: reduced the trampoline size.
13777
13778 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13779
13780         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13781         variable handling out of arch-specific code.
13782
13783 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13784
13785         * mini-arm.c: implemented fast delegate dispatch.
13786
13787 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13788
13789         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13790         that fp elimination is turned off if the space required by locals is too
13791         big. Fixes #331958.
13792
13793 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13794
13795         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13796         ARM to the new style trampoline.
13797
13798 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13799
13800         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13801
13802         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13803
13804 2007-10-09  Martin Baulig  <martin@ximian.com>
13805
13806         * debug-debugger.h
13807         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13808         `field_info_offset_offset'.     
13809
13810 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
13811
13812         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
13813         removed more internal usage of the r11 register and made it available
13814         to the register allocator.
13815
13816 2007-10-08  Mark Probst  <mark.probst@gmail.com>
13817
13818         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
13819         when sharing generics and treat type variables as references.
13820
13821 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13822
13823         * mini-ppc.c: started removing the internal uses of register r11
13824         to eventually allow the register allocator to manage it as an
13825         additional available register.
13826
13827 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
13828
13829         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
13830
13831 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
13832
13833         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
13834         specific trampolines as they are not performance critical as a jump
13835         target (maybe align as before only for AOT code?). This saves about
13836         200 KB of native code on x86 for monodevelop startup.
13837
13838 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
13839
13840         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
13841         monodevelop startup.
13842
13843 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
13844
13845         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
13846
13847         * mini-sparc.h mini-sparc.c: Implement IMT support.
13848
13849         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
13850         its smaller and doesn't clobber sparc_g1.
13851
13852         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
13853
13854 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
13855
13856         * mini-ppc.c: optimized the size of the IMT thunks a bit.
13857
13858 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
13859
13860         * mini-ppc.c: implemented fast delegate invocation.
13861
13862 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
13863
13864         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
13865
13866 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13867
13868         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
13869         code to the new style trampoline in preparation for IMT support.
13870
13871 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
13872
13873         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
13874         systems already. This also reduces the specific trampiline sizes and
13875         prepares for the use of r12 as the IMT identifier register.
13876
13877 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13878
13879         * mini-mips.h: endianess fix (simplified from a patch by
13880         Thomas Kunze <thommy@tabao.de>, bug #323737).
13881
13882 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
13883
13884         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
13885         to access ucontext fields and enable netbsd support
13886         (partially from Magnus Henoch <mange@freemail.hu>).
13887
13888 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13889
13890         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
13891         use the preprocessor from the CPP env var if it is set.
13892
13893 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
13894
13895         * mini-trampolines.c: fixed an assertion and moved it earlier in the
13896         code, before interface_offset gets used.
13897
13898 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
13899
13900         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
13901         mono_class_setup_vtable () before accessing klass->vtable.
13902
13903 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
13904
13905         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
13906         hackish.
13907
13908 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13909
13910         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
13911         IMT slots (this saves hundreds of KB of memory in programs like
13912         IronPython and Monodevelop).
13913
13914 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
13915
13916         * mini.c: print the delegate counter.
13917
13918 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
13919
13920         * mini-x86.c: make it easier to enable the debugging code for IMT
13921         slots.
13922
13923 2007-09-28  Martin Baulig  <martin@ximian.com>
13924
13925         * debug-debugger.h
13926         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
13927         `mono_method_klass_offset' and `mono_method_token_offset'.
13928
13929 2007-09-20  Mark Probst  <mark.probst@gmail.com>
13930
13931         * mini.c: First generics sharing implementation.  Can only share
13932         in very simple cases.  If sharing doesn't work it falls back to
13933         dedicated compilation.
13934
13935         * mini.h: Flag in MonoCompile to specify whether generic
13936         compilation is shared.  Flags enum for marking which generic inst
13937         of a context is used.  Prototypes for helper functions.
13938
13939         * generic-sharing.c: Helper functions for generic method sharing.
13940
13941         * optflags-def.h: Optimization flag (gshared) for enabling generic
13942         method sharing added.
13943
13944         * Makefile.am: generic-sharing.c added.
13945
13946 2007-09-19 Daniel Nauck <dna@mono-project.de>
13947
13948         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
13949
13950 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
13951         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
13952         fixes bug 325507.
13953
13954 2007-09-19  Martin Baulig  <martin@ximian.com>
13955
13956         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
13957         mono_debug_cleanup() is now part of mono_cleanup().
13958
13959 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
13960
13961         * driver.c (mono_main): Fix a warning.
13962
13963 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
13964
13965         * aot-compiler.c: Optimize various parts when processing large assemblies.
13966         Fixes ##325568.
13967
13968         * mini.c (mono_patch_info_hash): Improve hash function.
13969
13970 2007-09-14  Jonathan Chambers <joncham@gmail.com>
13971
13972         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
13973         
13974         Code is contributed under MIT/X11 license.
13975
13976 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13977
13978         * mini.c (mini_init): Fix a leak.
13979
13980         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
13981
13982 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
13983
13984         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
13985
13986 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
13987
13988         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
13989
13990 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
13991
13992         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
13993         variance tests.
13994
13995         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
13996
13997         * mini.c (handle_alloc): Enable managed allocators in AOT code.
13998
13999         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14000
14001         * aot-runtime.c (decode_patch_info): Ditto.
14002
14003 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14004
14005         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14006         static case. Cache delegates in architecture specific code, 
14007         based on number of parameters.
14008         
14009         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14010         in architecture specific code, based on number of parameters.
14011         
14012         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14013         caching happen in architecture specific code now.
14014         
14015         Code is contributed under MIT/X11 license.
14016
14017 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14018
14019         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14020         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14021         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14022
14023         Code is contributed under MIT/X11 license.
14024
14025 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14026         * mini.c: (mono_thread_abort) Fixed bug #82416.
14027
14028 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14029
14030         * mini.: hook the new managed GC allocation feature into the JIT.
14031
14032 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14033
14034         * mini.c: implementation for the new runtime tls opcode.
14035
14036 2007-09-11  Martin Baulig  <martin@ximian.com>
14037
14038         * debug-debugger.h
14039         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14040         `mono_method_inflated_offset'.
14041
14042 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14043
14044         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14045         async exceptions into a method.
14046
14047         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14048         purpose of testing whenever the unwinder works at every instruction.
14049
14050 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14051
14052         * mini.c: check accessibility of method used in ldftn (fixes
14053         bug #82635).
14054
14055 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14056
14057         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14058
14059         * inssel.brg: Fix a warning.
14060
14061 2007-09-03  Martin Baulig  <martin@ximian.com>
14062
14063         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14064         now takes the `main_method' as argument.
14065
14066 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14067
14068         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14069
14070 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14071
14072         * driver.c: include the cil-coff.h header on Windows.
14073         
14074         Code is contributed under MIT/X11 license.
14075
14076 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14077
14078         * mini.c, driver.c: don't include the cil-coff.h header.
14079
14080 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14081
14082         * mini.c: flag places that needs fixes fo soft-float support.
14083
14084 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14085
14086         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14087         endian systems (partially from Dean Jenkins, bug #81924).
14088
14089 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14090
14091         * mini.c (check_linkdemand): Remove embedded reference object in
14092         call to LinkDemandSecurityException.
14093         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14094         with an IntPtr instead of a reference object.
14095
14096 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14097
14098         * mini.c (handle_initobj): Handle alignment properly.
14099
14100         * inssel.brg (mini_emit_memset): Ditto. 
14101
14102         * inssel.brg (mini_emit_memcpy): Ditto. 
14103
14104         * inssel-sparc.brg: Ditto.              
14105
14106         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14107
14108 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14109
14110         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14111         exceptions raised in unmanaged code. Fixes part of #82594.
14112
14113 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14114
14115         * mini.c (mono_method_to_ir), declsec.c
14116         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14117
14118 2007-08-22  Martin Baulig  <martin@ximian.com>
14119
14120         * debug-mini.h
14121         (MonoDebuggerThreadInfo): New typedef.
14122         (mono_debugger_thread_table): New global variable.
14123         (mono_debugger_thread_created): New public function.
14124         (mono_debugger_thread_cleanup): New public function.
14125
14126         * debug-debugger.h
14127         (MonoDebuggerInfo):
14128         - removed `get_current_thread' and `lookup_assembly'.
14129         - removed `data_table'.
14130         - added `thread_table'.
14131
14132         * mini.c
14133         (mono_thread_start_cb): Call mono_debugger_thread_created().
14134         (mono_thread_attach_cb): Likewise.
14135         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14136         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14137         initial domain.
14138
14139         * driver.c (mono_main): Move mono_debug_init() up, before calling
14140         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14141
14142 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14143
14144         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14145         together when passing several arguments of type double (gives a small
14146         speedup and saves a few bytes of generated code).
14147
14148 2007-08-20  Jb Evain  <jbevain@novell.com>
14149
14150         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14151
14152 2007-08-20  Jb Evain  <jbevain@novell.com>
14153
14154         * mini.c (mono_method_to_ir): throw MethodAccessException
14155         and FieldAccessException instead of InvalidProgramException.
14156
14157 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14158
14159         * mini.c: CoreCLR security checks.
14160
14161         * mini.h: Removed MonoSecurityMode (moved to
14162         metadata/security-manager.h) and mono_security_mode global var
14163         (replaced by set/get functions in security-manager.h).
14164
14165         * driver.c: Added "core-clr-test" security mode for testing.  Used
14166         set-function for setting security mode.
14167
14168 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14169
14170         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14171         the new jit_info_table.
14172
14173         * driver.c: Test code for the new jit_info_table (enabled by the
14174         define MONO_JIT_INFO_TABLE_TEST).
14175
14176 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14177
14178         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14179         detection of call <REG> instruction sequence. Fixes build on freebsd.
14180
14181 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14182
14183         * mini-exceptions.c: Fix a warning.
14184
14185 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14186
14187         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14188         stack overflow handling code on amd64 too.
14189
14190         * mini-exceptions.c (mono_setup_altstack): Make this use 
14191         mono_thread_get_stack_bounds ().
14192
14193         * mini-x86.h: Disable sigaltstack on solaris x86.
14194
14195 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14196
14197         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14198
14199 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14200
14201         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14202
14203 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14204
14205         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14206
14207         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14208
14209 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14210
14211         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14212         due to alignment.
14213
14214 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14215
14216         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14217         to be emitted (bug #82281).
14218
14219 2007-08-01  Martin Baulig  <martin@ximian.com>
14220
14221         Merged the `debugger-dublin' branch.
14222
14223         * debug-debugger.h (MonoDebuggerInfo):
14224         Removed the `old_*' compatibility entries.
14225         Added `debugger_version' and `data_table'.
14226         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14227         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14228
14229         * debug-mini.c
14230         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14231         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14232         instead of a `gconstpointer'.
14233         (mono_debugger_insert_method_breakpoint): Return a
14234         `MonoDebugMethodAddressList *'.
14235
14236 2007-06-28  Martin Baulig  <martin@ximian.com>
14237
14238         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14239
14240 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14241
14242         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14243         __builtin_frame_address () since it is broken on older gcc versions.
14244
14245 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14246
14247         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14248         on the stack overflow handling and made the managed stack overflows
14249         catchable in most cases using soft guard pages.
14250         * exceptions-x86.c: added code to restore the protection in the soft
14251         guard pages at the end of exception handling.
14252
14253 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14254
14255         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14256
14257 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14258
14259         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14260         exception handling.
14261
14262 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14263
14264         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14265         signal handling support until it has been ported to the new mechanism.
14266         * mini.c: fixed stack overflow detection and use the new
14267         architecture code  to handle signals on the altstack.
14268
14269 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14270
14271         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14272         stack overflows on the alt stack.
14273
14274 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14275
14276         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14277         stack overflows on the alt stack.
14278
14279 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14280
14281         * exceptions-ppc.c: cleanup preparing for altstack support.
14282
14283 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14284
14285         * exceptions-arm.c: cleanup preparing for altstack support.
14286
14287 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14288
14289         * mini.c (print_jit_stats): Output hazard pointer stats.
14290
14291 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14292
14293         * driver.c, mini.c: Replaced security mode flags with a single
14294         enum variable.
14295
14296 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14297
14298         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14299
14300 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14301
14302         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14303         (which doesn't do anything yet) for activating Core CLR
14304         (Silverlight) security.
14305
14306 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14307
14308         * mini-codegen.c: work around a possible gcc bug on arm.
14309
14310 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14311
14312         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14313         message for platforms that don't support AOT compilation.
14314
14315 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14316
14317         * mini.h, mini.c, driver.c: temporary smcs hack.
14318
14319 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14320
14321         * mini-arm.h, mini-arm.c: arm EABI fixes.
14322
14323 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14324
14325         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14326         case.
14327
14328         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14329         trampolines taking a method argument.
14330
14331         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14332
14333         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14334         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14335
14336         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14337         JIT compilation throws an exception. Fixes #82050.
14338
14339 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14340
14341         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14342         with the MONO_EXCEPTION_ defines.
14343
14344 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14345
14346         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14347         #82117.
14348         
14349         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14350         the cause of an assertion.
14351
14352 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14353
14354         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14355         removed.
14356
14357 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14358
14359         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14360         assert. Should fix #82103.
14361
14362 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14363
14364         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14365         here too. Fixes #82095.
14366
14367         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14368         addresses.
14369
14370         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14371
14372         * mini-amd64.h: Enable IMT for amd64.
14373         
14374         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14375
14376 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14377
14378         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14379
14380 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14381
14382         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14383         as soon as check_linkdemand sets an exception_type.
14384
14385 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14386
14387         * mini-x86.c: fixed offsets for IMT call sequence.
14388         * mini-x86.h: enable IMT again.
14389
14390 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14391
14392         * trace.c (mono_trace_enter_method): Decode MonoType too.
14393
14394         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14395
14396         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14397
14398         * mini-amd64.c: Add preliminary IMT implementation.
14399         
14400 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14401
14402         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14403         understand the new IMT-base interface invocation (thanks to
14404         Daniel Nauck for the report and the remote debugging session).
14405
14406 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14407
14408         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14409
14410 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14411
14412         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14413
14414 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14415
14416         * mini-trampolines.c: implement AOT IMT support.
14417         * mini-x86.h: enable IMT support for wider testing.
14418
14419 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * inssel.brg (emit_imt_argument): Add aot support here.
14422
14423         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14424
14425 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14426
14427         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14428         of the IMT implementation, partially from massi, with my
14429         implementation of the bsearch sequence. Disabled by default until
14430         the AOT code is implemented.
14431
14432 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14433
14434         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14435
14436         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14437
14438 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14439
14440         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14441         arch-independent IMT JIT code from Massimiliano
14442         Mantione (massi@ximian.com) with small cleanups from me.
14443
14444 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14445
14446         * Makefile.am: fix svn invocation to get the svn revision to be
14447         independent of the local language (build fix).
14448
14449 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14450
14451         * mini.c (inline_method): Reset cfg->exception_type if the
14452         inlining is aborted.  Fixes: 82049.
14453
14454 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14455
14456         * mini.c: remove assert from exception handling code when exception_ptr
14457         is not set.
14458
14459 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14460
14461         * mini.c (mono_codegen): Add an assert.
14462
14463         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14464         enter and leave code.
14465         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14466
14467 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14468
14469         * mini-ppc.c: fixed memory corruption for localloc(0)
14470         (bug #81852).
14471
14472 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14473         
14474         * mini.c: Fix warnings.
14475
14476 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14477
14478         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14479         to emit better double->int conversions.
14480
14481 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14482
14483         * mini.c: the provided Min/Max optimizations are valid for unisgned
14484         ints.
14485
14486 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14487
14488         * mini.c (can_access_method, can_access_field): methods moved to metadata/class.c and renamed to mono_method_can_access_method and mono_method_can_acesss_field
14489
14490 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14491
14492         * mini.c (mono_running_on_valgrind): Add support for reporting the
14493         method and  its boundaries to valgrind.
14494
14495 2007-06-28  Martin Baulig  <martin@ximian.com>
14496
14497         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14498
14499 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14500
14501         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14502
14503         * generic.2.cs: Add new test case.
14504
14505 2007-06-25  Martin Baulig  <martin@ximian.com>
14506
14507         Merged the `debugger-dublin' branch.
14508
14509         * debug-mini.c
14510         (mono_debugger_insert_method_breakpoint): New public method.
14511         (mono_debugger_remove_method_breakpoint): Likewise.
14512         (mono_debugger_check_breakpoints): New static method.
14513         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14514
14515         * debug-debugger.h (MonoDebuggerInfo):
14516         Renamed (to keep backward compatibility in the vtable):
14517         `insert_breakpoint' -> `old_insert_breakpoint'.
14518         `remove_breakpoint' -> `old_remove_breakpoint'.
14519         `create_string' -> `old_create_string'.
14520         `lookup_class' -> `old_lookup_class'.
14521         `lookup_type' -> removed; changed into a dummy field.
14522         `lookup_assembly' -> `old_lookup_assembly'.
14523         Added (same functionality, but different signature):
14524         `create_string', `lookup_class', `lookup_assembly'
14525         Added new:
14526         `get_method_addr_or_bpt', `remove_method_breakpoint',
14527         `runtime_class_init'.
14528
14529         * debug-debugger.c: Merged the `debugger-dublin' branch.
14530
14531 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14532
14533         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14534         well.
14535         (peephole_pass): Likewise.
14536
14537 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14538
14539         * driver.c: hopefully make setaffinity work also for ancient
14540         versions of linux.
14541
14542 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14543
14544         * driver.c : win32 build fix.
14545
14546 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14547
14548         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14549         processor if it is set.
14550
14551 2007-06-21  Martin Baulig  <martin@ximian.com>
14552
14553         * debug-mini.h: New file.
14554
14555         * debug-mini.c
14556         (mono_debugger_insert_breakpoint_full): Moved here from
14557         ../metadata/mono-debug-debugger.c.
14558         (mono_debugger_remove_breakpoint): Likewise.
14559         (mono_debugger_breakpoint_callback): Likewise.
14560
14561 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14562
14563         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14564         changes in MonoGenericClass.
14565
14566 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14567
14568         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14569
14570 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14571
14572         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14573         removal of MonoGenericMethod.
14574
14575 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14576
14577         * mini-exceptions.c: hooks for the exception events profiling API.
14578
14579 2007-06-14  Randolph Chung  <tausq@debian.org>
14580
14581         * Makefile.ma: Add hppa target.
14582         * mini-arch.h: Include mini-hppa.h
14583         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14584         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14585         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14586
14587 2007-06-14  Randolph Chung  <tausq@debian.org>
14588
14589         * inssel.brg: Add rules for "chained" compare-branch operations so that
14590         a single compare op can affect multiple branches.  Adjust cost for
14591         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14592         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14593         cost for some rules so that they can more easily be overridden by
14594         per-arch rules (with fixes from lupus).
14595         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14596
14597 2007-06-13  Randolph Chung  <tausq@debian.org>
14598
14599         * mini-ops.h: Reorder branch ops so that they match the order of the
14600         corresponding CEE_* ops.  The code expects them this way.
14601         Add new ops for HPPA target.
14602         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14603
14604 2007-06-13  Randolph Chung  <tausq@debian.org>
14605
14606         * mini-exceptions.c: Handle cases where the stack grows towards
14607         larger addresses.
14608         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14609
14610 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14611
14612         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14613         counter.
14614         * driver.c: explain where a non-matching corlib is found.
14615
14616 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14617
14618         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14619
14620 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14621
14622         * mini-exceptions.c: Generate a method profile leave event during
14623         an exception to ensure that the profiler gets notified.
14624
14625 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14626
14627         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14628         branch.
14629
14630         * cpu-amd64.md: Add long_and/or/xor opcodes.
14631
14632 2007-06-06  Wade Berrier  <wberrier@novell.com>
14633
14634         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14635         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14636         length of instruction shr_imm (expected 8, got 10)
14637
14638 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14639
14640         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14641
14642 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14643
14644         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14645         MonoInternalHashTable again (fixed bug in the internal hash table
14646         code).
14647
14648 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14649
14650         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14651         Have to figure out what makes it crash the SWF regression.
14652
14653 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14654
14655         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14656
14657 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14658
14659         * mini.c: optimize out the type check when storing null in a
14660         reference array.
14661
14662 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14663
14664         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14665         MonoInternalHashTable.
14666
14667 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14668
14669         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14670         signed integer methods.
14671
14672 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14673
14674         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14675         permanently since the current approach doesn't work.
14676
14677 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14678
14679         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14680         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14681
14682 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14683
14684         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14685         the sreg2==rdx case.
14686         
14687         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14688         account if it contains a rex prefix.
14689         (peephole_pass): Handle OP_FMOVE as well.
14690
14691 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14692
14693         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14694         as it causes regressions.
14695
14696 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14697
14698         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14699         static case as well.
14700
14701         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14702
14703         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14704         (mono_arch_get_this_arg_from_call): Ditto.
14705
14706         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14707
14708         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14709         invoke_impl field.
14710
14711         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14712         (mono_arch_get_this_arg_from_call): Ditto.
14713
14714         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14715         
14716         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14717         try to create optimized invoke code and use that for further invocations. 
14718         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14719
14720         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14721
14722 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14723
14724         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14725         sealed classes or methods.
14726         *devirtualization.cs: tests for the new optimization
14727
14728 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14729
14730         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14731         by the update_volatile () function.
14732
14733 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14734
14735         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14736         require it.
14737
14738         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14739
14740 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14741
14742         * mini.c: Add configure checks for header files.
14743         * mini-x86.c: Add configure checks for header files.
14744         * trace.c: Add configure checks for header files.
14745         * aot-runtime.c: Add configure checks for header files.
14746         * aot-compiler.c: Add configure checks for header files.
14747         * driver.c: Add configure checks for header files.
14748         * mini-codegen.c: Add configure checks for header files.
14749         
14750         Code is contributed under MIT/X11 license.
14751
14752 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14753
14754         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14755         icompare_imm -128 + op_iclt. Fixes #81703.
14756
14757 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14758
14759         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14760
14761 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14762
14763         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14764         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14765         so that all isinst checks now use "interface_bitmap".
14766
14767 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14768
14769         * cpu-amd64.md (jmp): Fix a warning.
14770
14771         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14772
14773         * basic.cs: Add new regression test.
14774
14775         * basic.cs: Remove test which is now in basic-long.cs.
14776
14777         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14778
14779         * basic-long.cs: Add new test.
14780         
14781 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14782
14783         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14784
14785 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14786
14787         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14788
14789         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14790         places.
14791         
14792         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14793         throwing code a bit.
14794
14795         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14796         the exception throwing code a bit.
14797
14798         * mini-x86.c (get_call_info): Allocate result from a mempool.
14799
14800 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14801
14802         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14803
14804         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14805
14806         * mini.h (MonoCompile): Add 'token_info_hash' field.
14807
14808         * mini.c: Save token->method associations during compilation so the AOT 
14809         compiler can use it.
14810         
14811         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
14812         which reference generic classes and methods.
14813
14814 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
14815
14816         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
14817
14818         * aot-compiler.c (compile_method): Fix a typo in a comment.
14819
14820         * aot-runtime.c (decode_cached_class_info): Skip generic types.
14821
14822         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
14823         everything generic.
14824
14825         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
14826
14827 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
14828
14829         * mini.h (MonoCompile): Add 'args' field.
14830
14831         * mini.c (mono_compile_create_vars): Store variables representing the arguments
14832         into cfg->args.
14833
14834         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
14835
14836 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
14837
14838         * mini.c (mono_compile_get_interface_var): Remove this unused function.
14839
14840         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
14841
14842         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
14843         opcodes for some opcodes.
14844
14845         * mini.h *.brg *.c: Use the new opcodes.
14846
14847 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
14848
14849         * mini.h: Bumped aot revision.
14850
14851         * inssel.brg: modified code generation of type checks for interfaces
14852         to use the new "MonoClass.interface_bitmap" instead of the old
14853         "MonoClass.interface_offsets".
14854
14855 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
14856
14857         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
14858
14859 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
14860
14861         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
14862         64 bit platforms.
14863
14864 2007-04-27  Neale Ferguson <neale@sinenomine.net>
14865
14866         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
14867
14868 2007-04-27  Wade Berrier  <wberrier@novell.com>
14869
14870         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
14871         mini.h) to fix build.
14872
14873 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
14874
14875         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
14876         
14877         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
14878         causes the corlib unit tests to fail.
14879
14880 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
14881
14882         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
14883
14884         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
14885
14886         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
14887         opcodes to the comparison relations.
14888
14889         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
14890         opcodes to their types.
14891         
14892         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
14893
14894         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
14895         it in cfg->arch.cinfo.
14896
14897         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
14898
14899         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
14900         cfg->cil_offset_to_bb.
14901
14902 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
14903
14904         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
14905         created becase of initlocals.
14906
14907 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
14908
14909         * mini-alpha.c cpu-alpha.md: More alpha port work from 
14910         Sergey Tikhonov <tsv@solvo.ru>.
14911
14912 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
14913
14914         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
14915
14916 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
14917
14918         * cpu-s390.md (break): Correct the length of break instruction.
14919
14920 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14921
14922         * mini.c: fix a couple of soft-float issues and comments.
14923
14924 2007-04-15  Miguel de Icaza  <miguel@novell.com>
14925
14926         * trace.c (is_filenamechar): - is also a filename char.
14927
14928 2007-04-15  Neale Ferguson <neale@sinenomine.net>
14929
14930         * mini-s390.c: Correct checking for enum type in return value processing.
14931
14932 2007-04-14  Raja R Harinath  <rharinath@novell.com>
14933
14934         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
14935         (version.h): Makefile is in the build directory.
14936
14937 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
14938
14939         * mini-amd64.h: fix for assertion failure on Solaris/amd64
14940
14941 2007-04-11  Martin Baulig  <martin@ximian.com>
14942
14943         * mini.c (can_access_member): Fix handling of generic classes;
14944         fixes #81259.
14945
14946 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
14947
14948         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
14949
14950 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
14951
14952         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
14953
14954 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
14955
14956         * mini-codegen.c: make sure the right spill amount is
14957         used for fp or integer registers (fixes the float_sub_spill() on ppc).
14958
14959 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
14960
14961         * mini-ppc.c: fixes for the fp_branch_nan test.
14962
14963 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
14964
14965         * basic.cs: Comment out new test which still fails on ia64.
14966
14967 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
14968
14969         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
14970
14971 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
14972
14973         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
14974
14975 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
14976
14977         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
14978         on 64 bit machines. Fixes part of #80738.
14979
14980         * basic.cs: Add regression test.
14981
14982 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14983
14984         * inssel.brg basic.cs: Revert previous change to fix build.
14985
14986         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
14987         platforms.
14988         
14989         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
14990
14991         * basic.cs: Add new regression test.
14992
14993 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
14996         many arguments.
14997
14998 2007-03-16  Neale Ferguson <neale@sinenomine.net>
14999
15000         * cpu-s390x.md: Correct length of break instruction.
15001
15002 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15003
15004         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15005         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15006
15007 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15008
15009         * *.c: Begin WIN64 port.
15010         * mini.c:  Use correct register in profiler.
15011         * mini-amd64.c: No inline assembly on Win64.
15012         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15013         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15014         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15015         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15016         mono_arch_ip_from_context for Win64.
15017         
15018         Contributed under MIT/X11 license.
15019
15020 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15021
15022         * exceptions-amd64.c (seh_handler): Ditto.
15023
15024         * exceptions-x86.c (seh_handler): Fix a memory leak.
15025
15026 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15027
15028         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15029         mini-s390x.c: fixed peephole optimizations to deal
15030         correctly with 1 and 2 byte reload avoidance.
15031
15032 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15033
15034         * cpu-s390.md, cpu-s390x.md: update localloc length.
15035
15036 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15037
15038         * cpu-g4.md: added missing descriptions.
15039
15040 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15041
15042         *  Makefile.am: Add support so the tail tests are not executed on
15043         PowerPC as that is a known limitation of the PowerPC port.
15044
15045 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15046
15047         * runmdesc.bat:  Move to msvc directory.
15048         
15049 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15050
15051         * runmdesc.bat:  Run executable that was produced by the current
15052         target and sent via an argument.
15053         
15054 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15055
15056         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15057         #81102.
15058
15059         * generics.2.cs: Add regression test.
15060
15061 2007-03-09  Wade berrier  <wberrier@novell.com>
15062
15063         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15064
15065 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15066
15067         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15068         AOT code depends on this.
15069
15070 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15071
15072         * mini.c: more precise tracking of types in the eval stack
15073         (part of fix for bug #81044).
15074
15075 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15076
15077         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15078
15079         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15080
15081 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15082
15083         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15084
15085         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15086
15087 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15088
15089         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15090         a pointer on 64 bit systems. Fixes #80190.
15091
15092         * iltests.il: Add new regression test.
15093
15094 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15095
15096         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15097
15098 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15099
15100         * trace.c: Remove an erroneous alignemnt check when tracing.
15101           Fixes --trace on OSX86.
15102
15103 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15104
15105         * mini-$(arch).h: initialize SP in context for all the archs.
15106
15107 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15108
15109         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15110         regressions in the thread tests.
15111
15112 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15113
15114         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15115         - fixed implementation of LOCALLOC opcode
15116         - implemented non-un compare for floats
15117         - code cleanup
15118         - implementation of FDIV and CKFINITE opcodes
15119         - fixes for latest mono updates
15120         - additional arch opcodes
15121
15122 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15123
15124         * Makefile.am: simplify and merge rules for cross-compilation.
15125
15126 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15127
15128         * local-propagation.c: Actually *apply* the fix for bug 80591...
15129
15130 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15131
15132         * mini-exceptions.c: backuot part of the last change
15133         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15134
15135 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15136         * inssel.brg: Fix bug 59286.
15137
15138
15139 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15140
15141         * mini-exceptions.c: patch from Zoltan to correctly check for
15142         stack boundaries (using the stack register, not the frame register),
15143         fixes bugs #80724, #79717.
15144
15145 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15146
15147         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15148         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15149
15150         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15151         presence of frame pointer elimination.
15152
15153 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15154         
15155         * mini-x86.h: NetBSD UCONTEX_REG defines.
15156
15157 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15158
15159         * inssel-amd64.brg: Fix amd64 build.
15160
15161 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15162
15163         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15164         on amd64.
15165
15166 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15167
15168         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15169         ends.
15170
15171         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15172
15173 2007-01-30 Mark Mason <mason@broadcom.com>
15174
15175            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15176            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15177            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15178            beginning support for CEE_JMP [not quite working yet]
15179            * tramp-mips.c: LMF handling now works
15180         
15181 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15182
15183         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15184
15185         * mini.h (NULLIFY_INS): New macro.
15186
15187 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15188
15189         * mini.c: statistical profiler fix for windows, patch
15190         from Tor Lillqvist (tml@novell.com).
15191
15192 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15193         * local-propagation.c: Fix bug 80591.
15194
15195 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15196
15197         * Makefile.am: put back the --export-dynamic option as with
15198         the previous gmodule flags (thanks to Robert Jordan).
15199
15200 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15201
15202         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15203
15204         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15205         simplify and speed up the local register allocator. Also rename some fields
15206         like iassign->vassign.
15207         
15208         * regalloc.c: Remove some functions which are no longer used since their
15209         inlined version is in mini-codegen.c.
15210         
15211         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15212
15213         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15214
15215 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15216
15217         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15218         narrowing. Fixes #80622.
15219
15220         * iltests.il: Add new regresssion test. 
15221
15222 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15223
15224         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15225         debug-debugger.c, debug-debugger.h: warning fixes.
15226         * driver.c: updated copyright year and made it fit in one line.
15227
15228 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15229
15230         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15231
15232 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15233
15234         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15235
15236         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15237
15238         * iltests.il: Add new test for bug #80507.
15239
15240 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15241
15242         * mini-arm.h: use soft-float also on vfp for now.
15243
15244 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15245
15246         * mini.c: fix some more soft-float issues.
15247
15248 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15249
15250         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15251
15252 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15253         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15254         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15255         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15256
15257 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15258
15259         * mini-arm.c: typo fix.
15260
15261 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15262
15263         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15264
15265 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15266
15267         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15268         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15269
15270         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15271
15272         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15273
15274         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15275         
15276         * inssel.brg: Fix a warning.
15277
15278         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15279
15280         * abcremoval.c ssa.c ssapre.c: Update after this change.
15281         
15282         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15283
15284         * dominators.c (df_set): Use mono_bitset_union_fast.    
15285
15286 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15287
15288         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15289         mini-codegen.c: reduce relocations and memory usage for the cpu
15290         description.
15291
15292 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15293
15294         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15295
15296         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15297         to reduce their size.
15298
15299 2007-01-19 Mark Mason <mason@broadcom.com>
15300
15301         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15302         * mini-mips.c: more configuration macros, support long conditional branches, additional
15303         asserts, fix epilog instrumentation.
15304         * mini-mips.h: use standard stack walk
15305         * cpu-mips.md: increase size of div, rem and conditional branches
15306         
15307 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15308
15309         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15310         to cpu spec data.
15311
15312 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15313
15314         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15315         (compile_method): Ditto.
15316
15317         * aot-runtime.c (decode_klass_info): Ditto.
15318
15319         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15320         needed by the code generated by inssel.brg. Also fix a warning.
15321
15322 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15323
15324         * mini.c: deal with enums that become genericinsts by
15325         being nested in a generic class (bug #79956).
15326
15327 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15328
15329         * mini.c: match the generic definition to check for
15330         private access with generic types (bug #78431).
15331
15332 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15333
15334         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15335         to make life easier for people cross-compiling that insist on not
15336         using scratchbox.
15337
15338 2007-01-17 Mark Mason <mason@broadcom.com>
15339
15340         * inssel-long.brg: patch to deal with mips missing flags
15341         * inssel-long32-mips.brg: implement overflow checks
15342         * insset-mips.brg: implement overflow checks
15343         * mini-mips.h: implement conditional exception handling
15344         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15345           Remove unused code, minor cleanups.
15346         * exceptions-mips.c: minor cleanups
15347         * mini-ops.h: add mips conditional exception ops
15348         * cpu-mips.md: add mips conditional exception ops
15349
15350         
15351 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15352
15353         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15354         to deal with mips missing of flags.
15355
15356 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15357
15358         * exceptions-ppc.c: execute fault handlers.
15359
15360 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15361
15362         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15363
15364 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15365
15366         * mini.c: handle also floating point values in initialize_array.
15367
15368 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15369
15370         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15371         array initialization and make it conditional on the intrins option.
15372
15373 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15374
15375         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15376         relocations and put the patch info names close to the enum definition.
15377
15378 2007-01-15 Mark Mason <mason@broadcom.com>
15379
15380         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15381
15382 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15383
15384         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15385
15386 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15387
15388         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15389
15390 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15391
15392         * Makefile.am: distribute the mips sources.
15393
15394 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15395
15396         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15397         directly.
15398
15399 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15400
15401         * cpu-x86.md: back out for now as this triggers other regressions.
15402
15403 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15404
15405         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15406         to eax:edx, so ecx can't get allocated to them (bug #80489).
15407
15408 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15409
15410         * mini.c, mini-exceptions.c: enabled running fault handlers
15411         (bug #80469).
15412
15413 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15414
15415         * driver.c: If nothing fail, do not use the string "failed",
15416         because it makes it very annoying to view test result logs on the
15417         web. 
15418
15419 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15420
15421         * debug-debugger.c (mono_debugger_main): Rename "main" to
15422         "main_method" to prevent a warning.
15423
15424         Remove a warning for unused field.
15425
15426 2006-12-28  Martin Baulig  <martin@ximian.com>
15427
15428         * debug-debugger.c
15429         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15430
15431 2006-12-22  Martin Baulig  <martin@ximian.com>
15432
15433         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15434         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15435         seperate `.mdb_debug_info' section, so we can access it from the
15436         debugger even if the binary is stripped.
15437
15438         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15439         from the `.mdb_debug_info' here to prevent the linker from
15440         removing that section.
15441
15442         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15443         mdb-debug-info64.s.
15444
15445 2006-12-19  Robert Jordan  <robertj@gmx.net>
15446
15447         * mini-x86: enable the code to return small structures in
15448         registers for FreeBSD as well. Fixes bug #80278.
15449         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15450
15451 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15452
15453         * mini-x86.c: align the stack when calling the profiler
15454         function instrumenting the prolog (on OSX).
15455
15456 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15457
15458         * mini.c: emit a break opcode where Debugger.Break () is called.
15459
15460 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15461
15462         * mini.c (mono_method_to_ir): Provide useful information on this
15463         assert, to prevent others from debugging like I did.
15464
15465 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15466
15467         * mini.c: enable code which was incorrectly commented
15468         (bug #80235).
15469
15470 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15471
15472         * mini-x86.c: enable on OSX, too, the code to return small
15473         structures in registers.
15474
15475 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15476
15477         * mini-x86.c: remove the use of the dynamic code manager here, too.
15478
15479 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15480
15481         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15482         mono_debugger_create_notification_function() to use
15483         mono_global_codeman_reserve () instead of a dynamic code manager.
15484
15485 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15486
15487         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15488         ves_array_element_address() jit icall and use a generated
15489         managed method instead (which is about 4 times faster for a rank 3
15490         array access).
15491
15492 2006-11-29  Mark Mason  <mason@broadcom.com>
15493
15494         * basic-calls.cs: additional tests for passing
15495         structures as function arguments.
15496
15497 2006-11-29  Mark Mason  <mason@broadcom.com>
15498
15499         * mini-mips.h: disable custom exception handling
15500         * mini-mips.c: throw/rethrow should use jalr to call
15501         exception stubs.  Fixed bug with passing structures
15502         by value. More support for tracing floating point
15503         functions.
15504
15505 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15506
15507         * mini.c: fixed typo in the soft-float ldind.r4 handling
15508         (bug #80086).
15509
15510 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15511
15512         * mini.c, mini.h, driver.c: added --runtime command line
15513         option to select a different runtime than the autodetected one.
15514         * jit.h: added API for embedders to initialize with a specific
15515         runtime version.
15516
15517 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15518
15519         * mini.c: handle also boxing of r4 values (bug #80024).
15520
15521 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15522
15523         * mini-ppc.c: force indirect calls until we reserve
15524         enough address space for all the generated code.
15525
15526 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15527
15528         * exceptions-arm.c: workaround bugs in the libc definition
15529         of struct ucontext.
15530
15531 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15532
15533         * inssel.brg: fixes from me and Mark Mason.
15534
15535 2006-11-23  Dick Porter  <dick@ximian.com>
15536
15537         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15538         semaphore display now we've fixed the initial value
15539
15540 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15541
15542         * inssel.brg: partially revert the last change to fix the build.
15543
15544 2006-11-21  Mark Mason  <mason@broadcom.com>
15545
15546         * inssel.brg: Add and use compare-and-branch macros to support
15547         architectures that do not have condition code registers (ie. MIPS).
15548         * *-mips.{c,brg,md}: Fix copyright statements
15549
15550 2006-11-20  Mark Mason  <mason@broadcom.com>
15551
15552         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15553         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15554         * mini.h: Added declaration for mono_print_ins()
15555         * mini-codegen.c: added ins_spec initializer for MIPS
15556         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15557         vreg to be virtual and hreg to be non-virtual.
15558         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15559         is not yet working/implemented correctly.
15560         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15561         non-static, fixup calls to print_ins() from other parts in the file.
15562
15563 2006-11-20  Mark Mason  <mason@broadcom.com>
15564
15565         * basic-calls.cs: added tests for passing structures as arguments
15566         to calls.
15567
15568 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15569
15570         * inssel-long32.brg: optimize signed division by power of two.
15571
15572 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15573
15574         * mini-arm.c: added support for interworking with thumb code
15575         (mono must be still be built using the ARM instruction encoding).
15576
15577 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15578
15579         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15580         verifier has different rules for it.   Fixes a few verifier issues
15581         in the test suite.
15582
15583         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15584         at the end, so people know what happened.
15585
15586 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15587
15588         * brach-opts.c: in optimize_exception_target() make sure we
15589         are in a catch clause (fixes bug #79871).
15590
15591 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15592
15593         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15594         more soft-float support fixes.
15595
15596 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15597
15598         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15599         that are passed half on the stack and half in registers.
15600
15601 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15602
15603         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15604         more mips integration work from Mark E Mason 
15605         <mark.e.mason@broadcom.com>.
15606
15607 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15608
15609         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15610         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15611         tramp-mips.c: added sources for the mips port, not
15612         integrated in the build yet. Contributed by
15613         Mark E Mason <mark.e.mason@broadcom.com>.
15614
15615 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15616
15617         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15618
15619 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15620
15621         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15622         put the soft-float rules in its own file since it seems to
15623         break s390 compilation.
15624
15625 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15626
15627         * mini-arm.c: fixed wrnings.
15628
15629 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15630
15631         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15632         inssel-arm.brg: ARM support for soft-float.
15633
15634 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15635
15636         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15637         loads and stores of 32 bit fp values.
15638
15639 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15640
15641         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15642
15643         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15644         works. Fixes #79852 and #79463.
15645
15646 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15647
15648         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15649         more soft-float support WIP and fixes.
15650
15651 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15652
15653         * mini-arm.c: some VFP updates.
15654
15655 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15656
15657         * mini-exceptions.c: 0 is a valid local var offset in some
15658         architectures, don't assert (bug #78508).
15659
15660 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15661
15662         * exceptions-arm.c: fixed off by one error in stack walk code.
15663
15664 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15665
15666         * mini.h, mini.c: more precise tracking of type load exceptions.
15667
15668 2006-11-03  Robert Jordan  <robertj@gmx.net>
15669
15670         * Makefile.am: [WIN32] Add monow.exe target.
15671         * driver.c: [WIN32] Don't detach the console when debugging.
15672         Fixes bug #79797.
15673         
15674 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15675
15676         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15677
15678 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15679
15680         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15681
15682         * driver.c (mini_regression): Fix --regression with AOT.
15683
15684         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15685
15686 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15687
15688         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15689
15690         * mini-sparc.h: Don't use sigaction on sparc/linux.
15691
15692         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15693
15694         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15695
15696         * mini-exceptions.c: Add proper include files for getpid ().
15697
15698 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15699
15700         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15701         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15702         method.
15703
15704         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15705         name cache to reduce its size.
15706
15707         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15708
15709 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15710
15711         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15712         the mono_lmf TLS variable.
15713
15714         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15715         trampoline lmf frames.  
15716
15717         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15718
15719 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15720
15721         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15722         the mono_lmf TLS variable.
15723
15724         * mini-exceptions.c: Access the LMF structure through accessors.
15725
15726         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15727         variable instead of in jit_tls->lmf.
15728
15729         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15730         
15731         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15732         trampoline lmf frames.
15733
15734         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15735
15736 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15737
15738        * mini.c trace.c mini-x86.c: Revert these too.
15739         
15740        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15741        signature change.
15742
15743 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15744
15745         * genmdesc.c: removed now dead code.
15746
15747 2006-10-09  Robert Jordan <robertj@gmx.net>
15748
15749         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15750
15751 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15752
15753         * mini.h: do not leave gaps in the opcode values.
15754
15755 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15756
15757         * jit-icalls.h: flag functions as internal here, too.
15758
15759 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15760
15761         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15762         functions with the internal attribute.
15763
15764 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15765
15766         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15767
15768 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15769
15770         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15771         for soft-float.
15772
15773 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15774
15775         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15776         tail calls as on other platforms.
15777
15778         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15779
15780         * iltests.il: Add a few tailcall tests.
15781
15782 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15783
15784         * driver.c: fix loop for old compilers (bug #79521).
15785
15786 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15787
15788         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15789
15790         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15791
15792         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15793         metadata without any code.
15794
15795         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15796         more precise debugging information using gdb.
15797
15798 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15799
15800         * inssel-ia64.brg: Make the helper methods static.
15801
15802 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15803
15804         * inssel-x86.brg: make the helper methods static.
15805
15806 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15807
15808         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15809
15810 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15811
15812         * mini.c: updates for monoburg changes.
15813         * inssel.brg: make a few helper functions static as they should.
15814
15815 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
15816
15817         * Makefile.am: Move mini-codegen.c to common_sources.
15818
15819 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
15822         instructions.
15823         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
15824         mini-ppc.h: port to use the common local register allocator.
15825
15826 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15827
15828         * mini.h: Remove the comment too then.
15829
15830 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
15831
15832         * mini.h: put back backend.data which is to be used shortly and
15833         doesn't increase the size of MonoInst. If any 64 bit arch aligned
15834         pointers on 4 byte boundaries it'd have much bigger issues running
15835         and you can ifdef it out anyway.
15836
15837 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15838
15839         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
15840         MonoInst size by 4 bytes on 64 bit machines.
15841
15842 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
15843
15844         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
15845         replacement with more meaningful field names. Arch maintainers, please
15846         check the assigned names are good enough for your arch.
15847
15848 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
15849
15850         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
15851         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
15852
15853 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
15854
15855         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
15856         relocations and memory requirements, put the optimization flags
15857         definitions in their own file.
15858
15859 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
15860
15861         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
15862
15863         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
15864
15865 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
15866
15867         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
15868
15869 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
15870
15871         * inssel.brg: use the correct function to get the size of an item
15872         in an array, given an element class.
15873         * aot-compiler.c: do not access class->class_size directly.
15874
15875 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
15876
15877         * mini.h, debug-mini.c: added a debugging function to print
15878         info about local variables and arguments in a jitted method.
15879
15880 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
15881
15882         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15883
15884         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
15885
15886 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15887
15888         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
15889         inner and outer loops when passing vtypes.
15890
15891 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
15892
15893         * mini-ppc.c: take into account the cpu errata for cache flushing
15894         which caused some random errors (bug #79381).
15895
15896 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
15897
15898         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
15899         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
15900
15901 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
15902
15903         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
15904         loaded.
15905
15906         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
15907         freebsd ports tree.
15908
15909         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
15910         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
15911
15912         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
15913         displacement.
15914
15915 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
15916
15917         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
15918
15919 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
15920
15921         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
15922         macro does not have to be changed during debugging.
15923
15924         * cpu-alpha.md inssel-alpha.brg mini-alpha.h mini-alpha.c exceptions-alpha.c tramp-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
15925
15926         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
15927
15928         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
15929         
15930         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
15931         MONO_ARCH_NO_EMULATE_MUL is defined.
15932
15933         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
15934
15935         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
15936
15937         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
15938
15939         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
15940         
15941 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
15942
15943         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
15944         stuff to mini-exceptions.c where it is used.
15945
15946         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
15947         setup code, the real one is in mini-exceptions.c.
15948
15949         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
15950         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
15951         some changes from the freebsd ports tree.
15952
15953         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
15954         constants.
15955         
15956         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
15957
15958 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
15959
15960         * mini.c: on Linux, check for /proc to be mounted
15961         (bug# 79351, novell bug#201204).
15962
15963 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
15964
15965         * mini.c: handle cases where pthread_attr_getstack() behaves
15966         incorrectly (bug #78096).
15967
15968 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
15969
15970         * mini-arm.c: support larger stack frames (bug #79272).
15971
15972 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
15973
15974         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
15975
15976         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
15977         tokens.
15978
15979         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
15980         mono_class_from_name () to find a class from its name.
15981
15982         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
15983
15984 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
15985
15986         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
15987
15988 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
15989
15990         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
15991
15992 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
15993
15994         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
15995         callinfo->trampoline.
15996
15997         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
15998         fixes #79271.
15999         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16000         future.
16001
16002 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16003
16004         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16005
16006 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16007
16008         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16009         stats.method_trampolines, it is already done by the generic trampoline code.
16010
16011         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16012         
16013 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16014
16015         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16016
16017         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16018
16019         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16020
16021         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16022         
16023         * mini.c (print_jit_stats): Print new stats.
16024
16025         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16026
16027 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16028
16029         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16030         Address on two dimensional arrays. Fixes #78729.
16031
16032         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16033
16034         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16035         a method.
16036
16037         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16038
16039         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16040         #79130.
16041         
16042         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16043         a race condition.
16044         (mini_get_ldelema_ins): Ditto.
16045
16046 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16047
16048         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16049         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16050         Fixes #79213.
16051
16052 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16053
16054         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16055         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16056
16057         * exceptions-s390x.c: Cosmetic change.
16058
16059         * tramp-s390.c: Fix warning.
16060
16061         * cpu-s390.md: Correct length of mul_imm.
16062
16063 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16064
16065         * aot-compiler.c: added binary writer with ELF backend
16066         implementation (only on Linux/x86 for now).
16067
16068 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16069
16070         * Makefile.am: Don't run net 2.0 AOT tests.
16071
16072         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16073         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16074
16075         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16076
16077 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16078
16079         * aot-compiler.c: simplified and refactored the asm-writing code
16080         to allow different backends.
16081
16082 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16083
16084         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16085
16086         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16087         little. Share patches of type TYPE_FROM_HANDLE as well.
16088
16089         * mini.c (mono_patch_info_equal): New helper function.
16090         (mono_patch_info_hash): Ditto.
16091
16092         * aot-compiler.c (emit_method_code): Fix s390 build.
16093
16094         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16095         is not handled because it is stored as a flag and not as a type ctor. Fixes
16096         #79016.
16097
16098 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16099
16100         * aot-compiler.c: Fix computation of GOT slot statistics.
16101         
16102         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16103         Also remove support for not PIC AOT.
16104
16105         * mini.h: Bump AOT file format version.
16106
16107         * objects.cs: Add a test for #78990.
16108
16109         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16110         (peter.dettman@iinet.net.au). Fixes #79087.
16111
16112         * basic-long.cs: Add a test for the above.
16113
16114 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16115
16116         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16117         
16118         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16119         code somewhat.
16120
16121 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16122
16123         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16124         exceptions.
16125
16126 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16127
16128         * mini.c: Don't verify COM proxy invoke calls
16129         
16130
16131 2006-08-10  Dick Porter  <dick@ximian.com>
16132
16133         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16134         which process is holding semaphores locked.
16135
16136 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16137
16138         * mini-ia64.c mini-amd64.c: Fix #79027.
16139
16140         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16141
16142         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16143
16144         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16145         implicit arguments in a vararg call. Fixes #79027.
16146
16147 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16148
16149         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16150         (mono_get_array_new_va_signature): Ditto.
16151
16152 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16153
16154         * aot-runtime.c: Call init_plt lazily.
16155
16156         * inssel-long.brg: Fix unsigned long->int conversion.
16157
16158         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16159
16160         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16161         that most data is now in the .rss/.data section.
16162
16163 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16164
16165         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16166
16167         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16168
16169         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16170
16171         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16172
16173         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16174         virtual call. Fixes #79010.
16175
16176         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16177         and use the result as the this argument in the real call.
16178
16179         * generics.2.cs: Add a new test for #79010.
16180         
16181 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16182
16183         * mini-x86.c: Fix a warning.
16184
16185         * aot-compiler.c: Add a bunch of statistics.
16186
16187         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16188
16189 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16190
16191         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16192
16193 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16194
16195         * cpu-alpha.md inssel-alpha.brg mini-alpha.h mini-alpha.c exceptions-alpha.c tramp-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16196
16197 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16198
16199         * mini.c (mono_method_to_ir): Obtain the original method in the
16200         CIL stream and use this to perform validation.
16201
16202         Fixed: #78816
16203
16204 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16205
16206         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16207         (mono_arch_call_opcode): Ditto.
16208
16209         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16210         #78826.
16211
16212         * mini.c (mono_patch_info_dup_mp): New helper function.
16213         
16214         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16215         compilation. Fixes #78827.
16216
16217 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16218
16219         * declsec.c: Use original security informations for
16220           MONO_WRAPPER_MANAGED_TO_MANAGED.
16221
16222 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16223
16224         * mini.c: Allow Com Interop methods/classes and
16225         don't verify COM wrapper calls
16226         
16227
16228 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16229
16230         * inssel-long32.brg: Fix long->i4 checked conversion.
16231
16232         * exceptions.cs: Add a test for the above.
16233
16234 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16235
16236         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16237
16238         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16239         leaks.
16240
16241         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16242         #78775.
16243
16244 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16245
16246         * mini.c: Fix solaris/x86 exception handling.
16247
16248         * Makefile.am: Get rid of $(ICU_LIBS).
16249
16250 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16251
16252         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16253         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16254         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16255
16256         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16257
16258         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16259         this function causes a SIGSEGV.
16260
16261 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16262
16263         * mini.c: Remove unused solaris/x86 includes.
16264
16265 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16266
16267         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16268
16269 2006-06-20  Jb Evain  <jbevain@gmail.com>
16270
16271         * cpu-g4.md: fix max length of start_handler instruction.
16272
16273 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16274         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16275
16276 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16277         * ssa.c: Fixed bug 78653 for SSA based deadce.
16278         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16279         MonoInst.flags, used in SSA based deadce.
16280         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16281         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16282
16283 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16284
16285         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16286         it can end up using non executable memory on ppc64 systems
16287         running ppc32 userspace (fix from Johannes Berg).
16288
16289 2006-06-14  Dick Porter  <dick@ximian.com>
16290
16291         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16292         4.1.1
16293
16294 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16295         * mini.c: Made so that inline is locally disabled if it would
16296         trigger a .cctor, because too many apps depend on this behavior
16297         (which seems to be also the one of the MS CLR).
16298
16299 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16300
16301         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16302         No idea why this worked before.
16303
16304         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16305         which branch to outer exception clauses since they could skip the
16306         inner finally clauses. Fixes #78633.
16307
16308         * exceptions.cs: Add a test for the above.
16309
16310         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16311         Fixes #78629.
16312
16313         * iltests.il: Add a test for the above.
16314
16315 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16316
16317         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16318         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16319
16320         * iltests.il: Add a test for the above.
16321
16322 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16323
16324         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16325         
16326         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16327         methods as instrinsics.
16328
16329 2006-06-09  Wade Berrier <wberrier@novell.com>
16330
16331         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16332         (simple-cee-ops.h ssapre-mini-ops.h)
16333
16334 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16335
16336         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16337         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16338         instruction).
16339         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16340         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16341
16342 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16343
16344         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16345
16346 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16347
16348         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16349         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16350         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16351         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16352         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16353         of opcodes, so that bug 78549 should not happen again.
16354         * ssapre.c: Updated to use the renamed files.
16355
16356 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16357
16358         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16359         in OP_ATOMIC_EXCHANGE_I4.
16360
16361 2006-06-07  Wade Berrier <wberrier@novell.com>
16362
16363         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16364         in mono_debugger_create_notification_function)
16365
16366 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16367
16368         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16369         
16370         * mini.c (type_from_stack_type): Disable some changes which do not
16371         seem to work.
16372
16373         * driver.c: Reenable opts.
16374
16375         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16376         of the evaluation stack.
16377         
16378         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16379         evaluation stack trace at entry to the bblock.
16380
16381         * mini.c (merge_stacks): New function to perform verification of stack merges.
16382         Turned off by default.
16383
16384         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16385         STACK_MP.
16386         
16387 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16388
16389         * local-propagation.c: Fixed bug 78549.
16390
16391 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16392
16393         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16394
16395 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16396
16397         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16398         tramp-arm.c, tramp-ia64.c
16399         (mono_debugger_create_notification_function): Update signature to
16400         new signature and use new protocol for creating the notification
16401         function.  
16402
16403         Should fix the build.
16404
16405 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16406
16407         * exceptions-ppc.c (mono_jit_walk_stack)
16408         (ves_icall_get_frame_info): Fix the build
16409
16410 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16411
16412         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16413
16414 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16415
16416         * il2tests.2.il: New file for generics CIL tests.  Add test for
16417         #78019.
16418         * Makefile.am: Update.
16419
16420         Fix #78019
16421         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16422         to nullable types.
16423
16424 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16425
16426         * aliasing.c: Fixed bug 78311.
16427
16428 2006-05-29  Martin Baulig  <martin@ximian.com>
16429
16430         * mini-exceptions.c (mono_find_jit_info): When computing the
16431         native offset, check whether we're actually inside the method's
16432         code; call mono_debug_print_stack_frame() to format the frame.
16433         (ves_icall_System_Exception_get_trace): Call
16434         mono_debug_print_stack_frame() to format the stack frame.
16435         (ves_icall_get_trace): Update to the new debugging API.
16436         (mono_jit_walk_stack_from_ctx): Likewise.
16437         (ves_icall_get_frame_info): Likewise.
16438
16439         * mini.c (get_method_from_ip): Use the new debugging API.
16440         (mono_print_method_from_ip): Likewise.
16441
16442         * exceptions-ppc.c
16443         (mono_jit_walk_stack): Use the new debugging API.
16444         (ves_icall_get_frame_info): Likewise.   
16445
16446 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16447
16448         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16449
16450 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16451
16452         * mini.c: Added "limitator" to inline for debugging.
16453
16454 2006-05-24  Martin Baulig  <martin@ximian.com>
16455
16456         * debug-debugger.c (mono_debugger_init): Create a private,
16457         malloc()-based code manager for the notification function and
16458         intentionally leak it on exit.  This fixes the crash-on-exit race
16459         condition.
16460
16461         * tramp-amd64.c
16462         (mono_debugger_create_notification_function): Added
16463         `MonoCodeManager *' argument.
16464
16465         * tramp-x86.c
16466         (mono_debugger_create_notification_function): Added
16467         `MonoCodeManager *' argument.
16468
16469 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16470
16471         * aliasing.c: Fixed 64 bit issue.
16472         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16473         default since all known bugs are fixed (one more time!).
16474
16475 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16476
16477         * mini.c: write barrier support.
16478
16479 2006-05-23  Martin Baulig  <martin@ximian.com>
16480
16481         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16482         check at the top of the file.
16483
16484 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16485
16486         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16487         reverting changes without reason and without changelog entries.
16488
16489 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16490
16491         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16492         to a few opcodes. Fixes #78439.
16493
16494         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16495         consistency with other archs.
16496
16497         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16498
16499 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16500
16501         * debug-debugger.c: fix the build.
16502
16503 2006-05-17  Martin Baulig  <martin@ximian.com>
16504
16505         * debug-debugger.c
16506         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16507         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16508         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16509         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16510
16511 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16512
16513         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16514
16515 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16516
16517         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16518         MONO_TYPE_GENERICINST.
16519         
16520         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16521         MONO_TYPE_GENERICINST.
16522
16523 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16524
16525         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16526         #78325.
16527
16528 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16529
16530         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16531         mempool.
16532         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16533
16534 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16535
16536         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16537         mono_trace_cleanup ().
16538
16539         * iltests.il: Fix problem with the newly added test.
16540
16541         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16542         due to register constraints, free up the previous hreg. Fixes #78314.
16543
16544         * iltests.il: Add new test for #78314.  
16545
16546         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16547         Interlocked.Add. Fixes #78312.
16548
16549         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16550         
16551 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16552
16553         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16554
16555 2006-05-05  Martin Baulig  <martin@ximian.com>
16556
16557         * debug-mini.c (mono_debug_open_block): New method.
16558
16559         * mini-amd64.c
16560         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16561         the beginning of each basic block.
16562
16563         * mini-x86.c
16564         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16565         the beginning of each basic block.
16566
16567 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16568
16569         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16570         default until I understand why they break the build on amd64.
16571
16572 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16573
16574         * mini.c (mini_cleanup): Call mono_cleanup ().
16575
16576         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16577         errors.
16578
16579 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16580
16581         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16582         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16583         default since all known bugs are fixed, and I cannot reproduce bug
16584         77944... I'm asking Matt Hargett to test again after this commit.
16585
16586 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16587
16588         * mini-codegen.c: Fixed typo that thrashed inline.
16589
16590 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16591
16592         * dominators.c (compute_dominators): Avoid using a worklist since
16593         it is not correct in some cases. Instead, iterate over all bblocks as
16594         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16595
16596 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16597
16598         * mini.c (mono_jit_compile_method_inner): Use
16599         mono_prepare_exception_from_error that resets the value
16600         internally.
16601
16602 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16603
16604         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16605         
16606 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16607
16608         * aliasing.c: Fixed bug 78210.
16609
16610 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16611
16612         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16613         default until all their problems (or the ones they trigger) are fixed.
16614
16615 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16616
16617         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16618         
16619         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16620         as loaded only after resolving patches since that could invoke the same method.
16621
16622         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16623
16624         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16625         functions.
16626
16627         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16628         AOT loader.
16629
16630         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16631         stack.
16632
16633         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16634         made from AOT code through the PLT table.
16635
16636         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16637         holding the plt offset when a call is made to the aot plt trampoline.
16638         
16639 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16640
16641         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16642         amd64 AOT support.
16643
16644         * Makefile.am (common_sources): Fix build breakage.
16645
16646         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16647         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16648         intra-assembly calls if possible.
16649         
16650         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16651
16652         * mini-trampolines.c: Handle PLT entries.
16653
16654         * mini.c: Avoid creating a GOT var for calls.
16655
16656         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16657         from mscorlib code.
16658
16659         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16660         from mscorlib code.
16661
16662         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16663         AOT code.       
16664
16665         * mini.h: Bump AOT file format version.
16666         
16667         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16668         covers more cases.
16669
16670 2006-04-25  Martin Baulig  <martin@ximian.com>
16671
16672         * driver.c: Disable copyprop, consprop and inline when running
16673         inside the debugger.
16674
16675 2006-04-25  Martin Baulig  <martin@ximian.com>
16676
16677         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16678         with `get_current_thread' and added `detach'.
16679         (MonoDebuggerMetadataInfo): Added `thread_size',
16680         `thread_tid_offset', `thread_stack_ptr_offset' and
16681         `thread_end_stack_offset'.
16682
16683 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16684
16685         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16686         aot-runtime.c.
16687
16688         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16689         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16690
16691         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16692
16693         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16694
16695         * aot.c: Add support for ADJUSTED_IID.  
16696
16697 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16698
16699         * aot.c (emit_method_order): Don't align method_order_end.
16700
16701         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16702         the interface ID changes.
16703
16704 2006-04-21  Dick Porter  <dick@ximian.com>
16705
16706         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16707         cleaning up a thread.  Fixes the new part of bug 77470.
16708
16709 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16710
16711         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16712         to managed wrapper.
16713                      
16714 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16715
16716         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16717         
16718         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16719         SIGSEGV. Fixes #78072.
16720
16721         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16722         unregister our SIGABRT handler.
16723
16724 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16725
16726         * mini.c: Disabled inline where it can alter the call stack in a
16727         way visible from managed code.
16728         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16729         default.
16730
16731 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16732
16733         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16734         on other platforms. Fixes #78089.
16735
16736 2006-04-13  Martin Baulig  <martin@ximian.com>
16737
16738         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16739         determine whether we're inside the debugger.
16740
16741         * debug-debugger.h
16742         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16743
16744 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16745
16746         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16747         handler clauses. Fixes #78024.
16748
16749         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16750         in the CALL_MEMBASE opcodes. Fixes #78088.
16751         (mono_arch_get_vcall_slot_addr): Ditto.
16752
16753 2006-04-10  Martin Baulig  <martin@ximian.com>
16754
16755         * debug-debugger.c: The thread handling code has now been moved
16756         into ../metadata/threads.c.
16757
16758 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16759
16760         * driver.c (mono_main): Fix --with-gc=none build.
16761
16762         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16763         (mono_spillvar_offset_float): Ditto.
16764         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16765         hreg, not when its !global, since on ia64, there is a third category: stacked
16766         registers.      
16767
16768 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16769
16770         * mini.c: set MonoInst->klass for load field address and a few other
16771         places.
16772
16773 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16774
16775         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16776
16777 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16778
16779         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16780         the branch opt changes.
16781
16782 2006-04-06  Dick Porter  <dick@ximian.com>
16783
16784         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16785         
16786         * wapihandles.c (mini_wapi_seminfo): 
16787         * driver.c (mono_main): Add semaphore info option
16788
16789 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16790
16791         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16792         branch optimization changes. Fixes #78009.
16793
16794 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16795
16796         * mini.c: ignore accessibility of methods in managed->native wrappers.
16797
16798 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16799
16800         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16801         
16802         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16803
16804 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16805
16806         * mini.c: Modify the branch optimizations to preserve the invariant that
16807         the entries inside the in_bb and out_bb arrays are unique.
16808         (mono_unlink_bblock): Avoid creation of new arrays.
16809
16810 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
16811
16812         * mini.c (mono_unlink_bblock): Fix regression caused by previous
16813         change (#77992).
16814
16815 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
16816
16817         * mini.c (optimize_branches): Remove the "optimizations" in
16818         the cbranch1/cbranch2 -> branch cases which were causing several
16819         problems in the past. Fixes #77986.
16820
16821 2006-03-31  Chris Toshok  <toshok@ximian.com>
16822
16823         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
16824         default optimizations :(
16825
16826 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
16827
16828         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
16829         branch.
16830
16831 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
16832
16833         * local-propagation.c: Added comments to structs and removed
16834         "Mono" prefixes from local tree mover types.
16835
16836 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
16837
16838         * Makefile.am (arch_sources): Define this for each architecture so 
16839         libmono_la_SOURCES is defined in one place.
16840
16841 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
16842
16843         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
16844         from handles/.
16845
16846 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
16847
16848         * driver.c: print the GC name supplied by configure.
16849
16850 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
16851
16852         * local-propagation.c: Added tree mover, and moved here all the
16853         local propagation code from mini.c
16854         * mini.c: Added support for treeprop, and moved all the local
16855         propagation code to local-propagation.c
16856         * mini.h: Added support for treeprop
16857         * driver.c: Added support for treeprop, enabled consprop, copyprop,
16858         treeprop, inline and deadce by default
16859         * Makefile.am: Added local-propagation.c
16860
16861 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
16862
16863         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
16864
16865 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
16866
16867         * debug-debugger.c: make it compile without the Boehm GC.
16868
16869 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
16870
16871         * mini.c: fixed issue with mismatch when an icall is registered
16872         with multiple names but same address.
16873
16874 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
16875
16876         * declsec.c, mini-exceptions.c: use write barrier to set reference
16877         fields of managed objects.
16878
16879 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16880
16881         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
16882         (can_access_internals): Fix a warning.
16883
16884         * mini.c (print_method_from_ip): Rename this to 
16885         mono_print_method_from_ip so it gets exported.
16886
16887         * trace.c: Deal with strings inside StringBuilder's containing garbage
16888         and fix memory leaks. Fixes #77848.
16889
16890 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
16891
16892         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
16893         fixes #77787.
16894
16895 2006-03-16 Neale Ferguson <neale@sinenomine.net>
16896         
16897         * mini-s390.c: Remove OP_X86_TEST_NULL.
16898
16899 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
16900
16901         * mini.c: use the correct GetHashCode() for the moving collector.
16902
16903 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
16904
16905         * liveness.c: Regalloc spill cost tuning.
16906
16907 2006-03-15 Neale Ferguson <neale@sinenomine.net>
16908         
16909         * mini-s390x.h: Correct S390_LONG macro.
16910
16911         * mini-s390x.c: Cleanup unused code.
16912
16913 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
16914
16915         * jit-icalls.h: New file.
16916
16917         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
16918         icalls and include that instead of including jit-icalls.c.
16919
16920         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
16921         OP_X86 opcodes.
16922
16923 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
16924
16925         * mini.c: when checking for member accessibility, also check for
16926         friend assemblies and for explicit interface implementations.
16927
16928 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
16929
16930         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
16931
16932         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
16933
16934         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16935         common cases are done first.    
16936
16937         * mini-ops.h: Only define platform specific opcodes on the given platform.
16938
16939         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
16940         branch.
16941         
16942 2006-03-14  Martin Baulig  <martin@ximian.com>
16943
16944         Revert Paolo's change from r57348:
16945
16946         * mini.h: don't use gboolean for bitfields.
16947         * mini.c: verifier changes for fields and methods accessibility.
16948
16949 2006-03-13  Neale Ferguson <neale@sinenomine.net>
16950
16951         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
16952
16953         * mini-s390x.c: Fix conv_r_un.
16954
16955         * cpu-s390, cpu-s390x.md: Fix lengths.
16956
16957 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
16958
16959         * mini.c: nested types have access to all the nesting
16960         levels, not just the enclosing types.
16961
16962 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
16963
16964         * mini.c: added a few more verification checks.
16965
16966 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
16967
16968         * liveness.c: Merge optimizations from the linear-il branch.
16969
16970 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16971
16972         * mini-ia64.c (emit_call): Add a comment.
16973
16974         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
16975
16976         * tramp-ia64.c: Fix some warnings.
16977
16978 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
16979
16980         * mini.h: don't use gboolean for bitfields.
16981         * mini.c: verifier changes for fields and methods accessibility.
16982
16983 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
16984
16985         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
16986         lazy icall wrapper changes.
16987
16988         * dominators.c: Replace all the dominator algorithms with faster
16989         ones from the linear-il branch.
16990
16991         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
16992         the mempool.
16993
16994         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
16995         common cases are done first.
16996
16997         * mini-amd64.c: Fix some warnings.
16998
16999         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17000         from the mempool.
17001
17002         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17003         added code.
17004
17005         * mini.h: Add a missing prototype.
17006
17007 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17008
17009         * mini.c: Compile icall wrappers lazily.
17010
17011         * mini-codegen.c: Use printf instead of g_print since its much faster.
17012
17013         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17014         function.
17015
17016         * mini.c (optimize_branches): Cache the negative result from 
17017         remove_block_if_useless ().
17018
17019         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17020         Also fix some bblock linking issues.
17021
17022         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17023         assembly files.
17024
17025         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17026
17027         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17028         accessed fields first, for better cache behavior.
17029         
17030 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17031
17032         * mini.c: speedup IList<T> array accesses.
17033
17034 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17035
17036         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17037         inline_costs counter. Fixes #77190.
17038
17039 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17040
17041         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17042         trace messages. Fixes #77706.
17043
17044 2006-03-04  Martin Baulig  <martin@ximian.com>
17045
17046         * tramp-amd64.c, tramp-x86.c
17047         (mono_debugger_create_notification_function): Use
17048         mono_global_codeman_reserve() to allocate a buffer at runtime and
17049         return it.
17050
17051         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17052
17053         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17054         notification function at runtime and then call `initialize' in the
17055         `MONO_DEBUGGER__debugger_info' vtable.
17056
17057 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17058
17059         * iltests.il: Fix a visibility problem.
17060
17061 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17062
17063         * driver.c, mini.c: add hooks for the counters API.
17064
17065 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17066
17067         * driver.c: show disabled options.
17068
17069 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17070
17071         * linear-scan.c: always use cost-driven selection.
17072
17073 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17074
17075         * jit-icalls.c (helper_compile_generic_method): Revert change from
17076         2006-02-24.
17077
17078 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17079
17080         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17081
17082 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17083
17084         * inssel.brg: style fixes, mostly to force the updated monoburg
17085         to run for people using svn.
17086
17087 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17088
17089         * mini.c: match monoburg changes.
17090
17091 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17092
17093         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17094         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17095         declaration in the header file.
17096
17097 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17098
17099         * helpers.c: reduce relocations and mem usage.
17100
17101 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17102
17103         * mini.h, mini-codegen.c: disable logging features if
17104         requested by configure.
17105
17106 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17107
17108         * mini.c: tiny verifier changes.
17109
17110 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17111
17112         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17113         cpu-pentium.md: stack alignment changes for osx/x86,
17114         partially from Geoff Norton <gnorton@customerdna.com>.
17115
17116 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17117
17118         * jit-icalls.c (helper_compile_generic_method): Update to changes
17119         in metadata/class.c.
17120
17121 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17122         
17123         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17124         
17125         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17126         interface calls with large offsets.
17127
17128 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17129
17130         * jit-icalls.c (helper_compile_generic_method): Document the
17131         special-case we depend on so that we can inflate the method twice
17132         with the same context with no bad side-effects.
17133
17134 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17135
17136         * mini-x86.c, mini-amd64.c: fix for case when xen support
17137         is disabled.
17138
17139 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17140
17141         * mini-x86.c, mini-amd64.c: generate code to access tls items
17142         in a faster way for Xen systems.
17143
17144 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17145
17146         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17147         updates and compilation fixes for the OSX/x86 port, mostly from
17148         Geoff Norton <gnorton@customerdna.com>.
17149
17150 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17151
17152         * inssel.brg: faster interface call implementation
17153         to sync with the interface_offsets MonoVTable changes.
17154
17155 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17156
17157         * mini.c: more verification checks.
17158
17159 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17160
17161         * mini.c: added a few more verification checks.
17162
17163 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17164
17165         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17166         facility on the processor and use it if available.
17167
17168 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17169
17170         * driver.c, aot.c, mini.c: throw exception if the IL code is
17171         invalid or unverifiable.
17172
17173 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17174
17175         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17176         m.StructField.
17177
17178 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17179
17180         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17181
17182 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17183
17184         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17185         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17186         handling of instantiated generic valuetypes.
17187
17188 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17189
17190         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17191         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17192         instead.
17193
17194         * generics.2.cs: Revert the nullable reftypes tests.
17195
17196 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17197
17198         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17199         using __builtin_frame_address (1) as it doesn't work in the presence
17200         of optimizations. Hopefully fixes #77273.
17201
17202         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17203         -> generics.cs change as it doesn't work with some automake versions.
17204
17205 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17206
17207         * mini.c: handle systems that sue a different way to
17208         retrieve the stack address of the current thread.
17209
17210 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17211
17212         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17213         it specially in the makefile.
17214
17215         * generics.2.cs: Add tests for nullable reference types.
17216
17217 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17218
17219         * mini.c: always handle the case when mono_jit_init()
17220         is called in a thread different from the main thread,
17221         confusing libgc (bug #77309).
17222
17223 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17224
17225         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17226
17227 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17228
17229         * mini.c: change optimize_branches () to use a single loop
17230         and introduce a new optimization to simplify some range checks.
17231
17232 2006-02-03  Martin Baulig  <martin@ximian.com>
17233
17234         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17235         and merged with debugger_thread_manager_add_thread().
17236         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17237         inform the debugger about the main thread.
17238
17239 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17240
17241         * basic.cs: Add test for div.un/rem.un constant folding.
17242
17243 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17244
17245         * cpu-s390x.md: correct int_xor_imm length
17246
17247 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17248
17249         * generics.2.cs: New test for #77442.
17250
17251         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17252         #77442.
17253
17254 2006-02-02  Martin Baulig  <martin@ximian.com>
17255
17256         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17257         <mono/metadata/mono-debug-debugger.h>   
17258
17259         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17260
17261 2006-02-02  Martin Baulig  <martin@ximian.com>
17262
17263         * debug-debugger.h: New header file for debug-debugger.c.
17264
17265         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17266         function is a separate thread anymore; add support for attaching.
17267
17268 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17269
17270         * tramp-x86.c: Fix a warning.
17271
17272 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17273
17274         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17275         on very large methods.
17276
17277         * aot.c (load_patch_info): Fix a warning.
17278
17279 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17280
17281         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17282         mini-ops.h: alu membase optimizations.
17283
17284 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17285
17286         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17287         to speedup StringBuilder.
17288
17289 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17290
17291         * dominators.c (mono_compute_natural_loops): Fix detection of
17292         loop body start blocks.
17293
17294         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17295
17296 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17297
17298         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17299         #75145.
17300
17301 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17302
17303         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17304
17305 2006-01-25  Martin Baulig  <martin@ximian.com>
17306
17307         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17308         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17309         started to cleanup this file a little bit.
17310
17311 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17312
17313         * mini.c: optimize a codepath frequently happening in generics code.
17314
17315 2006-01-23  Martin Baulig  <martin@ximian.com>
17316
17317         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17318
17319         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17320         functions directly.
17321
17322         * driver.c: debug-debugger.c is only available if
17323         `MONO_DEBUGGER_SUPPORTED' is defined.   
17324
17325 2006-01-23  Martin Baulig  <martin@ximian.com>
17326
17327         * debug-debugger.c: Only enable this on platforms where the Mono
17328         Debugger is working (x86 and x86_64).
17329
17330 2006-01-21  Martin Baulig  <martin@ximian.com>
17331
17332         The Mono Debugger is now using the normal `mono' instead of the
17333         `mono-debugger-mini-wrapper' when executing managed code.
17334
17335         * debug-debugger.c: New file; previously known as
17336         debugger/wrapper/wrapper.c.
17337
17338         * debug-mini.c (mono_init_debugger): Removed.
17339
17340         * driver.c (mono_main): Added new `--inside-mdb' command line
17341         argument which is used when running inside the debugger.
17342
17343 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17344
17345         * liveness.c (mono_analyze_liveness): Remove some unused data
17346         structures.
17347
17348 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17349
17350         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17351
17352 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17353
17354         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17355         depends on implementation details of monobitset.
17356
17357         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17358         Fixes #77271.
17359
17360 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17361
17362         * liveness.c: Update after monobitset changes.
17363
17364 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17365
17366         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17367
17368 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17369
17370         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17371
17372         * mini-s390x.c: Remove warning messages.
17373
17374 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17375
17376         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17377
17378 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17379
17380         * generics.2.cs: Add ldelem/stelem_any test.
17381
17382 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17383
17384         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17385
17386 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17387
17388         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17389         
17390 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17391
17392         * generics.2.cs: Reenable vtype tests.
17393
17394         * inssel-x86.brg: Remove an icorrect valuetype rule.
17395
17396 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17397
17398         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17399         initial support for OP_ABS.
17400
17401 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17402
17403         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17404
17405 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17406
17407         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17408         conversion and implement LADD/LSUB.
17409
17410         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17411         architectures.
17412
17413 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17414
17415         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17416
17417         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17418         architectures.
17419
17420 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17421
17422         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17423         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17424         (stack walk problem).
17425
17426 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17427
17428         * aot.c (mono_aot_load_method): Fix a warning.
17429
17430 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17431
17432         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17433
17434 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17435
17436         * iltests.il: Add test for #77148.
17437
17438         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17439         #77148.
17440
17441 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17442
17443         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17444
17445 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17446
17447         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17448         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17449
17450         * basic-long.cs: Add lconv-to-r4/r8 tests.
17451
17452 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17453
17454         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17455
17456         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17457         here as on other archs.
17458
17459 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17460
17461         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17462
17463 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17464
17465         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17466         
17467         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17468
17469         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17470         instrument_prolog; Add memory_barrier instruction.
17471
17472 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17473
17474         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17475
17476 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17477
17478         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17479
17480         * aliasing.c inssel.brg: Fix warnings.
17481
17482         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17483         could skip initialization of some parts of memory.
17484
17485         * mini.c mini-ia64.c: Fix warnings.
17486
17487         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17488
17489 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17490
17491         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17492         a crash seen on sparc.
17493
17494         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17495         
17496         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17497
17498 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17499
17500         * mini-ops.h: Add s390_backchain instruction
17501
17502         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17503
17504         * cpu-s390.md: Add s390_backchain instruction
17505
17506         * mini-s390.c: Significant ABI changes
17507
17508         * mini-s390.h: Cater for zero length structures
17509
17510 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17511
17512         * mini-s390.c: ABI fixes
17513
17514         * inssel-s390.brg: Remove debug statements
17515
17516         * cpu-s390.md: Fix length of ATOMIC_xx operations
17517
17518 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17519
17520         * basic-float.cs: Add float<->long conversion tests.
17521
17522 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17523
17524         * mini-s390.c: Fix LOCALLOC processing.
17525
17526         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17527
17528 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17529
17530         * iltests.il: Add tests for some opcodes not covered by the other
17531         tests.
17532
17533 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17534
17535         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17536         register loading for Tail processing; Correct trace output.
17537
17538         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17539
17540         * cpu-s390.md: Correct size of jmp instruction. 
17541
17542 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17543
17544         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17545
17546 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17547
17548         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17549           Bring s390 up to current level.
17550
17551 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17552
17553         * generics.2.cs: Disable the newly added tests as they do not work yet.
17554         
17555         * generics.2.cs: Add valuetype tests.
17556
17557 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17558
17559         * basic-long.cs: Add i4->u8 test.
17560
17561         * objects.cs: Add tests for JIT intrinsic.
17562
17563         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17564         optimizations lost by a mistake.
17565
17566 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17567
17568         * basic-long.cs: Remove a test moved to objects.cs.
17569
17570         * arrays.cs: Add more array tests.
17571
17572 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17573
17574         * arrays.cs: Add new tests for multi-dimensional arrays.
17575
17576 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17577
17578         * Makefile.am (test_sources2): Add generics.2.cs.
17579         (EXTRA_DIST): Add test_sources2.
17580
17581 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17582
17583         Support for boxing and unboxing nullable types as well as the
17584         isinst operation on nullables, per the CLI ammendment.
17585
17586         * inssel.brg (CEE_ISINST): Special case for nullable
17587
17588         * mini.c (handle_unbox_nullable): new method
17589         (handle_box): Special case for nullable types
17590         (mono_method_to_ir): Call handle_unbox_nullable in correct
17591         places.
17592
17593         * generics.2.cs: New test suite
17594
17595         * Makefile.am: Support for regression tests with generics.
17596
17597 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17598
17599         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17600         allocated to registers. Fixes #76800.
17601
17602 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17603
17604         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17605
17606 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17607
17608         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17609         of platforms.
17610
17611 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17612
17613         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17614         objects.cs.
17615
17616         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17617         
17618         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17619 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17620
17621         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17622         single precision before storing to a single precision location.
17623
17624 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17625
17626         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17627
17628 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17629
17630         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17631         correct files.
17632
17633         * basic.cs: Remove test_0_byte_compares test which was moved to
17634         objects.cs a long time ago.
17635
17636 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17637
17638         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17639
17640 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17641
17642         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17643         handlers are called.
17644
17645         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17646         throwing code.
17647
17648          * mini-ia64.c: Add support for the throw->branch exception 
17649         optimization.   
17650
17651         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17652
17653 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17654
17655         * mini.c: Enabled "fastpath" deadce :-)
17656         
17657 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17658
17659         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17660         alias analysis pass to support it.
17661         * mini.h: Likewise.
17662         * ssa.c: Likewise.
17663         * liveness.c: Likewise (liveness computation can use aliasing
17664         information to be more accurate).
17665         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17666         moreover made so that "--compile-all" uses the given optimization
17667         flags and not the default ones.
17668         * aliasing.c: Alias analysis (new file).
17669         * aliasing.h: Likewise.
17670         * Makefile.am: added "aliasing.c" and "aliasing.h".
17671         
17672 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17673
17674         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17675         OP_L opcodes.
17676
17677 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17678
17679         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17680         fp >= end_of_stack exit condition, as it is not needed, and it might
17681         become true for fp eliminated frames.
17682
17683 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17684
17685         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17686         coded offsets.
17687
17688 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17689
17690         * mini-arm.c: fixed alignment of doubles/longs to match
17691         the C ABI (bug #76635).
17692
17693 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17694
17695         * aot.c: fix compilation with --enable-minimal=aot.
17696
17697 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17698
17699         * mini-arm.c: fixed compatibility with the new
17700         floating point emulator package for compares.
17701
17702 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17703
17704         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17705
17706 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17707
17708         * mini-exceptions.c (print_stack_frame): Output to stderr.
17709         (mono_handle_native_sigsegv): Ditto.
17710
17711 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17712
17713         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17714         OP_LCONV_TO_OVF_I implementation.
17715
17716         * mini-amd64.c: Add support for the throw->branch exception 
17717         optimization.
17718
17719         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17720         when the catch clause catches a more general exception, i.e. Object.
17721
17722 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17723
17724         * cpu-ia64.md: Remove unused opcodes.
17725
17726         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17727         specific defines for architectures defining USE_SIGACTION.
17728
17729         * mini-ia64.c: Fix some warnings.
17730
17731         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17732         version seemed to skip a frame.
17733
17734 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17735
17736         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17737         only calls which are made to native code use this flag.
17738
17739 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17740
17741         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17742         varargs methods as well.
17743         
17744         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17745         which have save_lmf set. Reorganize methods prologs a bit.
17746
17747         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17748         debugger to the proper place.
17749
17750 2005-10-29  Martin Baulig  <martin@ximian.com>
17751
17752         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17753         when running inside the debugger until the debugger has support
17754         for it.
17755
17756 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17757
17758         * mini.h: Fix a warning.
17759
17760 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17761
17762         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17763         we expose publicly, this returns the string.
17764
17765 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17766
17767         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17768         with fp elimination.
17769
17770 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17771
17772         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17773         native stacktrace using the glibc 'backtrace' function if available.
17774
17775 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17776
17777         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17778
17779         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17780         handle SIGSEGVs received while in native code.
17781
17782         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17783         code, call mono_handle_native_sigsegv which will abort the runtime
17784         after printing some diagnostics, instead of converting it into a
17785         confusing NullReferenceException.
17786
17787 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17788
17789         * cpu-pentium.md: Remove unused opcodes.
17790
17791 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17792
17793         * mini-amd64.h (MonoLMF): Add rsp field.
17794
17795         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17796         the lmf too.
17797
17798 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17799
17800         * mini-codegen.c (get_register_spilling): Fix some warnings.
17801
17802 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17803
17804         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17805         elimination during exception handling. Enable fp elimination by
17806         default.
17807
17808         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17809         elimination.
17810
17811 2005-10-16  Martin Baulig  <martin@ximian.com>
17812
17813         * mini-exceptions.c
17814         (mono_debugger_run_finally): New public method for the debugger.
17815
17816 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
17817
17818         * debug-mini.c (mono_debug_init_method): Fix warning.
17819
17820         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
17821         the 'exname' parameter const to fix some warnings.
17822
17823 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
17824
17825         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
17826         introduced by the previous patch.
17827
17828 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
17829
17830         * basic-float.cs: Add test for precision of float arithmetic.
17831
17832         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
17833         when loading/storing single values from/to memory.
17834
17835         * mini.c (mono_jit_compile_method_with_opt): Create the function
17836         pointers in the correct domain.
17837
17838 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
17839
17840         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
17841         introduced by previous patch.
17842         
17843         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
17844         when out_filter_idx is NULL.
17845
17846         * mini-exceptions.c: Don't run filter clauses twice during exception
17847         handling. Fixes #75755.
17848
17849 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
17850
17851         * aot.c: Add support for ldflda wrappers.
17852
17853         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
17854         #75902.
17855
17856 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
17857
17858         * mini.c, mini.h: do not consider exception handlers blocks when
17859         setting up interface variables.
17860
17861 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
17862
17863         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
17864
17865 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
17866
17867         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
17868         causes a regression.
17869
17870         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
17871
17872 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
17873
17874         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
17875         of the OP_P definitions.
17876
17877         * TODO: Add a proposal for dealing with the CEE/OP mess.
17878
17879         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
17880         optimizations from the x86 port.
17881
17882         * cpu-amd64.md: Ditto.
17883
17884         * basic.cs basic-long.cs: Add tests.
17885
17886 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
17887
17888         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
17889         Patrik Torstensson's implementation of my exception-handling
17890         optimization idea, when the exception object is not used
17891         (bug #62150).
17892
17893 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
17894
17895         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
17896         of the mul_imm optimizations from the old jit.
17897
17898 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
17899
17900         * mini.c, liveness.c: patch by Patrik Torstensson and
17901         Zoltan Varga to improve performance in methods with
17902         exception clauses.
17903
17904 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
17905
17906         * driver.c: Remove 'Globalization' entry from --version.
17907
17908 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
17909
17910         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
17911         there is a profiler interested in JIT events.
17912
17913         * aot.c: Load profile files produced by the AOT profiling module, and
17914         reorder methods based on the profiling info. Add a 'method_order' table
17915         to the AOT file to make mono_aot_find_jit_info work with the reordered
17916         methods.
17917
17918         * mini.h: Bump AOT file version info.
17919
17920 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
17921
17922         * mini-arm.h: work around what looks like a gcc bug when optimizations
17923         are enabled.
17924
17925 2005-09-28  Raja R Harinath  <rharinath@novell.com>
17926
17927         * Makefile.am (AM_CFLAGS): Don't use += to append inside
17928         conditionals.  Use ...
17929         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
17930
17931 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
17932
17933         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
17934         to determine the amount of memory to copy when passing valuetypes.
17935
17936         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
17937         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
17938
17939 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
17940
17941         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
17942         information about aot.
17943
17944 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
17945
17946         * *.c: Replace the use of {Enter,Leave}CriticalSection with
17947         macros. This will allow a deadlock debugger to easily be plugged
17948         in.
17949
17950 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
17951
17952         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
17953
17954 2005-09-27  Raja R Harinath  <rharinath@novell.com>
17955
17956         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
17957         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
17958         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
17959         ($(arch_built)) [CROSS_COMPILING]: Error out.
17960
17961 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
17962
17963         * aot.c: Add support for the no_special_static flag for classes.
17964
17965 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17966
17967         * Reapply reverted patches.
17968
17969         * *: Revert r50174 as well.
17970
17971         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
17972
17973 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
17974
17975         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
17976
17977 2005-09-23  Miguel de Icaza  <miguel@novell.com>
17978
17979         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
17980         part of the SIG_HANDLER_SIGNATURE.  
17981
17982 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
17983
17984         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
17985         statistics.
17986
17987         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
17988         introduced by previous patch.
17989
17990 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
17991
17992         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
17993         saved registers too.
17994
17995         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
17996         upon the information returned by get_call_info ().
17997         
17998         * mini-x86.c (add_float): Fix stack size calculation.
17999         (mono_arch_call_opcode): Rewrite this so it works based up the
18000         information returned by get_call_info ().
18001         (mono_arch_get_this_vret_args): Ditto.
18002
18003 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18004
18005         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18006         in cinfo to determine the registers which need to be used.
18007
18008 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18009
18010         * driver.c (mono_main): Add --server and --desktop flags. 
18011
18012 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18013
18014         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18015         registers as global registers.
18016
18017         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18018         longer needed with the new register allocator.
18019
18020         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18021
18022         * cpu-ia64.md: Remove unused opcodes.
18023         
18024         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18025         
18026 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18027
18028         * cpu-amd64.md: Remove unused opcodes.
18029
18030         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18031         needed with the new register allocator.
18032
18033         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18034         reg-reg moves.
18035
18036 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18037
18038         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18039
18040 2005-09-16  Martin Baulig  <martin@ximian.com>
18041
18042         * exceptions-amd64.c
18043         (throw_exception): Don't call mono_debugger_throw_exception() if
18044         we're a rethrow - see the FIXME in the code.
18045
18046 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18047
18048         * mini.c (mono_init_exceptions): This only works on some architectures.
18049         
18050 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18051
18052         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18053         on ia64.
18054
18055         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18056
18057         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18058         now in mini-exceptions.c.
18059
18060 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18061
18062         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18063         now in mini-exceptions.c.
18064
18065 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18066
18067         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18068         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18069
18070         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18071         code into mini-exceptions.c. Add some assertions to it.
18072
18073 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18074
18075         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18076         (<software@solmersa.com>). Fix as errors on windows.
18077
18078 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18079
18080         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18081         method info into the LMF.
18082
18083 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18084         
18085         * mini-ia64.c: Add proper unwind info for method epilogs.
18086
18087         * exceptions-ia64.c: Add some code to help debugging.
18088         
18089         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18090
18091         * mini-exceptions.c: Fix warning.
18092
18093 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18094
18095         * mini.c: Really fix build.
18096
18097         * mini-x86.c mini-amd64.c: Fix build.
18098
18099 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18100
18101         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18102
18103         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18104         some Interlocked methods as intrinsics.
18105
18106         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18107         for Thread methods as well.
18108
18109         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18110
18111         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18112
18113         * mini-ia64.c mini-x86.c mini-amd64.c 
18114         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18115         OP_MEMORY_BARRIER.
18116         
18117         * mini.c (mono_init_exceptions): Fix build breakage.
18118
18119 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18120
18121         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18122         of instructions. Use the new ia64_unw_op macros for emitting unwind
18123         info.
18124
18125         * mini.c (mono_init_exceptions): Initialize exception handling
18126         related trampolines at startup.
18127
18128 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18129
18130         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18131
18132 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18133
18134         * mini.c: Handle type loading errors gracefully during compilation and
18135         throw the appropriate exception.
18136
18137 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18138
18139         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18140         for the mono binary.
18141
18142 2005-09-09  Martin Baulig  <martin@ximian.com>
18143
18144         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18145         the release.
18146
18147 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18148
18149         * mini-arm.h: use emulation for conv.r.un for the release.
18150
18151 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18152
18153         * mini-arm.c, objects.cs: more fixes and tests for them.
18154
18155 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18156
18157         * mini-arm.c: align structures to at least 4 bytes to be able
18158         to keep our current optimized memcpy.
18159
18160 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18161
18162         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18163
18164 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18165
18166         * mini.c: ignore SIGPIPE.
18167
18168 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18169
18170         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18171
18172         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18173
18174 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18175
18176         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18177
18178 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18179
18180         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18181         exception handling support.
18182         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18183         patch by Brian Koropoff <briank@marakicorp.com>).
18184
18185 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18186
18187         * mini.c: revert another 'optimization' which breaks when
18188         items on the eval stack need to be saved at a basic block end
18189         (bug #75940).
18190
18191 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18192
18193         * jit-icalls.c: for arrays, ensure we always provide
18194         lower bounds.
18195
18196 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18197
18198         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18199         
18200         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18201
18202 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18203
18204         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18205         arguments in their original register.
18206
18207 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18208
18209         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18210         memset/memcpy.
18211
18212         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18213         when ssapre is enabled.
18214
18215         * inssel-long.brg: Fix bug in previous patch.
18216
18217         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18218         multiplication by a constant.
18219
18220 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18221
18222         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18223         icc.
18224
18225         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18226         saving registers.
18227
18228 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18229
18230         * inssel-arm.brg: apply changes tested by Brian Koropoff
18231         <briank@marakicorp.com>.
18232
18233 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18234
18235         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18236         
18237 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18238
18239         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18240         to the same register if dreg is just a base register.
18241         (print_ins): Improve printing of membase opcodes.
18242
18243         * inssel-x86.brg: Add optimized ldind(reg) rules.
18244
18245         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18246
18247 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18248
18249         * mini.c: when running under valgrind, set the stack bottom for
18250         the GC at the actual approximate stack for the app (fixes running
18251         mono with valgrind).
18252
18253 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18254
18255         * mini.c: do no break at the first valuetype to init found
18256         (fixes bug #75791).
18257
18258 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18259
18260         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18261
18262 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18263
18264         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18265
18266 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18267
18268         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18269
18270 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18271
18272         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18273
18274         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18275         code.
18276
18277         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18278         code.
18279
18280         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18281         methods.
18282
18283 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18284
18285         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18286
18287 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18288
18289         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18290         in the tail recursion optimization.
18291
18292         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18293         debug info into the assembly file.
18294
18295         * iltests.il: Add test for filter regions.
18296
18297         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18298         initial stack of filter regions. Fixes #75755.
18299
18300 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18301
18302         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18303         stack requirements.
18304
18305 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18306
18307         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18308         the check for an already compiled method on non-ia64 platforms.
18309         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18310         proper domain.
18311
18312         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18313
18314         * inssel-x86.brg: Add some optimized call rules.
18315
18316 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18317
18318         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18319         method here.
18320
18321         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18322         mono_arch_patch_delegate_trampoline.
18323
18324         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18325
18326         * mini-trampolines.c: Fix build.
18327
18328         * mini-amd64.h: Add delegate trampolines.
18329
18330         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18331
18332         * inssel-amd64.brg: Add optimized call rules.
18333         
18334         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18335
18336         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18337
18338 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18339
18340         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18341         change.
18342
18343         * mini-ia64.c: Remove LMF fixmes.
18344
18345         * mini-ia64.h: Remove most fields from LMF.
18346
18347         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18348
18349         * mini-trampolines.c: Add support for IA64 function descriptors.
18350
18351         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18352         for IA64 function descriptors.
18353
18354 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18355
18356         * tramp-arm.c: patch the vtable for virtual calls. Added
18357         support code to register/unregister the LMF.
18358         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18359         more LMF work.
18360
18361 2005-08-19  Dick Porter  <dick@ximian.com>
18362
18363         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18364         bit value if needed.
18365
18366 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18367
18368         * mini.c (mini_get_method): Move handling of wrapper data here.
18369
18370         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18371
18372         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18373         virtual.
18374
18375         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18376         bblock->code does not remain empty.
18377
18378 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18379
18380         * arrays.cs: Add regression test for #75832.
18381
18382         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18383         rules. Fixes #75832.
18384
18385         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18386         instruction scheduling.
18387
18388 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18389
18390         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18391
18392 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18393
18394         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18395
18396         * mini-codegen.c: Fix VC build.
18397
18398         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18399
18400 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18401
18402         * mini.h: fix signature for mono_register_opcode_emulation.
18403
18404 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18405
18406         * mini.c: Get rid of most of the helper_sig_... constants using
18407         mono_create_icall_signature ().
18408
18409 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * jit-icalls.c (helper_ldstr): New helper function.
18412
18413         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18414
18415         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18416         throw, load the string using a helper call instead of creating a string object.
18417
18418         * aot.c: Update after LDSTR changes.
18419
18420         * mini.h: Bump AOT file version.
18421         
18422         * aot.c: Save class size info into the AOT file. Print more statistics during
18423         compilation.
18424
18425         * mini.h: Bump AOT file version.
18426
18427         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18428         ordering of disasm cases. Fixes #74957.
18429
18430 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18431
18432         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18433         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18434         the generic code needed for the ARM port.
18435
18436 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18437
18438         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18439         inssel-arm.brg: more ARM features and fixes.
18440
18441 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18442
18443         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18444         ARM port work in progress.
18445
18446 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18447
18448         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18449
18450         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18451
18452         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18453
18454         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18455
18456         * *-ia64.*: Ongoing IA64 work.
18457         
18458         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18459
18460 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18461
18462         * TODO: Remove out-of-data todo stuff.
18463
18464         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18465         dead code.
18466
18467         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18468
18469         * mini.h: Bump corlib version.
18470
18471 2005-07-27  Martin Baulig  <martin@ximian.com>
18472
18473         * mini-codegen.c
18474         (create_copy_ins): Added `const unsigned char *ip' argument; set
18475         `copy->cil_code' from it.
18476
18477 2005-07-27  Martin Baulig  <martin@ximian.com>
18478
18479         * mini-exceptions.c (mono_handle_exception): Don't call
18480         mono_debugger_handle_exception() for filters.
18481
18482 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18483
18484         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18485         as well.
18486
18487 2005-07-26  Martin Baulig  <martin@ximian.com>
18488
18489         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18490
18491         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18492         helper_compile_generic_method() if the method is actually virtual
18493         and non-final.
18494
18495 2005-07-26  Martin Baulig  <martin@ximian.com>
18496
18497         * mini.c
18498         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18499         public; this is now accessed directly by the debugger.
18500         (mono_generic_trampoline_code): Removed.
18501
18502         * debug-mini.c
18503         (mono_debug_init_method): Also add interncalls and wrappers.
18504
18505 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18506
18507         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18508
18509 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18510
18511         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18512
18513 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18514
18515         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18516
18517 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18518
18519         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18520         getting TLS offsets on AMD64 too.
18521
18522 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18523
18524         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18525
18526 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18527
18528         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18529         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18530
18531 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18532
18533         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18534
18535         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18536         to mini.c.
18537
18538         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18539         mono_sparc_is_virtual_call ().
18540         
18541         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18542
18543         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18544         trampoline parameters.
18545
18546         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18547         
18548         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18549         to mono_arch_get_vcall_slot_addr.
18550
18551         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18552         trampoline code.
18553
18554         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18555
18556 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18559
18560 2005-07-19  Martin Baulig  <martin@ximian.com>
18561
18562         * exceptions-amd64.c (throw_exception): Call
18563         mono_debugger_throw_exception() here like we're doing it on i386.
18564
18565 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18566
18567         * mini-ia64.c: Add optimized TLS access support.
18568
18569 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18570
18571         * mini-exceptions.c: Ongoing IA64 work.
18572
18573         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18574
18575         * mini.c: Use the default optimization set when embedding. Fixes
18576         #75194.
18577
18578 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18579
18580         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18581         of trampolines to a separate file.
18582
18583         * mini-trampolines.c: New file.
18584
18585         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18586         separate file.
18587         
18588         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18589         amd64/ia64 code.
18590
18591         * mini-codegen.c: Fix cygwin build.
18592
18593 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18594
18595         * mini.c: Add some minor changes needed by the IA64 port.
18596
18597         * *-ia64.*: Ongoing IA64 work.
18598
18599 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18600
18601         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18602         trampolines into arch-independent and arch-dependent parts.
18603
18604         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18605
18606 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18607
18608         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18609
18610         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18611         the xp-regalloc-branch for amd64.
18612
18613         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18614         xp-regalloc-branch for x86.
18615
18616 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18617
18618         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18619
18620 2005-07-06  Martin Baulig  <martin@ximian.com>
18621
18622         * mini.c
18623         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18624         (mono_jit_runtime_invoke): Likewise.
18625
18626 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18627
18628         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18629         on x86 too.
18630         
18631         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18632         without loading their metadata. Reorganize the file format so exception handling+
18633         debug info is kept separate from normal method info. Create MonoJitInfo 
18634         structures for methods lazily.
18635
18636         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18637         loading metadata.
18638         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18639
18640         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18641
18642         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18643         in AOT code.
18644
18645         * mini.h: Bump AOT file version.
18646
18647 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18648
18649         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18650
18651 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18652
18653         * Makefile.am (check-local): Call semdel-wrapper.
18654
18655 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18656
18657         * mini-x86.c: Revert the last change as it seems to break the build..
18658
18659 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18660
18661         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18662         
18663         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18664
18665 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18666
18667         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18668         outside of the macro, so strange stuff doesn't happen with gcc4
18669         (NEW_AOTCONST_TOKEN): Likewise.
18670
18671 2005-06-28  Martin Baulig  <martin@ximian.com>
18672
18673         * mini.c (mini_class_is_system_array): New static method; use this
18674         instead of `klass->parent == mono_defaults.array_class' everywhere
18675         since this also works for the new generic array class.
18676
18677 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18678
18679         * inssel.brg: Remove warnings.
18680
18681 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18682
18683         * mini-ia64.c: Ongoing IA64 work.
18684
18685         * basic-float.cs: Add float->i1 conversion test.
18686
18687         * iltests.il: Add conv.u4 test.
18688
18689 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18690
18691         * inssel-long.brg: Fix bug caused by last change.
18692
18693 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18694
18695         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18696         BSDs.  Allows the x86 JIT to work on OSX86
18697
18698 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18699
18700         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18701         u4->i8 conversion.
18702
18703         * mini-ia64.c: Ongoing IA64 work.
18704
18705 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18706
18707         * mini-ia64.c: Ongoing IA64 work.
18708
18709         * driver.c: Clean up jit_code_hash as well when using --regression.
18710
18711         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18712
18713         * basic-long.cs: Add tests for long->u4 conversion.
18714
18715 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18716
18717         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18718         that we do not depend on undefined C behavior: the order stuff
18719         gets evaluated within an expression. Fixes mono when compiled on
18720         GCC 4.
18721
18722 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18723
18724         * *-ia64.*: Ongoing IA64 work.
18725
18726         * aot.c: Lower memory usage while loading AOT methods.
18727
18728         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18729
18730         * mini.h: Bump AOT file format version.
18731
18732 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18733
18734         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18735
18736 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18737
18738         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18739         not on callee assembly). Fixed some comments.
18740
18741 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18742
18743         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18744         it gets proper disassembly.
18745         (emit_method_info): Remove some dead code.
18746
18747         * mini.c (mini_method_compile): Allways allocate the GOT var in
18748         mono_method_to_ir for emulating opcodes.
18749
18750 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18751
18752         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18753         before freeing the code memory. Fixes #74990.
18754
18755         * objects.cs: Add regression test for #74992.
18756
18757         * liveness.c: Extend live ranges of arguments to the beginning of the
18758         method. Fixes #74992.
18759
18760         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18761         so it points into the faulting instruction.
18762
18763 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18764
18765         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18766
18767         * *-ia64.*: Ongoing IA64 work.
18768
18769         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18770
18771 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18772
18773         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18774
18775         * *-ia64.*: Ongoing IA64 work.
18776
18777 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18778
18779         * basic-long.cs: Add tests for add/sub.ovf.
18780
18781         * basic.cs: Add tests for sub.ovf.
18782
18783         * *-ia64.*: Ongoing IA64 work.
18784
18785 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18786
18787         * *-ia64.*: Ongoing IA64 work.
18788
18789         * basic.cs: Add conv.ovf.i4.un test.
18790
18791 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18792
18793         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18794         
18795 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18796
18797         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18798
18799 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18800
18801         * *-ia64.*: Ongoing IA64 work.
18802
18803 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18804
18805         * trace.[ch]:
18806         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18807
18808 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18809
18810         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
18811
18812 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
18813
18814         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
18815
18816         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
18817         of a call is callable by a near call.
18818
18819 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
18820
18821         * mini-ia64.c: Ongoing IA64 work.
18822
18823 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
18824
18825         * genmdesc.c: Make the generated array non-static.
18826
18827         * inssel-long.brg: Fix LSHR_IMM rule.
18828
18829         * *-ia64.*: Ongoing IA64 work.
18830
18831         * *-ia64.*: Ongoing IA64 work.
18832
18833 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * *-ia64.*: Ongoing IA64 work.
18836
18837         * *-ia64.*: Ongoing IA64 work.
18838         
18839         * mini-ia64.c: Ongoing IA64 work.
18840
18841         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
18842
18843 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
18844
18845         * objects.cs basic-calls.cs: Move some tests to objects.cs.
18846         
18847         * objects.cs basic-long.cs: Move some tests to objects.cs.
18848
18849 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
18850
18851         * *-ia64.*: Ongoing IA64 work.
18852
18853         * iltests.il: Add a new test.
18854
18855         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
18856         newobj. Fixes #75042.
18857
18858 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
18859
18860         * *-ia64.*: Ongoing IA64 work.
18861         
18862         * *-ia64.*: Ongoing IA64 work.
18863         
18864         * *-ia64.*: Ongoing IA64 work.
18865
18866         * basic.cs objects.cs: Move tests accessing static variables as well.
18867
18868         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
18869
18870 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
18871
18872         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
18873
18874         * driver.c: Always print failed tests.
18875
18876         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
18877         frame pointer.
18878
18879         * *ia64*: Ongoing IA64 work.
18880
18881 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
18882
18883         * basic.cs: Add tests for add.ovf. Fix warnings.
18884
18885 2005-05-18  Miguel de Icaza  <miguel@novell.com>
18886
18887         * driver.c (mono_main): Avoid crash if no argument is passed to
18888         --break;  Do not use g_error, but f_printf.   And fix all other
18889         ocurrences of the same crash.
18890
18891 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
18892
18893         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
18894         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
18895         Fixes #74742.
18896
18897 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
18898
18899         * *-ia64.*: Add beginnings of IA64 backend.
18900
18901         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
18902
18903 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
18904
18905         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
18906         Fixes #74925.
18907
18908         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
18909
18910         * mini-amd64.c: Fix a warning.
18911
18912 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
18913
18914         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
18915         in float_neg. Fixes #74897.
18916
18917         * mini-amd64.c (emit_call): Fix another near call bug.
18918
18919 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
18920
18921         * declsec.c: Keep the appdomain information in the structure. Added a 
18922         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
18923         value gets overwritten).
18924         * declsec.h: Set the default MonoArray for the the stack to 6. Added
18925         an MonoAppDomain member to MonoSecurityFrame.
18926         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
18927         used in the stack walk. Now use a MonoArray which grow (double) when
18928         it gets full.
18929
18930 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
18931
18932         * mini.c: Re-enabled runtime cleanup, since running threads should
18933         now properly stop when exiting.
18934
18935 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
18936
18937         * mini-codegen.c: New file contaning the arch-independent local
18938         register allocator. Not used by any architectures yet.
18939
18940         * mini.h linear-scan.c: Merge some changes from the 
18941         mini-xp-local-regalloc branch.
18942
18943 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * mini-amd64.c (emit_call): Fix calls to native functions when the
18946         runtime is compiled as a shared library. Fixes #74756.
18947
18948         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
18949         on a literal field. Fixes #74751.
18950
18951 2005-04-25  Raja R Harinath  <rharinath@novell.com>
18952
18953         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
18954
18955 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
18956
18957         * objects.cs: Add missing null casting test.
18958
18959 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
18960
18961         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
18962         in wrapper methods. Also rename 'address' variable to 'offset'.
18963
18964 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
18965
18966         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
18967         warnings.
18968         
18969         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
18970
18971         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
18972         work on windows.
18973
18974 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18975
18976         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
18977
18978 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18979
18980         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
18981         just the last bytes.
18982
18983 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
18984
18985         * aot.c (mono_compile_assembly): Fix warning.
18986
18987         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
18988         by the _MSC_VER stuff.
18989
18990 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
18991
18992         * inssel-long.brg: Fix #74588.
18993
18994         * cpu-amd64.md: Fix #74591.
18995
18996         * iltests.il: Add new regression tests.
18997
18998 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19001         valuetype.
19002
19003 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19004
19005         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19006
19007         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19008         from Bill Middleton <flashdict@gmail.com>.
19009
19010 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19011
19012         * arrays.cs: Add new regression test. Fix warnings.
19013
19014 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19017         and leakage in CKFINITE.
19018
19019         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19020         this to a null op since it is called on amd64 too.
19021
19022         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19023
19024         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19025         body since this is not used on amd64.
19026         
19027         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19028
19029         * mini-amd64.c: Remove obsolete fixmes.
19030
19031         * mini.c (print_method_from_ip): Fix debugging support.
19032
19033 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19034
19035         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19036         so that expressions that don't give much gain are not reduced.
19037         * ssapre.h: Likewise.
19038
19039 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19040
19041         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19042
19043         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19044
19045         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19046
19047 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19048
19049         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19050
19051         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19052
19053 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19054
19055         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19056         stack touching.
19057
19058         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19059
19060         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19061
19062         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19063
19064         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19065         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19066
19067         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19068
19069         * mini-x86.c: Fix up stack overflow handling.   
19070
19071         * exceptions.cs: Add new regression test.
19072
19073 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19074
19075         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19076         mono_jit_thread_attach.
19077
19078         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19079
19080 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19081
19082         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19083         avoid calling constructors using callvirt.
19084
19085         * inssel.brg: Fix #74073.
19086
19087 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19088
19089         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19090         compilation with non-GCC compilers.
19091         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19092         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19093
19094 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19095
19096         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19097         klass->interface_offsets (will likely fix bug#74073).
19098
19099 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19100
19101         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19102
19103 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19104
19105         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19106         to amd64_div_reg_size ().
19107         
19108         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19109
19110 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19111
19112         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19113
19114 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19115
19116         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19117
19118 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19119
19120         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19121         
19122         * mini.c (mono_precompile_assembly): Load and precompile referenced
19123         assemblies as well. Fixes #74015.
19124
19125 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19128
19129 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19130
19131         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19132         a lot of checks and (anyway) permissions cannot work until corlib is 
19133         loaded.
19134
19135 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19136
19137         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19138
19139 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19140
19141         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19142         calls (fixes bug#72824).
19143
19144 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19145
19146         * mini.c: fix tail recursion elimination (see test in bug#73936).
19147
19148 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19149
19150         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19151         some fp functions in sse2 mode.
19152
19153 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19154
19155         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19156
19157 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19158
19159         * mini.h mini.c: Add mono_get_jit_tls_key ().
19160
19161         * mini-x86.c: Enable fast TLS support on windows.
19162
19163 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19164
19165         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19166         * mini.c: Check for p/invoke method when generating code. If a
19167         p/invoke method, or it's class, isn't decorated with [Suppress
19168         UnmanagedCodeSecurity] then generate code to call System.Security.
19169         UnmanagedDemand (only if the security manager is active).
19170
19171 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19174         last change as it seems to cause strange crashes.
19175         
19176 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19177
19178         * *.c: handle unsafe function pointers where needed.
19179
19180 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * mini.c (mono_jit_free_method): Remove the fixme too.
19183
19184 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19185
19186         * mini.c: As discussed, make the code actually free the delegate
19187         thunk now, to enable the debugging of delegate problems, use
19188         MONO_DEBUG=1 when running Mono. 
19189
19190         This takes also care of parts of the leaks as seen by Joe.
19191
19192 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19193
19194         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19195         thread_tls_offset calculation.
19196
19197 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19198
19199         * declsec.c: Reworked linkdemand checks for icall. The previous code
19200         was using the declaration code (untrusted) and didn't work as expected
19201         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19202         specific case.
19203
19204 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19205
19206         * iltests.il: Add new localloc test.
19207
19208         * mini-amd64.c: Handle large stack allocations the same way as on
19209         windows if stack overflow handling is working.
19210         
19211         * mini-amd64.c: Allocate the signal stack using mmap.
19212
19213         * mini.c (sigsegv_signal_handler): Fix reading of context.
19214
19215         * mini-exceptions.c: Fix up stack overflow handling.
19216
19217         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19218
19219         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19220
19221         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19222
19223         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19224
19225         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19226         tramp_init functions as they are no longer needed.
19227
19228 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19231         
19232         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19233
19234         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19235         
19236         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19237         support that now.
19238
19239         * mini-ops.h: Add OP_LMUL_IMM.
19240
19241         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19242         long mul/div opcodes as intrinsic.
19243
19244         * mini-amd64.c (emit_call): Handle the case when the callee might be
19245         an AOT method.
19246
19247 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19248
19249         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19250         extra safe.
19251         
19252         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19253
19254         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19255
19256 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19257
19258         * mini.c (mono_codegen): Don't leak here, to help people running
19259         monogrind.
19260
19261 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19262
19263         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19264         conversions in sse2 mode.
19265
19266         * basic-float.cs: Add regression test.
19267         
19268         * mini-amd64.c: Reenable sse2.
19269
19270 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19271
19272         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19273
19274 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19275
19276         * driver.c: Copyright text should include 2005.
19277         
19278 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19279
19280         * cpu-amd64.md (load_membase): Fix more max lengths.
19281
19282 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19283
19284         * cpu-amd64.md (load_membase): Fix max length.
19285
19286         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19287
19288         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19289
19290         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19291         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19292
19293         * basic-float.cs: Add rounding regression test.
19294
19295         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19296
19297 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19298
19299         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19300         structures in registers for pinvoke wrappers.
19301
19302 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19303
19304         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19305
19306 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19307
19308         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19309         wrapper to mono_jit_thread_attach.
19310
19311         * mini.c (mini_jit_thread_attach): New jit icall.
19312
19313         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19314         native->managed wrappers.
19315
19316         * exceptions.cs: Add new regression test.
19317
19318         * mini.c (optimize_branches): Check regions in the cbranch to throw
19319         block case as well. Fixes #73242.
19320
19321 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19322
19323         * mini.c: thread safety fixes.
19324
19325 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19326
19327         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19328         patching stuff, since delegates use jump trampolines so there is
19329         no caller.
19330
19331         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19332         jump trampolines.
19333         
19334         * tramp-amd64.c: Fix build.
19335
19336         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19337         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19338
19339         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19340         Rename this to mono_arch....
19341         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19342
19343         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19344
19345         * mini-amd64.c (emit_call): If both the caller and the callee is
19346         guaranteed to have 32 bit addresses, emit a normal call.
19347
19348         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19349
19350         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19351         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19352         method_ptr inside delegates.
19353
19354 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19355
19356         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19357         invalidated. Fixes #73001.
19358
19359         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19360
19361         * mini-x86.c: Only use stdcall for pinvokes on windows.
19362
19363 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19364
19365         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19366         * mini-x86.c: remove unreliable __thread var offset detection,
19367         use the correct accessors and enable by default.
19368
19369 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * mini.c (mono_jit_free_method): Fix memory leak.
19372
19373 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19376
19377 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19378
19379         * cpu-amd64.md: Fix lengths of atomic opcodes.
19380
19381 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19382
19383         * driver.c: try to not imply using ICU is any good.
19384
19385 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19386
19387         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19388         functions as inline ops.
19389
19390         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19391         some Interlocked functions as inline ops.
19392
19393         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19394
19395         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19396
19397         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19398
19399         * mini.c: Add support for OP_NOT_TAKEN.
19400
19401         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19402         structures in registers for pinvoke wrappers.
19403
19404         * mini-amd64.c: Fix warnings.
19405
19406 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19407
19408         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19409
19410         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19411
19412         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19413         address instead of loading the address from it.
19414
19415         * mini-x86.c: Add support for returning small structs in registers
19416         on Win32. Fixes part of #70864.
19417         
19418 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19419
19420         * trace.c (get_token): Improve error checking.
19421
19422 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19423
19424         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19425
19426 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19427  
19428         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19429         it can be reused for MonoClass.
19430         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19431         _LINKDEMAND.
19432
19433 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19434
19435         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19436         instead of a MonoReflectionMethod. The method information wasn't used
19437         when displaying SecurityException details (but will be now).
19438
19439 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19440
19441         * Makefile.am : windows build fix.
19442
19443 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19444
19445         * iltests.il: Add new regression test.
19446
19447         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19448         #72522.
19449
19450 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19451  
19452         * mini.c: Moved linkdemand check into helper function check_linkdemand
19453         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19454         LDFTN, LDVIRTFTN).
19455
19456 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19457
19458         * declsec.c: Added statistics counter for different kinds of 
19459         LinkDemands.
19460         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19461         (and commented) declaration.
19462         * mini.c: Added statistics counter for security Demand code 
19463         generation. Added display of security statistics.
19464
19465 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19466
19467         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19468         Fix compilation errors under gcc-2.95.
19469
19470 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19471
19472         * mini.c, driver.c: Use the new jit trampoline hashtable
19473
19474 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19475
19476         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19477
19478 2005-02-11  Martin Baulig  <martin@ximian.com>
19479
19480         * debug-mini.c (mono_debug_close_method): Free the line number array.
19481
19482 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19483
19484         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19485         icalls.
19486
19487         * mini.h: Bump AOT file format version. 
19488
19489 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19490
19491         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19492         APTC and P/Invoke.
19493         * declsec.h: Added macros to get/set lazyly initialized security 
19494         informations about assemblies. Added new enum for different type of
19495         possible LinkDemand violation. Added function to check LinkDemands.
19496         * mini.h: Added a field to MonoCompile to hold any security violation
19497         detected when JITting a method (so it can be thrown later).
19498         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19499         and CEE_CALLVIRT. Added code to throw exception at the end of
19500         mini_method_compile (note: the exception is unhandled right now).
19501
19502 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19503
19504         * mini.c, jit-icalls.c: use the managed implementation of
19505         memset for initobj and memset, to avoid managed <-> unmanaged
19506         transitions.
19507
19508 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19511         optimization if it would need a GOT var.
19512
19513         * basic.cs: Add tests for constant propagation and switch statements.
19514
19515         * ssa.c: Fix out-of-range constant propagation and switch statements.
19516
19517 2005-02-09    <vargaz@freemail.hu>
19518
19519         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19520
19521 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19522
19523         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19524
19525 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19526
19527         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19528
19529 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19530
19531         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19532         arithmetic operations.
19533
19534 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19535
19536         * mini-ppc.c: add a workaround for broken user code that
19537         DllImports vararg functions with non-vararg signatures.
19538
19539 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19540
19541         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19542         meaningfull error message for assemblies written in Managed C++.
19543
19544         * tramp-amd64.c mini-amd64.h: Add support for 
19545         create_trampoline_from_token ().
19546
19547         * aot.c mini-x86.c abcremoval.c: Applied patch from
19548         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19549
19550 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19551
19552         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19553         which takes a MonoImage/token as parameter instead of a MonoMethod.
19554
19555         * aot.c: Use the new trampoline for initializing vtables.
19556
19557         * aot.c: Add support for ldfld/stfld_remote wrappers.
19558
19559         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19560         rules for compare <MEM>, IMM.
19561
19562         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19563
19564         * aot.c: Handle inherited finalizers correctly.
19565
19566 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19567
19568         * inssel.brg (stmt): Add a missing _setup_... ().
19569
19570         * aot.c: Save some parts of the class state to the AOT file and use it
19571         to recompute that state when a class is initialized.
19572
19573         * mini.c: Install AOT hooks into the runtime.
19574
19575         * mini.h: Bump AOT file format version.
19576         
19577         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19578         Fixes #72148.
19579
19580         * iltests.il: Add new test.
19581
19582 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19583
19584         * mini.c: fix typo.
19585
19586 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19587
19588         * mini.c: setup the statistical profiler in the thread attach
19589         callback to cope with the new single thread code.
19590
19591 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19592
19593         * mini-ppc.c: ensure we have enough room for the profiler
19594         calls (fixed bug#72084).
19595
19596 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19599         it.
19600
19601 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19602
19603         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19604
19605 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19606
19607         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19608         to succesfully execute parrotbench).
19609         * ssapre.h: Likewise.
19610
19611 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19612
19613         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19614         variable for stores to method arguments (fixes a SSAPRE issue).
19615
19616 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19617
19618         * mini.c: handle value types in dup, fixes gen-112.cs.
19619
19620 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19621
19622         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19623         sequence for calls in dynamic methods to avoid thunks.
19624
19625 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19626
19627         * mini.c: correctly remove dynamic methods from the hashtable.
19628
19629 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19630
19631         * driver.c: Disabled SSAPRE until fix the bug that appears
19632         in IronPython's parrotbench.
19633
19634 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19637
19638         * mini.c (mono_method_to_ir): Revert the previous change.
19639         
19640         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19641         when AOT compiling.
19642
19643         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19644         mono_jit_info_table_find () etc. when running under valgrind.
19645
19646         * inssel.brg: Fix warnings.
19647
19648         * mini-exceptions.c: Fix warnings.
19649
19650 2005-01-31  Martin Baulig  <martin@ximian.com>
19651
19652         * driver.c (compile_all_methods_thread_main): Don't try to compile
19653         generic methods or anything which has type parameters.
19654
19655 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19658
19659         * TestDriver.cs: Add --verbose flags.
19660
19661         * graph.c ssa.c: Fix 64 bit warnings.
19662         
19663         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19664         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19665         Fix 64 bit warnings.
19666
19667         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19668         variable not spotted by gcc.
19669         
19670         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19671         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19672         X86_COMPARE_MEMBASE opcodes.
19673
19674         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19675
19676 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19677
19678         * *: MonoMethod->signature might be NULL now. You *MUST* use
19679         mono_method_signature.
19680
19681 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * driver.c (compile_all_methods_thread_main): Compile the methods
19684         without invoking cctors.
19685
19686 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19687
19688         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19689         * basic-calls.cs: test for the above.
19690
19691 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19692
19693         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19694         MonoJitInfo changes.
19695
19696 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19697
19698         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19699         eagerly if it contains dynamic methods.
19700         
19701         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19702
19703         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19704         trace, it is now computed by an icall from trace_ips.
19705         
19706         * mini-exceptions.c: Fix a warning.
19707
19708 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19709
19710         * mini-exceptions.c: don't bother getting stack trace info if
19711         it's not going to be used.
19712
19713 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19714
19715         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19716         ssapre-mini-ops.h.
19717
19718 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19719
19720         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19721
19722         * aot.c: Avoid calling mono_method_get_header () if not needed.
19723
19724         * mini.h: Bump AOT file format version.
19725         
19726         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19727
19728         * mini.c (mono_print_tree): Print more info for calls.
19729
19730 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19731
19732         * declsec.h: Remove warning by adding missing include for marshal.h
19733
19734 2005-01-26  Martin Baulig  <martin@ximian.com>
19735
19736         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19737         `ip' twice.
19738
19739 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19740
19741         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19742         flags.
19743
19744         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19745
19746         * aot.c (mono_compile_assembly): Fix a warning.
19747
19748 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19749
19750         * declsec.c: Look for security attributes on the original MonoMethod 
19751         (and not the wrapped one). This fix permissions on icalls.
19752
19753 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19754
19755         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19756
19757         * mini.c (mono_allocate_stack_slots): Add a fixme.
19758
19759         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19760
19761 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19762
19763         * inssel.brg: optimize casts of sealed types (more
19764         optimizations waiting for fixes in remoting).
19765
19766 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19767
19768         * inssel.brg (stmt): Add another dummy rule.
19769
19770         * driver.c: Fix warnings.
19771
19772         * driver.c (mono_main): If running under valgrind, instruct glib to use
19773         the system allocation functions so valgrind can track the memory
19774         allocated by the g_... functions.
19775
19776         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19777
19778         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19779
19780         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19781
19782         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19783         variables in try regions.
19784
19785         * mini.c (mini_method_compile): Don't disable optimizations on large
19786         methods when AOT compiling.
19787
19788         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19789         allocate stack slots. Not yet used.
19790
19791 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19792
19793         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19794
19795 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19796
19797         * mini-ppc.c: make the branch info relative as the code
19798         buffer can be reallocated.
19799
19800 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19801
19802         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19803         * driver.c: Removed the AOT/security restriction. Now initialize the
19804         security manager (in metadata) if --security is used.
19805         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19806         rather than the pointer to declarative security, when AOT is used.
19807
19808 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19809
19810         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
19811         basic blocks, reduced intrinsic exception throwing code size.
19812
19813 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
19814
19815         * driver.c (mini_usage): Reorder the usage screen.
19816
19817 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
19818
19819         * mini.c (mono_resolve_patch_target): Fix warning.
19820
19821 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
19822
19823         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
19824         previous patch.
19825
19826         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19827
19828         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
19829         breaks the amd64 build.
19830
19831         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
19832         register allocation. Fixes #71454.
19833
19834         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
19835
19836         * arrays.cs: Add new regression test.   
19837
19838 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19839
19840         * ssapre.c: Turned usage of snprintf to GString.
19841         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
19842         (I left it on by mistake in my previous commit).
19843
19844 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
19845
19846         * mini.c, cfold.c, basic-calls.cs: preserve side effects
19847         on cond branch optimization (fixes bug# 71515).
19848
19849 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19850
19851         * abcremoval.c: Fixed bug 71062.
19852         * abcremoval.h: Likewise.
19853
19854 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19855
19856         * mini.c: Added a new functionality to optimize_branches, the removal
19857         of useless basic blocks, and fixed some problem in the removal of
19858         critical edges; some utility functions added for both purposes.
19859         * ssapre.c: Added complex expression support, and fixed bug 70637.
19860         * ssapre.h: Likewise.
19861         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
19862         enabled in SSAPRE.
19863         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
19864         * driver.c: Re-enabled SSAPRE.
19865
19866 2005-01-19  Martin Baulig  <martin@ximian.com>
19867
19868         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
19869         the result of mono_get_method_constrained().
19870
19871 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
19872
19873         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
19874         manager.
19875
19876 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
19877
19878         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
19879         be detected.  Fixes #59296.
19880
19881 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19882
19883         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
19884         which can happen. Fixes #71361.
19885
19886 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
19887
19888         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
19889         manager.
19890
19891 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19892
19893         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
19894         appdomain-unload.exe to fail.
19895         
19896         * mini.c: Fix some memory leaks.
19897
19898 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
19899
19900         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
19901         Fixed bug and sped up some codepaths.
19902
19903 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
19904
19905         * mini.c: Fix some memory leaks.
19906
19907         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
19908         conversion.
19909
19910         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
19911
19912         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
19913         #71320.
19914
19915         * iltests.il: Add regression test for #71320.
19916
19917 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
19918
19919         * mini.c (mono_codegen): Fix installation of profiler hooks.
19920
19921         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
19922
19923 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
19924
19925         * mini.h, mini.c, cfold.c: optimize access to enum
19926         readonly fields, too. Eval conditional branches if possible
19927         to perform unreachable code removal in more cases.
19928
19929 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
19932
19933         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
19934         code manager.
19935
19936         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
19937         WinXP DEP. Fixes #71244.
19938
19939 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
19940
19941         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
19942
19943 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
19946
19947 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
19948
19949         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
19950         changes.
19951
19952         * mini.h: Bump AOT version.
19953
19954         * mini.h (MonoCompile): Change exvar to a hash table.
19955
19956         * mini.c: Allocate a separate exvar for each handler block.
19957
19958         * mini.c: Get rid of the computation of filter_lengths, its not needed.
19959
19960         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
19961         ex var with the pending exception and only throw if the two are equal.
19962         Fixes #68552.
19963         
19964         * exceptions.cs: Add tests for rethrow and nested catch clauses.
19965
19966         * mini-x86.c: Fix warnings.
19967
19968         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
19969         used by all the ports now.
19970
19971         * aot.c: Add write-symbols and save-temps options.
19972
19973 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
19974
19975         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
19976
19977 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
19978
19979         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
19980         operations.
19981
19982         * tramp-s390.c: Check vtable slot belongs to the domain.
19983
19984         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
19985         as per other platforms.
19986
19987         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
19988
19989 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
19990
19991         * driver.c: we don't run the Main() code in a subthread anymore.
19992
19993 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
19994
19995         * mini.c: added experimental rtc support in the statistical
19996         profiler: if the user has the permission, more accurate statistics
19997         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
19998         The MONO_RTC value must be restricted to what the linux rtc allows:
19999         power of two from 64 to 8192 Hz.
20000
20001 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20002
20003         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20004
20005 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20006
20007         * mini-ppc.c: better icache flush for smp.
20008
20009 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20010
20011         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20012
20013         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20014         amd64 port, not yet used.
20015
20016 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20017
20018         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20019         a struct type.
20020
20021 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20022
20023         * driver.c: Added --security option to activate the security manager.
20024         Right now this will allow code generation for declarative demands and
20025         is disabled when AOT is specified.
20026         * mini.c: Add code generation for declarative security demands.
20027         * mini.h: Add mono_use_security_manager as an extern gboolean.
20028
20029 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20030
20031         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20032         emitting more dense assembly code.
20033
20034         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20035         exception throwing stuff.
20036
20037 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20040         dead code.
20041
20042         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20043         left in by mistake.
20044
20045         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20046         fixed.
20047
20048         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20049
20050         * tramp-*.c: Only patch vtable slots if the object is in the current
20051         domain. Fixes appdomain-unload.exe.
20052
20053         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20054         
20055         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20056         x86 branch.
20057
20058 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20059
20060         * mini.c (reverse_branch_op): New helper function.
20061
20062         * mini.c (optimize_branches): Run the new optimization only on 
20063         platforms which support it. Also reverse all kinds of branches.
20064
20065         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20066
20067         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20068         a throw statement.
20069
20070         * mini.c (optimize_branches): Reverse not-equals branches if the false
20071         bblock is a throw. This happens a lot of time with argument checking in
20072         corlib.
20073
20074         * mini.c (mono_codegen): Add support for placing basic blocks after
20075         the function epilogue.
20076
20077         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20078         function epilogue.
20079         
20080 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20081
20082         * mini.c (setup_stat_profiler): Only set this up if the platform
20083         supports ITIMER_PROF.
20084
20085 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20086
20087         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20088         previous patch.
20089
20090         * inssel.brg: Fix a warning.
20091
20092 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20093
20094         * mini.c: added support for statistical profiler 
20095         (run with: --profile=default:stat).
20096
20097 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20100
20101         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20102
20103         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20104         related to global registers from the amd64 port.
20105
20106 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20107
20108         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20109
20110         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20111         with global registers.
20112         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20113
20114         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20115
20116 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20117
20118         * debug-mini.c (encode_value): Fix off-by-one.
20119
20120         * aot.c (encode_value): Likewise.
20121
20122         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20123
20124 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20125
20126         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20127         AOT.
20128
20129         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20130         
20131         * aot.c (emit_method_info): Increase size of temp buffer.
20132
20133         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20134         the AOT case.
20135
20136 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20137
20138         * aot.c (emit_method_info): Fix build.
20139         
20140         * aot.c: Further rework of the AOT file format to reduce the size of
20141         the method info data.
20142
20143         * mini.h: Bump AOT file format version.
20144
20145 2004-12-27  Martin Baulig  <martin@ximian.com>
20146
20147         * mini.c (mini_get_method): New static method; call
20148         mono_get_method_full() and mono_get_inflated_method().
20149         (mono_method_to_ir): Use mini_get_method() instead of
20150         mono_get_method_full(). 
20151
20152 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20153
20154         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20155
20156 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20157
20158         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20159
20160         * inssel-amd64.brg: Add some optimization rules.
20161
20162 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20163
20164         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20165         standard not GC'd stuff is fine.
20166
20167 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20168
20169         * aot.c: Rework the AOT file format to get rid of most of the global
20170         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20171
20172         * mini.h: Bump AOT file format version.
20173         
20174 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20175
20176         * mini.h: Bump AOT file format version.
20177
20178         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20179         address is inside a GOT.
20180
20181         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20182
20183         * cpu-pentium.md: Increase the maximum size of some instructions which
20184         might involve a got access.
20185         
20186         * mini.c (get_method_from_ip): Another debug helper function.
20187
20188         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20189         when got var accesses are created during the decompose phase.
20190
20191         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20192
20193         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20194         argument mini_compile_method and to MonoCompile, and use this to
20195         determine whenever a given method is compiled for AOT. This allows the
20196         other methods compiled during AOT compilation to be free of AOT stuff,
20197         so the backends does not need to add special support for them by
20198         creating a fake GOT etc.
20199
20200         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20201         longer needed.
20202
20203 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20204
20205         * mini.c (mono_method_to_ir): It turns out that some of the
20206         x-appdomain wrappers are lax with types, so just ignore this for
20207         all wrappers.
20208
20209         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20210         at the vtable->klass. If it is non-shared code we can just use the
20211         vtable.
20212
20213 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20214
20215         * mini-ppc.c: access MonoDomain from tls, too.
20216
20217 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20218
20219         * declsec.c: Removed unused variable (and related warning ;-)
20220
20221 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20222
20223         * iltests.il: New test for LDELEMA on an array of ref types.
20224
20225         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20226         all ldelema's on reftypes.
20227         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20228         it was the wrong place to put it.
20229
20230         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20231         register to pop to make this cleaner, at the request of Paolo.
20232
20233 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20234
20235         * mini-ops.h (OP_GETHASHCODE): New op.
20236
20237         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20238
20239         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20240         operation.
20241
20242         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20243         by 25%.
20244         
20245         * mini-x86.c (mono_arch_output_basic_block): Rather than
20246
20247         add ebp, 4
20248
20249         Emit
20250
20251         pop edx
20252
20253         The first is 3 bytes while the second is 1. This saves 36 kb on
20254         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20255         see a small boost because of icache locality.
20256
20257         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20258
20259 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20260
20261         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20262         started code sharing with the generic code.
20263
20264 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20265
20266         * mini-ppc.c, cpu-g4.md: added code for direct access to
20267         tls data slots.
20268
20269 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20270
20271         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20272          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20273         to OP_TLS_GET.
20274
20275 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20276
20277         * declsec.c|h: Added functions to cache the declarative stack modifiers
20278         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20279         structure.
20280         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20281         created. Register internal calls for System.Security.SecurityFrame::
20282         _GetSecurityFrame and _GetSecurityStack.
20283         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20284         the definitions for the new stack walk/callback mechanism.
20285         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20286         first security frame for LinkDemands and InheritanceDemands) and
20287         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20288         from lupus.
20289         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20290         walk initialization (lupus).
20291
20292 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20293
20294         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20295         idiom.
20296         (handle_loaded_temps): Do not create a temporary variable for
20297         things that we know are temps. They will never be modified.
20298         (mono_spill_call): Set MONO_INST_IS_TEMP
20299         (mono_emulate_opcode): ditto
20300         (emit_tree): ditto
20301         (mono_method_to_ir.CEE_DUP): ditto
20302
20303 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20304
20305         * mini.c (type_to_eval_stack_type): Make this handle the void type
20306         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20307         (emit_tree): use ip_in_bb to special case some common idioms
20308         Update all callers to pass in the IP.
20309         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20310
20311         This gives us a nice 2% speedup in mcs bootstrap.
20312
20313         * mini-x86.c (peephole_pass): Peephole pass to make
20314         mov  [foo], eax
20315         push [foo]
20316
20317         into
20318
20319         mov [foo], eax
20320         push eax
20321
20322         * mini.c (ip_in_bb): new method.
20323         (mono_method_to_ir): use this method rather than doing the hash
20324         lookup ourselves.
20325
20326         * linear-scan.c (mono_linear_scan): When expiring actives, you
20327         don't need to keep around variables that expire on this
20328         instruction. This makes it so that:
20329              a = b + 1
20330         will turn into:
20331              store (ebx add (ebx, 1))
20332         which will become
20333              add ebx, 1
20334
20335 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20336
20337         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20338         combination to avoid doing two copies. Fix up problems with previous
20339         patch.
20340
20341         * mini.c: Fix 64 bit warnings.
20342
20343         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20344
20345 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20348         changes from the x86 code.
20349
20350         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20351
20352 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20353
20354         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20355         throwing code to reduce its size, unify the AOT and non-aot code and 
20356         get rid of relocations in the AOT case.
20357
20358         * mini-x86.h mini.c exceptions-x86.c 
20359         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20360         raise corlib exceptions which doesn't require relocations in the 
20361         caller.
20362
20363         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20364
20365 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20366
20367         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20368         needed.
20369
20370         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20371         in the AOT case.
20372
20373 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20374
20375         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20376         with add function when used from Inc/dec atomic 
20377         functions. Re-enabled optimization on x86.
20378         * mini-ops.h: renamed atomic_add functions to
20379         allow _add to match the Interlocked::Add and
20380         _add_next to match Interlocked::Inc/Dec.
20381
20382 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20383
20384         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20385         linking of BBs to the end BB, and enabled SSAPRE also with
20386         consprop and copyprop (which was prevented by that bug).
20387
20388 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20389
20390         * mini-x86.c: disabling the Interlocked optimizing code. 
20391
20392 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20393
20394         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20395         file version check.
20396         
20397 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20398
20399         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20400         interlocked optimization due lack of support on x86, rewrote 
20401         exchange to take into account that base may be in eax.
20402         
20403         xsp works again; activated Interlocked optimizing code.
20404         
20405 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20406
20407         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20408
20409 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20410
20411         * mini-ops.h: Add new opcodes.
20412
20413         * mini.h: Add new patch types. Add got_var to MonoCompile.
20414
20415         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20416         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20417         make it work with all kinds of patchable code.
20418
20419         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20420         address of the GOT, and referencing entries in the GOT.
20421
20422         * mini.c: Add code to load the GOT address if needed by an opcode.
20423
20424         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20425         independent AOT code on the x86 using an elf-style Global Offset Table.
20426
20427 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20428
20429         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20430
20431 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20432
20433         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20434         when running xsp.
20435
20436 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20437
20438         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20439         of Interlocked:Increment/Decrement/Add as inline ops.
20440         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20441
20442 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20443
20444         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20445         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20446
20447 2004-12-12  Duncan Mak  <duncan@ximian.com>
20448
20449         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20450         again. `patch_info->table_size' is no longer valid after Zoltan's
20451         commit #37636.
20452
20453 2004-12-12  Martin Baulig  <martin@ximian.com>
20454
20455         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20456         if we are the "real" method, ie. not an inlined method inside it.
20457
20458 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20459
20460         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20461         before we look in the special fields table. This fixes
20462         ../tests/thread-static-init.cs.
20463
20464 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20465
20466         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20467         for Array get_Rank and get_Length. Fixes bug #70465.
20468
20469 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20470
20471         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20472         separate structure to reduce the size of MonoJumpInfo.
20473
20474 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20475
20476         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20477
20478 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20479
20480         * mini.c (mini_get_inst_for_method): Changed to allow ports
20481         to return a MonoInst instead of opcode 
20482         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20483         
20484         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20485         Allow ports to return a created MonoInst instead of op-code, will enable
20486         new optimizations.
20487         (renamed mini_get_opcode_for_method to better reflected the functionality)
20488
20489 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20490
20491         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20492
20493 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20494
20495         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20496         Fixes #69985.
20497
20498 2004-12-08  Martin Baulig  <martin@ximian.com>
20499
20500         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20501         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20502
20503 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20504
20505         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20506         correctly.
20507
20508         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20509         arithmetic.
20510
20511 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20512
20513         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20514
20515 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20516
20517         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20518         bug introduced by the previous patch.
20519
20520 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20521
20522         * mini-ppc.c, objectc.cs: handle large structs passed by value
20523         (fixes bug #69972).
20524
20525 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20526
20527         * mini-ppc.c: OP_ARGLIST implementation from
20528         Geoff Norton  <gnorton@customerdna.com>.
20529
20530 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20531
20532         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20533         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20534
20535 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20536
20537         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20538
20539 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20540
20541         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20542         support.
20543
20544 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20545
20546         * mini-sparc.c: Zero out localled-ed memory.
20547
20548         * iltests.il: Add tests for zeroing out localloc-ed memory.
20549
20550 2004-12-04  Martin Baulig  <martin@ximian.com>
20551
20552         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20553         mono_method_get_signature_full().       
20554
20555 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20556
20557         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20558         and some utility functions (always for SSAPRE), integrated SSAPRE.
20559         * mini.h: Likewise.
20560         * driver.c: Added ssapre option.
20561         * ssa.c: Small fix on OP_ARG handling.
20562         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20563         * Makefile.am: Likewise.
20564
20565 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20566
20567         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20568         now in the xp code.
20569
20570         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20571         icall.
20572
20573 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20574
20575         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20576         
20577         * cpu-s390.md : Increase instruction length of oparglist.
20578
20579         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20580
20581 2004-11-30  Martin Baulig  <martin@ximian.com>
20582
20583         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20584         virtual generic methods.  We call a special helper_compile_generic_method()
20585         icall to retrieve the method from the vtable, inflate and compile
20586         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20587
20588         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20589
20590 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20591
20592         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20593
20594 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20595
20596         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20597         Fixes #69929.
20598
20599 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20600
20601         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20602         platforms with PIC aot.
20603
20604 2004-11-28  Martin Baulig  <martin@ximian.com>
20605
20606         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20607         Fixes gen-112.cs.
20608
20609 2004-11-28  Martin Baulig  <martin@ximian.com>
20610
20611         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20612         the result of mono_type_get_underlying_type() to check whether
20613         we're byref.
20614
20615 2004-11-26  Martin Baulig  <martin@ximian.com>
20616
20617         * mini.c
20618         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20619         in the g_assert().
20620
20621 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20622
20623         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20624         the same way as the other arguments so they won't get clobbered.
20625
20626         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20627         calls through R11 since it is clobbered by the trampoline code.
20628
20629 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20630
20631         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20632         pick up in-tree mscorlib.dll.
20633
20634 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20635
20636         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20637
20638         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20639         runtime data/code are now stored in a table similar to the GOT in ELF. 
20640         This allows the code itself to be position independent.
20641
20642         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20643         loading changes.
20644
20645         * aot.c: Attach ELF type (object/function) directives to all global
20646         symbols.
20647
20648         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20649
20650         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20651
20652         * mini-amd64.h: Turn on PIC AOT code.
20653
20654         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20655         returning the offset within an OP_AOTCONST instruction where the GOT
20656         offset needs to be added.
20657
20658         * mini.h: Bump AOT file format version.
20659
20660 2004-11-25  Martin Baulig  <martin@ximian.com>
20661
20662         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20663         uninflated generic methods.
20664
20665 2004-11-25  Martin Baulig  <martin@ximian.com>
20666
20667         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20668
20669 2004-11-24  Martin Baulig  <martin@ximian.com>
20670
20671         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20672         original klass (this only applies for generic instances).
20673
20674 2004-11-24  Martin Baulig  <martin@ximian.com>
20675
20676         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20677         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20678         that array).
20679
20680 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20681
20682         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20683         localloc. Fixes #69678.
20684
20685         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20686         
20687 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20688
20689         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20690         used SSE registers on pinvoke calls. Fixes #69774.
20691
20692 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20693
20694         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20695         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20696
20697 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20698
20699         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20700         Refer directly to the mcs/ tree.
20701
20702 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20703
20704         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20705         Check if a trampoline for a synchronized method is required. 
20706
20707 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20708
20709         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20710         with localloc if needed. Throe arithmetric exception in
20711         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20712         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20713
20714 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20715
20716         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20717         types before switching on type.  Fixes #69622.
20718
20719 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20720
20721         * Makefile.am (check-local): New.  Integrate into 'make check'.
20722         (MCS,RUNTIME): Define using in-tree mono and mcs.
20723         (ILASM): New.
20724         (%.exe): Use $(ILASM).
20725
20726 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20727
20728         * mini-ppc.c: adjust initial prolog size (bug #69691).
20729
20730 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20731
20732         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20733         #69664.
20734
20735 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20736
20737         * Makefile.am (clean-local): Rename from 'clean'.
20738
20739 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20740
20741         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20742         to mono_arch_is_int_overflow. 
20743         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20744         SIGFPE events.
20745
20746 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20747
20748         * declsec.c|h: New files to support declarative security attributes.
20749         Added function to check if a method has (applicable) security.
20750         * mini.c|h: Add check for declarative security attributes in
20751         mono_method_check_inlining.
20752         * Makefile.am: Added declsec.c and declsec.h to the build.
20753
20754 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20755
20756         * mini.c, mini.h: update to keep dynamic code info per-domain.
20757
20758 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20759
20760         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20761         (mini_init): Get rid of it from here too.
20762
20763 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20764
20765         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20766         implemented OP_RETHROW (patch by Geoff Norton
20767         <gnorton@customerdna.com>).
20768
20769 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20770
20771         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20772         between appdomains.  Fixes appdomain-unload on PPC.
20773
20774 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20775
20776         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20777         mini-exceptions.c: handle the new wrapper types.
20778         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20779         token value as a MonoClass* when compiling a wrapper.
20780         mono_jit_create_remoting_trampoline now takes an additional
20781         MonoRemotingTarget parameter.
20782         
20783 2004-11-10  Martin Baulig  <martin@localhost>
20784
20785         * mini.c (mono_method_to_ir): Use `generic_container->context'
20786         rather than creating a new one.
20787
20788 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20789
20790         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20791
20792         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20793
20794 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20795
20796         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20797         the experimental aot cache stuff.
20798
20799 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20800
20801         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20802         mini-exceptions.c: update to exception clause structure changes.
20803
20804 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20805
20806         * exceptions-x86.c (throw_exception): Fix warnings.
20807
20808         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20809         for OP_RETHROW.
20810
20811 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * exceptions-sparc.c (get_throw_exception): Really fix this.
20814
20815 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
20816
20817         * tramp-*.c: we no longer support icalls without wrappers, so
20818         a bit of code can be removed here
20819
20820 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
20821
20822         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
20823         patch.
20824
20825         * cpu-sparc.md: Add op_rethrow.
20826
20827         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
20828
20829         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
20830
20831         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
20832         * mini-ops.h: Add OP_RETHROW.
20833
20834         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
20835
20836         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
20837
20838 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
20839         
20840         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
20841         Makes the output much easier to read
20842
20843 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
20844
20845         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
20846         prevents another huge leak when compiling with ssa. Secondly, the
20847         performance of doing this rather than freeing the lists is much
20848         better. GList does a lock every time you allocate a list link,
20849         so that it can use a memory pool. So, it is better to just use
20850         a memory pool of our own.
20851         
20852         * ssa.c, linear-scan.c: replace g_list_remove_link with
20853         g_list_delete.  The remove one does not free the GList, so we were
20854         leaking memory. On -O=all --compile-all with corlib, this cut down
20855         3 MB of allocations.
20856
20857 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
20858
20859         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
20860
20861         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
20862
20863         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
20864         into a new function mono_create_jit_trampoline ().
20865
20866 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
20867
20868         * trace.c (get_spec): Allow tracing of classes without a namespace.
20869
20870 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
20871
20872         * mini.c: Fix pointer overwrite in mini_method_compile.
20873
20874 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
20875
20876         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
20877         The darwin ABI needs some special handling for 1 and 2 byte structs
20878         Lets use lbz/lhz instead of lwz everywhere.
20879         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
20880         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
20881         Use stb/sth for the former, and put the latter always on stack instead of in
20882         argument registers.
20883
20884 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
20885
20886         * trace.c (is_filenamechar): Add '_'.
20887
20888 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
20889
20890         * mini-s390.c: Fix prolog length to allow for large trace requirements.
20891
20892         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
20893
20894 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
20895
20896         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
20897         depends on libmonogc. Fixes #68805.
20898
20899 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
20900
20901         * mini.c (mono_jit_free_method): Provide extra information for
20902         this error.  Currently this leaks, but will be turned into a
20903         developer option in the future.
20904
20905 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
20906
20907         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
20908
20909 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
20910
20911         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
20912         boundary. Fixes reading of PATCH_INFO_R4 and R8.
20913         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
20914
20915 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
20916
20917         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
20918         trampolines for AOT code.
20919
20920 2004-10-22    <vargaz@freemail.hu>
20921
20922         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
20923         constructed types. Fixes #68136.
20924
20925 2004-10-21  Martin Baulig  <martin@ximian.com>
20926
20927         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
20928         if it returns true, unwind the stack to the call instruction.
20929
20930 2004-10-21    <vargaz@freemail.hu>
20931
20932         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
20933
20934         * mini.h: Bump AOT version number.
20935
20936         * objects.cs: Add another test for unbox trampolines.
20937
20938         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
20939         valuetype methods.
20940
20941 2004-10-20    <vargaz@freemail.hu>
20942
20943         * driver.c: Add SHARED to the set of optimizations tested.
20944
20945         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
20946
20947         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
20948         used by CEE_NEWARR.
20949
20950         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
20951
20952 2004-10-20  Martin Baulig  <martin@ximian.com>
20953
20954         * mini-exceptions.c (mono_handle_exception): Call
20955         mono_debugger_handle_exception() to tell the debugger about
20956         catch/finally clauses.
20957
20958 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
20959
20960         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
20961
20962         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
20963         #68447.
20964
20965 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
20966
20967         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
20968         methods as their native size, fixed bug #57543, #57545.
20969         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
20970         This saves a temporary register and mullw call down into 1 (minor perf
20971         increase for cases like sum = sum * 5;  This use to translate into:
20972             li r11,5
20973             mullw r28,r28,r11
20974         It now translates to
20975             mulli r28,r28,5
20976
20977 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
20978
20979         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
20980         #68388.
20981
20982 2004-10-11  Martin Baulig  <martin@ximian.com>
20983
20984         * mini.c (mono_method_to_ir): If we're a generic method, get the
20985         MonoGenericContainer from our MonoMethodNormal and create a
20986         MonoGenericContext from it.
20987
20988 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
20989
20990         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
20991
20992         * basic-long.cs: Add test for checked i8->i2 cast.
20993
20994 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
20995
20996         * inssel-ppc.brg: added a couple of speedup rules.
20997
20998 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
20999
21000         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21001         to speed up rebuilds.
21002
21003 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21004
21005         * mini-s390.c: Minor fix to OP_OR_IMM.
21006
21007 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21008
21009         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21010         better. Fixes appdomain-unload.exe on sparc.
21011
21012 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21013
21014         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21015         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21016         see bug 67324.
21017
21018 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21019
21020         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21021
21022 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21023
21024         * mini.c: Always generate a field read/write wrapper for members
21025         of the class MarshalByRefObject since the actual instance could
21026         be a CBO.
21027
21028 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21029
21030         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21031
21032 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21033
21034         * driver.c mini.h trace.c: Move the setting of the main assembly into
21035         a separate function called mono_trace_set_assembly () and call it after
21036         actually loading the main assembly. Fixes #66872.
21037
21038 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21039
21040         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21041         using the code manager.
21042
21043 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21044
21045         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21046
21047 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21048
21049         * cpu-amd64.md: Fix bug in previous patch.
21050         
21051         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21052         #66650.
21053
21054 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21055
21056         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21057         mini-exceptions.c: updates for changed stack walk interface.
21058
21059 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21060
21061         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21062
21063 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21064
21065         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21066
21067 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21068
21069         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21070         since assemblies can't be unloaded.
21071         
21072 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21073
21074         * cpu-amd64.md: Fix more instruction lengths.
21075
21076         * cpu-amd64.md: Fix lengths of some instructions.
21077
21078 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21079
21080         * inssel.brg: Make the array ldelema check aot friendly.
21081
21082 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21083
21084         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21085
21086         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21087
21088 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21089
21090         * mini-x86.c: Fix build.
21091
21092         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21093         mono_type_get_underlying_type () helper function to simplify code.
21094         
21095 2004-09-09  Martin Baulig  <martin@ximian.com>
21096
21097         * mini-amd64.c: Don't access `type->data.klass' directly, call
21098         mono_class_from_mono_type() instead since the type may be a
21099         generic instance.
21100
21101 2004-09-09  Martin Baulig  <martin@ximian.com>
21102
21103         * mini-amd64.c (get_call_info): Fix support for generic instances.
21104         (add_valuetype): Use mono_class_from_mono_type() to get the class
21105         since we can be a generic instance.
21106
21107 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21108
21109         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21110
21111 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21112
21113         * liveness.c: reset spill costs on each scan: bug 62107
21114
21115 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21116
21117         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21118         unnecessary line that doesn't compile
21119
21120 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21121
21122         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21123         trampolines, make them call an error function so people can fix their
21124         code.
21125
21126 2004-09-06  Martin Baulig  <martin@ximian.com>
21127
21128         * mini.c (mono_method_to_ir): When initializing locals, handle a
21129         generic instances like a valuetype if it's a valuetype and like a
21130         class if it's a class.
21131
21132 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21133
21134         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21135         stack. Fixes #64674.
21136
21137         * exceptions.cs: Add test for unwinding of call arguments.
21138
21139 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21140
21141         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21142         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21143         set the carry/borrow flag). The sparc and s390 implementations
21144         can now use optimized versions (and simplify the code). ppc bugfixes.
21145
21146 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21147
21148         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21149
21150 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21151
21152         * inssel-amd64.brg: Remove leftover 32 bit rule.
21153
21154         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21155
21156 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21157
21158         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21159         mono_arch_find_jit_info functions into a new function. Fix a memory
21160         leak.
21161
21162         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21163         refactored code.
21164         
21165 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21166
21167         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21168         as well.
21169         
21170         * exceptions.cs: Add array size tests.
21171
21172         * mini.c: Allocate a separate icall wrapper for each arity of 
21173         mono_array_new_va. Fixes #59509.
21174
21175         * exceptions.cs: Add testcase for 64578.
21176
21177         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21178
21179         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21180         
21181 2004-09-02  Martin Baulig  <martin@ximian.com>
21182
21183         * mini.c (mono_method_to_ir): When initializing the locals, call
21184         handle_initobj() on the generic instance itself, not its
21185         underlying type.
21186
21187 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21188
21189         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21190         MonoJitInfo for dynamic methods.
21191
21192         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21193
21194         * mini.c: Add support for freeing JIT data for dynamic methods.
21195         
21196 2004-09-01  Martin Baulig  <martin@ximian.com>
21197
21198         * mini-x86.c (is_regsize_var): Added support for generic
21199         instances.
21200         (mono_arch_emit_prolog): Make this compile again, use
21201         `x86_push_imm_template (code)'.
21202
21203 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21204
21205         * mini-x86.c: make all push_imm instructions that get
21206         patched always emit the long form
21207
21208 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21209
21210         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21211         in a per-domain hash.
21212
21213         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21214         types.
21215
21216 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21217
21218         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21219         work.
21220         
21221         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21222         work.
21223
21224         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21225         Beginnings of SSE2 support.
21226
21227         * exceptions.cs: Add more tests for checked int<->uint casts.
21228
21229 2004-08-28  Martin Baulig  <martin@ximian.com>
21230
21231         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21232         generic instances.
21233
21234         * mini.c
21235         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21236         Handle generic instances recursively.
21237
21238 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21239
21240         * iltests.il: test for conv.u8 on a constant
21241
21242 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21243
21244         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21245         LCONV_x4 (shrun_32 (membase)).
21246
21247 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21248
21249         * inssel-x86.brg: c&p rules for push/setret of long
21250
21251 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21252
21253         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21254         compare (regvar, base)
21255
21256         * inssel-x86.brg: more burg love
21257
21258         * inssel.brg: more cleanup
21259
21260         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21261
21262 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21263
21264         * basic-long.cs, basic-calls.cs: new tests for optimization.
21265
21266 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21267
21268         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21269         patch.
21270
21271 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21272
21273         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21274         
21275 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21276
21277         * inssel.brg (mini_emit_memcpy): use 
21278         NO_UNALIGNED_ACCESS to disable memcpy optimization
21279
21280 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21281
21282         * mini-amd64.c: Handle generic types in various places.
21283
21284         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21285
21286 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21287
21288         * mini.c (handle_box): Fix warning.
21289
21290         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21291
21292         * mini-amd64.h: Enable the emit_state optimization.
21293
21294         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21295
21296         * mini-amd64.c: Add some new 64 bit peephole opts.
21297
21298         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21299
21300         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21301
21302         * mini-amd64.c: Register allocator fixes.
21303
21304         * mini.c: Add an optimization to emit_state to avoid allocation of new
21305         registers on some platforms.
21306
21307 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21308
21309         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21310
21311         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21312         allocation. Fixes #63085.
21313
21314         * basic-long.cs: Add new regression test.
21315
21316         * mini-amd64.c: Register allocator improvements.
21317
21318 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21319
21320         * mini-amd64.c (read_tls_offset_from_method): Add another code
21321         sequence.
21322
21323         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21324         instruction sequence for nullifying class init trampolines.
21325
21326         * objects.cs: Add new regalloc test.
21327
21328         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21329
21330 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21331
21332         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21333         
21334         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21335         arguments.
21336
21337         * driver.c: Fix profiling after TLS changes.
21338         
21339         * driver.c (mono_main): Set mono_stats.enabled if needed.
21340
21341         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21342         CEE_BOX.
21343
21344 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21345
21346         * mini-x86.c: use a 1 op rather than a 2 op tls access
21347         instruction -> faster.
21348
21349 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21350
21351         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21352         x86 backend.
21353
21354 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21355
21356         * exceptions-sparc.c (throw_exception): fix typo
21357
21358 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21359
21360         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21361         set tree->dreg correctly with tls. Allow any
21362         register to be used.
21363
21364         * mini-x86.c (read_tls_offset_from_method): add new code
21365         generation pattern seen with GCC.
21366
21367
21368 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21369
21370         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21371         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21372         exceptions-sparc.c: fix some performance issues in exception
21373         handling and setting of the stack trace for exceptions that were
21374         already thrown.
21375
21376 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21377
21378         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21379         x86 backend.
21380         
21381         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21382         registers.
21383
21384 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21385
21386         This patch inlines tls access, when possible.
21387         
21388         * mini.h: new arch functions for TLS intrinsics.
21389         All platforms updated with a stub.
21390
21391         * mini.c: use the new intrinsics
21392
21393         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21394         arch specific intrinsic for tls variables
21395
21396 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21397
21398         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21399         under windows.
21400
21401 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21402
21403         * mini.c: thread local allocation
21404
21405 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21406
21407         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21408
21409         * Makefile.am: Link against the static version of libmonogc.
21410         
21411         * Makefile.am: Link the static versions of the convenience libraries
21412         into the mono executable.
21413
21414         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21415
21416 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21417
21418         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21419         on integer overflow.
21420
21421         * mini-amd64.c: Reorganize function call code.
21422
21423         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21424
21425 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21426
21427         * inssel-x86.brg: use xor eax,eax.
21428         
21429         * basic.cs: new tests
21430
21431 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21432
21433         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21434         in exception throwing code.
21435         
21436 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21437
21438         * inssel-x86.brg: use xor esi,esi.
21439
21440 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21441
21442         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21443         can trace methods compiled during mini_init () too.
21444
21445         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21446         CEE_CONV_U4.
21447
21448 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21449
21450         * Makefile.am: static link on x86 (r=zoltan)
21451
21452 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21453
21454         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21455         code since it causes some programs to fail.
21456
21457 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21458
21459         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21460
21461 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21462
21463         * mini.c: ovfops_op_map - add STACK_OBJ case for
21464         CONV_I 
21465         * basic.cs: add test_0_pin_string as test
21466         case for above.
21467
21468 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21469
21470         * Makefile.am: build C# if srcdir != builddir
21471
21472 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21473
21474         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21475         fall-through blocks.
21476
21477 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21478
21479         * driver.c: enable loop by default again and include abcrem in -O=all.
21480
21481 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21482
21483         * iltests.il: Add some localloc tests.
21484
21485         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21486
21487         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21488         Fixes #62574.
21489
21490         * inssel-amd64.brg: Add some optimizations.
21491
21492         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21493         for gcc-3.4.
21494
21495         * Makefile.am: Statically link mono against libmono on AMD64.
21496         
21497         * mini-amd64.c inssel-amd64.brg: Optimizations.
21498
21499 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21500
21501         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21502
21503         * tramp-amd64.c: Patch calling code in trampolines.
21504
21505 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21506
21507         * mini-amd64.c: pinvoke struct passing fixes.
21508
21509 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21510
21511         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21512         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21513
21514 2004-08-05  Duncan Mak  <duncan@ximian.com>
21515
21516         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21517         CEE_LDELEM_ANY.
21518
21519 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21520
21521         * mini-amd64.c (emit_move_return_value): Move return value for normal
21522         calls too.
21523
21524 2004-08-05  Martin Baulig  <martin@ximian.com>
21525
21526         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21527         `type->type'; just modify `type' itself when dealing with enums
21528         and generic instances.
21529         (check_call_signature): Make `simple_type' a `MonoType *'.
21530
21531 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21532
21533         * mini.c: Use OP_PADD to add offsets to addresses.
21534
21535         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21536
21537 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21538
21539         * mini-sparc.c (mono_arch_emit_epilog): fix check
21540         for folding last op into restore instruction
21541
21542 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21543
21544         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21545         helper methods using the code manager.
21546         
21547         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21548
21549         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21550
21551 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21552         
21553         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21554           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21555
21556         * mini-s390.c: fix tail processing
21557
21558 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21559
21560         * mini-ppc.c: mul.ovf.un exception name fix.
21561
21562 2004-08-03  Martin Baulig  <martin@ximian.com>
21563
21564         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21565         instances; before jumping to `handle_enum', also modify `ptype'.
21566
21567 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21568
21569         * cpu-sparc.md: fcall maximal length too small.
21570
21571 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21572
21573         * mini-amd64.c mini.h: Add initial support for passing/returning 
21574         structures to/from pinvoked methods.
21575
21576 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21577
21578         * mini-ppc.c: reg allocator fix.
21579
21580 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21581
21582         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21583
21584         * inssel.brg: Optimize memset on 64 bit machines.
21585
21586         * mini-amd64.c: Fix some vararg cases.
21587
21588 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21589
21590         * mini-s390.c: Corrected macro in emit_float_to_int
21591
21592         * s390-abi.cs: Tests to exercise the s390 ABI
21593
21594 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21595
21596         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21597         caller saved regs.
21598
21599         * basic.cs: Add a test for add.ovf.un.
21600
21601 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21602
21603         * mini-sparc.c: add case for OP_IDIV_UN
21604
21605 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21606
21607         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21608         
21609         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21610
21611 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21612
21613         * basic.cs: regression tests.
21614
21615         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21616         regressions.
21617
21618 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21619
21620         * basic.cs: Add a new test.
21621
21622         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21623         and AOT. Various fixes and optimizations.
21624
21625         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21626
21627 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21628
21629         * mini-ppc.c: make sure temp regs are not used for global reg
21630         allocation.
21631
21632 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21633
21634         * cpu-sparc.md: conv_i8 fix for 64bits
21635
21636         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21637
21638 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21639         
21640         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21641         add opcode for cmp BYTE PTR [eax], imm.
21642
21643         * inssel.brg: Make memcpy and memset takes bases.
21644
21645 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21646
21647         * *-amd64.*: More AMD64 work.
21648         
21649 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21650
21651         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21652         add a compare-not-equal opcode.
21653         
21654 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21655
21656         * mini.c: Use mono_init_from_assembly instead of mono_init.
21657         
21658 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21659
21660         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21661
21662         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21663
21664         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21665
21666         * inssel.brg: 64 bit fixes.
21667
21668         * mini.h (MonoCallInst): Add some AMD64 specific data.
21669
21670         * mini.h: Add some OP_P opcodes.
21671
21672 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21673
21674         * basic.cs: tests for 61797 and 61740
21675
21676 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21677
21678         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21679         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21680
21681 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21682
21683         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21684
21685         * *-amd64*.*: Ongoing AMD64 work.
21686
21687 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21688
21689         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21690
21691         * *-amd64*: Ongoing AMD64 work.
21692
21693         * mini-arch.h: Add AMD64 support.
21694
21695         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21696
21697         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21698
21699         * mini-ops.h: Add new opcodes.
21700
21701         * Makefile.am: Add AMD64 support.
21702
21703         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21704         rules into the inssel-long*.brg files.
21705
21706         * *-amd64.*: Add beginnings of AMD64 backend.
21707
21708 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21709
21710         * mini.c (print_dfn): commenting out the code that prints
21711         the cil. With -O=deadce, this makes -v -v crash.
21712         
21713         * cpu-pentium.md: make checkthis have a length of 2
21714
21715 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21716
21717         * mini-sparc.h: fix implementations of __builtin
21718         functions for Sun compiler for V9.
21719
21720 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21721
21722         * mini.c: use the new stelem.ref wrapper
21723         * exceptions.cs, arrays.cs: new stelem.ref tests
21724
21725 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21726
21727         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21728         new XSP should work with these changes).
21729
21730 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21731         
21732         * inssel-{long32,x86,}.brg: trivial optimizations.
21733         
21734 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21735
21736         * mini.c: load value when emitting box operation in
21737         constrained calls.
21738
21739 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21740
21741         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21742         is one byte shorter than cmp DWORD PTR [eax], 0.
21743
21744 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21745
21746         * inssel-ppc.brg: arguments on the stack are always
21747         relative to the stack pointer (spotted by Neale Ferguson).
21748
21749 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21750
21751         * exceptions-x86.c: delay appending the method name to the trace until
21752         after mono_jit_info_table_find is called, as this gets the real
21753         MonoMethod.
21754
21755 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21756
21757         * aot.c: register roots
21758
21759 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21760
21761         * aot.c : I could just use PLATFORM_WIN32 flag.
21762
21763 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21764
21765         * aot.c : Reverting the previous fix. This time it broke linux build.
21766
21767 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21768
21769         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21770
21771 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21772
21773         * mini.c (handle_stack_args): Remove some more debugging code.
21774         
21775         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21776
21777         * driver.c mini.h aot.c: Allow additional options to be specified with
21778         --aot and pass them to mono_compile_assembly.
21779
21780         * aot.c: Add experimental code to AOT compile all loaded assemblies
21781         on demand and save the code into a cache in the filesystem.
21782
21783         * aot.c: Add support for more wrapper methods.
21784         
21785         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21786         58863.
21787
21788         * cpu-*.md: Remove removed opcodes.
21789
21790         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21791         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21792         related icalls to marshal.c.
21793
21794 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21795
21796         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21797
21798         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21799
21800         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21801
21802 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21803         * liveness.c: If liveness is recomputated we need to reset the information
21804         for each variable. This way, if the liveness range has been narrowed
21805         by optimizations that happened after the last computation, we can return
21806         a smaller range.
21807         
21808         For example, if you have
21809         
21810         {
21811                 int i = 0;
21812                 
21813                 // Tons of code that does not affect i
21814                 
21815                 i = foo ();
21816                 ...
21817         }
21818         
21819         i = 0 is dead code and will be removed by SSA. However, when
21820         linear scan gets to the code, i will still appear to be live
21821         throughout the entire block. This prevents good register allocation.
21822
21823 2004-07-06  Martin Baulig  <martin@ximian.com>
21824
21825         * debug-mini.c (mono_debug_init_method): Allow
21826         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
21827         (mono_debug_add_icall_wrapper): New method.
21828
21829         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
21830
21831 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
21832
21833         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
21834         optimization.
21835
21836 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
21837
21838         * aot.c (mono_aot_load_method): Fix loading of debug info.
21839
21840 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21841
21842         * aot.c: Add logging support.
21843
21844 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21845
21846         * mini.h: Add prototype for mono_print_method_from_ip.
21847
21848         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
21849
21850         * inssel.brg: 64 bit fixes.
21851
21852         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
21853         inssel-long32.brg.
21854
21855         * Makefile.am: Add SPARC64 support.
21856
21857 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
21858
21859         * aot.c: Fix alignment problems on 32 bit platforms.
21860
21861 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
21864         SPARC64.
21865
21866         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
21867         problems.
21868
21869         * mini.h: Bump AOT file version. Some 64 bit fixes.
21870
21871 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21872
21873         * inssel-sparc.brg: Add new rule to avoid register moves.
21874
21875         * inssel.brg: Add ldind_to_load_membase helper function.
21876
21877 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
21878
21879         * mini.c: OffsetToStringData intrinsic.
21880         
21881 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
21882
21883         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
21884
21885         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
21886         regression tests.
21887
21888         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
21889 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
21890
21891         * mini.c: reinstated mono_compile_get_interface_var()
21892         on x86, too, since the change breaks the Gtk# build there as well.
21893
21894 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21895
21896         * driver.c: remove loop from the default optimizations: it seems to
21897         interact badly with some of the other options (see bug #60613).
21898
21899 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
21900
21901         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
21902         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
21903
21904 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
21905
21906         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
21907         vararg-using methods.
21908
21909 2004-06-21  Martin Baulig  <martin@ximian.com>
21910
21911         * mini/mini-exceptions.c
21912         (mono_handle_exception): Added `gpointer original_ip' argument.
21913         After calling mono_unhandled_exception(), call
21914         mono_debugger_unhandled_exception() and if that returns true,
21915         restore the context and return.
21916
21917 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
21918
21919         * mini-ppc.c: prefer the use of relative branches so
21920         they won't need to be patched in aot code (patch from Patrick Beard).
21921
21922 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
21923
21924         * aot.c: patch from Patrick Beard to make the output assembly
21925         more correct for the MacOSX assembler. Small tweak to
21926         generate sane images on Linux/PPC, too.
21927
21928 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21929
21930         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
21931         case until bug #59509 is fixed (shows up in #60332).
21932
21933 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
21934
21935         * mini.c: make sure the needed wrappers are compiled, too, with
21936         precomp.
21937
21938 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
21939
21940         * driver.c: remove NPTL reference in --version output.
21941
21942 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21943
21944         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
21945         generate valid assembly for the Mach-O assembler.
21946
21947 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
21948
21949         * driver.c: don't include abcrem in the all optimization specifier
21950         since it slows down jit compilation too much for now.
21951
21952 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
21953
21954         * mini.c: use BIGMUL only if both operands have the same signage.
21955         * iltests.il: Test for bug 60056. (errors related to signage in
21956         BIGMUL).
21957
21958         r=lupus.
21959
21960 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
21961
21962         * mini.c, aot.c: memory leak fixes.
21963
21964 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
21965
21966         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
21967
21968 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
21969
21970         * Makefile.am: remove the -static hack completely, it links in
21971         statically glib as well.
21972
21973 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
21974
21975         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
21976         * exceptions.cs: make it compile with new mcs/csc.
21977
21978 2004-06-03 Massimiliano Mantione <massi@ximian.com>
21979         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
21980         and added relevant test case.
21981
21982 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
21983
21984         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
21985         regressions in gtk-sharp.
21986
21987 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * exceptions.cs: New regression tests.
21990
21991         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
21992
21993 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
21994
21995         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
21996
21997 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
21998
21999         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22000
22001         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22002
22003 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22004
22005         * mini.c (mono_jit_runtime_invoke): Init class in this
22006         method instead of trusting mono_jit_compile_method to
22007         do the work (because wrappers can be in object class)
22008
22009 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22010
22011         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22012
22013         * basic-long.cs: New regression test.
22014
22015 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22016
22017         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22018         and div/rem checks.
22019
22020 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22021
22022         * Makefile.am: fix miguel's change to build mono statically against
22023         libmono (track build dependencies).
22024
22025 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22026
22027         * cfold.c: Some glib versions do not have G_MININT32.
22028
22029 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22030
22031         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22032         with precision of tan, atan, sin and cos, and implemented related
22033         regressions tests (fixes bug 54467, but one new problem appeared and
22034         is not fixed yet).
22035
22036 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22037
22038         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22039
22040         * exceptions.cs: Add test for constant folding && division by zero.
22041
22042         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22043         since driver.c is in libmono too, so the optimization was useless.
22044
22045         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22046         variable to driver.c so the compiler can emit more efficient code to
22047         access them.
22048
22049 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22050
22051         * Makefile.am: don't distribute generated inssel.[ch] files.
22052
22053 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22054
22055         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22056         into the default appdomain. Fixes #58707.
22057
22058         * jit-icalls.c: Remove the broken approximation for truncl, doing
22059         no conversion is better.
22060
22061         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22062         Fixes #58863.
22063
22064 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22065
22066         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22067         of the mcrxr instruction which is not available on some processors
22068         even if it's documented to be. Implement add and sub overflow correctly
22069         (still not complete for long unsigned). Speed up icalls a bit.
22070
22071 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22072
22073         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22074         we run .cctor in the current domain instead of target_domain.
22075         
22076         Fixes bug #58558, .cctor not being called in -O=shared.
22077
22078 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22079
22080         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22081
22082 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22083
22084         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22085         which can be done with an imm8, do it that way.
22086         (mono_arch_output_basic_block): ditto for a jmp
22087         (mono_arch_emit_prolog): Computate maximum offset of a label.
22088
22089 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22090
22091         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22092         now tries to allocate prefered physical reg's for virtual
22093         regs. This reduces the number of emited spills/loads with
22094         20-30% on our core assemblies.
22095
22096 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22097
22098         * jit-icalls.c: truncl() is not needed and trunc() is
22099         the correct thing to do anyway (bug #58287).
22100
22101 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22102
22103         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22104         if available.
22105
22106 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22107
22108         * driver.c: enable loop optimizations by default.
22109
22110 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22111
22112         * mini-x86.c: fix calc of max loop size when aligning loops start.
22113
22114 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22115
22116         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22117         the stack.
22118
22119 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22120
22121         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22122         should set carry.
22123
22124         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22125
22126         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22127         
22128         * mini.c (inline_method): Allways inline some wrappers even if the cost
22129         is too large. Fixes #58785.
22130
22131         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22132         
22133 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22134
22135         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22136         (crichton@gimp.org). Beginning of support for sparc/linux.
22137
22138         * mini-sparc.c: Optimize retrieval of LMF address.
22139
22140 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22141
22142         * exceptions-ppc.c:  handle alloca in methods with clauses.
22143
22144 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22145
22146         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22147
22148 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22149
22150         * mini.c: Delegate most of the abort signal work to 
22151           mono_thread_request_interruption, which also handles Stop and Suspend
22152           states.
22153
22154 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22155
22156         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22157         supports the save/restore lmf opcodes.
22158
22159 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22160
22161         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22162         by gcc-3.4 as well.
22163
22164         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22165
22166 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22167
22168         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22169         methods which contain array accesses.
22170
22171         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22172         boundaries. Fixes #58537.
22173
22174         * iltests.il: Add regression test for #58537.
22175
22176 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22177
22178         * mini-x86.c (mono_arch_local_regalloc): Last part of
22179         fix for bug #58633 (releasing register to early).
22180
22181 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22182
22183         * basic-long.cs: Add new regression test.
22184
22185 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22186
22187         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22188         register too early on the chain.
22189
22190 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22191
22192         * mini.c (create_helper_signature): Use a helper function to reduce
22193         the code which needs to be written. Also set the calling convention of
22194         icalls on windows. Fixes #57840.
22195
22196 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22197
22198         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22199         exceptions-ppc.c: added helper function to get the instruction address
22200         from a signal handler context.
22201
22202 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22203
22204         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22205         from gonzalo.
22206
22207 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22208
22209         * helpers.c: Add new env variable to pass args to objdump.
22210         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22211
22212 2004-05-17  Radek Doulik  <rodo@ximian.com>
22213
22214         * Makefile.am (common_sources): added abcremoval.h so it get
22215         disted and daily mono packages on go-mono.com will build again
22216
22217 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22218
22219         * abcremoval.c: Fixed coding style, added copyright header.
22220
22221         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22222
22223         * mini.h: Added prototype for abc removal main function.
22224
22225         * build_relations_propagation_table.pl: Added copyright header.
22226
22227 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22228
22229         * basic-long.cs: reg test for complex ceq_long bug.
22230
22231 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22232
22233         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22234         reg in long and clob case (bug #58343). Fixed/added comments.
22235
22236 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22237
22238         * mini.c (mono_jit_runtime_invoke): Follow new convention
22239         of calling the invoke method with an function pointer.
22240
22241 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * ChangeLog: Fix author of memory leak patch.
22244
22245 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22246
22247         * Makefile.am: fix make dist as well...
22248
22249
22250 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22251
22252         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22253         on archs where pointers are 4 bytes long.
22254
22255         * Makefile.am: Added abcremoval.c source file.
22256
22257         * abcremoval.c: Added abcremoval.c.
22258
22259         * abcremoval.h: Added abcremoval.h.
22260
22261         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22262
22263         * inssel.brg: Enabled bounds check removal.
22264
22265         * mini.c: Added support for abcrem optimization.
22266
22267         * mini.h: Added abcrem optimization label.
22268
22269         * driver.c: Added support for abcrem optimization.
22270
22271         * propagated_relations_table.def: Added propagated_relations_table.def.
22272
22273 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22274
22275         * mini.c, cfold.c: fix style.
22276
22277 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22278
22279         * mini.c: handle issue with the low-level implementation of
22280         some long opcodes (bug #54209).
22281
22282 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22283
22284         * basic.cs: test for my new cmov stuff.
22285
22286 2004-05-13      Patrik Torstensson
22287
22288         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22289         opt and added peephole documentation.
22290
22291 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22292
22293         * tramp-ppc.c: rewrote the generic trampoline code.
22294
22295 2004-05-11      Patrik Torstensson
22296
22297         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22298
22299 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22300
22301         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22302
22303         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22304         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22305
22306         * mini.c: Add new icalls for AsAny marshalling.
22307
22308 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22309
22310         * tramp-ppc.c, mini-ppc.c: more cleanups.
22311
22312 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22313
22314         * mini.c: no warnings.
22315
22316 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22317
22318         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22319
22320 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22321
22322         * mini.c: In the thread abort signal handler, if the thread is in the
22323         process of being stoped, don't throw the Abort exception, just stop the
22324         thread.
22325
22326 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22327
22328         * tramp-ppc.c: removed old code.
22329
22330 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22331
22332         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22333         do some simple speed optimizations on ppc.
22334
22335 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22336
22337         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22338         and large offsets in load/store.
22339
22340 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22341
22342         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22343         it causes regressions.
22344
22345 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22346
22347         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22348         support.
22349
22350 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22351
22352         * jit-icalls.c: remove warnings.
22353         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22354         speedups for unsafe code.
22355
22356 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22357
22358         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22359
22360 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22361
22362         * basic-calls.cs: Add new regression test.
22363
22364         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22365         more portable.
22366
22367         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22368
22369         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22370         is no longer used.
22371
22372 2004-05-06      Patrik Torstensson
22373
22374         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22375         long reg allocation in any reg (not only eax:edx) and implemented 
22376         long shl/shr ops in asm instead of helpers.
22377
22378 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22379
22380         * mini-sparc.h: Fix warnings.
22381
22382         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22383         stack.
22384
22385         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22386         separate statement for clarity.
22387
22388         * mini-sparc.c: Update status.
22389
22390 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22391
22392         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22393         here.
22394
22395 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22396
22397         * inssel-ppc.brg: another small pre-release workaround:
22398         we don't do overflow detection for long_sub_un.
22399
22400 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22401
22402         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22403         (also works around a weird ppc bug: 57957).
22404
22405 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22406
22407         * tramp-ppc.c: trampoline fixes.
22408
22409 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22410
22411         * mini-ppc.c: fixed typos.
22412
22413 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22414
22415         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22416         at the top of the stack. Fixed typos. Use a frame registers
22417         for all the methods with exception clauses.
22418
22419 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22420
22421         * exceptions-ppc.c: restore fp registers.
22422
22423 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22424
22425         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22426         order from the stack top (moved the stack room to save the
22427         return value for trace after the param area). Fixed corruption
22428         in restoring registers on unwind.
22429
22430 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22431
22432         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22433
22434 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22435
22436         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22437         and prolog/epilog for methods that use it. Allow
22438         enough param area room for varargs methods. Fix miguel's
22439         breakage in exception handling.
22440
22441 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22442
22443         * Makefile.am: run genmdesc only on current arch.
22444
22445 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22446
22447         * exceptions-x86.c:
22448         * mini-x86.h: fix the build on windows.
22449
22450 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22451
22452         * Makefile.am mini.h mini-exceptions.c mini-x86.h mini-sparc.h exceptions-sparc.c: Move parts of the sparc exception handling code to XP code.
22453
22454         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22455
22456         * mini-exceptions.c: New file.
22457         
22458         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22459         Move some parts of the x86 exception handling code to an 
22460         arch-independent file so it can be shared with other ports.
22461
22462 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22463
22464         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22465
22466 2004-04-26  David Waite  <mass@akuma.org>
22467
22468         * driver.c: remove comma from end of enumeration declaration
22469
22470 2004-04-26  Jackson Harper  <jackson@ximian.com>
22471
22472         * driver.c: parse config file before loading first assembly. This
22473         allows the user gac to be enabled/disabled. 
22474         
22475 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22476
22477         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22478         simpler mechanism: we do not care what is encoded initially
22479         (branch absolute or relative), we care about the code and its
22480         target.  I kept the old code for reference for now.
22481
22482         The new code tries first to determine if the jump is anywhere in
22483         the -/+32 absolute meg range, if it succeeds, it encodes using the
22484         absolute branch;  If not, it tried to find something in the
22485         relative range, if not, it uses the handle_thunk code. 
22486
22487 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22488
22489         * exceptions-ppc.c: use the correct ip register on macosx.
22490
22491 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22492
22493         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22494
22495 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22496
22497         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22498         Raise exception on integer divide by zero by hand since the hw
22499         doesn't support it. Handle NaNs in FP compares.
22500
22501 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22502
22503         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22504         code reducing duplication between the platforms and enabled
22505         signal exception handling (on linux for now).
22506
22507 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22508
22509         * exceptions-ppc.c: more macosx support.
22510
22511 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22512
22513         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22514
22515 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22516
22517         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22518
22519 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22520
22521         * iltests.il: more tests.
22522
22523 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22524
22525         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22526         vars as well.
22527
22528 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22529
22530         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22531
22532 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22533
22534         * liveness.c: Mark variables as volatile in all basic blocks reachable
22535         from exception clauses.
22536
22537 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22538
22539         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22540         inlining.
22541
22542 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22543
22544         * iltests.il, basic.cs: more tests for regalloc.
22545
22546 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22547
22548         * iltests.il: Some tests for register allocation modifications
22549         I have locally.
22550
22551 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22552
22553         * exceptions.cs: Add regression test for bug #56782.
22554
22555         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22556         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22557         the beauty of fixing the same thing in 5 different files...
22558
22559 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22560
22561         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22562         methods.
22563
22564 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22565
22566         * mini.c: Add support for STRWLPARRAY marshalling convention.
22567
22568 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22569
22570         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22571         to init the context to setup the regs pointer).
22572
22573 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22574
22575         * exceptions-ppc.c: more exceptions work.
22576
22577 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22578
22579         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22580         not allowed.
22581
22582 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22583
22584         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22585         can use the memory directly.
22586
22587         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22588
22589         add x86_add_membase, x86_sub_membase, x86_mul_membase
22590
22591 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22592
22593         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22594         GENERAL_REGS they were also hardcoded for all PPC ports.
22595
22596         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22597
22598         Remove hard-coded limit for floating point registers, use
22599         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22600
22601         Notice that in MacOS X calling conventions you can fit a lot more
22602         floating point values in registers, so I should update the PInvoke
22603         test to excercise the passing of floating point values on the
22604         stack (currently broken).
22605         
22606 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22607
22608         * tramp-ppc.c (create_trampoline_code): Added
22609         JUMP_TRAMPOLINE_SIZE. 
22610         (ppc_magic_trampoline): Follow the pattern from
22611         x86_magic_trampoline: if code is set to zero, return. 
22612         (create_trampoline_code): Always pass MonoMethod to the jump
22613         trampoline, before it was passing a null.
22614         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22615         share the code with mono_arch_create_jit_trampoline. 
22616
22617         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22618         implemented.
22619         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22620         implemented.  
22621
22622         * cpu-g4.md: Added length for jmp instruction, the worst case
22623         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22624         for save_lmf).
22625
22626 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22627
22628         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22629
22630 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22631
22632         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22633         before each IL instruction.
22634
22635         * mini.c (CEE_BOX): Fix warnings.
22636
22637 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22638
22639         * mini.c: removed a few unused vars and extra whitespace.
22640
22641 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22642
22643         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22644         checks.
22645         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22646         index.
22647         (OP_GETCHR): use the above
22648         (CEE_LDELEMA): use the above.
22649
22650         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22651         version of the generic impl.
22652         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22653         (CEE_LDELEMA): use the above.
22654
22655 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22656
22657         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22658         Fixes #56317.
22659
22660         * iltests.il: Added new regression test for #56317.
22661
22662 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22663
22664         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22665         under NetBSD. Fixes #56450.
22666
22667         * liveness.c (update_gen_kill_set): Fix previous patch.
22668
22669 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22670
22671         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22672
22673 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22674
22675         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22676         ldsfld and ldsflda.
22677
22678         * inssel-sparc.brg: Add more optimizations.
22679
22680         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22681
22682 2004-04-01  Martin Baulig  <martin@ximian.com>
22683
22684         * mini.c (handle_box): New static function; moved the
22685         implementation of CEE_BOX here.
22686         (mono_method_to_ir): Added `constrained_call' variable.
22687         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22688         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22689         mono_method_get_constrained() to get the method.
22690
22691 2004-04-01  Martin Baulig  <martin@ximian.com>
22692
22693         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22694         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22695         (mono_method_to_ir): We don't need these macros anymore since
22696         mono_class_get_full() already takes care of it. 
22697
22698 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22699
22700         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22701         use @function (as doesn't accept #function here) and check the return
22702         value of system and stop if fails.
22703
22704 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22705
22706         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22707
22708 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22709
22710         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22711
22712         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22713
22714         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22715         #56223.
22716
22717         * basic-long.cs: Add test for negation of Int64.MinValue.
22718
22719 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22720
22721         * mini-sparc.c: Update status.
22722
22723         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22724
22725         * exceptions-sparc.c: Fix return value in filters.
22726
22727         * inssel-sparc.brg: Fix register allocation in some rules.
22728
22729 2004-03-28  Martin Baulig  <martin@ximian.com>
22730
22731         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22732         if neccessary.  
22733
22734 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22735
22736         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22737         
22738         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22739         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22740         remove unused conv_u4 opcode.
22741
22742         * mini-x86.c: Remove valgrind workaround since it slows down things
22743         even when mono is not run under valgrind.
22744
22745 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22746
22747         * mini-sparc.c: Update status.
22748
22749         * inssel-sparc.brg: Add some optimizations.
22750
22751         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22752         future delay slot filling. Add support for varargs, tail calls and JMP.
22753
22754         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22755         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22756
22757         * inssel.brg: Fix register allocation in OP_ARGLIST.
22758
22759         * inssel.brg: Fix warnings.
22760
22761 2004-03-25  Martin Baulig  <martin@ximian.com>
22762
22763         * mini.c (inflate_generic_field): Removed.
22764         (mini_get_method): Removed, use mono_get_method_full(),
22765         (mini_get_class): Removed, use mono_class_get_full().
22766         (mono_method_to_ir): Pass our generic context to
22767         mono_field_from_token().        
22768
22769 2004-03-25  Martin Baulig  <martin@ximian.com>
22770
22771         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22772         of a `MonoMethod *'.
22773         (mini_get_method): Take a `MonoGenericContext *' instead
22774         of a `MonoMethod *'.
22775         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22776         a new local variable called `generic_context' which holds the
22777         current `MonoGenericContext *'; use it to lookup things.
22778
22779 2004-03-24  Martin Baulig  <martin@ximian.com>
22780
22781         * mini.c (mini_get_class): New static method; if we're inside a
22782         generic instance, inflate the class if neccessary.
22783         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22784
22785 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22786
22787         * iltests.il: New regression test for #55976.
22788
22789         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22790         #55976.
22791
22792 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22793
22794         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22795         output.
22796
22797 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22798
22799         * liveness.c: Consider SSA stores as well as loads when making vars
22800         volatile.
22801
22802         * exceptions.cs: New regression tests for register allocation.
22803         
22804 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22805
22806         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22807         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22808           domain lock only to protect puntual access to data structures.
22809           Added access lock for sighash, jit_icall_hash_name, 
22810           jit_icall_hash_addr and domain->code_mp.
22811
22812 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
22813
22814         * driver.c: Print SIGSEGV handling method.
22815
22816         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
22817
22818         * mini.c (setup_jit_tls_data): Handle case when this is called
22819         multiple times for a thread.
22820
22821         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
22822         is different from fbxx_un. Fixes #54303. Also use constants instead of
22823         magic numbers in a lot of places.
22824
22825 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
22826
22827         * exceptions.cs: Fix cctor test when --regression is used.
22828
22829 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
22830
22831         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
22832         for Linux/ppc.
22833
22834 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
22835
22836         * inssel-ppc.brg: fixed register assignments for some rules.
22837
22838 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22839
22840         * exceptions.cs: Add test for exceptions in static constructors.
22841
22842         * mini.c (mono_jit_compile_method_with_out): Move the calling of
22843         static constructors outside the domain lock. Fixes #55720.
22844
22845 2004-03-17  Martin Baulig  <martin@ximian.com>
22846
22847         * mini.c (get_generic_field_inst): Removed, this'll never happen.
22848         (inflate_generic_field): Take the `MonoMethod *' instead of the
22849         `MonoClass *' and added support for generic method.
22850         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
22851         have a `field->parent->gen_params', only inflate the field if it's
22852         an open constructed type.
22853
22854 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
22855
22856         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
22857         exception object instead of the preconstructed ones.
22858
22859 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22860
22861         * mini.c: reverted changed to sigsegv_signal_handler commited
22862         accidentally in the previous patch.
22863
22864 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22865
22866         * mini.c:
22867         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
22868         running --aot with an old assembly.
22869
22870 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
22871
22872         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
22873         point values.
22874
22875         * mini-sparc.c: Add support for v9 branches with prediction.
22876
22877 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
22878
22879         * mini.c (mini_init): #warning is GNUC only
22880
22881         * mini-sparc.h: implement __builtin_frame_address
22882         and __builtin_return_address for Sun C compiler
22883
22884 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
22885
22886         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
22887
22888 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
22889
22890         * basic-calls.cs: Add test for unaligned byref long argument passing.
22891
22892         * mini-ops.h: Add sparcv9 compare and branch instructions.
22893
22894         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
22895         v9 instructions if we have a v9 cpu.
22896
22897         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
22898         registers for global allocation.
22899
22900         * exceptions-sparc.c: Fixes.
22901         
22902 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
22903
22904         * liveness.c (mono_analyze_liveness): Optimized version.
22905
22906         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
22907
22908         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
22909         sparc work.
22910
22911         * basic-float.cs basic-calls.cs: New regression tests.
22912
22913 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
22914
22915         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
22916         sigaltstack implementation.
22917
22918         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
22919         
22920         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
22921         stuff if SIGSEGV_ON_ALTSTACK is not defined.
22922
22923 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
22924
22925         * mini.c: Fix warnings.
22926         
22927         * mini.c (mono_resolve_patch_target): New function which contains the
22928         arch independent part of the patching process.
22929
22930         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
22931         patching code to a separate function.
22932
22933 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
22934
22935         * mini.c (add_signal_handler): ifdef out on Windows
22936
22937 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
22938
22939         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
22940         cpu-sparc.md: Add exception handling support + other fixes.
22941
22942         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
22943         typed GC detection in --version.
22944
22945         * basic.cs exceptions.cs: New regression tests.
22946
22947         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
22948         the arch specific code can store data during a compilation.
22949
22950         * mini-ops.h: Add OP_SETFRET.
22951
22952         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
22953         function, register a separate icall for each arity, so the icalls can
22954         get a wrapper.
22955         
22956         * mini.c (mono_print_tree): Print negative offsets in a more readable
22957         form.
22958         
22959         * mini.c: Make signal handling work on sparc.
22960         
22961         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
22962
22963         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
22964
22965         * jit-icalls.c: Emulate truncl by aintl on solaris.
22966
22967         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
22968
22969 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
22970
22971         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
22972
22973 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
22974
22975         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
22976         a MarshalByRef type, inline a method that performs the check, taking into
22977         account that the object can be a proxy. Also implemented tow new opcodes:
22978         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22979         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
22980         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
22981
22982 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
22983
22984         * mini-ppc.c: if a relative branch displacement is too big
22985         but it points to and area reachable with an absolute branch, 
22986         avoid the thunks.
22987
22988 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
22989
22990         * mini.c: optimize small copies in cpblk.
22991
22992 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
22993
22994         * basic-calls.cs basic-float.cs: New regression tests.
22995
22996         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
22997         negative offsets from %fp. Implement localloc. Fix local register 
22998         allocation. Fix the case when the this argument needs to be saved to
22999         the stack. Implement some missing opcodes.
23000
23001 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23002
23003         * mini.c (mini_method_compile): Reenable global regalloc in methods
23004         with exception handlers.
23005
23006         * linear-scan.c (mono_varlist_sort): Fix warning.
23007
23008         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23009
23010         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23011         regalloc costs.
23012
23013         * liveness.c: Make all variables uses in exception clauses volatile, to
23014         prevent them from being allocated to registers. Fixes #42136.
23015
23016 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23017
23018         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23019         causes regressions.
23020
23021         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23022         argument to mono_arch_regalloc_cost.
23023
23024         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23025         precisely.
23026
23027 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23028
23029         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23030         Make the cost of allocating a variable to a register arch dependent.
23031
23032         * basic-calls.cs: Fix compilation of tests.
23033         
23034         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23035         helper function to cut back on the number of #ifdefs needed.
23036
23037         * mini-ppc.c: Fix compilation.
23038
23039         * basic-calls.cs: New regression tests.
23040
23041         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23042
23043         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23044         of l0 since that is callee saved.
23045
23046         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23047         to virtual calls.
23048
23049         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23050         of delay instruction.
23051
23052         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23053
23054         * mini.h (MonoCallInst): Add 'virtual' flag.
23055
23056         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23057
23058 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23059
23060         * *.cs: New regression tests.
23061
23062         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23063         work.
23064
23065         * mini.c (mono_runtime_install_handlers): Fix build.
23066
23067         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23068         'signal_stack_size' members.
23069
23070         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23071         alternate signal stack.
23072
23073         * exceptions-x86.c: Add stack overflow handling.
23074
23075         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23076         functions to arch independent code.
23077
23078         * mini.c (mono_print_tree): Print more detailed info for load_membase
23079         opcodes.
23080         
23081 2004-02-23  Martin Baulig  <martin@ximian.com>
23082
23083         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23084
23085 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23086
23087         * mini-x86.c: fixed reg allocation for div/rem.
23088
23089 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23090
23091         * driver.c (mono_main): Report some configuratio options on --version.
23092
23093 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23094
23095         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23096         low in the address space. Correctly flush memory in thunks where we
23097         output native code.
23098
23099 2004-02-20  Martin Baulig  <martin@ximian.com>
23100
23101         * mini.c (mini_get_method): New static method; inflate all generic
23102         methods and methods in open generic instances.
23103         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23104         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23105
23106 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23107
23108         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23109
23110         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23111
23112 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23113
23114         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23115
23116         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23117         it compile using Sun's compiler.
23118
23119 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23120
23121         * mini-ops.h inssel-sparc.brg cpu-sparc.md mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Sparc port, part I.
23122
23123         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23124
23125 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23126
23127         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23128         code.
23129         * mini-ppc.c: handle calls outside of the allowed range with thunks
23130         allocated using the code manager.
23131         * tramp-ppc.c: use the code manager to hold generated native code.
23132         Fixed the magic trampoline to just patch vtable entries.
23133
23134 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23135
23136         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23137         independent file.
23138
23139 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23140
23141         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23142         PPC.
23143
23144         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23145         if we have a working __thread implementation.
23146
23147         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23148         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23149
23150 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23151
23152         * mini-x86.c: Fix compilation under gcc 2.
23153         
23154 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23155
23156         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23157         contains a call to the wrapped function.
23158
23159         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23160         OP_<CALL>_IMM opcodes, and use them under X86.
23161         
23162         * mini.c (mono_jit_find_compiled_method): Fix warning.
23163
23164         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23165
23166         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23167
23168         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23169         functionality to mini.c.
23170
23171         * mini.c (mono_create_jump_trampoline): New function to create a jump
23172         trampoline. Return a compiled method instead of a trampoline if it
23173         exists. Add a cache for jump trampolines.
23174
23175         * mini.c (mono_jit_find_compiled_method): New function to return a
23176         compiled method if it exists.
23177
23178         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23179         mono_arch_create_jit_trampoline.
23180
23181         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23182         a jump trampoline. Fixes #52092.
23183         
23184 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23185
23186         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23187         which is not up-to-date. Add check_corlib_version () instead.
23188
23189         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23190         have to call it.
23191         
23192         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23193         since newer valgrind versions do not need it.
23194
23195         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23196         compile a method with a given set of optimizations.
23197
23198         * mini.c: Compile icall wrappers on-demand instead of at startup.
23199
23200         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23201         wrapper for an icall.
23202
23203 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23204
23205         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23206         #54063.
23207
23208         * iltests.il: Add test for non-empty stack before switch instruction.
23209
23210 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23211
23212         * mini.c: Add support for new stringbuilder marshalling conventions.
23213
23214         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23215
23216 2004-02-01  Martin Baulig  <martin@ximian.com>
23217
23218         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23219         in `ginst->mtype_argv'.
23220
23221 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23222
23223         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23224         facilitate grepping.
23225
23226 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23227
23228         * mini.c: fixed buglet in initobj generic implementation for references.
23229
23230 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23231
23232         * Makefile.am: make the version script conditional.
23233         * jit-icalls.c: handle missing truncl().
23234
23235 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23236
23237         * exceptions.cs: Add more tests for double->int conversion.
23238
23239         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23240         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23241
23242 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23243
23244         * driver.c: make --verbose --version emit an error
23245         if the loaded corlib doesn't match the runtime version.
23246
23247 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23248
23249         * mini-ppc.h: export ppc_patch().
23250         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23251         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23252         on par or better than on MacOSX.
23253
23254 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23255
23256         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23257         mono_lookup_pinvoke_call.
23258
23259         * mini-x86.c: Under windows, the default pinvoke calling convention is
23260         stdcall. Fixes #52834.
23261
23262         * mini.c (optimize_branches): Add an upper bound to the number of
23263         iterations to prevent infinite loops on strange loops. Fixes #53003.
23264
23265 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23266
23267         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23268         and ISINST. Fixes #52093.
23269
23270         * objects.cs (test_0_vector_array_cast): New tests.
23271         
23272 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23273
23274         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23275         checking in Array.Set ().
23276
23277         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23278         #52590.
23279
23280         * object.cs (test_0_multi_array_cast): New regression test.
23281
23282 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23283
23284         * exceptions-ppc.c: fix build on Linux/PPC.
23285
23286 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23287
23288         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23289         running under valgrind.
23290         (x86_magic_trampoline): Fix build bustage.
23291
23292         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23293         negative values as well. This is needed for the encoding of the line number
23294         info, since sometimes the line numbers are not in increasing order.
23295
23296 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23297
23298         * cpu-pentium.md (localloc): Increase the size of the localloc 
23299         instruction since it is a loop under Win32.
23300
23301         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23302         allocation.
23303
23304 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23305
23306         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23307         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23308         Max Horn (max@quendi.de). Fix file names in comments.
23309
23310 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23311
23312         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23313         avoid stack overflow.
23314         (replace_usage): Avoid uninitialized variable warnings.
23315
23316         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23317         and taking the address of valuetype variables.
23318
23319 2004-01-03  Patrik Torstensson
23320
23321         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23322         for other purposes than FP later on.
23323
23324 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23325
23326         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23327         of tail calls.
23328
23329 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23330
23331         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23332
23333 2003-12-30  Patrik Torstensson <p@rxc.se>
23334
23335         * mini-x86.h: Decreased number of availiable fp regs.
23336         Solves corner cases with FP spilling.
23337
23338 2003-12-23  Patrik Torstensson <p@rxc.se>
23339
23340         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23341         for floating point stack tracking / spilling on x86. 
23342         Fixes bug #49012.
23343         
23344         * basic-float.cs: added float mul overflow test.
23345
23346 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23347
23348         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23349
23350 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23351
23352         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23353         supports for cond branches that overflow the immediate
23354         overflow offset. mcs can compile simple programs.
23355
23356 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23357
23358         * exceptions-ppc.c: exception handling support wip:
23359         finally handlers get run on exception.
23360
23361 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23362
23363         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23364         profiling.
23365
23366 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23367
23368         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23369         initial support for stack walking and unwinding.
23370
23371 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23372
23373         * driver.c (mono_main): Make corlib-out-of-sync message more 
23374         descriptive. Also remove verify_corlib call.
23375
23376 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23377
23378         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23379         not overlap with other call's arguments, too.
23380
23381 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23382
23383         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23384         move to arch-specific code the choice of arch-specific
23385         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23386         * mini.c: ensure emulation calls will not interleave
23387         with other calls.
23388
23389 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23390
23391         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23392         the magic trampoline stack frame is dropped before executing
23393         the new method.
23394
23395 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23396
23397         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23398         and integer to fp conversions. Added support for overflowing
23399         arguments on the stack. Reserve a couple more registers as temps.
23400         Added support for aot compilation (as output still needs to be
23401         tweaked, though).
23402
23403 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23404
23405         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23406         Don't overwrite return register in some corner cases.
23407
23408 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23409
23410         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23411         static constructors when AOT compiling.
23412
23413         * driver.c (mono_main): Call mono_check_corlib_version.
23414
23415 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23416
23417         * cpu-g4.md, basic.cs: fixed div target register.
23418
23419 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23420
23421         * mini-ppc.c, basic.cs: shl_imm fix with test.
23422
23423 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23424
23425         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23426         structures by value. Misc fixes.
23427         * objects.cs: more tests.
23428
23429 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23430
23431         * mini-ppc.c: lconv.ovf.i implemented.
23432
23433 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23434
23435         * mini.c:
23436         (mini_init): don't error out if someone already called g_thread_init.
23437
23438 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23439
23440         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23441         to be any type per the spec. Fix abnormal memory usage when
23442         the same object is repeatedly thrown.
23443
23444 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23445
23446         * mini.c: check for overruns in IL code.
23447
23448 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23449
23450         * TODO: Add/remove some todo entries.
23451
23452 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23453
23454         * driver.c (mono_main): Call mono_verify_corlib.
23455
23456 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23457
23458         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23459         This has been moved to mini.c
23460         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23461         type being casted is marshalbyref it could be a proxy, so instead of
23462         emitting the type check code, emit a call to a runtime method that will
23463         perform the check by calling CanCastTo if needed.
23464
23465 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23466
23467         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23468         methods with large stack frames under Win32.
23469
23470 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23471
23472         * Makefile.am: Distribute regression tests.
23473
23474         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23475         at the end instead of inserting each variable into the sorted list.
23476
23477         * linear-scan.c (mono_varlist_sort): New helper function.
23478         
23479 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23480
23481         * mini.c: ensure arguments and locals are within bounds.
23482
23483 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23484
23485         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23486         related fixes.
23487
23488 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23489
23490         * mini.c (mono_cprop_copy_values): Fix crash.
23491
23492         * aot.c: Set verbosity back to 0.
23493         
23494 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23495
23496         * regalloc.c: complete memory leak fix by Laurent Morichetti
23497         (l_m@pacbell.net).
23498
23499 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23500
23501         * driver.c (main_thread_handler): Revert the previous patch.
23502
23503         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23504         under valgrind.
23505
23506         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23507         memory from the memory pool.
23508
23509         * driver.c (main_thread_handler): Turn on all optimizations when
23510         --aot is used.
23511
23512         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23513         an array for better performance.
23514
23515         * regalloc.c (mono_regstate_assign): Fix memory leak.
23516
23517         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23518         serialize the debug info.
23519
23520         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23521         debug info from the serialized representation.
23522
23523         * aot.c: Save debug info into the generated file and load it when 
23524         loading a method.
23525
23526         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23527
23528 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23529
23530         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23531         More FP-related fixes.
23532
23533 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23534
23535         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23536         and register allocation buglet. Hello world now runs.
23537
23538 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23539
23540         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23541         * tramp-ppc.c: fixed class init trampoline.
23542         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23543
23544 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23545
23546         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23547         mini.c: more ppc changes/fixes.
23548
23549 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23550
23551         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23552         Also optimize the case when the arguments are the same in the caller 
23553         and in the callee.
23554
23555         * iltests.il: Add tests for tail calls with valuetype arguments.
23556
23557 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23558
23559         * mini-ppc.c: fixes for struct return type.
23560
23561 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23562
23563         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23564         mono_spillvar_offset() to arch-specific code.
23565
23566 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23567
23568         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23569
23570 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * exceptions-x86.c: Fix stack space leaks.
23573         
23574         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23575         registers from the lmf if the method has save_lmf set.
23576
23577 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23578
23579         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23580         of icall wrappers into InvokeInDomain, since these are now per-domain.
23581
23582 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23583
23584         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23585         make some opcode emulation and intrinsic ops enabled/disabled 
23586         according to the architecture. More fixes.
23587
23588 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23589
23590         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23591
23592 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23593
23594         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23595         arch-specific handling for 'this' and struct return type to
23596         arch-specific code.
23597
23598 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23599
23600         * aot.c: prevent divide by zero error when reporting (it happened with
23601         Accessibility.dll).
23602
23603 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23604
23605         * mini.h (inst_switch): Remove unused macro.
23606
23607 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23608
23609         * aot.c:
23610         (load_aot_module): free 'info->methods' and 'info' properly. No more
23611         "free(): invalid pointer blah" messages when you have an old aot
23612         compiled assembly.
23613
23614 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23615
23616         * jit-icalls.c, mini.c: Added support for context static fields.
23617
23618 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23619
23620         * mini.c (mono_method_blittable): Methods which set LastError are not 
23621         blittable either. Fixes #51108.
23622         
23623 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23624
23625         * mini.c: flush icache.
23626         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23627
23628 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23629
23630         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23631
23632 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23633
23634         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23635         safe on IA32.
23636
23637         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23638         vararg calls.
23639
23640         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23641
23642 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23645         instruction when the result is discarded.
23646
23647         * iltests.il (test_0_div_regalloc): New regression test.
23648
23649         * arrays.cs: Fix compilation error.
23650
23651 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23652
23653         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23654         float rules to inssel-x86.brg: sane architectures with FP registers
23655         don't need to implement these rules.
23656
23657 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23658
23659         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23660
23661 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23662
23663         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23664         implementation of 32 bit systems.
23665
23666 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23667
23668         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23669         (Jeroen Zwartepoorte).
23670
23671 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23672
23673         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23674         the caller and the callee matches.
23675         
23676         * mini.c (mono_method_to_ir): Add comment.
23677
23678         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23679         signbit is missing on some platforms.
23680
23681 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23682
23683         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23684
23685         * mini.c (setup_jit_tls_data): Call the new function.
23686         
23687         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23688
23689         * mini-x86.c: Add experimental support for fast access to the lmf
23690         structure under NPTL/Linux 2.6.x.
23691
23692 2003-11-06  Martin Baulig  <martin@ximian.com>
23693
23694         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23695         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23696         the debugger.
23697
23698 2003-11-02  Martin Baulig  <martin@ximian.com>
23699
23700         * mini.c (inflate_generic_field): New static method.
23701         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23702         generic instance and the field is declared in a generic type, call
23703         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23704
23705 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23706
23707         * mini.h mini.c (mono_method_same_domain): New function to return
23708         whenever the caller and the callee are in the same domain.
23709
23710         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23711
23712 2003-10-30  Martin Baulig  <martin@ximian.com>
23713
23714         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23715         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23716         method parameters.
23717         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23718         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23719
23720 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23721
23722         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23723         propagation.
23724
23725         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23726         object here, so it is in the correct appdomain etc.
23727
23728 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23729
23730         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23731         already done.
23732         (mono_method_to_ir): Avoid freeing the type created returned from
23733         mono_type_create_from_typespec, since it is put into an internal cache
23734         by the function. Fixes pointer.exe.
23735
23736         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23737         trampolines for icalls and pinvokes as well. Fixes #33569.
23738
23739 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23740
23741         * mini.c: Update after appdomain changes.
23742
23743         * mini.c (mono_jit_compile_method_inner): Allways compile native
23744         method wrappers in the root domain, since there can only be one
23745         instance of them, whose address is stored in method->info.
23746
23747 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23748
23749         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23750         environment variable. Instead detect automatically whenever running
23751         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23752         valgrind.h.
23753
23754 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23755
23756         * trace.c, trace.h: New files that implement the new trace option
23757         parsing. 
23758
23759         * driver.c: Document new --trace options.
23760
23761         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23762         mini-x86.c: Apply:
23763
23764         -       if (mono_jit_trace_calls)
23765         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23766
23767         * mini.h: prototypes.
23768         
23769 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23770
23771         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23772
23773         * mini.c inssel.brg: Implement typedefbyref opcodes.
23774
23775         * mini.c (mono_jit_compile_method): Remove unused local variable.
23776
23777         * mini.c (mono_jit_compile_method_inner): Ditto.
23778         
23779 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23780
23781         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23782         
23783         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23784
23785 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23786
23787         * mini.c (mono_no_aot): Remove unused global variable.
23788
23789         * mini.c: Thread safety fixes.
23790
23791 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23792
23793         * mini.c (mono_create_class_init_trampoline): Add a lock around
23794         class_init_hash_addr.
23795
23796         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23797         #30073.
23798
23799         * mini.c: Decompose the NEWARR instruction before decomposing its
23800         arguments. Fixes #30073.
23801
23802 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23803
23804         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23805         convention.
23806
23807 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23808
23809         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
23810
23811         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
23812
23813         * driver.c: Add support for compiling icall wrappers to --compile.
23814
23815 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
23816
23817         * inssel.brg: The empty value in class->interface_offsets is -1, not
23818         0. Fixes #49287.
23819
23820 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
23821
23822         * objects.cs: New test for 'is' operator on an array of interfaces.
23823
23824 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
23825
23826         * tramp-ppc.c: update trampoline code to support jumps
23827         and class initialization.
23828
23829 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
23830
23831         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
23832
23833         * inssel.brg (OP_UNBOXCAST): Fix #46027.
23834
23835         * inssel.brg (OP_UNBOX): Remove unused rule.
23836
23837         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
23838         region instead of one for each method. Fixes #47813.
23839
23840 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
23841
23842         * exceptions.cs (test_0_nested_finally): New regression test for
23843         nested exception handlers.
23844
23845         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
23846
23847         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
23848
23849         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
23850         inlining.
23851
23852         * mini.c (mono_method_check_inlining): Make the inlining limit 
23853         configurable by an environment variable.
23854         
23855         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
23856
23857         * mini.h: Bump AOT file version.
23858
23859         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
23860         token, store the image along with the token, since the token might not 
23861         refer to the same image as the method containing the relocation, 
23862         because of inlining.
23863
23864 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
23865
23866         * mini.c (mono_precompile_assemblies): New function to compile
23867         all methods in all loaded assemblies.
23868
23869         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
23870
23871         * regalloc.h regalloc.c (MonoRegState): Change the type of 
23872         iassign and fassign to int*, since they can contain large negative
23873         values if the register is spilled. Also added some comments. Fixes
23874         #45817.
23875
23876         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
23877         under Win32. Fixes #42964.
23878
23879 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
23880
23881         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
23882
23883         * aot.c: Added support for AOT compiling methods which contain calls
23884         to wrappers. Currently, only remoting-invoke-with-check wrappers are
23885         handled.
23886         
23887         * driver.c (compile_all_methods): Run the compilation in a thread
23888         managed by mono. Fixes #44023.
23889
23890         * mini.c (mono_codegen): Print full method name in verbose output.
23891
23892         * mini-x86.c (mono_arch_patch_code): Fix warning.
23893         
23894         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
23895         jumps, since the method we are jumping to might be domain-specific.
23896
23897         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
23898
23899 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
23900
23901         * inssel.brg: string chars are unsigned.
23902
23903 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
23904
23905         * TODO: New todo item.
23906
23907         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
23908         which calls mono_runtime_class_init and patches the call site to
23909         avoid further calls.
23910         (mono_arch_create_class_init_trampoline): New arch specific function 
23911         to create a class init trampoline.
23912         (create_trampoline_code): Generalized so it can create
23913         class init trampolines as well.
23914
23915         * mini.c (helper_sig_class_init_trampoline): New helper variable.
23916         (mono_create_class_init_trampoline): New function to create and cache
23917         class init trampolines.
23918         (mono_find_class_init_trampoline_by_addr): New function to lookup the
23919         vtable given the address of a class init trampoline. Used by the
23920         patching process.
23921         (mono_codegen): Generate a call to a trampoline instead of
23922         mono_runtime_class_init in LDSFLD[A].
23923         (mono_codegen): Add relocations for the new trampoline.
23924         
23925         * mini.h mini-x86.c aot.c: Added a new relocation type: 
23926         MONO_PATCH_INFO_CLASS_INIT.
23927
23928         * mini.h: Bump AOT version number.
23929
23930         * aot.c: Create a copy of the loaded code instead of using the original
23931         so methods which call each other will be close in memory, improving
23932         cache behaviour.
23933         
23934         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
23935         patch since it breaks the regression tests.
23936         
23937         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
23938         for the register saving instruction sequence since the 
23939         frame_state_for function in glibc 2.3.2 don't seem to detect it.
23940
23941 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
23942
23943         * TODO: Fix todo item && remove another.
23944
23945 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
23946
23947         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
23948         previous checkin.
23949
23950         * aot.c: Moved the check for MONO_LASTAOT into the initialization
23951         function of the module.
23952
23953         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
23954         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
23955         --no-aot command line option.
23956
23957 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
23958
23959         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
23960         by Bernie Solomon (bernard@ugsolutions.com).
23961
23962         * inssel.brg: Refactor the interface offset table related code into
23963         its separate functions and add support for the AOT case.
23964
23965 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
23966
23967         * aot.c (mono_aot_get_method_inner): Fix memory leak.
23968         
23969         * aot.c: Added mono_aot_verbose variable and made all debugging
23970         output depend on the value of this variable.
23971
23972         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
23973         method_label and info_label.
23974
23975         * mini.h mini-x86.c aot.c: Added a new relocation type 
23976         MONO_PATCH_INFO_IID for klass->interface_id.
23977
23978         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
23979         the MonoJitInfo structure.
23980
23981         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
23982         a non-root appdomain in shared mode.
23983
23984 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
23985
23986         * aot.c: make aot loader less verbose. Remove free of unused variable.
23987
23988 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
23989
23990         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
23991
23992         * .cvsignore: Added *.dll.
23993
23994         * mini.c (mono_print_tree_nl): New function callable while debugging.
23995
23996         * mini.c (mono_print_code): Export this.
23997
23998         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
23999         patched code.
24000
24001 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * mini.h (MonoCompile): Added 'jit_info' field.
24004
24005         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24006         the cfg structure, since it is needed by the AOT compiler.
24007
24008         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24009
24010         * aot.c: A major rewrite. Changes include:
24011         - save exception tables for methods which have them.
24012         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24013         to g_module_symbol.
24014         - reworked the file format so it is now much smaller and needs
24015         fewer relocation entries.
24016         
24017 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24018
24019         * aot.c (load_aot_module): Fix build bustage on platforms without
24020         Boehm GC.
24021
24022 2003-09-04  Martin Baulig  <martin@ximian.com>
24023
24024         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24025
24026 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24027
24028         * TODO: Some new optimization ideas.
24029
24030         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24031
24032         * aot.c: Save the optimization flags used to compile the code into
24033         the AOT module.
24034
24035         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24036         support emitting domain specific code.
24037         
24038         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24039         no longer domain neutral. It can be made domain neutral by compiling 
24040         with --optimize=shared.
24041
24042         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24043         between appdomains.
24044
24045         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24046         loading of AOT code.
24047
24048         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24049         
24050         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24051         if there is no domain neutrality information.
24052
24053 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24054
24055         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24056         format version into the generated library.
24057
24058         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24059         callee method into the caller since one of them could be shared.
24060
24061         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24062         system exceptions from AOT code now works.
24063
24064         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24065         method if it is domain neutral and the callee is not.
24066
24067         * graph.c (cfg_emit_one_loop_level): Fix warning.
24068
24069 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24070
24071         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24072         last checkin.
24073
24074 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24075
24076         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24077         is needed  by code which is executed before mono_runtime_init ().
24078         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24079         
24080         * mini.c (mono_thread_abort): Fix warning.
24081         (mono_jit_compile_method): Call static constructor in the AOT case too.
24082
24083         * aot.c (mono_compile_assembly): Fix warning.
24084
24085 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24086
24087         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24088
24089 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24090
24091         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24092
24093         * cpu-pentium.md: Fix the length of call opcodes so they include the
24094         ESP restoring instruction. Fixes #47968.
24095
24096 2003-08-28  Martin Baulig  <martin@ximian.com>
24097
24098         * mini-x86.c (mono_arch_call_opcode): Added support for
24099         MONO_TYPE_GENERICINST.
24100
24101         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24102
24103 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24104
24105         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24106         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24107
24108         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24109         metadata_section.
24110
24111 2003-08-26  Martin Baulig  <martin@ximian.com>
24112
24113         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24114         when reporting an error, set this to the actual error location.
24115         (mono_method_to_ir): Report the correct error location if
24116         get_basic_blocks() returned an error.
24117
24118 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24119
24120         * mini.c (mono_type_blittable): OBJECT is not blittable.
24121         (mono_method_blittable): Methods which have marshalling descriptors
24122         are not blittable either. Fixes #47842.
24123
24124 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24125
24126         * driver.c mini.c: Use an environment variable instead of a global 
24127         variable. Also fix the build.
24128
24129         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24130         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24131         reporting this. 
24132
24133         * driver.c mini.c: Added --with-valgrind option to turn off some
24134         code which prevents mono from running under valgrind.
24135
24136         * mini.c (mono_emit_call_args): Fixed warning.
24137
24138         * mini.c (mono_emulate_opcode): Fixed warning.
24139
24140 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24141
24142         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24143         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24144         regalloc.c, regalloc.h: specify available registers in arch-specific
24145         code and support floats in the regallocator (patch by Laurent Morichetti 
24146         <l_m@pacbell.net>)
24147
24148 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24149
24150         * mini.c: mono_thread_current() can be called only after
24151         mono_runtime_init(): rearrange code to not call it early on.
24152
24153 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24154
24155         * mini.c: allocate jump tables in the code mempools.
24156
24157 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24158
24159         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24160         freed.
24161
24162 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24163
24164         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24165         12 to 16.  This fixes bug #47453.
24166
24167
24168 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24169
24170         * mini-ppc.c: fixed indexed load and unsigned compares.
24171
24172 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24173
24174         * mini.c: reenabled installation of handler for
24175           thread abort signal.
24176
24177 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24178
24179         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24180         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24181         until it's fixed and actually useful.
24182
24183 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24184
24185         * inssel-long32.brg: couple more opcodes implemented.
24186
24187 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24188         
24189         * mini-sparc.c: Even more opcodes implemeted.
24190
24191 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24192
24193         * mini-sparc.c: More opcodes implemented.
24194
24195 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24196
24197         * mini-sparc.c: More opcodes implemented.
24198
24199 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24200
24201         * inssel-sparc.brg: Add some needed rules.  Direct
24202         copy from PPC.
24203         * Makefile.am: Use inssel-sparc.brg
24204         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24205         an assert happy for now.
24206
24207 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24208
24209         * mini-sparc.c: Fixed compile errors.
24210         * exceptions-sparc.c: Same.  We now produce a mono binary 
24211         on sparc-linux.  Yea.
24212
24213 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24214
24215         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24216         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24217         They compile, but do not work.
24218
24219 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24220
24221         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24222         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24223         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24224         (ct@gentoo.org).
24225
24226 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24227
24228         * mini.c: more opcodes implemented and better support for generics.
24229
24230 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24231
24232         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24233         * mini.c, mini.h: first cut at generics support: some new instructions 
24234         added and changed the behaviour of some of the existing ones.
24235
24236 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24237
24238         * mini.c: Removed definition of metadata_shared mutex here.
24239
24240 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24241
24242         * mini-x86.c: make vararg calls work for instance methods.
24243
24244 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24245
24246         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24247         returns the arguments in a separte list, now.
24248
24249 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24250
24251         * aot.c, mini.c: updates for array type representation changes.
24252
24253 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24254
24255         * mini.c: register function to perform jit shutdown.
24256
24257 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24258
24259         * mini.c: use a faster allocator if possible.
24260
24261 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24262
24263         * aot.c: some cleanups and portability changes.
24264
24265 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24266
24267         * mini.c: use faster allocation for CEE_BOX if possible.
24268
24269 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24270
24271         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24272         Moved inlined mempcy code to its own function so that is can be
24273         reused. Added an inline memset function as well (optimized initobj).
24274         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24275
24276 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24277
24278         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24279
24280 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24281
24282         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24283         arch code can setup the cpu for CLR execution, if needed.
24284         We use it on x86 to set the precision of FP operations.
24285
24286 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24287
24288         * mini.c: disable some optimizations if we can guess they'll cost too
24289         much for a given method.
24290
24291 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24292
24293         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24294         
24295 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24296         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24297         info collection support.
24298
24299 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24300
24301         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24302         is now implemented in the profiling API. Get rid of a couple of
24303         unnecessary global variables.
24304
24305 2003-06-15  Nick Drochak <ndrochak@gol.com>
24306
24307         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24308         * cpu-g4.md: add op_bigmul and op_bigmul_un
24309         * cpu_pentium.md: add op_bigmul_un
24310         * inssel-long32.brg: add rule for unsigned bigmul
24311         * mini-ops.h: define OP_BIGMUL_UN
24312         * mini-x86.c: THE BUG: handle (un)signed properly
24313         * mini.c: choose unsigned opcode if needed.
24314         This set of patches fixes bug #44291
24315
24316 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24317
24318         * mini.c (optimize_branches): improved to handle all kinds of
24319         conditional branches.
24320
24321 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24322
24323         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24324         don't raise exceptions.
24325
24326 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24327
24328         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24329         to arch-specific files.
24330
24331 2003-06-09  Martin Baulig  <martin@ximian.com>
24332
24333         * Makefile.am (libs): Added $(LIBGC_LIBS).
24334
24335 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24336
24337         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24338         and OP_ATAN (fixes bug#44293).
24339
24340 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24341
24342         * Makefile.am, mini-x86.c: rename cpu description array to
24343         pentium_desc, since some compilers define the 'pentium' preprocessor
24344         symbol.
24345
24346 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24347
24348         * mini.c (mini_select_instructions): add explicit branch if the
24349         following block is not the false target of a conditional branch -
24350         we need this with any optimization that reorder or remove bblocks
24351
24352         * mini.c (optimize_branches): bug fixes
24353
24354 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24355
24356         * mini.c (mono_method_to_ir): inline static readonly fields
24357
24358         * ssa.c (fold_tree): start cfold support for long (very simple
24359         cases only)
24360
24361         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24362
24363 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24364
24365         * inssel.brg: fixed memcpy (bug #44219).
24366
24367 2003-06-05  Dick Porter  <dick@ximian.com>
24368
24369         * driver.c: Set the glib log levels to not abort if g_message
24370         recurses.
24371
24372         g_set_prgname() has to happen before mini_init() so that the
24373         process handle gets the info.
24374         
24375 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24376
24377         * driver.c: add intrins to the default optimizations to get wider
24378         exposure.
24379
24380 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24381
24382         * mini.h: some large basic blocks will overflow a 16-bit
24383         integers for symbolic registers.
24384
24385 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24386
24387         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24388         (mono_arch_output_basic_block): fix bug 43499 
24389
24390 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24391
24392         * mini.c: kill duplicated definition of mono_debug_format.
24393
24394 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24395
24396         * mini-x86.c, arrays.cs: fixed register allocation bug.
24397
24398 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24399
24400         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24401
24402         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24403
24404 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24405
24406         * mini.c:
24407         (print_method_from_ip): also print source location information if
24408         available.
24409
24410 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24411
24412         * mini.c (mono_find_block_region): bug fix in region code
24413         (mini_method_compile): enable removing unreachable code again, but
24414         only in methods without exception clauses.
24415
24416 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24417
24418         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24419         Implemented arglist opcode and handling of TypedReference type.
24420         Fixed x86 call convention when a structure is returned.
24421         Minimal support for calling static vararg methods.
24422
24423 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24424
24425         * mini.c (mini_method_compile):  always remove unreachable code,
24426         because the code in them may be inconsistent  (access to dead
24427         variables for example).
24428
24429 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24430
24431         * driver.c, debug-mini.c: warning fixes.
24432
24433 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24434
24435         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24436
24437 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24438
24439         * mini.c: thread-static fields are registered in mono_class_vtable(),
24440         so ensure the function is called before checking for them.
24441
24442 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24443
24444         * mini.c (optimize_branches): fix for bug 43586
24445
24446         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24447         overflow (fixes Bug #43639)
24448
24449 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24450
24451         * mini.c, objects.cs: allow the use of stobj for primitive types.
24452
24453 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24454
24455         * mini.c: be less strict about argument checking until we support
24456         running the verifier.
24457
24458 2003-05-27  Nick Drochak <ndrochak@gol.com>
24459
24460         * basic-long.cs: tests for (ulong)int * (ulong)int also
24461         * mini.c: use the same trick for (ulong)int * (ulong)int
24462
24463 2003-05-27  Nick Drochak <ndrochak@gol.com>
24464
24465         * basic-long.cs: add regression test for (long)int * (long)int
24466         * cpu-pentium.md: add op_bigmul specification
24467         * inssel-long32.brg: add OP_BIGMUL rule
24468         * mini-ops.h: add OP_BIGMUL
24469         * mini-x86.c: register allocator: handle case where src1 needs to be
24470         in EAX.
24471         * mini.c: substitute special BIGMUL opcode in the tree for 
24472         (long)int * (long)int
24473
24474 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24475
24476         * jit-icalls.c: call the type ctor on field access if needed.
24477
24478 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24479
24480         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24481         to a method (including results of ldelema, bug#43207).
24482
24483 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24484
24485         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24486         colors to show exception handler blocks.
24487
24488         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24489         (fix for pinvoke7.cs).
24490
24491 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24492
24493         * mini.h, mini.c: ensure correct initialization order for types that
24494         require it. Prepare for lazy compilation of jit icall wrappers.
24495         Provide a name for opcode emulation to reduce unneeded mallocing.
24496
24497 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24498
24499         * mini-x86.c: better register restoring code and profiling
24500         support for tail calls.
24501
24502 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24503
24504         * mini.h, driver.c: prepare for leaf methods optimization.
24505
24506 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24507
24508         * mini.c: get targets of branches before converting a method.
24509
24510 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24511
24512         * mini.c (optimize_branches): added some experimental code (disbaled) 
24513
24514 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24515
24516         * mini.c (optimize_branches): fix branch to branch optimization 
24517
24518         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24519
24520         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24521
24522         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24523
24524         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24525         if needed.
24526
24527 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24528
24529         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24530         enable use of interface variables again.
24531
24532         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24533         I1 to registers because there is no simply way to sign extend 8bit
24534         quantities in caller saved registers on x86.
24535
24536         * inssel-float.brg: set costs of some rules to 2 so
24537         that monobure always select the arch. specific ones if supplied,
24538         regardless of the order we pass the files to monoburg.
24539
24540 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24541
24542         * mini.c, mini-x86.c: since the magic trampoline for jumps
24543         can't patch the code directly, we do it as soon as the
24544         method gets compiled.
24545
24546 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24547
24548         * mini-x86.c, mini.h: introduce a new patching method
24549         to support CEE_JMP and tail calls.
24550         * mini.c: obey tail.call. Don't precompile methods target
24551         of CEE_JMP.
24552         * tramp-x86.c: new trampoline code to handle methods
24553         reached through a jump.
24554
24555 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24556
24557         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24558         bit values to registers
24559
24560 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24561
24562         * mini.c (mono_compile_get_interface_var): share interface
24563         variables if possible.
24564
24565 2003-05-16  Martin Baulig  <martin@ximian.com>
24566
24567         * debug-mini.c (mono_init_debugger): New function to initialize
24568         the debugger.  This is not in the debugger since it needs to
24569         access some of mini's internals.
24570
24571 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24572
24573         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24574
24575 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24576
24577         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24578         for value type handling.
24579
24580 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24581
24582         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24583         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24584
24585 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24586
24587         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24588           the constructor through a proxy.
24589
24590 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24591
24592         * jit-icalls.c, inssel.brg: fixes to array element address
24593         calculations.
24594
24595 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24596
24597         * mini-x86.c (is_regsize_var): allocate pointer to registers
24598
24599 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24600
24601         * driver.c: fixed typo, added intrins to the set of optimizations
24602         tested with regressions.
24603
24604 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24605
24606         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24607         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24608         test case.
24609
24610 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24611
24612         * inssel.brg: remove some common pop instructions without side effects
24613
24614 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24615
24616         * inssel-x86.brg: fixed thinko in int to double conversions.
24617
24618 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24619
24620         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24621
24622 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24623
24624         * inssel-long32.brg: two more missing instructions.
24625
24626 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24627
24628         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24629         if not already set.
24630
24631 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24632
24633         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24634         correctly.
24635
24636         * basic-float.cs: Added tests for negative zero.
24637
24638 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24639
24640         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24641         a couple of missing operations for long casts, with test cases.
24642
24643 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24644
24645         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24646
24647 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24648
24649         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24650         code size estimation.
24651
24652 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24653
24654         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24655         abstract methods (fix bug 42542)
24656
24657         * aot.c: add ability to handle array types
24658         
24659 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24660
24661         * mini.c: Call the _specific versions of the object allocation
24662         functions if possible.
24663
24664 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24665
24666         * driver.c: call setlocale ().
24667
24668 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24669
24670         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24671         windows build.
24672
24673 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24674
24675         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24676
24677         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24678         wrappers (fix bug 42122)
24679
24680 2003-05-04  Martin Baulig  <martin@ximian.com>
24681
24682         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24683
24684         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24685         s/mini_set_defaults/mono_set_defaults/g.
24686
24687 2003-05-04  Martin Baulig  <martin@ximian.com>
24688
24689         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24690
24691 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24692
24693         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24694         (reported by Don Roberts).
24695
24696 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24697
24698         * mini.c: temporarily work around two bugs for this release.
24699
24700 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24701
24702         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24703         that contains -export-dynamic and it makes using the ld script
24704         useless.
24705         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24706
24707 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24708
24709         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24710         specific cpu.
24711
24712 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24713
24714         * mini.c: make sure leave calls all the needed finally blocks,
24715         even when the target jumps out of multiple exception clauses.
24716
24717 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24718
24719         * ldscript, Makefile.am: add linker script to reduce the number of
24720         exported symbols (should also fix the issues with libwine defining
24721         some of the same symbols in io-layer).
24722
24723 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24724
24725         * driver.c (mini_main): Avoid assertion when no file name is given on 
24726         the command line.
24727
24728 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24729
24730         * driver.c: added --version/-V command line option.
24731         Added the inline optimization in the regression tests.
24732
24733 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24734
24735         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24736         to the type in the method signature (fixes bug#42134).
24737
24738 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24739
24740         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24741
24742 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24743
24744         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24745
24746 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24747
24748         * driver.c: fixed bug #42100.
24749
24750 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24751
24752         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24753
24754 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24755
24756         * mini.c: moved most of the code required to do inlining to its own
24757         function so it can be reused. Inline also ctors if appropriate.
24758
24759 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24760
24761         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24762         the runtime can call mono API functions.
24763
24764 2003-04-27  Martin Baulig  <martin@ximian.com>
24765
24766         * debug-mini.c (mono_debug_init_method): Added
24767         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24768         send a notification to the debugger.
24769
24770         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24771         running in the Mono Debugger, just pass the breakpoint number to
24772         mono_debug_init_method().
24773
24774         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24775
24776 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24777
24778         * mini.c: allow some more unsafe compares.
24779
24780 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24781
24782         * mini-x86.c, Makefile.am: make distcheck works (partially from
24783         a patch by Richard Lee <r.h.lee@attbi.com>).
24784         * regset.c, regset.h: removed, they are unused.
24785
24786 2003-04-25  Dick Porter  <dick@ximian.com>
24787
24788         * driver.c: Usage reports the name as 'mono' not 'mini'
24789         * exceptions-x86.c: Build and run on freebsd
24790
24791 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24792
24793         * Makefile.am: install the program with the 'mono' name and
24794         the library as libmono instead of mini and libmini.
24795
24796 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24797
24798         * driver.c: provide the APIs for the embedding interface of the old jit.
24799
24800 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24801
24802         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24803
24804 2003-04-23  Martin Baulig  <martin@ximian.com>
24805
24806         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24807
24808         * driver.c: Added `--debug' command line argument to enable
24809         debugging support.
24810
24811 2003-04-23  Martin Baulig  <martin@ximian.com>
24812
24813         * debug.[ch]: Removed.  The code is now in
24814         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
24815
24816         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
24817         last six months.
24818
24819 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
24820
24821         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
24822
24823 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24824
24825         * mini.c:
24826         (mini_cleanup): moved mono_runtime_cleanup call after the call to
24827         mono_domain_finalize.
24828         (mini_method_compile): use mono_method_profile* if the the option is
24829         enabled.
24830
24831 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
24832
24833         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24834         methods with their wrapper.
24835
24836         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
24837         methods with their wrapper.
24838
24839         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
24840         their wrapper.
24841
24842         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
24843         wrapper.
24844
24845         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
24846         methods.
24847
24848 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
24849
24850         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
24851
24852 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
24853
24854         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
24855         of the mempool. This is slightly faster and uses less memory
24856
24857 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24858
24859         * mini.c: avoid O(n) allocation for variables.
24860
24861 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24862
24863         * mini.c: handle items on the stack after inlining methods.
24864
24865 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24866
24867         * mini.c: make the method->opcode optimization dependent
24868         on MONO_OPT_INSTRINS and do it lazily.
24869
24870 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24871
24872         * driver.c: print overall results at the end of regression run.
24873
24874 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
24875
24876         * inssel.brg: don't overwrite symbolic registers.
24877
24878 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24879
24880         * inssel-x86.brg: fix conversion from long to float.
24881
24882 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
24883
24884         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
24885
24886 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
24887
24888         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
24889
24890         * driver.c: Added --print-vtable option as in the old JIT.
24891
24892 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24893
24894         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
24895
24896 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
24897
24898         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
24899
24900 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
24901
24902         * mini.c regalloc.c regalloc.h: Fix memory leak.
24903
24904 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
24905
24906         * aot.c (mono_aot_get_method): register all used strings
24907
24908 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24909
24910         * mini.c: always intern strings references with ldstr at compile time.
24911
24912 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24913
24914         * Makefile.am: add BUILT_SOURCES.
24915
24916 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
24917
24918         * driver.c: give a better error message when the assembly to execute
24919         doesn't have an entry point.
24920
24921 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
24922
24923         * Makefile.am: added hack for automake
24924
24925         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
24926         correct sematics.
24927
24928         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
24929
24930 22003-04-07  Martin Baulig  <martin@ximian.com>
24931
24932         * Makefile.am: Added Makefile.am.
24933
24934         * debugger-main.c: Removed, this is now in the debugger where it
24935         belongs.
24936
24937         * mini.pc.in: Call this package `mini' for the moment.
24938
24939
24940
24941
24942
24943
24944
24945
24946
24947
24948
24949
24950
24951
24952