2010-05-25 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-05-25  Zoltan Varga  <vargaz@gmail.com>
2
3         * exceptions-amd64.c (mono_arch_find_jit_info_ext): Adjust the ip for LMF frames too.
4
5         * mini-llvm.c aot-compiler.c: More LLVM 2.8 updates.
6
7         * mini.h (LLVM_CHECK_VERSION): New helper macro.
8
9 2010-05-25  Miguel de Icaza  <miguel@novell.com>
10
11         * genmdesc.pl (build_spec): Add support for nacl: keyword also to
12         the Perl program
13
14         * genmdesc.c: Added support for nacl: key on the machine
15         description files to support the extra space required by Google
16         Native Client.
17
18 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
19
20         * mini.c (mono_jit_compile_method_inner): Propagate exceptions in one more place.
21
22 2010-05-23  Zoltan Varga  <vargaz@gmail.com>
23
24         * mini.c (mono_jit_compile_method_inner): Propagate exceptions from
25         mono_runtime_class_init_full ().
26         (mono_jit_runtime_invoke): Ditto. Fixes #608073.
27
28 2010-05-22  Zoltan Varga  <vargaz@gmail.com>
29
30         * mini-llvm.c mini-llvm-cpp.cpp: Update after LLVM 2.8 changes.
31
32 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
33
34         * mini-ppc.c (mono_arch_output_basic_block): Use ins->inst_c1 instead of p1, the
35         two are not the same on ilp32.
36
37 2010-05-21  Zoltan Varga  <vargaz@gmail.com>
38
39         * mini.c (mono_jit_compile_method_inner): Remove a DISABLE_JIT block which was
40         added by mistake.
41
42         * mini-ppc.c: Fix the DISABLE_JIT build.
43
44 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
45
46         * aot-runtime.c (decode_resolve_method_ref): Rename this from decode_method_ref_2.
47         (make_writable): Remove this unused function.
48
49 2010-05-20  Zoltan Varga  <vargaz@gmail.com>
50
51         * aot-compiler.c: Collect all information about a PLT entry into a separate MonoPltEntry
52         structure. Make the labels to plt entries local symbols instead of assembler local
53         labels, since tha latter causes problems for the iphone linker.
54
55 2010-05-19  Zoltan Varga  <vargaz@gmail.com>
56
57         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle one more case with ilp32.
58
59 2010-05-17  Zoltan Varga  <vargaz@gmail.com>
60
61         * mini-ppc.c (mono_ppc_is_direct_call_sequence): Handle ilp32.
62         (ppc_patch_full): Ditto.
63
64         * mini-arm.c (mono_arch_build_imt_thunk): Fix the fail_tramp case.
65
66         * method-to-ir.c (mono_method_to_ir): Use fast generic virtual method invocation
67         if gshared is enabled, to avoid asserts in the trampoline code.
68
69         * mini-ia64.c (mono_arch_build_imt_thunk): Implement generalized imt thunks
70         on ia64.
71
72 2010-05-15  Geoff Norton  <gnorton@novell.com>
73
74         * dwarfwriter.c, xdebug.c: Fix a pretty large leak when running in 
75         xdebug mode.
76
77 2010-05-14  Geoff Norton  <gnorton@novell.com>
78
79         * exceptions-x86.c: Fix the alignment of this trampoline so we dont get a 
80         misaligned stack on darwin.
81
82 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
83
84         * mini-arm.c aot-compiler.c: Implement support for generalized imt thunks on
85         arm.
86
87 2010-05-14  Zoltan Varga  <vargaz@gmail.com>
88
89         * xdebug.c: Fix ARM support.
90
91 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
92
93         * exceptions-x86.c (mono_arch_handle_exception): Resume from the signal handler
94         and do most of the work on the normal stack.
95         (mono_x86_get_signal_exception_trampoline): New x86 specific trampoline function.
96
97 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
98
99         * aot-compiler.c: Put non-code data into the .rodata section on linux.
100
101 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
102
103         * exceptions-arm.c (mono_arch_handle_exception): Fix the cross-compile case.
104
105 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
106
107         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
108         and do most of the work on the normal stack.
109
110 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
111
112         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
113         and do most of the work on the normal stack even if sigaltstack is disabled.
114
115 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
116
117         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
118         UCONTEXT_REG_ constants are available on linux as well.
119         (mono_arch_monoctx_to_sigctx): Ditto.
120         (mono_arch_ip_from_context): Ditto.
121
122 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
123
124         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
125         other domains.
126
127 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
128
129         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
130         no longer needed.
131
132 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
133
134         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
135         if a breakpoint cannot be inserted.
136
137 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
138
139         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
140
141 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
142
143         * debugger-agent.c (frame_commands): Return an error instead of asserting if
144         no JIT info is found for the method.
145
146 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
147
148         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
149         in debug printf.
150
151 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
152
153         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
154         a list of arch specific trampolines.
155
156         * aot-compiler.c (emit_trampolines): Use it.
157
158 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
159
160         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
161         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
162         get rid of the _full from their name.
163
164 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
165
166         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
167         get_nullified_class_init_trampoline to remove some code duplication.
168
169 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
170
171         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
172         attach.
173
174 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
175
176         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
177
178         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
179
180         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
181         there is no need to jump through the first plt entry.
182
183         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
184
185         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
186         arch-specific function.
187         (mono_aot_get_plt_info_offset): Ditto.
188
189         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
190         mono_arch_init () to register jit icalls called from full-aot trampolines.
191         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
192         to mini-<ARCH>.c.
193
194         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
195         the specialized throw corlib exception trampoline, use a variant of the normal
196         trampoline along with a new C function which does the call to
197         mono_exception_from_token (), just like on x86.
198
199 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
200
201         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
202         Reorganize the full aot trampoline creation functions, instead of taking a bunch
203         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
204         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
205         creation functions on architectures which have the full-aot ones.
206
207 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
208
209         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
210
211 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
212
213         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
214         explicitly, this seems to be required by some gcc versions at -O2.
215
216         * mini-arm.c: Ditto.
217
218 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
219
220         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
221         has_target delegate invokes.
222
223 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
224
225         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
226         info fields.
227
228         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
229         add patches/unwind info arguments, move to mini.c.
230
231         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
232
233 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
234
235         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
236         command which returns full path names.
237
238 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
239
240         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
241         code_size output variable.
242
243         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
244         mono_get_lmf_addr.
245         
246 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
247
248         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
249         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
250         (mono_arch_cpu_enumerate_simd_versions): Ditto.
251
252 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
253
254         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
255         apple assembler.
256
257 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
258
259         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
260
261 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
262
263         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
264
265 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
266
267         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
268
269 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
270
271         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
272         line number support works with eglib.
273
274 2010-04-27  Miguel de Icaza  <miguel@novell.com>
275
276         * driver.c, mini.c: Since linking with LLVM makes the default Mono
277         dirty an extra 70kb pages on startup we are now going to choose a
278         different strategy: ship mono and mono-llvm binaries, with the
279         second being the one that links with LLVM and defaults to LLVM
280         being enabled.
281
282 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
283
284         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
285         Implement full-aot support on x86.
286
287         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
288         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
289         the first register returned by get_global_int_regs ().
290
291         * cpu-x86.md: Fix the length of insertx_u1_slow.
292
293         * iltests.il.in: Disable tail call tests when running with full-aot.
294
295 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
296
297         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
298
299 2010-04-24  Mark Probst  <mark.probst@gmail.com>
300
301         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
302         in the initializer, because it's non-constant.
303
304 2010-04-23  Miguel de Icaza  <miguel@novell.com>
305
306         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
307         of LLVM on by default.   Used for buildbots and other setups.
308
309 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
310
311         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
312
313 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
314
315         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
316         initonly static fields when using moving GC.
317
318         Contributed under MIT/X11 license.
319
320 2010-04-23  Geoff Norton  <gnorton@novell.com>
321
322         * mini-amd64.h: Darwin x86_64 support.
323
324 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
325
326         * exceptions-arm.c: Remove platform checks in favor of configure checks.
327
328 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
329
330         * exceptions-arm.c: Add Android support for sigcontext structure.
331
332 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
333
334         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
335         wrappers correctly now that their wrapper info is NULL.
336
337 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
338
339         * mini.c (mono_jit_compile_method_inner): Avoid calling
340         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
341
342 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
343
344         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
345         so the latter can be #ifndef DISABLE_JIT-ed.
346
347         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
348
349 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
350
351         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
352
353 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
354
355         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
356         stack.
357
358 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
359
360         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
361         calling mono_class_num_methods (). Fixes #592244.
362
363 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
364
365         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
366
367         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
368
369 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
370
371         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
372         version.
373         * (handle_alloc): Ditto.
374         (mono_method_to_ir): Remove the constrained call restriction added by a previous
375         change, its not needed anymore.
376
377 2010-04-12 Rodrigo Kumpera  <rkumpera@novell.com>
378
379         * mini-posix.c (sigusr1_signal_handler): Fix build on
380         non x86/amd64 systems.
381
382 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
383
384         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
385         calls where the constrained class needs a context. Fixes #595863.
386
387         * iltests.il.in: Add a test.
388
389 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
390
391         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
392         2.6/SVN seems to have broken support for them.
393
394 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
395
396         * mini-llvm.c: Fix support for LLVM 2.6.
397
398 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
399
400         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
401         MonoInternalThread belonging to the thread.
402
403 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
404
405         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
406         unsafe optimization that will remove bound checks.
407
408 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
409
410         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
411         CompareExchange not to be inlined for I8.
412
413         Contributed under MIT/X11 license.
414
415 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
416
417         * array.cs: Add tests for cast between primitive array types.
418
419 2010-04-07 Andreia Gaita  <avidigal@novell.com>
420
421         * Makefile.am: create a convenience library for moon to link with
422
423 2010-04-07 Paolo Molaro <lupus@ximian.com>
424
425         * method-to-ir.c: optimize array accesses from generic interfaces.
426
427 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
428
429         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
430
431 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
432
433         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
434         of marshalbyref classes.
435
436         Fixes #515884.
437
438 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
439
440         * aot-compiler.c (emit_exception_debug_info): Encode try holes
441         information.
442
443         * aot-runtime.c (decode_exception_debug_info): Decode try holes
444         information.
445
446         * mini.h: Increase AOT version.
447
448 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
449
450         * mini-x86.h: Only enable soft debugger when using sigaction or on
451         Windows. Fixes build on Haiku (lacks siginfo_t).
452
453         Code is contributed under MIT/X11 license.
454
455 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
456
457         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
458         BeOS-style signal handlers.
459
460         Code is contributed under MIT/X11 license.
461         
462 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
463
464         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
465
466 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
467
468         * mini-exceptions.c: Fix win32 build.
469
470 2010-04-01  Mark Probst  <mark.probst@gmail.com>
471
472         * mini.c, driver.c: Call mono_gc_base_init() before
473         mono_debug_init().
474
475 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
476
477         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
478         call_method]): Delegate the actual work in security-core-clr.c
479         to ease code sharing.
480
481 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
482
483         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
484         float conv.ovf.un opcodes are encountered, instead of asserting later.
485         Fixes #566296.
486
487 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
488
489         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
490
491         * iltests.il.in: Add a test.
492
493 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
494
495         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
496         large. Fixes #567040.
497
498         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
499
500 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
501
502         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
503         #592711.
504
505 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
506
507         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
508         mono_create_handler_block_trampoline with the proper #ifdef so that it
509         compiles on amd64.
510
511 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
512
513         * mini-exceptions.c: Introduce mono_walk_stack_full, which
514         allows to select if it's new or old context that is passed to 
515         the callback.
516
517         * mini-exceptions.c (mono_handle_exception_internal): Handle the
518         case when executing a guarded handler from the EH machinery.
519
520         * mini-exceptions.c (mono_install_handler_block_guard): New function
521         responsible for checking for handler blocks, installing the guard and
522         clearing abort state.
523
524         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
525         to check for handler blocks and skip interruption logic if one was found.
526
527         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
528         by the handler block guard trampoline. Resumes interruption by raising the
529         pending ThreadAbortException.
530
531         * mini.c (create_jit_info): Calculate the end address of a finally block.
532
533         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
534         of a finally block to a specified address and return the old one.
535
536         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
537         trampoline patches the original return address and calls the trampoline function.
538
539 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
540
541         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
542
543         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
544         does the patching if the callee is in the same domain.
545
546         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
547         of mono_arch_patch_plt_entry ().
548
549 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
550
551         * mini.c (create_jit_info): Fix try block hole length encoding.
552
553 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
554
555         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
556         duplicate information and print offsets instead of absolute addresses.
557
558 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
559
560         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
561         event is sent. Fixes #591733.
562
563 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
564
565         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
566         OpenBSD.
567
568 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
569
570         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
571         thread_to_tls hash table.
572
573         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
574         section. Fixes #591000.
575
576 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
577
578         * Makefile.am (version.h): Check for pure .git directory only,
579         fixes SVN revision when using git without git-svn.
580
581         Contributed under MIT/X11 license.
582
583 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
584
585         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
586
587 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
588
589         * basic-simd.cs: Test for vector x scalar binary operators.
590
591 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
592
593         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
594         intrinsics with expanded scalar arguments.
595
596 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
597
598         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
599         don't have an exception class, so don't decode it. This would crash
600         with filter clauses.
601
602 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
603
604         Make sure that trunk builds with DISABLE_JIT, an update to the
605         PlayStation 3 port.
606         
607         * mini.c (mini_get_shared_method): this code seems to be necessary
608         regardless of whether DISABLE_JIT has been defined.
609
610         (mono_jit_compile_method_inner): it seems that this method is
611         required even in full AOT mode, so ifdef out only the pieces that
612         try to genrate code (the body of code that applies patches to the
613         code).  
614
615         (mini_method_compile): do not compile when using DISABLE_JIT.
616
617         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
618         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
619         compile when DISABLE_JIT is set.
620
621 2010-03-24  Mark Probst  <mark.probst@gmail.com>
622
623         * mini.c (mono_create_tls_get): Only create a TLS operation if the
624         arch really supports it.
625
626 2010-03-24  Mark Probst  <mark.probst@gmail.com>
627
628         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
629
630 2010-03-23  Neale Ferguson <neale@sinenomine.net>
631
632         * exceptions-s390x.c: Add support for
633         mono_arch_get_throw_corlib_exception and fix throw by name.
634
635         * mini-s390x.c: Add IMT support; Fix stack parameter passing
636         logic (especially for varargs); Correct localloc sizing; Add
637         mono_arch_get_this_arg_from_call and
638         mono_arch_get_this_arg_from_call.
639
640         * mini-s390x.h: Add support for facility list extraction;
641         Correct/update MONO_ARCH_xxx settings.
642
643         * mini-s390.c: Minor corrections to instruction output for
644         varargs. No IMT implementation - I think it's time to deprecate
645         s390 and just leave s390x.
646
647         * tramp-s390x.c: Correct creation of trampoline instruction
648
649
650         * cpu-s390x.md: Update some instruction lengths
651
652 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
653
654         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
655         can be hit with partial sharing.
656
657         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
658         in non-shared classes correctly.
659         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
660         Turn on partial sharing.
661
662 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
663
664         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
665         by mistake.
666
667 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
668
669         * method-to-ir.c (mono_method_to_ir): Handle the failure of
670         mono_method_signature ().
671
672         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
673
674         * mini.c (mini_method_compile): Get the signature of cfg->method early with
675         error checking, so later calls do not need error checking.
676
677 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
678
679         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
680
681         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
682
683 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
684
685         * mini-exceptions.c (mono_handle_exception_internal): Don't
686         check try_end for archs different than s390. 
687
688         * mini.c (create_jit_info): Don't crash if the finallt block is the
689         last one.
690
691 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
692
693         * driver.c (mono_main): Don't free global codeman under linux since
694         glic now peeks at code on stack for more archs than just amd64.
695
696 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
697
698         * mini.c, method-to-ir.c: changes to support compressed interface
699         bitmaps.
700
701 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
702
703         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
704         Use sigaction on OpenBSD too.
705
706 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
707
708         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
709
710 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
711
712         * debugger-agent.c: #include sys/select.h for fd_set.
713
714         Code is contributed under MIT/X11 license.
715
716 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
717
718         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
719         (openbsd+amd64 ?).
720
721 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
722
723         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
724         some large methods with lots of exception handlers. Fixes #440924.
725
726 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
727
728         * method-to-ir.c: remove code duplication for interface checks.
729
730 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
731
732         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
733         (assembly_unload): Clear all event requests referencing the to-be unloaded
734         assembly.
735
736
737 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
738
739         * mini.h, mini-exceptions.c: restore the state of the stack
740         guard page permissions.
741
742 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
743
744         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
745         call site patching code, it doesn't appear to be needed.
746
747 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
748
749         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
750         sharing generic methods whose type arguments are a mix of reference and
751         non-reference types. Not yet turned on.
752
753         * mini.c (mini_get_shared_method): New helper function to return
754         the method which will be compiled/registered in the JIT tables when doing
755         generic sharing.
756         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
757         use mini_get_shared_method ().
758
759         * mini.c (mini_method_compile): Register the same method which is compiled when
760         doing generic sharing.
761
762         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
763
764         * generics.cs: Add partial sharing tests.
765
766 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
767
768         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
769                    Add an enum value that or's all possable values together. Add an enum value
770                    that marks the end of the used bit indexes.
771
772         * mini-amd64.c : Make changes to match the changes in mini.h 
773
774         * mini-x86.c : Make changes to match the changes in mini.h
775
776         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
777                    simd_version to support more simd versions. Changed the name of
778                    simd_version to simd_version_flags to make it more intuitive that
779                    it now contains bit flags. Reordered the *_intrinsics arrays to
780                    match the changes above. Changed emit_intrinsics() to use the new
781                    setup mentioned above.
782
783         Code is contributed under MIT/X11 license.
784
785 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
786
787         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
788         remaining archs. Alpha and hppa maintainers, please stand up.
789
790 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
791
792         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
793         is needed even when fail_tramp!=NULL.
794
795 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
796
797         * debugger-agent.c (insert_breakpoint): Write a log message.
798
799 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
800
801         * iltests.il.in: Add a few tests for LEAVE going over multiple
802         finally clauses.
803
804 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
805
806          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
807
808 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
809
810         * mini.h (MonoBasicBlock): Add native_length field.
811         * mini.h (MonoCompile): Add try_block_holes field.
812         * mini.h (MonoInst): Add exception_clause pointer to
813         the data union.
814
815         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
816         * mini.c (mono_cfg_add_try_hole): New function to register possible
817         holes in try blocks.
818         * mini.c (create_jit_info): Fill in the holes information.
819
820         * mini-exceptions.c: Verify for holes when checking if an IP is covered
821         by a try block.
822
823         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
824
825 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
826
827         * jit-icalls.c: adjusted for the array API changes.
828
829 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
830
831         * iltests.il.in: Disable the fconv_to_i test on sparc too.
832
833 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
834
835         * debugger-agent.c: Simplify the way breakpoints are processed by removing
836         the 'pending' flag. This fixes support for appdomains too.
837
838
839 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
840
841         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
842
843 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
844
845         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
846         when using LLVM, LLVM generates it itself when needed.
847
848         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
849
850         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
851         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
852         OP_ANDNPS/OP_ANDNPD.
853
854 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
855
856         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
857         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
858         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
859
860 2010-03-11  Martin Baulig  <martin@ximian.com>
861
862         * debugger-agent.c (type_commands): Add NULL check to
863         `CMD_TYPE_GET_SOURCE_FILES'.
864
865 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
866
867         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
868
869 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
870
871         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
872         #586664.
873
874         * iltests.il.in: Add a test.
875
876 2010-03-05  Martin Baulig  <martin@ximian.com>
877
878         Add support for aborting invocations.
879
880         * debugger-agent.c
881         (InvokeData): Added `InvokeData *last_invoke'.
882         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
883         added a new `invoke' field to keep the `InvokeData *' throughout
884         the invocation.
885         (ErrorCode): Added `ERR_NO_INVOCATION'.
886         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
887         (mono_debugger_agent_handle_exception): Don't report any exception
888         if an abort was requested.
889         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
890         a thread abort if necessary.
891         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
892
893 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
894
895         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
896         so we can release the whole list and not just the first one. Free
897         it in more places as well.
898
899 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
900
901         * method-to-ir.c: Revert r153222 as it doesn't belong here.
902
903 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
904
905         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
906
907 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
908
909         * driver.c: report also other misc build options.
910
911 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
912
913         * method-to-ir.c: Generate better code for the NewObject
914         intrinsic.
915         
916 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
917
918         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
919         is disabled. Fixes #582322.
920
921         * iltests.il.in: Add a test.
922
923 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
924
925         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
926         the handling of obj->synchronization == null and owner != current thread to
927         mono_monitor_exit ().
928
929         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
930
931
932 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
933
934         * mini.c: change the way emulated opcode info is stored and save about
935         4 KB of runtime memory.
936
937 2010-03-04  David S. Miller  <davem@davemloft.net>
938
939        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
940        that don't provide the siginfo in the second signal handler argument
941        are buggy, and this has been fixed for years.
942        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
943        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
944
945 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
946
947         * aot-runtime.c (find_symbol): Fix a leak.
948         (decode_patch): Ditto.
949
950 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
951
952         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
953
954 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
955
956         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
957
958 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
959
960         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
961
962 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
963
964         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
965         to check for errors, it's enough to create the metadata open.
966
967         Fixes #562150
968
969 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
970
971         * trace.c|h:
972         * mini-exceptions.c: Add support for printing stack traces when handling
973         exceptions, and when printing exceptions thrown while tracing also print
974         the exception message.
975
976 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
977
978         * trace.c: We need to parse exclude tokens ('-') before string tokens,
979         since the exclude token is a valid string character.
980
981 2010-03-02  Levi Bard  <levi@unity3d.com>
982
983         * debugger-agent.c: Invalidate thread stacks on domain unload.
984
985 2010-03-02  Mark Probst  <mark.probst@gmail.com>
986
987         * method-to-ir.c: Emit dummy_use for stored reference after write
988         barriers to make sure the object is pinned if the GC interrupts
989         before the write barrier is done.
990
991 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
992
993         * cpu-<ARCH>.md: dummy_use was missing src1:i.
994
995 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
996
997         * debugger-agent.c: Add a log message printing the protocol version.
998
999 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1000
1001         * debugger-agent.c: Add a new command to communicate the protocol version used
1002         by the client. This could be used to allow newer runtimes to communicate with
1003         older clients.
1004
1005 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1006
1007         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
1008
1009 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
1010
1011         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
1012         type.
1013
1014 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
1015
1016         * mini-arm.c: make the arm cpu arch configurable with the
1017         MONO_CPU_ARCH env var (for example: "armv4 thumb").
1018         Bug #584198.
1019
1020 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
1021
1022         * mini.c, mini.h, driver.c: added the --jitmap option to enable
1023         support for the perf tool on Linux.
1024
1025 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
1026
1027         * method-to-ir.c: make string.InsertenalSetChar() specialization
1028         effective.
1029
1030 2010-03-01  Robert Jordan  <robertj@gmx.net>
1031
1032         * Makefile.am: fix the non-static build.
1033
1034 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
1035
1036         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
1037         here.
1038
1039 2010-02-26  Robert Jordan  <robertj@gmx.net>
1040
1041         * tasklets.c (continuation_store): Return from an error condition
1042         immediately.
1043
1044 2010-02-26  Martin Baulig  <martin@ximian.com>
1045
1046         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
1047
1048         * debug-mini.c
1049         (MonoDebuggerThreadInfo): Added `internal_flags'.
1050         (MonoDebuggerInternalThreadFlags): New enum.
1051         (_mono_debugger_throw_exception): Don't signal the debugger if a
1052         type abort was requested.
1053         (_mono_debugger_unhandled_exception): Likewise.
1054         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
1055         (mono_debugger_runtime_invoke): If the debugger requested a thread
1056         abort during the invocation, reset it here.
1057
1058 2010-02-26  Martin Baulig  <martin@ximian.com>
1059
1060         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
1061         instead of `MonoThread *'.
1062
1063 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
1066         code offsets table, as it is mostly sorted.
1067
1068 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1069
1070         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
1071         Fixes #582991.
1072
1073 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
1074
1075         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
1076
1077 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
1078
1079         * Makefile.am: build the new ABI version of the libmono library.
1080         * debugger-agent.c, mini.c: fix warnings with the new API.
1081         * jit.h: don't depend on glib.h being included.
1082
1083 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1084
1085         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
1086
1087 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1088
1089         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
1090         ThreadStatic variables.
1091
1092 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
1093
1094         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
1095         data is not freed yet. Fixes #582460.
1096
1097 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
1098
1099         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1100         event requests. Bump protocol minor version.
1101
1102 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1103
1104         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1105
1106 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1107
1108         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1109         #581950.
1110
1111         * iltests.il.in: Add a test.
1112
1113 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1114
1115         * mini.c (inline_method): Check for loader errors.
1116
1117 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1118
1119         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1120         instead of mono_method_get_header as it doesn't decode locals
1121         so the called method can have unresolved dependencies that will only
1122         be satisfied after the current method is JIT'd.
1123
1124         Fixes #550968.
1125
1126 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * basic.cs (test_0_div_opt): Speed this up a bit.
1129
1130 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1131
1132         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1133
1134         * mini.c (mono_jit_create_remoting_trampoline): Call
1135         mono_create_specific_trampoline () instead of
1136         mono_arch_create_specific_trampoline ().
1137
1138         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1139
1140 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1141
1142         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1143         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1144
1145         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1146
1147         * mini-amd64.c: Fix DISABLE_JIT support.
1148
1149 2010-02-20  Geoff Norton  <gnorton@novell.com>
1150
1151         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1152
1153 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1154
1155         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1156         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1157         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1158         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1159         handle_exception.
1160
1161 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1162
1163         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1164         edx/ecx too. This is needed to support OP_SEQ_POINT.
1165
1166 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1167
1168         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1169
1170         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1171
1172 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1173
1174         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1175         LLVM+AOT+exceptions, not enabled yet.
1176
1177 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1180
1181 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1182
1183         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1184         xdebug info for these.
1185
1186         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1187         in a few places.
1188
1189         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1190         not used yet.
1191
1192 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1195
1196 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1197
1198         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1199         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1200
1201         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1202         for mtouch.
1203
1204 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1205
1206         * debugger-agent.c: handle incomplete reads and EINTR in
1207         recv()/send(). This could have been causing random
1208         disconnections.
1209
1210 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1211
1212         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1213         points.
1214
1215         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1216         so they have small offsets. Fixes #566311.
1217
1218 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1219
1220         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1221
1222 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1223
1224         * mini-amd64.c: Remove the special casing of byref in a few places now that
1225         mini_type_get_underlying_type () handles it.
1226
1227         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1228         by returning native int. Fixes #577984.
1229
1230 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1231
1232         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1233         a macro.
1234
1235         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1236         of putting the clause itself.
1237
1238         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1239
1240 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1241
1242         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1243         might be unaligned.
1244
1245 2010-02-10  Geoff Norton  <gnorton@novell.com>
1246
1247         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1248
1249 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1252         llvm methods too.
1253
1254         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1255         it is not an LLVM generated symbol.
1256
1257         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1258
1259         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1260         implementation in gshared mode because it causes regressions.
1261
1262         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1263
1264         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1265         should be done by the caller.
1266
1267         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1268
1269         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1270
1271         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1272         since mono_jit_info_table_find () doesn't do it anymore.
1273
1274         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1275         instead of mono_jit_info_table_find ().
1276
1277 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1280
1281         * aot-compiler.c (encode_method_ref): Update after the removal of
1282         mono_gc_get_managed_allocator_type ().
1283
1284         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1285         Fixes #564538.
1286
1287 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1288
1289         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1290         generic params as well.
1291         (handle_isinst): Ditto.
1292
1293         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1294         instead of always calling an icall.
1295
1296         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1297         computing the size of the got.
1298
1299         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1300         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1301         the assembly directive '.set' so it points to the first LLVM emitted method.
1302
1303 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1304
1305         * mini.c (mini_method_verify): Report the method which failed to verify.
1306
1307 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1308
1309         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1310         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1311         runtime MS verifier.
1312
1313 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1314
1315         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1316         #561962.
1317
1318 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1319
1320         * mini-llvm.c: Init the jit module only when first JITting.
1321
1322         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1323
1324         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1325
1326         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1327         replaced with the real got.
1328
1329         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1330
1331         * image-writer.c: Reduce the amount of #ifdefs a bit.
1332
1333         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1334         llvm on darwin/arm.
1335
1336         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1337
1338         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1339         global.
1340
1341 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1344         (mono_llvm_emit_method): Fix unaligned stores too.
1345
1346         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1347         so async stack walks don't crash.
1348
1349 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1350
1351         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1352         was not patched if the callee needed an rgctx trampoline.
1353
1354 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1355
1356         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1357         vtable address in AOT code.
1358
1359 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1360
1361         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1362         MonoInst's.
1363
1364 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1365
1366         * genmdesc.pl: remove dependency on external cpp.
1367
1368 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1369
1370         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1371         using LLVM, its not needed, and abcrem can't handle it.
1372
1373 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1374
1375         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1376         it easier to group instructions and reduce duplication.
1377
1378 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1379
1380         * decompose.c: Move the array/soft float decompose routines here from
1381         method-to-ir.c.
1382
1383         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1384
1385 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1386
1387         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1388         to tell LLVM that the got is constant, not used yet.
1389
1390         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1391
1392 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1393
1394         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1395         managed wrappers.
1396
1397 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1398
1399         * aot-compiler.c (add_wrappers): Commit the hack which generates
1400         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1401         custom attribute.
1402
1403 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1404
1405         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1406         a fault, only used by the LLVM backend.
1407
1408         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1409         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1410
1411         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1412         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1413
1414         * mini-llvm.c: Only generate volatile loads from load instructions which have
1415         the MONO_INST_FAULT flag set.
1416
1417 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1418
1419         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1420         64 bit platforms.
1421
1422 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1423
1424         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1425         sequence points. Fixes #571236.
1426
1427 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1428
1429         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1430         end of the appdomain unload process, after assemblies have been unloaded.
1431         Fixes #574842.
1432
1433 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1434
1435         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1436         works.
1437
1438         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1439         Fixes #573988.
1440
1441 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1442
1443         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1444
1445 2010-01-26  Geoff Norton  <gnorton@novell.com>
1446
1447         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1448         with struct marshalability.
1449
1450 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1453         it supports class names as well.
1454
1455         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1456         needed by the GC map code.
1457
1458         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1459         flags if needed.
1460
1461         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1462         if cfg->init_ref_vars is set.
1463
1464         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1465         cfg->disable_initlocals_op_refs is set.
1466
1467         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1468         using liveness info if cfg->compute_precise_live_ranges is set.
1469
1470         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1471         volatile variables correctly. Add comments about the live ranges. Not enabled
1472         yet.
1473
1474 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1475
1476         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1477         0x2a into them in method prologs.
1478
1479         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1480
1481 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1482
1483         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1484         classes, since llvm is compiled with -fno-rtti.
1485
1486         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1487
1488         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1489         llvm does not require it.
1490
1491         * aot-runtime.c (load_method): Print the full name of the last aot method.
1492
1493 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1494
1495         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1496         thread has not fully started yet.
1497
1498 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1499
1500         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1501
1502 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1503
1504         * driver.c: Do not abort if LLVM is not supported, print a
1505         warning and add the information to the Mono JIT information.
1506
1507 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1508
1509         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1510         using explicit null checks.
1511
1512 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1513
1514         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1515         related code.
1516
1517         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1518         () in one place.
1519         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1520         its no longer needed.
1521
1522         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1523
1524         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1525         define for platforms still using it (s390). Get rid of the
1526         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1527
1528         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1529         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1530
1531         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1532         the caller pushed the arguments.
1533
1534         * mini-llvm.c: Enable throwing exceptions on x86.
1535
1536         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1537         "Thread (nil) may have been prematurely finalized" messages if this is called
1538         on a thread not registered with the runtime.
1539
1540         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1541
1542 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * jit-icalls.c (mono_array_new_3): New jit icall.
1545
1546         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1547
1548         * arrays.cs: Add a test for 3 dimensional arrays.
1549
1550 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1551
1552         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1553         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1554         used.
1555
1556         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1557         thrown on x86.
1558
1559         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1560
1561         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1562
1563         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1564
1565 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1566
1567         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1568           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1569
1570         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1571
1572         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1573
1574         Code is contributed under MIT/X11 license.
1575
1576 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1577
1578         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1579
1580         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1581
1582         * mini.c (mini_method_compile): Set the new flag when running under the
1583         debugger.
1584
1585 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1586
1587         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1588         a ref/noref value + a global pin flag, so parts of stack frames can still be
1589         precisely marked even if they include stuff which needs pinning. Improve logging.
1590         Fix many bugs. Not enabled yet.
1591
1592         * gc-test.cs: Add a few tests.
1593
1594         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1595         the normal -v options. Avoid propagating liveness information through bblocks
1596         which end with a NOT_REACHED opcode.
1597
1598         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1599         after cfg has been freed.
1600
1601 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1602
1603         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1604         if a clause is skipped because it uses the exception object, since it could
1605         have caught the exception.
1606
1607         * exceptions.cs: Add a test.
1608
1609 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1610
1611        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1612
1613         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1614         ICollection<T> wrappers.
1615
1616 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1617
1618         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1619
1620 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1621
1622         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1623         NOMAP32BIT or optimize_for_xen is set.
1624
1625 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1626
1627         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1628         mono_metadata_str_hash () instead.
1629
1630 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1631
1632         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1633         sizeof (void*).
1634
1635         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1636
1637 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1638
1639         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1640         flag is set.
1641
1642         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1643         throwing code correctly.
1644
1645         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1646
1647 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1650         ftnptrs created by us, handle RGCTX_FETCH correctly.
1651         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1652
1653         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1654         ftnptr added by mono_aot_get_named_code ().
1655
1656 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1657
1658         * mini-arm.c: Fix a few LLVM problems.
1659
1660         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1661
1662 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1663
1664         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1665         AOT compiling.
1666
1667 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1668
1669         * jit.h, method-to-ir.c: added ability to set the policy for
1670         inserting breakpoints from the break IL instruction or the
1671         Debugger.Break () API call.
1672
1673 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1676         assemblies need to be eagerly loaded.
1677
1678 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1681
1682 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1683
1684         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1685         an argument which matches any exception.
1686
1687 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1688
1689         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1690         optimization if the called method is gshared and marshalbyref, since gshared
1691         methods can' have wrappers. Fixes #569390.
1692
1693         * generics.cs: Add a test.
1694
1695 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1698         callable from gdb.
1699
1700 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1701
1702         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1703
1704 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1705
1706         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1707         since it is not supported in win2000.
1708
1709 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1710
1711         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1712         error if loading an assembly fails.
1713         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1714
1715         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1716         if exists.
1717
1718         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1719         compiled methods.
1720
1721         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1722
1723         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1724         is not supported yet.
1725
1726         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1727
1728 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1729
1730         * method-to-ir.c: All types with variant arguments must fallback to the
1731         slow path. This makes cast of variant delegates work.
1732
1733         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1734         argument that is set to TRUE is the returned vtable slot is for a variant
1735         interface. Changed a g_print + g_assert_not_reached to a g_error.
1736
1737         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1738         a similar fashion of generic virtual methods.
1739
1740 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1741
1742         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1743         when cfg is null.
1744
1745         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1746         method using a variance aware function.
1747
1748         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1749
1750 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1751
1752         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1753         do an icall for now.
1754
1755 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1758         If LLVM decides to set the code model to Large, reset it to Default.
1759
1760 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1761
1762         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1763         stripped binaries as well.
1764
1765 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1766
1767         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1768         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1769
1770         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1771         reg.
1772
1773 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1774
1775         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1776         separate function.
1777
1778         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1779         as the type info to llvm.eh.selector.
1780         (exception_cb): Use the type info for filling out some fields of
1781         MonoJitExceptionInfo like the flags and the exception class. This is needed
1782         because the LLVM produced exception handling clauses might not match the original
1783         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1784
1785         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1786         separate function. Add an extra argument which returns the type infos
1787         corresponding to the exception clauses.
1788
1789         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1790         exception handling clauses.
1791
1792 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1793
1794         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1795         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1796         to fix an AOT case.
1797
1798 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1799
1800         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1801         internal assembly.
1802
1803 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1804
1805         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1806         llvm code.
1807
1808 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1809
1810         * mini.c (mini_method_compile): Verify the method before calling
1811         mono_compile_create_vars as this might crash since it uses method
1812         information.
1813
1814         Fixes #560196.
1815
1816 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1817
1818         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1819         one case if AOTing, since the class might not be a concrete class.
1820
1821 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1822
1823         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1824         functions which are now defined in mempool-internals.h.
1825
1826         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1827
1828         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1829
1830 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1831
1832         * mini.c:
1833         * method-to.ir.c:
1834         * mini-*.c: Properly handle generic enums.
1835
1836         Fixes #566294
1837
1838 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1839
1840         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1841         in a few more places.
1842
1843 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1844
1845         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1846         nullable parameters. Fixes #567351.
1847
1848 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1849
1850         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1851
1852 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1853
1854         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1855         mono_get_generic_context_from_code () call.
1856
1857         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1858
1859 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1860
1861         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1862         needed.
1863
1864 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1865
1866         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1867         mono_method_get_signature returns NULL. Fix #567084
1868
1869 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1870
1871         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1872         instead of once for each module.
1873
1874 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1875
1876         * debugger-agent.c (ss_start): Implement step over for the last sequence
1877         point in methods.
1878
1879         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1880         have the STEP_LOC flag set.
1881
1882         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1883         fails. Fixes #566689.
1884
1885 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * mini.c (mono_add_seq_point): New helper function.
1888         (mono_save_seq_point_info): New function to save sequence point info, extracted
1889         from mini_method_compile ().
1890
1891         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1892
1893         * mini.h (MonoSeqPointInfo): New structure containing information about
1894         the sequence points of a JITted method.
1895         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1896         'bucket' field.
1897
1898         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1899         point information is stored, use a MonoSeqPointInfo structure instead of a
1900         GPtrArray. For each seq point, compute a list of successor seq points.
1901
1902         * debugger-agent.c: Use the successor list to implement step-over more
1903         efficiently: instead of single stepping until a different line/IL offset is
1904         reached, place breakpoints into all successor seq points.
1905
1906         * mini.h: Bump AOT file format version.
1907
1908 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1909
1910         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1911
1912         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1913
1914 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1915
1916         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1917         build.
1918
1919 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1920
1921         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1922         alloca as g_malloc is not signal safe.
1923
1924 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1925
1926         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1927         VALGRIND_DISCARD_TRANSLATIONS.
1928
1929         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1930         checks, they are no longer needed.
1931
1932         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1933         a function into a sigctx which can handle function pointers.
1934
1935         * mini-ppc.c: Implement soft debugger support on ppc64.
1936
1937         * mini-ppc.c: Implement soft debugger support.
1938
1939 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1940
1941         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1942
1943 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1944
1945         * mini.c (mono_get_runtime_build_info): include Mono version in
1946         the returned value.
1947
1948         * driver.c (mono_main): VERSION is now included in the string
1949         returned from mono_get_runtime_build_info()
1950
1951 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1952
1953         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1954         signatures. Fixes #565143.
1955
1956         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1957
1958 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1959
1960         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1961
1962 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1963
1964         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1965         making max stack 10x smaller.
1966
1967 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1968
1969         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1970
1971 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1972
1973         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1974
1975 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1976
1977         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1978         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1979
1980         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1981
1982         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1983
1984         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1985
1986         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1987         the compilation.
1988
1989 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1990
1991         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1992         raise an invalid program exception.   
1993
1994         For other opcodes that we might not handle use a g_warning and
1995         raise the exception.   Beats termination.
1996
1997         Fixes #561724
1998
1999 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
2000
2001         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
2002
2003         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
2004         by merging the LLVM and !MAP_32BIT cases.
2005
2006 2009-12-13 Jonathan Chambers <joncham@gmail.com>
2007
2008         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
2009         sigctx being passed in, as we have no CONTEXT available in the APC.
2010
2011         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
2012         for now.
2013
2014         Code contributed under MIT/X11 license.
2015
2016 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
2017
2018         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
2019         in the LLVM backend on AMD64.
2020
2021         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
2022         FDE.
2023
2024         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
2025
2026         * mini-llvm.c: Export mono_personality for AOT.
2027
2028         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
2029
2030         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
2031         implicit exception can occur.
2032
2033         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
2034         OP_IMPLICIT_EXCEPTION instruction.
2035
2036         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
2037
2038         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
2039
2040         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
2041         inside a protected block.
2042
2043         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
2044         trampolines doesn't include the argument.
2045
2046         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
2047         trampolines on amd64.
2048
2049         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
2050         of RDI.
2051
2052         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
2053         disabled for methods with clauses.
2054
2055         * mini-llvm.c: Enable support for catch clauses.
2056
2057         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
2058         end of an LLVM compiled finally clause.
2059         (mono_handle_exception_internal): Save the exception handling state in TLS
2060         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
2061         resume unwinding from that point.
2062
2063         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
2064         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
2065         to obtain the addresses of the exception handling regions.
2066
2067         * mini-llvm.c: Add beginnings of support for exception handling, currently only
2068         finally clauses are supported.
2069
2070         * mini.c (mini_method_compile): Add support for LLVM code with exception
2071         handlers.
2072
2073 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2074
2075         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
2076         proper size.
2077
2078 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
2079
2080         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
2081         as a primitive type.
2082
2083 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
2084
2085         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
2086         for 2 parameter sched_setaffinity in older glibc versions. Fixes
2087         #564000.
2088
2089 2009-12-11  Marek Habersack  <mhabersack@novell.com>
2090
2091         * method-to-ir.c (mini_redirect_call): do not redirect the
2092         InternalAllocateStr internal call if string profiling is enabled.
2093
2094 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
2095
2096         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
2097         generic methods.
2098
2099         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2100         unwind.h header file.
2101
2102         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2103         newer valgrind versions seems to handle this fine.
2104
2105 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2106
2107         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2108         on the debugger thread.
2109
2110 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2111
2112         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2113
2114         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2115
2116         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2117
2118         * cpu-<ARCH>.md: Make call_handler clob:c.
2119
2120         * mini.c: Reenable SSA for methods with clauses.
2121
2122         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2123         as it causes failures on x86.
2124
2125 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2126
2127         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2128         returns NULL (e.g. a bad assembly).
2129
2130 2009-12-08  Geoff Norton  <gnorton@novell.com>
2131
2132         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2133         stepping out into native code.  There were issues with nested invokes
2134         like .cctors.
2135
2136 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2137
2138         * mini.c (mini_method_compile): Do the disable_llvm checks early
2139         and avoid the LLVM compile pass if the checks fail.
2140
2141         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2142
2143         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2144         LLVM optimizations don't try to remove them.
2145
2146         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2147         different file so the original remains.
2148
2149 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2150
2151         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2152
2153         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2154
2155         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2156         support for non-inline unwind descriptors.
2157
2158 2009-12-07  Geoff Norton  <gnorton@novell.com>
2159
2160         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2161         the interrupt_count slightly differently.  Native threads were never
2162         marked as resumed.
2163
2164 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2165
2166         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2167         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2168         yet generate this info.
2169
2170         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2171
2172         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2173         client can distinguish between intptrs and longs.
2174
2175 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2176
2177         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2178         blob.
2179
2180         * aot-runtime.c (load_function): Update after the change above.
2181
2182         * mini.h: Bump AOT file format version.
2183
2184         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2185         if the delegate class is dynamic.
2186
2187         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2188         in gshared code too using the new rgctx info type
2189         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2190
2191 2009-12-04  Geoff Norton  <gnorton@novell.com>
2192
2193         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2194         we need to track the original suspend count so the thread properly
2195         wakes up in resume_thread.
2196
2197 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2198
2199         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2200         code.
2201
2202         * generics.cs: Add a test.
2203
2204         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2205         is 0. Simplify a lot of code using this.
2206
2207         * mini-trampolines.c (mono_delegate_trampoline): Call
2208         mono_create_static_rgctx_trampoline () before saving the final address in
2209         delegate->method_code, to avoid calling it each time a delegate is first called.
2210
2211         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2212         which need static rgctx trampolines.
2213
2214         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2215         keyed on the method+addr pair, since addr could be either the method addr or
2216         an unbox trampoline in the AOT case. Fixes #560246.
2217
2218 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2219
2220         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2221         place it was called before too.
2222
2223 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2224
2225         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2226         if no security manager is present, to speed up the AOT case. Call
2227         mono_class_vtable () full with raise_on_error == TRUE instead.
2228
2229 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2230
2231         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2232         the local optimization passes can take its result into account. Fixes
2233         #559876.
2234
2235         * exceptions.cs: Add a test.
2236
2237 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2238
2239         This patch is contributed under the terms of the MIT/X11 license
2240
2241         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2242
2243 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2244
2245         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2246
2247         * debugger-agent.c: Rework the handling of stack traces of running threads to
2248         avoid crashes if compute_frames () tries to walk the stack of running thread.
2249
2250         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2251
2252         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2253
2254         * mini.h (StackFrameInfo): Add an 'lmf' field.
2255
2256 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2257
2258         * debugger-agent.c (suspend_current): Always set really_suspended.
2259
2260         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2261
2262         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2263
2264 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2265
2266         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2267         really suspended.
2268
2269 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2270
2271         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2272
2273 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2274
2275         * mini-trampolines.c: Fix MSVC build.
2276
2277 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2278
2279         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2280
2281 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2282
2283         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2284         the instruction following an OP_FCOMPARE is optimized away.
2285
2286 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2287
2288         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2289         emit_autoreg () into this arch-specific function.
2290
2291         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2292         code, it is no longer needed.
2293
2294         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2295
2296         * mini.h: Bump AOT file format version.
2297
2298         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2299         using the sorted_code_offsets array, instead of reading it from the
2300         exception debug info.
2301         (load_method): Call mono_aot_find_jit_info instead of
2302         decode_exception_debug_info ().
2303
2304         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2305         LLVM compiled as a flag.
2306
2307 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2308
2309         * debugger-agent.c (resume_thread): Fix a warning.
2310
2311         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2312         generated.
2313
2314 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2315
2316         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2317         contents to MonoAotFileInfo.
2318
2319 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2320
2321         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2322         Put all binary data into a giant blob, similarly to the way .net assemblies
2323         store binary data. Emit offset tables in a compact form to reduce their size.
2324
2325         * mini.h: Bump AOT file format version.
2326
2327         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2328         places.
2329
2330         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2331         avoid linear searches at runtime.
2332
2333         * aot-runtime.c (find_symbol): Update this to use the hash.
2334
2335         * mini.h: Bump AOT file format version.
2336
2337 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2338
2339         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2340         container.
2341
2342         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2343         too.
2344
2345         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2346         the distribution of got slot types.
2347
2348         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2349
2350         * method-to-ir.c: Add support for generating explicit null checks.
2351
2352 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2353
2354         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2355         on a random thread if possible.
2356
2357         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2358         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2359         correctly.
2360
2361         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2362         regs. Pass the real size of the regs array to mono_unwind_frame ().
2363
2364         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2365         ones instead.
2366
2367 2009-11-24  Geoff Norton  <gnorton@novell.com>
2368
2369         * mini-darwin.c: Work around apple bug rdar://7209349  See
2370         http://openradar.appspot.com/7209349 for details.  Synopsis,
2371         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2372         never been initialized before.
2373
2374 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2375
2376         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2377
2378         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2379
2380 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2381
2382         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2383         OP_SHL_IMM is not 32 bit.
2384
2385 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2386
2387         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2388
2389 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2390
2391         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2392         encountered.
2393
2394         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2395         > 0 since some threads can resume if their resume_count is > 0.
2396         (invoke_method): Avoid reading freed memory.
2397
2398         * debugger-agent.c (process_suspend): Extract the suspend code from
2399         process_single_step_inner () to a separate function. Rework the code to prevent
2400         races between this function and thread interrupts.
2401
2402         * debugger-agent.c (suspend_current): Check the resume_count field instead
2403         of resume_one so suspends+resumes during single threaded invokes work
2404         correctly.
2405
2406 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2407
2408         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2409         to make the generated code smaller.
2410
2411         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2412         sequence generated by recent LLVM versions.
2413
2414         * mini-llvm.c: Add support for a few simple cases which weren't supported
2415         before.
2416
2417         * mini-trampolines.c (mono_magic_trampoline): Don't call
2418         mono_arch_get_vcall_slot () when llvm is enabled.
2419
2420         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2421
2422         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2423         into a new function called common_call_trampoline () which is used by the
2424         llvm vcall trampoline as well.
2425
2426         * debugger-agent.c: Implement single threaded invokes.
2427
2428         * debugger-agent.c: Revert change which broke the agent on linux.
2429
2430         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2431         #557606.
2432
2433         * generics.cs: Add a test.
2434
2435 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * debugger-agent.c: Fix the cygwin build.
2438
2439 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2440
2441         * cprop.c: Remove this unused file.
2442
2443 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2444
2445         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2446         #557262.
2447
2448         * basic.cs: Add a test.
2449
2450 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2451
2452         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2453         in one more place.
2454
2455 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2456
2457         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2458         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2459         it. Use this flag to control llvm related code paths instead of #ifdef
2460         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2461         AOT code.
2462
2463         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2464
2465         * mini.h: Bump AOT file format version.
2466
2467         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2468         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2469
2470         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2471         was used as an assembly filter.
2472
2473 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2474
2475         * unwind.c: Fix support for ppc.
2476
2477         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2478         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2479
2480 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2481
2482         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2483         port.
2484         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2485         added by the ps3 changes.
2486
2487 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2488
2489         * mini-gc.c: Resurrect this, so at least it compiles.
2490
2491         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2492
2493 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2494
2495         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2496         create_event_list () so assembly filters can be used.
2497
2498         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2499         from the LMF.
2500
2501 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2502
2503         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2504         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2505         is disabled.
2506
2507         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2508         classes for char/bool too.
2509
2510         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2511
2512         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2513         used.
2514
2515         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2516         Fix warnings.
2517
2518 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2519
2520         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2521         
2522         Code contributed under MIT/X11 license.
2523
2524 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2525
2526         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2527         threads in native code work.
2528
2529         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2530         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2531         version.
2532
2533 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2534
2535         * debugger-agent.c: Implementation for Windows platform.
2536
2537         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2538         primitives. Use SEH to implement breakpoints and single stepping.
2539
2540         * mini-x86.h: Enable soft debugger on Windows.
2541
2542         Code contributed under MIT/X11 license.
2543
2544 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2545
2546         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2547         under XEN. Fixes #522894.
2548
2549         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2550
2551         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2552         interface calls in LLVM AOT code.
2553
2554         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2555         is found.
2556
2557         * mini-llvm.c: Add support for OP_VPHI.
2558
2559         * objects.cs: Add a test.
2560
2561 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2562
2563         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2564         this is called on the debugger thread.
2565
2566 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2567
2568         * mini-llvm.c: Add soft-float support.
2569
2570         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2571         FCALL which returns an R4.
2572
2573         * driver.c (mono_main): Add a missing '\n'.
2574
2575         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2576         platforms which doesn't support the LLVM IMT trampoline.
2577
2578 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2579
2580         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2581
2582         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2583
2584         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2585         virtual calls.
2586
2587         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2588
2589 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2590
2591         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2592         Instead of emitting a method_order table, sort the contents of the code_offsets
2593         table and do a binary search in the sorted table. The previous approach doesn't
2594         work with LLVM which emits methods in a arbitrary order.
2595
2596         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2597         in the .eh_frame section in ELF files.
2598
2599         * mini.h: Bump corlib file format version.
2600
2601         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2602
2603         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2604         LDMIA->LDM macro name change.
2605
2606 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2607
2608         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2609         x86.
2610
2611         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2612         SVN.
2613
2614         * aot-compiler.c: Ditto.
2615
2616         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2617         &align to mini_type_stack_size_full ().
2618
2619         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2620
2621         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2622
2623 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2624
2625         * mini-arm.c: Compute the stack space used by arguments using
2626         mini_type_stack_size_full ().
2627
2628 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2629
2630         * optflags-def.h: Remove dead TREEPROP optimization.
2631
2632 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2633
2634         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2635
2636         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2637
2638 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2639
2640         * driver.c (mono_jit_parse_options): New public API function to parse options
2641         as done by the runtime executable.
2642
2643         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2644         when handling named arguments.
2645
2646 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2647
2648         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2649         for passing small vtypes in registers, make the CallInfo structures more
2650         similar to the code on the other platforms.
2651
2652         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2653         the code in the prolog requires it.
2654
2655 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2656
2657         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2658         (koush@koushikdutta.com).
2659
2660         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2661         where the thunk memory should be allocated from. Fixes appdomain unloading
2662         on arm.
2663
2664 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2665
2666         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2667         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2668
2669 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2670
2671         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2672         AOT, as it is not implemented yet.
2673
2674         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2675
2676 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2677
2678         * debugger-agent.c: Fix windows build.
2679
2680 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2681
2682         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2683         after the client connects/disconnects.
2684
2685         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2686         when an exception of a given type is thrown.
2687
2688         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2689         only on an uncaught exception.
2690
2691         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2692
2693         * debugger-agent.c: Add a 'launch' option.
2694
2695 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2696
2697         * debugger-agent.c: Add a 'timeout' option.
2698
2699 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2700
2701         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2702         the JDWP agent.
2703
2704 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2705
2706         * debugger-agent.c (set_breakpoint): Emit a log message.
2707
2708 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * mini-arm.c: Fix the arm build.
2711
2712 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2713
2714         * aot-compiler.c: don't leak the value returned from
2715         mono_type_full_name().
2716
2717 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2718
2719         * debugger-agent.c: defer including mono-mutex.h until we know the
2720         agent is supported.
2721
2722 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2723
2724         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2725         of pthreads directly.
2726
2727         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2728         exception handlers. Pass info argument.
2729
2730         * mini.h: Adjust signatures of soft debugger functions to pass void*
2731         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2732
2733         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2734         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2735         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2736         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2737
2738         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2739
2740         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2741         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2742         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2743         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2744
2745         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2746
2747         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2748
2749         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2750
2751         * mono-semaphore.h: Skeleton implementation for Windows.
2752
2753         Code contributed under MIT/X11 license.
2754
2755 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2756
2757         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2758
2759         Code contributed under MIT/X11 license.
2760
2761 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2762
2763         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2764
2765         Code contributed under MIT/X11 license.
2766
2767 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2768
2769         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2770         debug info to 100 because 10 still slows down gdb too much.
2771
2772         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2773         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2774         them in the wrappers.
2775
2776 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2777
2778         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2779
2780         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2781
2782         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2783         function mono_aot_get_array_helper_from_wrapper ().
2784
2785         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2786         array helper methods.
2787
2788 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2789
2790         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2791         the value was loaded from memory.
2792
2793         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2794         the value was loader from there.
2795
2796         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2797         without constant swizzle.
2798
2799 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2800
2801         * mini-amd64.c: Put soft debugger functions behind a
2802         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2803
2804         * mini-amd64.h: disable the soft debugger in windows.
2805
2806         Code contributed under MIT/X11 license.
2807
2808 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2809
2810         * mini-x86.c: Put soft debugger functions behind a
2811         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2812
2813         Code contributed under MIT/X11 license.
2814
2815 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2816
2817         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2818         to mono_arch_find_jit_info_ext.
2819
2820         Code contributed under MIT/X11 license.
2821
2822 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2825
2826         * debugger-agent.c: Add support for filtering events by assemblies.
2827
2828         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2829         the agent is not enabled.
2830
2831 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2832
2833         * exceptions-x86.c: hopefully last change to fix the windows build.
2834         This one courtesy of Jonathan Chambers.
2835
2836 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2837
2838         * debugger-agent.c: remove unused function.
2839
2840 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2841
2842         * debugger-agent.c: add #ifdefs for a few header files.
2843         * mini-x86.h: disable the soft debugger in windows.
2844         Step 1 of 2 to make this compile on windows with gcc.
2845
2846 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2847
2848         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2849         as it breaks the build.
2850
2851 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2852
2853         Merge the soft debugger branch.
2854
2855         * debugger-agent.h debugger-agent.c: New files containing the soft
2856         mode debugger module.
2857
2858         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2859         at the appropriate locations.
2860
2861         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2862         opcode.
2863
2864         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2865         enable/disable single stepping.
2866
2867         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2868         which returns all information in a StackFrameInfo structure, and can handle the
2869         LMF frames added by the debugger.
2870
2871         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2872         about an LMF frame.
2873
2874         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2875         walker function which works on a specific thread and passes a StackFrameInfo
2876         structure to its callback.
2877
2878         * mini.c (mini_init): Initialize the debugger agent.
2879
2880         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2881
2882         * mini-ops.h: Add OP_SEQ_POINT opcode.
2883
2884         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2885         arguments to the debugger agent.
2886
2887 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2888
2889         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2890         speed things up.
2891
2892         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2893
2894         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2895
2896         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2897
2898         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2899         if needed.
2900         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2901         sets the IMT argument and makes a virtual call.
2902
2903         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2904
2905 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2908         the windows build.
2909
2910 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2911
2912         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2913         runtime. Fixes #551228.
2914
2915 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2916
2917         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2918
2919         * basic.cs: Add a test.
2920
2921         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2922         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2923         CONSTRAINED. Fixes #550964.
2924
2925         * generics.cs: Add a test.
2926
2927 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2928
2929         * mini-posix.c (add_signal_handler): Use
2930         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2931
2932 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2933
2934         Contributed under the terms of the MIT/X11 license by
2935         Jerry Maine <crashfourit@gail.com>.
2936
2937         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2938         sse4a for simd intrinsics.
2939
2940         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2941         sse4a for simd intrinsics.
2942
2943 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2944
2945         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2946         instead of inst_p1 which is not the same on ILP32 platforms.
2947
2948 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2949
2950         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2951         not the mscorlib one before calling mono_get_lmf_addr.
2952
2953         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2954         of the ip to the LMF.
2955
2956         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2957         immediate in the op->op_imm optimization.
2958
2959         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2960         understand. VTypes now work, but are not abi compliant, as they are
2961         split into 4 byte parts instead of 8.
2962         (emit_memcpy): Fix the unrolled case to work on the PS3.
2963
2964         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2965
2966         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2967         the default when static linking.
2968
2969         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2970
2971         * aot-compiler.c: Add an autoreg option to automatically register
2972         statically linked aot modules using ELF .ctors.
2973
2974         * genmdesc.pl: Add __ppc64__ to allowed defines.
2975
2976 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2977
2978         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2979         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2980
2981 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2982
2983         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2984
2985 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2988         which will contain the domain where the method was found.
2989
2990         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2991         mini_jit_info_table_find ().
2992
2993         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2994
2995         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2996
2997 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2998
2999         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
3000         set, its not supported yet.
3001
3002 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
3003
3004         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
3005         iface wrapper is not found.
3006         (mono_aot_get_method): Ditto for GetGenericValueImpl.
3007
3008 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
3009
3010         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
3011         which have a different name.
3012
3013         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
3014         wrappers and Array.GetGenericValueImpl ().
3015
3016         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
3017         because of the change above.
3018
3019         * generics.cs: Add a test for full aot + generic array ifaces.
3020
3021 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
3022
3023         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
3024         that hides the previous one.
3025
3026 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
3027
3028         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
3029         marshalled. Fixes #541623.
3030
3031 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
3032
3033         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
3034
3035 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
3036
3037         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
3038
3039 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3040
3041         * mini-posix.c (sigprof_signal_handler):
3042         Implemented support for building stat call chans in different ways.
3043
3044 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3045
3046         * mini-exceptions.c (mono_find_jit_info):
3047         Also check that a jit info has been found (fixes a profiler crash).
3048
3049 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
3050
3051         * mini.c (mono_codegen):
3052         Call mono_profiler_code_buffer_new with correct code address.
3053
3054 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
3055
3056         * driver.c (mono_main): Change the date in the copyright.
3057
3058 2009-10-14  Mark Probst  <mark.probst@gmail.com>
3059
3060         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
3061         allocator in shared generic code for open classes, because we
3062         can't get those classes' vtables.  We need to make managed
3063         allocators not depend on the vtable at compile-time to solve this.
3064
3065 2009-10-13  Martin Baulig  <martin@ximian.com>
3066
3067         * debug-mini.c (mono_debugger_trampoline_compiled): Add
3068         `const guint8 *trampoline' argument; send both the old and the new
3069         notification.
3070
3071 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
3072
3073         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
3074         mono_runtime_capture_context () without calling mono_runtime_invoke ().
3075         (can_marshal_struct): Skip structures with auto layout.
3076
3077         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
3078
3079 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
3080
3081         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
3082         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
3083         a variable to hold the stack slot used by the int<->float conversion opcodes.
3084
3085         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
3086
3087 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
3088
3089         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
3090         when using full-aot.
3091
3092 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
3093
3094         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
3095         each instance of Comparer<T>.
3096
3097         * generics.cs: Add a new test.
3098
3099 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * driver.c (parse_debug_options): Add a 'gdb' option.
3102
3103         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3104
3105         * image-writer.c: Add support for emitting the image into a memory buffer.
3106
3107         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3108
3109         * aot-compiler.c: Add support for registering debug info with GDB using the
3110         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3111         MONO_XDEBUG to 'gdb'.
3112
3113 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3114
3115         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3116         gdb mode.
3117
3118 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3119
3120         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3121         can be used to set breakpoints in gdb.
3122
3123         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3124         segment to an absolute address.
3125
3126 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3127
3128         * method-to-ir.c: Use the managed array allocator method if
3129         available.
3130
3131 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3132
3133         * aot-compiler.c : Fix the MSVC builds
3134
3135         Code is contributed under MIT/X11 license.
3136
3137 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3138
3139         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3140         avoid registering 1 symbol file per method with gdb.
3141
3142 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3143
3144         * mini-sparc.c: Fix the handling of enums with base type long.
3145
3146         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3147
3148         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3149         instead of using type->data.klass as the later doesn't work with generics.
3150
3151 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3152
3153         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3154         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3155         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3156         works differently now and we don't handle it in the JIT anymore.
3157
3158         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3159         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3160         the Thread class split.
3161
3162 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3163
3164         * driver.c: Don't run tests with the obsolete treeprop optimization.
3165
3166         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3167         variable volatile. Fixes #541577.
3168
3169         * basic-calls.cs: Add a new test.
3170
3171         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3172
3173 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3174
3175         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3176         work/required with recent iphone sdk versions.
3177
3178         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3179         structures.
3180
3181         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3182         in the VCALL decomposition code.
3183
3184 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3185
3186         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3187
3188         * basic.cs: Add a test.
3189
3190         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3191         generic invokes.
3192
3193         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3194         searches all the domains of the current thread.
3195
3196         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3197
3198 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3199
3200         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3201         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3202
3203         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3204         for non-jit trampolines.
3205
3206         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3207
3208         * aot-compiler.c (add_wrappers): Ditto.
3209
3210         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3211         the size of the param area used by dyn_call to 6 which covers the majority of
3212         methods.
3213
3214         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3215
3216         * mini-arm.c: Implement support for passing/receiving
3217         longs and receiving floats in the dyn_call code.
3218
3219         * mini-amd64.c: Implement support for receiving vtypes in registers in
3220         the dyn_call code.
3221
3222         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3223         the dyn_call code.
3224
3225 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3226
3227         * mini-arm.c (get_call_info): Return more precise information in
3228         ArgInfo->regtype.
3229         (dyn_call_supported): Use the information in CallInfo.
3230
3231         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3232
3233         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3234         code.
3235
3236         * mini-arm.c: Update after the dyn_call api changes.
3237
3238         * mini.c (mini_create_jit_domain_info): Register a destructor function
3239         for the runtime_invoke_hash.
3240
3241         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3242         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3243         this function.
3244         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3245         (dyn_call_supported): Simplify this by using get_call_info ().
3246         (mono_arch_dyn_call_free): New destructor function.
3247
3248         * generics.cs: Remove a printf.
3249
3250         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3251
3252         * mini-arm.c: Add support for enum return values and passing a few arguments
3253         on the stack.
3254         
3255         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3256         dyn invoke.
3257
3258         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3259
3260         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3261         the dynamic invoke wrappers.
3262
3263         * mini-arm.c: Implement OP_DYN_CALL for arm.
3264
3265         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3266         supported by the dynamic runtime invoke wrapper.
3267
3268         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3269         runtime invoke wrapper.
3270
3271         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3272         if possible when running with full-aot.
3273
3274         * mini-ops.h: Add OP_DYN_CALL opcode.
3275
3276         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3277         with dynamic arguments lists similar to libffi.
3278
3279 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3280
3281         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3282         
3283         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3284         to NEWARR.
3285
3286         * iltests.il.in: Add a new test.
3287         
3288 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3289
3290         * aot-compiler.c (add_generic_instances): Add more instances of
3291         GenericEqualityComparer.
3292
3293 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3294
3295         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3296
3297 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3298
3299         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3300         comments on some functions that now can fail.
3301
3302 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3303
3304         * Makefile.am: Add Info.plist to EXTRA_DIST
3305
3306 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3307
3308         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3309         static synchronized wrappers. Fixes #539500.
3310
3311 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3312
3313         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3314         properly.
3315
3316 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3317
3318         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3319         lmf before calling filter clauses as well. Fixes #539550.
3320
3321         * exceptions.cs: Add a test.
3322         
3323 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * aot-compiler.c (add_generic_class): Add instances of
3326         Array.GetGenericValueImpl as well.
3327
3328         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3329         can be tested too.
3330
3331         * generics.cs: Add a fullaot linq test.
3332
3333 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3334
3335         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3336         reg r1 on arm.
3337
3338 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3339
3340         * mini-trampolines.c (mono_delegate_trampoline) : Call
3341           mono_cominterop_get_invoke if the delegate target object
3342           is a COM object.
3343
3344         Code is contributed under MIT/X11 license.
3345
3346 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3347
3348         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3349         internal call is defined outside platform code. Reduce code 
3350         duplication with existing [Method|Field]AccessException
3351
3352 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3353
3354         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3355         if the return value is a small struct passed on regs.
3356
3357 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3360
3361         * mini-codegen.c: Enable the cpu description validation for arm.
3362
3363 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3364
3365         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3366         test which depends on structs to objects.cs.
3367         
3368         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3369         require object model related stuff working.
3370
3371         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3372
3373         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3374
3375         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3376         against the instruction metadata in mini-ops.h. amd64 only for now.
3377
3378         * mini-ops.h: Fix some instruction descriptions.
3379
3380         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3381         unused instructions.
3382
3383 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3384
3385         * exceptions.cs: Add a new test.
3386
3387 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3388
3389         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3390
3391 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3392
3393         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3394         skip empty phi opcodes.
3395         
3396         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3397         correctly by zero extending after loads. Skip methods containing calls
3398         to the monitor enter/exit trampolines.
3399
3400         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3401         when calling mono_thread_force_interruption_checkpoint ().
3402
3403         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3404
3405         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3406         64 bit thunks.
3407         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3408
3409         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3410         bootstrap could run.
3411
3412 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3413
3414         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3415
3416 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3417
3418         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3419         of the method to
3420         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3421         LLVM might be very short.
3422
3423         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3424         in OP_THROW/RETHROW.
3425
3426         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3427         alignment on osx.
3428
3429 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3430
3431         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3432         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3433         LLVM might be very short.
3434
3435 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3436
3437         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3438         the alignment for the value of sp.
3439
3440 2009-09-01  Geoff Norton  <gnorton@novell.com>
3441
3442         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3443         managed wrappers in full aot.
3444
3445 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3446
3447         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3448
3449 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3450
3451         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3452
3453 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3454
3455         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3456
3457         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3458         saved info.
3459
3460         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3461
3462         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3463         depend on the info MonoMethodHeader which could be missing in IL stripped
3464         assemblies.
3465
3466 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3467
3468         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3469         they are only 4 byte aligned.
3470
3471 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3472
3473         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3474         was done previously, since using SP causes too many problems.
3475
3476         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3477         frames without a frame pointer works.
3478
3479         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3480         global register in methods with calls, since the calls can go through
3481         a static rgctx trampoline which doesn't save it.
3482
3483 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3484
3485         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3486
3487 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3488
3489         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3490
3491 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3492
3493         * method-to-ir.c: Fix warnings for uninitialized variables.
3494
3495 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3496
3497         * mini-exceptions.c:
3498         * aot-compiler.c: Fix printf warnings.
3499
3500 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3501
3502         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3503         Add GetGenericValueImpl<string>.
3504         
3505         * aot-compiler.c (add_generic_instances): Add instances of
3506         GenericEqualityComparer<T> for primitive types. Only emit the array
3507         wrappers into the mscorlib image.
3508
3509 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3510
3511         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3512         the methods_loaded array using amodule->info->nmethods.
3513
3514         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3515         (MONO_AOT_FILE_VERSION): Bump this.
3516
3517         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3518         to work.
3519
3520         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3521         MonoJitInfo doesn't belong to its methods aot image.
3522
3523 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3524
3525         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3526
3527         * mini-arm.c: Fix warnings.
3528         
3529         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3530
3531         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3532         supports it.
3533
3534 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3535
3536         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3537         avoid clobbering IP.
3538
3539         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3540         hold the trampoline argument, so its initial value is available during
3541         debugging.
3542
3543 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3544
3545         * exceptions-arm.c:
3546         * exceptions-hppa.c:
3547         * mini.c:
3548         * exceptions-s390x.c:
3549         * exceptions-mips.c:
3550         * exceptions-ppc.c:
3551         * exceptions-sparc.c:
3552         * exceptions-alpha.c:
3553         * aot-runtime.c:
3554         * mini-trampolines.c:
3555         * exceptions-x86.c:
3556         * exceptions-s390.c: add and use #define's instead of sizeof()
3557         for MonoJitInfo and MonoJitInfoTable.
3558
3559 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3560
3561         * tramp-arm.c:
3562         * tramp-amd64.c:
3563         * tramp-ppc.c:
3564         * tramp-x86.c: use a #define instead of sizeof() for a few
3565         structures that use a zero-length array.
3566
3567 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3568
3569         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3570         case when the method is dynamic. Fixes #529238.
3571
3572 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3573
3574         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3575         of asserting when a method is JIT compiled in full-aot mode.
3576
3577 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3578         
3579         Contributed under the terms of the MIT/X11 license by
3580         Jerry Maine <crashfourit@gail.com>.
3581         
3582         * fixed wrong dates in changelog.
3583
3584 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3585         
3586         Contributed under the terms of the MIT/X11 license by
3587         Jerry Maine <crashfourit@gail.com>.
3588
3589         * basic-simd.cs: added test for packed double square root.
3590         * cpu-amd64.md: added opcode info for packed double square root.
3591         * cpu-x86.md: added opcode info for packed double square root.
3592         * mini-ops.h: added IR opcode for packed double square root.
3593         * mini-x86.c: added IR to native translation code for packed double square root.
3594         * mini-amd64.c: removed todo for packed double square root.
3595         * simd-intrinsics.c: added method to IR opcode converstion for
3596         packed double square root.
3597
3598 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3599
3600         Contributed under the terms of the MIT/X11 license by
3601         Jerry Maine <crashfourit@gail.com>.
3602
3603         * mini-amd64.c: Added a change to help tell the difference as 
3604         to what perpose the xmm register is being used--mainly to help
3605         with debuging.
3606         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3607         (one used for special cases) xmm registers for both fp
3608         and simd ops. Added define to turn on new feature in the regalloc
3609         that allows fp and simd ops to share the xmm regs happily.
3610         * codegen.c: Added code to detect for which perpose an xmm reg is
3611         being used (fp or simd) and to translate back and forth to the
3612         correct logical reg bank (fp or simd) for 'spill load's.
3613
3614 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3615
3616         Contributed under the terms of the MIT/X11 license by
3617         Jerry Maine <crashfourit@gail.com>.
3618
3619         * basic-simd.cs: Added tests for stressing the regalloc when running with
3620         16 simd regs and when simd and fp ops share the same reg bank.
3621
3622 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3623
3624         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3625         in shared generic code, we might have to look up the class in the
3626         RGCTX.  If we use the class directly, compute its GC descriptor.
3627
3628 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3629
3630         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3631
3632 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3633
3634         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3635         check for errors. Fixed the case when the class with the Main
3636         method is broken.
3637
3638 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3639
3640         Contributed under the terms of the MIT/X11 license by
3641         Jerry Maine <crashfourit@gail.com>.
3642
3643         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3644
3645 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3646
3647         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3648
3649 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3650
3651         * method-to-ir.c: Fix naming of stelem and ldelem.
3652
3653 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * driver.c (main_thread_handler): Check that the assembly loaded
3656         matches the filename when doing AOT.
3657
3658 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3659
3660         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3661         call it anymore.
3662
3663         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3664         utils/mono-sigcontext.h).
3665
3666         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3667         #ifdef.
3668
3669 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3670
3671         * mini.c (mono_codegen):
3672         Call profiler hook to keep track of method code buffers.
3673
3674 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3675
3676         * method-to-ir.c: Invoke write barriers for the
3677         Interlocked.(Compare)Exchange JIT intrinsics.
3678
3679 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3680
3681         * Makefile.am (version.h): Fix issues when built out of tree.
3682         Remove some redundant 'grep's piped through 'sed's.
3683
3684 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3685
3686         This patch is contributed under the terms of the MIT/X11 license
3687
3688         * mini-ppc.c (mono_arch_output_basic_block):
3689         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3690         for bits 32-47 with signed load/store diplacements for bits
3691         48-63.  Use prefered base/offset order for indexed form.
3692         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3693         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3694         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3695         OP_LOADI2_MEMBASE): Same.
3696         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3697         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3698         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3699         indexed form.
3700         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3701         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3702         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3703         OP_LOADI1_MEMINDEX): Same
3704         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3705         OP_STORER8_MEMINDEX): Same
3706         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3707         computations.
3708         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3709         for bits 32-47 with signed load/store diplacements for bits
3710         48-63.  Use prefered base/offset order for indexed form.
3711
3712 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3713
3714 This patch is contributed under the terms of the MIT/X11 license
3715
3716         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3717         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3718         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3719         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3720         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3721         cfg->stack_usage to avoid size warnings.
3722         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3723         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3724         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3725         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3726         to convert.
3727         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3728         after code varible is initialized.
3729         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3730         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3731         (mono_arch_emit_epilog): 
3732         Move Use ppc_load32 for cfg->stack_usage to avoid size
3733         warnings.
3734
3735 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3736
3737         * method-to-ir.c: The write barrier doesn't do the store anymore,
3738         so we have always to emit it.  Also, emit the wbarrier after the
3739         store.
3740
3741 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3742
3743         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3744         for argument count 3 too.
3745
3746 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3747
3748         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3749         the caller handle the exceptions.
3750         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3751         method. Fixes #524498.
3752
3753 2009-07-22  Geoff Norton  <gnorton@novell.com>
3754
3755         * mini-exceptions.c: Fix build on ia64.
3756
3757 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3758
3759         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3760         barriers.
3761
3762 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3763
3764         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3765         code.
3766
3767 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3768
3769         * basic-simd.cs (Main): Pass args to the test driver.
3770
3771 2009-07-20  Geoff Norton  <gnorton@novell.com>
3772
3773         * mini-x86.h: Fix the x86 version guards to use Apple's
3774         properly defined macros.
3775
3776 2009-07-20  Geoff Norton  <gnorton@novell.com>
3777
3778         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3779         aligned access.
3780
3781 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3782
3783         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3784         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3785         the information which is needed for invokes, so only one locking+hash table
3786         lookup is needed.
3787
3788         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3789         
3790         * aot-compiler.c (add_generic_instances): Emit instances of 
3791         GenericComparer<T> for primitive types.
3792
3793 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3794
3795         * mini-posix.c: Fix linux build.
3796
3797 2009-07-19  Geoff Norton  <gnorton@novell.com>
3798
3799         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3800         mono_gdb_render_native_backtraces
3801         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3802         so we implement the sane semantics to the runtime here
3803         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3804         so we need to call it differently (mono_gdb_render_native_backtraces)
3805         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3806         here for default implementations.
3807         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3808         support Apple's weird syscall (SYS_fork) implementation and not busy
3809         loop in abort() on native crashes on OSX anymore.
3810
3811 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3812
3813         * aot-runtime.c (load_method): Change the handling of the
3814         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3815         are used.
3816
3817         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3818
3819 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3820
3821         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3822         seems to break the aot tests.
3823         
3824         * mini.c (mono_patch_info_equal): Fix the handling of 
3825         MONO_PATCH_INFO_RGCTX_FETCH.
3826
3827 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3828
3829         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3830
3831         * mini.c (mono_patch_info_hash): Fix the handling of 
3832         MONO_PATCH_INFO_INTERNAL_METHOD.
3833         (mono_patch_info_equal): Ditto.
3834
3835 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3836
3837         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3838         in a few places.
3839         
3840         * mini-llvm.c: Add some infrastructure for AOT support.
3841
3842 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * mini-llvm-cpp.c: Update to the latest llvm api.
3845         
3846         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3847         option to false to prevent llvm from installing signal handlers which
3848         trip up the gc.
3849         
3850 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3851
3852         * cpu-x86.md:
3853         * cpu-amd64.md: Revert previous change as those instructions
3854         take 2 separate arguments. Remember to read the arch docs more
3855         carefully next time.
3856
3857 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3858
3859         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3860
3861 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3862
3863         * mini-ppc.c: exploit multiple load/store units if available (rest of
3864         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3865         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3866
3867 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3868
3869         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3870         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3871
3872 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3873
3874         * cpu-x86.md: Fix missing clobbering from trancendental simd
3875         ops.
3876
3877         * cpu-amd64.md: Same.
3878
3879 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3880
3881         Contributed under the terms of the MIT/X11 license by
3882         Jerry Maine <crashfourit@gail.com>.
3883
3884         * basic-simd.cs: Added tests for single and doulble indexers.
3885
3886         * cpu-amd64.md: Added simd opcode information.
3887
3888         * mini-amd64.c: Added IR to native simd generation code.
3889         Added simd register names and function that returns them.
3890
3891         * mini-amd64.h: Added marcos to turn on simd code compilation in
3892         amd64. Added max simd register count marco. Added caller/callee
3893         register mask marcos. Added marcos to use simd register bank.
3894
3895         * mini.h: Added helper marco for shufling dwords and simple
3896         floats.
3897
3898 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3899
3900         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3901
3902         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3903
3904         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3905         the length of the native code as well.
3906
3907         * basic-simd.cs: Add a test for #521662.
3908
3909 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3910
3911         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3912
3913 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3914
3915         * mini.c: Register function for getting the IP from a signal
3916         context with metadata.
3917
3918 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3919
3920         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3921         call a generic class init trampoline if needed. Fixes #519336.
3922
3923         * generics.cs: Add a test.
3924         
3925 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3926
3927         * method-to-ir.c: When doing a call which might be remote from
3928         shared generic code to other shared code with open type arguments,
3929         get the remoting invoke wrapper from the RGCTX and do an indirect
3930         call to it.
3931
3932 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3933
3934         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3935         after the unbox trampoline in the full-aot case.
3936
3937 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3938         
3939         * mini.c: Move initialization of jit_mutex before debugger initialization
3940         
3941         to avoid crashes.
3942         
3943         
3944         * Info.plist: added Info.plist and link flag to enable the mono executable
3945         to access other processes. Requires codesigning of the executable to work.
3946         
3947         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3948         
3949         compile on OS X.
3950         
3951
3952 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3953
3954         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3955
3956 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3957
3958         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3959         when the generic instance is an instantiation of a subclass of the
3960         methods class. Fixes #517166.
3961
3962 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3963
3964         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3965         code.
3966
3967         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3968         AOTed code.
3969
3970         * CMakeLists.txt: Add minimal support for installation.
3971
3972 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3973
3974         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3975         determine whenever a method is directly callable to a separate function.
3976
3977         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3978         needed ones as a result of the previous change.
3979
3980         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3981         type of register arrays.
3982
3983         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3984         type of register arrays.
3985
3986 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3987         
3988         Contributed under the terms of the MIT/X11 license by
3989         Jerry Maine <crashfourit@gail.com>.
3990
3991         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3992
3993 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3994
3995         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3996
3997 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3998
3999         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
4000         dump of structure return value. Fix some formatting.
4001         * cpu-s390x.md: Fix lengths of instruction sequences.
4002         * mini-s390.c: Minor formatting changes.
4003
4004 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
4005
4006         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
4007         Use sigaction on freebsd as well.
4008
4009 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
4010
4011         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
4012         uses #ifdef on it.
4013         
4014         * mini.c (mini_init): Revert a change which breaks cross-compilation.
4015
4016 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4017
4018         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
4019
4020 2009-06-22  Mark Probst  <mark.probst@gmail.com>
4021
4022         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
4023
4024 2009-06-20  Martin Baulig  <martin@ximian.com>
4025
4026         * debug-mini.c
4027         (MonoDebuggerThreadFlags): New enum typedef.
4028         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
4029         (mono_debugger_thread_created): Added `gpointer func' argument;
4030         initialize the new `thread_flags' field.
4031
4032 2009-06-18  Martin Baulig  <martin@ximian.com>
4033
4034         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
4035         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
4036
4037         * debug-debugger.c
4038         (mini_debugger_set_attach_ok): New function; sets the attach-ok
4039         flag in `MONO_DEBUGGER__info.runtime_info'.
4040
4041         * driver.c
4042         (mono_main): Call mini_debugger_set_attach_ok() if generics
4043         sharing is disabled.
4044
4045 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
4046
4047         * aot-compiler.c (add_wrappers): Fix a warning.
4048
4049         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
4050         the ppc load/store macro changes.
4051
4052 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
4053
4054         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
4055
4056         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
4057         not just the got symbol.
4058
4059         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
4060         on ppc.
4061
4062         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
4063         ppc.
4064         
4065         * aot-compiler.c: Remove some fixmes.
4066
4067         * driver.c (mono_main): Print a helpful message when cross-compiling.
4068
4069         * mini.c (mini_init): Disable signal handlers when cross-compiling.
4070
4071         * method-to-ir.c (initialize_array_data): Do the optimization if the
4072         target byte order is little endian, instead of the host byte order.
4073
4074         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
4075         wrappers into the mscorlib image, Emit a unique plt symbol for each
4076         image, emit symbols for plt entries.
4077
4078         * image-writer.c (img_writer_emit_symbol_size): New function to emit
4079         a .size directive.
4080         
4081 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
4082
4083         * aot-compiler.c (add_wrappers): Avoid calling 
4084         mono_marshal_get_type_info () since it can assert for some types.
4085
4086         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
4087         ldtoken are used inside wrappers.
4088
4089         * helpers.c: Add support for prefixing tools with the arch name.
4090
4091         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
4092         quantities when using ilp32.
4093
4094         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
4095         spill slots. Use sizeof(mgreg_t) for the spill slot size.
4096
4097         * image-writer.c: Use .long on ilp32.
4098
4099         * aot-compiler.c: Use 32 bit loads on ilp32.
4100         
4101 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4102
4103         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4104
4105         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4106
4107         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4108
4109         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4110         second got slot of every aot image.
4111         
4112         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4113         aot on platforms with function pointers.
4114
4115         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4116         support for aot/full aot on ppc/ppc64.
4117         
4118         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4119         arguments which are needed on ppc.
4120
4121         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4122         argument.
4123
4124         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4125         
4126         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4127
4128         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4129
4130         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4131
4132         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4133
4134 2009-06-17  Geoff Norton  <gnorton@novell.com>
4135
4136         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4137
4138 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4139
4140         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4141         to control whenever the dwarf writer is in xdebug or aot mode.
4142         (emit_class_dwarf_info): Use a separate abbrev for structures without
4143         children.
4144
4145         * aot-compiler.c: Pass the appending parameter to 
4146         mono_dwarf_writer_create ().
4147
4148         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4149         falls through to its next bblock. Fixes #513931.
4150
4151         * iltests.il: Add a test.
4152
4153         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4154         infor even if emit_line is FALSE, as the apple linker seems to require it.
4155
4156         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4157
4158         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4159         gcc does.
4160         (emit_fde): Ditto.
4161
4162 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4165         mips build.
4166
4167 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4168
4169         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4170         'has_call_handler' fields.
4171
4172         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4173
4174         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4175         first bblock if not needed. Fixes #512790.
4176         
4177 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4178
4179         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4180         
4181         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4182         wrappers.
4183
4184         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4185         remoting-invoke-with-check wrappers, which are not needed when running with
4186         full-aot, since it doesn't support remoting.
4187         
4188 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4189
4190         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4191
4192         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4193         method info, it is not used anymore.
4194
4195         * mini.h: Bump AOT file format version.
4196         
4197         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4198         word smaller.
4199
4200         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4201         change above.
4202         
4203         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4204
4205         * mini.h: Bump AOT file format version.
4206         
4207 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4210         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4211         iphone.
4212
4213         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4214         of CKFINITE and FBGE for VFP.
4215
4216 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4217
4218         * aot-compiler.c: Don't align code to 16 bytes on arm.
4219         
4220         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4221         before the methods they belong to.
4222
4223         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4224         the full-aot case if possible, since the trampoline will be called right 
4225         away.
4226
4227         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4228         trampolines to 1024 after the change above.
4229
4230         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4231         trampoline to save 8 bytes per trampoline.
4232
4233         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4234         change above.
4235
4236 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4237
4238         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4239
4240 2009-06-08  Martin Baulig  <martin@ximian.com>
4241
4242         * debug-mini.c
4243         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4244         (_mono_debugger_throw_exception): Don't make this static.
4245         (_mono_debugger_unhandled_exception): Likewise.
4246         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4247
4248         * debug-mini.c
4249         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4250         (_mono_debugger_throw_exception): Add function prototype.
4251         (_mono_debugger_unhandled_exception): Likewise.
4252
4253         * mini-exceptions.c
4254         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4255         arg; return the first exception handler if the exception is caught
4256         and we're running inside the debugger.
4257         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4258         improve exception handle inside runtime-invoke, check whether the
4259         exception is actually caught in the method being invoked and not
4260         by the runtime-invoke-wrapper.
4261
4262 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4263
4264         * image-writer.c: Improve support for the osx assembler.
4265
4266         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4267         support them.
4268
4269 2009-06-08  Martin Baulig  <martin@ximian.com>
4270
4271         * debug-mini.c
4272         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4273         (_mono_debugger_throw_exception): Don't make this static.
4274         (_mono_debugger_unhandled_exception): Likewise.
4275         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4276
4277         * debug-mini.c
4278         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4279         (_mono_debugger_throw_exception): Add function prototype.
4280         (_mono_debugger_unhandled_exception): Likewise.
4281
4282         * mini-exceptions.c
4283         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4284         arg; return the first exception handler if the exception is caught
4285         and we're running inside the debugger.
4286         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4287         improve exception handle inside runtime-invoke, check whether the
4288         exception is actually caught in the method being invoked and not
4289         by the runtime-invoke-wrapper.
4290
4291 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4292
4293         * image-writer.c (append_subsection): Don't align subsections of the
4294         debug_line section as a workaround.
4295
4296         * dwarfwriter.c: Emit line number info in the AOT case as well.
4297
4298 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4299
4300         This patch is contributed under the terms of the MIT/X11 license
4301
4302        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4303        code_len <= code_size
4304
4305 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4306
4307         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4308
4309 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4310
4311         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4312         invoke wrappers, we now use trampolines instead.
4313
4314 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4315
4316         * mini-darwin.c: The exception thread must not be registered with
4317         the GC.
4318
4319 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4320
4321         * mini-gc.c: Disable the code because it makes SGen crash.
4322
4323 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4324
4325         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4326         instead of asserting.
4327
4328 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4329
4330         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4331         output file after the code has been compiled.
4332
4333 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4336
4337 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4338
4339         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4340         entries distinction to simplify the code.
4341
4342         * mini.h: Bump AOT file format version.
4343         
4344 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4345
4346         * objects.cs: Fix the signature of one of the tests.
4347
4348         * mini.c (mini_create_ftnptr): New helper function, moved here from
4349         object.c.
4350         (mini_get_addr_from_ftnptr): Ditto.
4351         (mini_init): Install the new helpers.
4352
4353 2009-05-28  Martin Baulig  <martin@ximian.com>
4354
4355         Correctly initialize the debugger when embedding Mono.
4356
4357         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4358         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4359         see documentation in mini_debug_running_inside_mdb().
4360
4361         * debug-debugger.c
4362         (mini_debug_running_inside_mdb): New function to check whether
4363         we're running inside mdb.
4364
4365         * mini.c (mini_init): Call mini_debugger_init() if we're running
4366         inside the debugger.
4367
4368         * driver.c (mono_main): Moved the call to mini_debugger_init()
4369         into mini_init() to make this work when embedding Mono.
4370
4371         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4372         calls to mini_debugger_init().
4373
4374         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4375         mono_debugger_main() -> mini_debugger_main() and put them inside a
4376         `MONO_DEBUGGER_SUPPORTED' conditional.
4377
4378 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4379
4380         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4381         this is no longer in use.
4382         * mini.h: Same.
4383
4384 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4385
4386         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4387
4388         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4389         methods.
4390
4391 2009-05-27  Martin Baulig  <martin@ximian.com>
4392
4393 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4394
4395         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4396         long_conv_to_r_un to 64 bits.
4397
4398         * cpu-x86.md: Increase the instruction size due to the changes.
4399
4400         * iltests.il.in: Add regression test.
4401
4402         Fixes #467201.
4403
4404 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4405
4406         * objects.cs: Move the previous test from basic.cs to here.
4407
4408 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4409
4410         * basic.cs: Add regression test for #506915.
4411
4412 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4413
4414         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4415         optimization we must check the bb of the first byte of stobj as
4416         it's the only one set in cil_offset_to_bb.
4417
4418         Fixes #506915.  
4419
4420 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4421
4422         * image-writer.c: Fix pointer directive on ppc64.
4423
4424 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * image-writer.c (asm_writer_emit_section_change): Avoid using
4427         .bss subsections on ppc too.
4428
4429 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4430
4431         * image-writer.c: Fix the definition of TARGET_ASM_....
4432         
4433         * image-writer.c: Fix the emission of assembler directives in the last
4434         change.
4435
4436         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4437         exception throwing code to accomodate ppc64.
4438
4439         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4440         size to work on ppc64 too.
4441
4442         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4443         too.
4444
4445         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4446         the assembler dialect instead of using platform specific defines.
4447
4448 2009-05-22  Geoff Norton  <gnorton@novell.com>
4449
4450         * mini-arm.c (get_call_info): If a structure is split between the stack
4451         and argument registers, we should not advance the stack pointer by the entire
4452         native size, but just by the amount that spilled.
4453
4454 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4455
4456         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4457         correctly.
4458
4459 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4460
4461         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4462         wrappers normally.
4463         
4464         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4465         methods so wrapper don't get added twice.
4466         (add_generic_instances): Don't add methods of arrays.
4467
4468         * generics.cs: Mark one test as !FULLAOT.
4469
4470 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4471
4472         * mini-x86.c (emit_move_return_value): Remove unused vars.
4473
4474 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4475
4476         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4477         decomposing 8 bytes structs into a LCALL.
4478
4479         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4480         pointer for where to store the returned regs.
4481
4482         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4483         state the concern.
4484
4485         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4486
4487 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4488
4489         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4490         without getenv.
4491
4492 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4495
4496         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4497         generics.
4498
4499 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4500
4501         * local-propagation.c (mono_local_cprop): Avoid local propagation
4502         across paired add/sub if the first instruction dest reg is it's
4503         source reg. For example:
4504
4505         int_add_imm R12 <- R12 [1] clobbers: 1
4506         int_sub_imm R42 <- R12 [1] clobbers: 1
4507
4508         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4509         maintain the math identify.
4510
4511         Fixes #505375.
4512
4513 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4514
4515         * Makefile.am: avoid going on the network just to get the revision,
4516         use git log instead
4517
4518 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4519
4520         Fixed estimate for short branches on amd64 (they were off mark, and
4521         enabling call prolog-epilog instrumentations caused assertions).
4522         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4523         estimate for the maximum length of this basic block.
4524         * mini-amd64.c:
4525         - mono_arch_emit_prolog: compute max_length for each basic block
4526           (instead of max_offset), and inflate size estimate also for entry bb
4527           in case of code instrumentation.
4528         - mono_arch_output_basic_block: get rid of "cpos" (the current
4529           estimated "position" in the code), and always use "offset" instead,
4530           which is accurate; at the beginning of the function quickly recompute
4531           max_offset for all the remaining blocks, starting from the current
4532           cfg->code_len (which is correct, and not estimated) and using the
4533           estimated block lengths computed previously.
4534
4535 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4536
4537         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4538         functions, it is already done in the caller.
4539
4540         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4541
4542         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4543         MONO_ARCH_GSHARED_SUPPORTED define.
4544
4545         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4546
4547         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4548         function.
4549
4550 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4551
4552         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4553         call to mono_marshal_get_rgctx_invoke ().
4554
4555         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4556         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4557         gshared use the static rgctx trampolines now.
4558         
4559         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4560         platform supports it.
4561
4562 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4563
4564         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4565
4566         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4567
4568 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4571
4572         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4573         for ppc.
4574
4575 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4576
4577         Made it possible for mono_arch_instrument_epilog to preserve
4578         argument registers, otherwise instrumenting the "epilogue" before
4579         a tail call would clobber them.
4580         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4581         if like mono_arch_instrument_epilog but with an additional parameter
4582         that states if argument registers must be preserved.
4583         * mini.c: implemented mono_arch_instrument_epilog as a call to
4584         mono_arch_instrument_epilog_full without asking to preserve argument
4585         registers (this makes the existing code work as usual).
4586         * mini-amd64.c:
4587         - mono_arch_instrument_epilog: add parameter to transform it into
4588         mono_arch_instrument_epilog_full, and preserve argument registers
4589         when required.
4590         - mono_arch_output_basic_block, OP_TAILCALL case: call
4591         mono_arch_instrument_epilog_full.
4592         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4593         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4594         only transformed mono_arch_instrument_epilog into
4595         mono_arch_instrument_epilog_full.
4596
4597 2009-05-15  Geoff Norton  <gnorton@novell.com>
4598
4599         * mini-darwin.c: This works on arm now.
4600
4601 2009-05-14  Geoff Norton  <gnorton@novell.com>
4602
4603         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4604         embedding api.
4605
4606 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4607
4608         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4609         label names.
4610
4611         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4612         wrappers during full aot mode correctly.
4613
4614         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4615         methods correctly.
4616
4617         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4618         mono_metadata_type_hash ().
4619
4620 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4621
4622         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4623         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4624         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4625         Removed MONO_INST_BRLABEL from the instruction flags, and the
4626         remaining code that used it, because we do not support branches inside
4627         basic blocks (and branch target labels) anymore.
4628         * Makefile.am: As part of the above cleanup, remove reference to
4629         BURG files which don't exist anymore.
4630
4631 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4632
4633         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4634         osx.
4635
4636         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4637         to use mono_arch_throw_corlib_exception.
4638
4639         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4640         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4641
4642         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4643         domain mempool.
4644
4645         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4646
4647         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4648         for the got to make debugging easier and to avoid confusing it with the
4649         system got.
4650         
4651         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4652         method so a breakpoint can be set when using gdb.
4653
4654 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4655
4656         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4657         on mono_method_get_imt_slot ().
4658
4659         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4660         num_decodes variables.
4661
4662         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4663         change as it doesn't seem to work.
4664         
4665         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4666         wrappers.
4667
4668 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4669
4670         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4671         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4672
4673         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4674         builder when using full aot.
4675
4676         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4677         here, it is already handled.
4678         
4679         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4680         correctly for IMT.
4681
4682         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4683
4684         * mini-arm.h: Enable IMT for full aot.
4685         
4686         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4687         arch doesn't support it.
4688
4689         * mini.c (mini_init): Don't disable IMT for full aot if the
4690         architecture supports it.
4691
4692         * mini.h (MonoAotTrampoline): New enum containing the different types
4693         of 'numerous' trampolines.
4694         (MONO_AOT_FILE_VERSION): Bump this.
4695
4696         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4697         static rgctx trampolines. Add support for full-aot IMT thunks.
4698
4699         * mini-amd64.h: Enable IMT for full aot.
4700
4701         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4702         to exclude tests belonging to a category.
4703
4704         * generics.cs: Mark some tests with a !FULLAOT category.
4705
4706         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4707         generics tests.
4708
4709 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4710
4711         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4712         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4713         (emit_plt): Fix a warning.
4714
4715 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4716
4717         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4718         back into aot-compiler.c to a place where the other functions shared by
4719         the runtime and aot compiler are.
4720         
4721         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4722         as done previously, instead of in MonoAotFileInfo, since pointers might have
4723         alignment requirements.
4724
4725         * mini.h: Bump AOT file format version.
4726
4727 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4728
4729         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4730         that is used at runtime from the aot-compiler.c, this makes it
4731         work on setups that remove the AOT compiler from the output
4732         image. 
4733
4734 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4735
4736         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4737         PPC.
4738
4739         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4740
4741         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4742
4743         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4744         stuff to mono_arch_decompose_long_opts ().
4745         (mono_decompose_opcode): Remove some dead code.
4746
4747 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4748
4749         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4750         cmethod can be null for quite a some reasons.
4751
4752 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4753
4754         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4755
4756 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4759
4760 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4761
4762         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4763         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4764         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4765         calls returning structures by addr on amd64.
4766
4767         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4768
4769         * iltests.il.in: Restructure the tail call tests a bit.
4770         
4771 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4772
4773         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4774         for virtual methods too.
4775
4776 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4777
4778         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4779         due to regression in verifying System.dll.
4780
4781 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4782
4783         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4784         in dynamic methods.
4785
4786         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4787         instances.
4788
4789         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4790         g_str_hash () which can change.
4791
4792         * driver.c (mini_regression): Disable optimizations not supported by
4793         the cpu. Fixes #500019.
4794
4795         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4796         build.
4797
4798 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4799
4800         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4801         to the latest LLVM code.
4802
4803 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4804
4805         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4806
4807 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4808
4809         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4810         x86/amd64.
4811
4812         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4813         no longer saving offsets, so just save the patch types along with the other
4814         info.
4815         * aot-runtime.c (load_patch_info): Update after the changes to 
4816         encode_patch_list ().
4817         (decode_got_entry): Removed, merged into load_patch_info ().
4818         (is_shared_got_patch): Removed, call the same function from
4819         aot-compiler.c.
4820
4821         * mini.h: Bump aot file format version.
4822         
4823         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4824         half-finished no-dlsym code.
4825
4826         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4827         option.
4828
4829         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4830         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4831
4832 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4833
4834         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4835         buffer length to work with AOT code.
4836
4837         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4838         ldfld/stfld opcodes.
4839
4840         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4841         as it is not used.
4842
4843         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4844
4845         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4846
4847         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4848         LLVM API.
4849
4850         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4851         if needed. Don't decompose long operations when using llvm.
4852
4853 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4854
4855         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4856         PAGESIZE constant.
4857
4858         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4859
4860 2009-05-03  Martin Baulig  <martin@ximian.com>
4861
4862         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4863         mono_debugger_insert_method_breakpoint() since the class init
4864         handler we're inserting at the top of the method already gives us
4865         a notification.
4866
4867 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4870         to mono_arch_decompose_long_opts () for x86 and arm.
4871
4872 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4873
4874         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4875         TARGET_AMD64 here.
4876
4877 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4878
4879         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4880         JIT code.
4881
4882 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4883
4884         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4885         number of trampolines used in full-aot mode.
4886
4887         * aot-compiler.c: Add an ntrampolines option to set the number of 
4888         trampolines emitted in full-aot mode.
4889
4890 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4891
4892         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4893         a volatile load. Get rid of get_tempname (), llvm assigns names
4894         automatically.
4895
4896         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4897         builder function.
4898
4899         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4900         a value.
4901
4902         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4903         level 1.
4904
4905         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4906         to the same register as a fixed sreg2. Fixes #497271.
4907
4908         * iltests.il.in: Add a new test.
4909
4910 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4911
4912         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4913         stack, since pushes complicate exception handling.
4914
4915         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4916         the stack if they are passed using moves.
4917
4918         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4919
4920         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4921         when using llvm.
4922
4923         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4924         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4925         of FMOVE if it is an R4.
4926
4927 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4928
4929         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4930
4931         * mini.h (LLVMCallInfo): New structure to store calling convention 
4932         information for the LLVM back end similar to the CallInfo structures in 
4933         the back-ends.
4934
4935         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4936         call information in a format usable by LLVM.
4937         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4938
4939         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4940         mono_llvm_emit_call () when compiling using LLVM.
4941
4942         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4943         comments to all functions. Fix memory leaks. Add a public init/cleanup
4944         function.
4945
4946         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4947
4948         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4949         mono_array_new_va () jit icall.
4950         
4951 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4952
4953         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4954         multiple machine description files to be specified.
4955         * mini-ops.h: fixes for cross-compilation.
4956
4957 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4958
4959         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4960         some porting work.
4961
4962 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4963
4964         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4965         to prevent asserts in various passes. Fixes #497220.
4966
4967 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4968
4969         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4970         a racy assert.
4971
4972         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4973         table to avoid duplicates.
4974
4975         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4976         
4977         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4978         option is used.
4979
4980 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4981
4982         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4983         is for method or field access.
4984
4985 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4986
4987         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4988         a Value to stdout.
4989
4990         * mini-llvm.c (mono_llvm_emit_method): Use it.
4991         
4992         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4993         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4994         on volatile values.
4995
4996         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4997         synchronized methods.
4998
4999         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
5000
5001         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
5002
5003         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
5004         OP_LOADI8_MEM.
5005
5006         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
5007         allowing some options to be set dynamically.
5008
5009 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
5010
5011         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
5012         unconditional branch.
5013
5014         * mini.h (MonoTrampolineType): Add new trampoline type 
5015         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
5016         compiled code.
5017
5018         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
5019         function.
5020
5021         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
5022         creation function.
5023
5024         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
5025         is enabled. Instead, use the llvm vcall trampoline.
5026         
5027         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
5028
5029         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
5030         
5031         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
5032         functions.
5033
5034         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
5035         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
5036
5037         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
5038         OP_IA64_CSET opcode.
5039
5040         * mini.c: Fix a warning.
5041
5042         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
5043         THROW to the appropriate llvm type.
5044
5045 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
5046
5047         * mini.c (mini_method_compile): Add statistics for methods JITted
5048         with/without LLVM.
5049
5050 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5051
5052         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
5053         OP_IA64_CMP_<cond>_IMM opcodes.
5054
5055 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5056
5057         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
5058         corlib exceptions.
5059
5060         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
5061         correctly.
5062
5063         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
5064         GENERICINST.
5065
5066 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
5067
5068         * mini-exceptions.c : add thread id to EXCEPTION trace message.
5069
5070 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
5071
5072         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
5073         support.
5074
5075         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
5076         rgctx invoke trampolines for x86.
5077
5078         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
5079         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
5080         (mono_arch_get_vcall_slot): Simplify this.
5081
5082 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
5083
5084         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
5085         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
5086
5087 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
5088
5089         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
5090         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
5091
5092         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
5093
5094         * liveness.c (visit_bb): Remove a needless assert.
5095
5096 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
5097
5098         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
5099         full aot support to the arch specific code.
5100
5101         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5102
5103         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5104
5105         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5106         
5107         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5108         collect information about the delegate invoke impl trampolines.
5109
5110         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5111         to save trampolines during full-aot mode.
5112
5113         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5114         creation function which returns a trampoline which sets the rgctx
5115         argument.
5116         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5117         wrapper if possible.
5118         (mono_delegate_trampoline): Ditto.
5119
5120         * mini.c (mono_jit_runtime_invoke): Ditto.
5121
5122         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5123         
5124         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5125
5126         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5127         
5128 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5129
5130         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5131         just setting the opcode to OP_NOP.
5132
5133 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5134
5135         * mini.c (mini_method_compile): Put the last change inside an 
5136         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5137         
5138         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5139         and extend live ranges to cover the whole method when using xdb.
5140
5141         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5142         do it in the trampolines.
5143
5144         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5145         needed.
5146
5147         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5148         
5149         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5150         call code in full-aot mode since IMT is disabled there.
5151         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5152         new JIT no longer has that restriction.
5153
5154         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5155
5156         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5157         a more compact format.
5158         (mono_aot_wrapper_name): New function to return a unique name for a
5159         wrapper method, also used by the AOT runtime.
5160
5161         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5162         aot-compiler.c.
5163
5164         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5165         when a ICollection<T> etc is encountered.
5166         (add_generic_instances): Process method arguments/locals too.
5167         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5168         trampoline names.
5169
5170         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5171         
5172 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5173
5174         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5175
5176         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5177
5178         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5179         representing the result of the decomposition. Nullify instructions
5180         instead of setting them to OP_NOP since nops can't have registers
5181         set.
5182
5183 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5184
5185         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5186         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5187         info. Strip 'mapping symbols' on ARM.
5188
5189         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5190         
5191         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5192         this with the native genmdesc.
5193
5194 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5195
5196         * aot-runtime.c:  Fixing the MSVC build.
5197
5198         Code is contributed under MIT/X11 license.
5199
5200 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5201
5202         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5203         JITted code depends on it.
5204
5205 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5206
5207         * aot-compiler.c: Use new MonoGenericParam accessors.
5208
5209 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5210
5211         Reduce memory usage and improve correctness wrt MonoGenericParam
5212         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5213         handing.  Avoid allocating MonoGenericParams, but use the ones in
5214         the container itself.
5215
5216 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5217
5218         * tasklets.c: Return exceptions in the out argument.
5219
5220 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5221
5222         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5223         opcode. Use pointer types in more places instead of casting them to 
5224         integers.
5225
5226         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5227         optimizations.
5228         (mono_llvm_optimize_method): New helper function to optimize a method.
5229
5230         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5231         widening code so it could be called from more places.
5232         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5233         code paths in the call opcodes.
5234
5235 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5236
5237         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5238
5239 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5240
5241         * dwarfwriter.c: Use _ to separate class name 
5242         components as gdb can't handle '.'. Represent reference variables
5243         as 'class <NAME>&'.
5244         
5245         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5246
5247         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5248         
5249         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5250
5251         * gc-test.cs: New file with GC stack marking tests.
5252         
5253         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5254         negative numbers for vfp.
5255
5256         * basic-float.cs: Add a test.
5257         
5258 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5259
5260         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5261
5262 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5263
5264         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5265         part of tasklet/continuation support.
5266
5267 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5268
5269         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5270         amd64 opcodes inside an ifdef.
5271
5272         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5273         of complex types.
5274         
5275         * dwarfwriter.c (emit_type): Emit the class info for classes.
5276
5277 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5278
5279         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5280
5281         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5282
5283         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5284
5285         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5286
5287 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5288
5289         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5290
5291         * mini-llvm.c: Update comments.
5292
5293         * mini.h (COMPILE_LLVM): New macro.
5294
5295         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5296
5297         * ssa.c (mono_ssa_compute): Ditto.
5298         
5299         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5300         the unwind ops from a DWARF FDE.
5301
5302         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5303         methods by extracting the dwarf unwind ops from the unwind info generated
5304         by LLVM.
5305         
5306         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5307         calls.
5308
5309         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5310         addressing modes.
5311
5312 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5313
5314         * Makefile.am (llvm_sources): Enable this.
5315
5316         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5317         failing back to the JIT if something cannot be handled.
5318
5319         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5320         compiling with LLVM.
5321
5322         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5323         compiling with LLVM.
5324
5325         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5326         compiling with LLVM.
5327
5328         * mini-ops.h: Add a few opcodes needed by LLVM.
5329
5330         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5331         has no unwind info.
5332
5333         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5334         backend.
5335
5336         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5337
5338         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5339
5340 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5341
5342         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5343         ridiculously large methods.
5344
5345 2009-03-31  Martin Baulig  <martin@ximian.com>
5346
5347         * debug-debugger.c (debugger_remove_breakpoint): Call
5348         mono_debugger_remove_class_init_callback ().
5349
5350 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5351
5352         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5353         right before emitting code, not at the start.
5354
5355         * mini.c (mono_postprocess_patches): Extract this into a separate function
5356         from mono_codegen ().
5357
5358         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5359         byref types correctly.
5360
5361 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5364         by the last change.
5365
5366 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5367
5368         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5369         indirect calls, this avoids problems where get_vcall_slot () would get
5370         confused by the native code for the instruction preceeding the call.
5371         (mono_arch_get_vcall_slot): Simplify this.
5372         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5373
5374         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5375         register allocator now seems to depend on them instead of the data in
5376         cpu-<ARCH>.md.
5377
5378         * mini.c (mini_method_compile): Throw the correct type of exception if
5379         mono_method_get_header () fails because of a loading error.
5380
5381 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * mini.c (mini_method_compile): Clear the loader error if the method
5384         header cannot be decoded.
5385
5386         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5387         interface methods on proxies correctly.
5388
5389         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5390         this argument for vtype methods. Add precise liveness info for arguments.
5391
5392         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5393         LIVERANGE_START/END opcodes.
5394
5395         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5396         for arguments and values in registers.
5397
5398 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5399
5400         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5401         return a valuetype. Fixes #487518.
5402
5403         * iltests.il: Add a test.
5404         
5405         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5406
5407         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5408         closed over a null reference correctly.
5409
5410 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5413
5414 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5415
5416         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5417         allocated to the same registers as fixed sregs.
5418
5419 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5420
5421         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5422         ATOMIC_CAS_IMM ops.
5423
5424         * method-to-ir.c: Handle more cases for
5425         Interlocked.CompareExchange.
5426
5427         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5428         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5429         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5430
5431 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5432
5433         * aot-runtime.c (decode_method_ref): Fix a warning.
5434
5435         * unwind.c (mono_unwind_frame): Ditto.  
5436
5437 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5438
5439         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5440         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5441
5442         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5443         fix the handling of large values in the ALU_PC_G0_NC relocation.
5444
5445 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5446
5447         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5448
5449 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5450
5451         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5452         ops.
5453
5454 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5455
5456         * method-to-ir.c: MINI_OP3 needs a comma.
5457
5458         * method-to-ir.c, mini.h, mini.c: Remove
5459         mono_init_op_sreg_counts ().
5460
5461 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5462
5463         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5464         OP_JMP.
5465         
5466         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5467         assertion.
5468
5469         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5470
5471         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5472         code somewhat.
5473
5474 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5475
5476         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5477         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5478         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5479         operations.
5480
5481 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5482
5483         * driver.c: Change location of gc_wrapper.h.
5484
5485         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5486         inside finally clauses correctly. Fixes #485721.
5487
5488         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5489         after the change above.
5490
5491         * exceptions.cs: Add a test.
5492         
5493 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5494
5495         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5496
5497         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5498         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5499         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5500
5501         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5502         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5503
5504 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5505
5506         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5507         Simplify logic for ensure_method_is_allowed_to_call_method. 
5508         Handle wrappers on callers.
5509
5510 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5511
5512         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5513         them don't run yet.
5514
5515         * basic-simd.cs: Fix the names of some test methods.
5516
5517 2009-03-18  Geoff Norton  <gnorton@novell.com>
5518
5519         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5520
5521 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5522
5523         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5524
5525 2009-03-17  Jb Evain  <jbevain@novell.com>
5526
5527         * driver.c: remove now uneeded call to mono_gc_base_init before
5528         mono_profiler_load.
5529
5530 2009-03-17  Jb Evain  <jbevain@novell.com>
5531
5532         * dwarfwriter.c (token_handler): handle more cases.
5533
5534 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5535
5536         * method-to-ir.c: Remove more dead code (that was required only
5537         because of method_is_safe). Fix compiler warnings.
5538
5539 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5540
5541         * method-to-ir.c: Remove unneeded/useless method_is_safe
5542         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5543
5544 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5545
5546         * mini.c (mini_method_compile): Print the method been compiled with
5547         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5548         for people not familiar with the runtime.
5549
5550 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5553         a managed object which is later put into a GList. Return its class instead.
5554
5555         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5556         stack slots when using sgen.
5557
5558 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5559
5560         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5561
5562 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5563
5564         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5565         > so it works on the first vreg as well.
5566
5567 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5568
5569         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5570         trigger randomly.
5571
5572         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5573         
5574         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5575         implement GArray.
5576
5577 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5578
5579         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5580         native->IL offset mapping.
5581
5582 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5583
5584         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5585
5586         * basic.cs: Add a test.
5587
5588 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5589
5590         * mini-x86.c (mono_arch_output_basic_block): Use different
5591         registers in case the ones we want to overwrite are used by the
5592         other operand.  Fixes regression in #480807.
5593
5594 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5595
5596         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5597
5598         * dwarfwriter.c (emit_line_number_info): The line number info for
5599         IL code was off by one. Fix that.
5600
5601         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5602         stack.
5603
5604 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5605
5606         Contributed under the terms of the MIT/X11 license by Steven
5607         Munroe <munroesj@us.ibm.com>.
5608
5609         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5610         Fixes #483462.
5611
5612 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5613
5614         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5615         as well.
5616
5617 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5618
5619         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5620         the delegate ctor handling code. Fixes #482638.
5621         
5622         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5623         #481458.
5624
5625         * iltests.il.in: Add a test.
5626         
5627         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5628         mini-posix.c.
5629
5630 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5631
5632         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5633         is shared generic code, return the trampoline, even if the method
5634         has already been compiled.  Fixes #479763.
5635
5636         * mini.c, mini.h: New function
5637         mono_jit_find_compiled_method_with_jit_info() which is the same as
5638         mono_jit_find_compiled_method() but also returns the jit info.
5639
5640 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5641
5642         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5643         for methods which actually have one.  For all other methods, make
5644         sure the this argument var is live the whole method.
5645
5646         * mini.c (mini_method_compile): Every shared method has a
5647         this/vtable/mrgctx info.  Fixes #480807.
5648
5649 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5650
5651         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5652         generic/imt thunks where some entries branch through the vtable,
5653         while other entries branch directly.
5654
5655 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5656
5657         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5658
5659         * mini-windows.c: Ditto.
5660         
5661         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5662         ctors.
5663
5664 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5665
5666         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5667         down an assert.
5668
5669 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5670
5671         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5672         #481403.
5673
5674 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5675
5676         * exceptions-x86.c: Include debug-mini.h - fixes build.
5677
5678 2009-03-04  Martin Baulig  <martin@ximian.com>
5679
5680         * debug-mini.c: Clean up the exception API and add documentation.
5681         (mono_debugger_handle_exception): New public method; this is
5682         called when throwing an exception or encountering an unhandled one.
5683         (mono_debugger_call_exception_handler): Formerly known as
5684         mono_debugger_handle_exception(); this is used to tell the
5685         debugger that we're about to invoke an exception handler.
5686
5687 2009-03-04  Martin Baulig  <martin@ximian.com>
5688
5689         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5690         ../metadata/mono-debug-debugger.c; save and reset exception state.
5691
5692 2009-03-02  Martin Baulig  <martin@ximian.com>
5693
5694         * debug-mini.c: Moved the debugger exception handling here from
5695         ../metadata/mono-debug-debugger.c.
5696
5697         * debug-mini.h
5698         (MonoDebuggerExceptionAction): New exception typedef.
5699
5700         * debug-mini.c
5701         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5702
5703         * exceptions-amd64.c
5704         (mono_amd64_throw_exception): Use the new debugger exception
5705         handling code.
5706
5707         * mini-exceptions.c
5708         (mono_handle_exception_internal): Don't call
5709         mono_debugger_unhandled_exception() here.
5710
5711 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5712
5713         * mini.c aot-compiler.c: Update after the changes to 
5714         mono_marshal_get_runtime_invoke ().
5715
5716         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5717         Virtual generic methods might not have method->slot set, work around
5718         that.
5719
5720         * generics.cs: Add a test.
5721
5722 2009-03-02  Geoff Norton  <gnorton@novell.com>
5723
5724         * mini.c:
5725         * driver.c: Allow signal chaining of SIGFPE as well.
5726
5727 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5728
5729         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5730         this since it now receives the method not its generic context in the
5731         IMT reg.
5732
5733         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5734         generic/imt thunks where some entries branch through the vtable, while
5735         other entries branch directly.
5736
5737         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5738
5739         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5740         support for interface methods as well.
5741
5742         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5743         using the normal IMT thunks.
5744
5745         generics.cs: Add new tests.
5746         
5747         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5748         the generic inst to the generic imt thunks. This fixes AOT support, 
5749         improves consistency with the normal IMT thunks, and makes it easier to
5750         add support for interface generic virtual methods later.
5751
5752         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5753         
5754 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5755
5756         * driver.c (mono_set_signal_chaining): New public API function to enable
5757         signal chaining on POSIX platforms.
5758
5759         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5760         (si@lindenlab.com) to implement signal chaining. The original patch was
5761         contributed under the MIT X/11 license:
5762         https://bugzilla.novell.com/show_bug.cgi?id=318894
5763
5764 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5765
5766         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5767         too until it can be made to run on amd64.
5768
5769 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5770
5771         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5772         to  get_generic_context_from_code () + get_call_info () if possible.
5773
5774 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5775
5776         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5777         suspend-on-sigsegv functionality.
5778
5779         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5780         to suspend when a native SIGSEGV is received. This is useful for debugging
5781         crashes which don't happen under gdb, since a live process contains more
5782         information than a core file.
5783
5784         * mini-exceptions.c (mono_print_thread_dump): Use 
5785         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5786
5787         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5788
5789         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5790         
5791         * basic-float.cs: Disable the tests which currently fail on amd64.
5792
5793         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5794         value to mono_arch_patch_callsite () to fix crashes.
5795         
5796         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5797
5798 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5799
5800         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5801         nop code by patching the call address to point to the nullified class init
5802         trampoline, as the former does not seem to be safe on SMP machines.
5803
5804 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5805
5806         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5807         they were wrong.
5808
5809 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5810
5811         * basic-float.cs basic-calls.cs: Fix warnings.
5812
5813 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5814
5815         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5816         correct frame pointer in the LMF.  Should fix #478394.
5817
5818 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5819
5820         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5821
5822         * image-writer.c: Make the binary writer less verbose.
5823
5824 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5825
5826         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5827         are called from runtime invoke wrappers.
5828
5829 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5830
5831         * cpu-ppc.md (store_memindex): Increase the size of this.
5832
5833 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5834
5835         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5836
5837         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5838
5839         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5840         OP_LCONV_TO_R_UN.
5841
5842         Last fix for of #467201.
5843
5844
5845 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5846
5847         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5848
5849         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5850         and long_conv_to_r8_2:
5851
5852         Fixed part of #467201.
5853
5854 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5855
5856         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5857
5858         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5859         conversion to 32 bits.
5860
5861         * cpu-x86.md: Increase the size of int_conv_to_r4.
5862
5863         * basic-float.cs: Add a test for this.
5864
5865         Fixed part of #467201.
5866
5867 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5868
5869         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5870
5871         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5872         conversion to 64 bits.
5873
5874         * basic-float.cs: Add a test for this.
5875
5876         Fixed part of #467201.
5877
5878 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5879
5880         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5881
5882         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5883         This behavior is compatible with MS.
5884
5885         * iltest.il.in: Add a test for this.
5886
5887         Fixed part of #467201.
5888
5889 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5890
5891         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5892
5893         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5894         change the precision of the value.
5895
5896         * cpu-x86.md: Define len for float_conv_to_r4.
5897
5898         * basic-float.cs: Add a test for this.
5899
5900         Fixed part of #467201.
5901
5902 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5903
5904         * mini.c: Adjust locking order to the new semantics where the loader lock
5905         comes first.
5906
5907 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5908
5909         * aot-runtime.c:
5910         * mini-amd64.c:
5911         * mini-arm.c:
5912         * mini-ia64.c:
5913         * mini-mips.c:
5914         * mini-ppc.c:
5915         * mini-sparc.c:
5916         * mini-trampolines.c:
5917         * mini-x86.c:
5918         * mini.c:
5919         * tramp-alpha.c:
5920         * tramp-amd64.c:
5921         * tramp-arm.c:
5922         * tramp-hppa.c:
5923         * tramp-ia64.c:
5924         * tramp-mips.c:
5925         * tramp-ppc.c:
5926         * tramp-s390.c:
5927         * tramp-s390x.c:
5928         * tramp-sparc.c:
5929         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5930
5931 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5932
5933         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5934         as it is incorrect.
5935
5936 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5937
5938         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5939         for cctors if needed.
5940
5941 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5942
5943         * mini-ppc.c: Fix build on Darwin.
5944
5945 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5946
5947         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5948         version instead of 3 as valgrind doesn't like version 3.
5949
5950         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5951
5952         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5953         usable for hashing methods.
5954         (emit_extra_methods): Use the new hash to avoid putting every method in the
5955         same hash bucket.
5956
5957         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5958
5959         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5960         whenever a method ref could match a method.
5961         
5962         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5963         test to fail.
5964         
5965         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5966         methods refs.
5967
5968         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5969
5970         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5971         the encoding buffer.
5972
5973         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5974         mono_method_get_header () on inflated methods as an optimization.
5975
5976 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5977
5978         * ssa.c (fold_ins): Fix another crash if the instruction following the
5979         switch was optimized away.
5980
5981 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5982
5983         Contributed under the terms of the MIT/X11 license by Steven
5984         Munroe <munroesj@us.ibm.com>.
5985
5986         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5987
5988 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5989
5990         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5991         around the mono_domain_alloc calls, it is now done by the functions
5992         themselves.
5993
5994         * aot-compiler.c (compile_method): Only add wrappers referenced by
5995         the method if compiling with full AOT.
5996         (mono_compile_assembly): Error out if --aot=full is specified on
5997         a platform where it is not supported.
5998
5999         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
6000         on ARM too.
6001
6002         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
6003         AOT support.
6004
6005         * aot-runtime.c (load_named_code): Handle 
6006         mono_arm_throw_exception_by_token.
6007
6008         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
6009
6010         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
6011         unaligned.
6012
6013         * Makefile.am (fullaotcheck): Exit if a test fails.
6014
6015         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
6016         on ARM.
6017         (mono_compile_assembly): Handle the assembler failing.
6018
6019         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
6020         accepting subsections of .bss.
6021
6022         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
6023         was optimized away.
6024
6025         * aot-compiler.c: Remove some unused includes.
6026         
6027         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
6028         now in MonoImageWriter.
6029
6030         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
6031         code sequence which matches a non-virtual call. Fixes #472654.
6032
6033 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
6034
6035         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
6036         xdebug code.
6037         
6038         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
6039         use the image/dwarf writers directly.
6040
6041         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
6042         field.
6043
6044         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
6045         MonoDwarfWriter.
6046
6047         * image-writer.h: Fix some typos.
6048
6049         * dwarfwriter.h dwarfwriter.c: New files.
6050         
6051         * aot-compiler.c: Extract the DWARF info writing functionality into a 
6052         separate module.
6053
6054         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
6055         argument to return unwind info.
6056
6057         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
6058
6059         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
6060         
6061         * aot-runtime.c (decode_method_ref): Add a case for 
6062         MONO_AOT_METHODREF_WRAPPER_NAME.
6063
6064         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
6065         for AOT.
6066
6067         * aot-compiler.c (encode_method_ref): Use the new constants.
6068
6069         * aot-runtime.c (decode_method_ref): Ditto.
6070
6071         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
6072         be compiled, not the icall itself.
6073
6074 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
6075
6076         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
6077         using decode_method_ref ().
6078
6079         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
6080         convert it to an in32. Fixes #475859.
6081
6082         * arrays.cs: Add a test.
6083
6084 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6085
6086         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
6087         OP_LCONV_TO_U2.
6088
6089         * basic-long.cs: Add a test.
6090
6091 2009-02-12  Mark Probst  <mark.probst@gmail.com>
6092
6093         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
6094         remove the frame pointer in leaf methods which don't receive any
6095         arguments, don't throw exceptions and don't do dynamic stack
6096         allocations.
6097
6098 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6099
6100         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6101         the fail_tramp changes. Hopefully fixes #475132.
6102
6103 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6104
6105         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6106         instead of mono_metadata_signature_dup_full.
6107
6108 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6109
6110         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6111         for processing jump tables. Fixes #473787.
6112
6113 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6114
6115         * mini-generic-sharing.c: mini_method_get_context() just calls
6116         mono_method_get_context_general() now.
6117
6118         * mini.c, mini.h: Moved get_object_generic_inst(),
6119         construct_object_context_for_method() and
6120         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6121
6122 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6125         basic block fell through to its successor bblock without a branch. Fixes
6126         #474718.
6127
6128         * iltests.il.in: Add a test.
6129         
6130         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6131         (can_encode_patch): We can now handle arrays of generic parameters and
6132         array methods.
6133
6134         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6135
6136         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6137         the AOT file to avoid some #ifdefs in aot-runtime.c
6138
6139         * mini.h: Bump AOT file format version.
6140
6141 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6142
6143         * Makefile.am (fullaotcheck): Make this run the tests.
6144
6145         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6146
6147 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6148
6149         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6150         individually.  Fixes #473482.
6151
6152 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6155
6156 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6157
6158         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6159         (mono_compile_assembly): Hush compile warnings about
6160         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6161         code path.
6162
6163 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6166
6167         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6168
6169         * aot-compiler.c: Fix arm support.
6170
6171         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6172         img_writer_emit_unset_mode () function.
6173
6174         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6175         (mono_unwind_get_dwarf_pc_reg): Ditto.
6176
6177         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6178         Move almost all platform specific code to a set of arch_ functions, 
6179         and document them to ease porting.
6180         
6181         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6182
6183         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6184
6185         * aot-compiler.c: Extract the image writing functionality into a separate
6186         module to reduce the size of this file.
6187
6188 2009-02-09  Geoff Norton  <gnorton@novell.com>
6189
6190         * mini-s390.c: Fix the signature of emit_sig_cookie.
6191
6192 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6193
6194         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6195
6196         * aot-runtime.c (is_shared_got_patch): Ditto.
6197
6198         * aot-runtime.c (load_named_code): Cope with the fact that 
6199         decode_got_entry () won't decode the patch fully if its corresponding got
6200         entry is already filled.
6201         
6202         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6203         Initialize *ji.
6204         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6205
6206         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6207         as the moving pointer instead of 'buf' for consistency with the rest of the
6208         codebase.
6209         (mono_arch_create_monitor_exit_trampoline): Ditto.
6210
6211         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6212         generic_class_init trampolines.
6213         (add_generic_class): Extract some code from add_generic_instances () into a
6214         separate function so it can be called from other places too.
6215         (compile_method): Call add_generic_class () for the classes of inflated methods
6216         referenced by the method.
6217         (can_encode_patch): Allow references to generic parameters.
6218
6219         * aot-runtime.c: Add support the patches required by the new trampolines.
6220         
6221         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6222         support.
6223
6224         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6225         full-aot support.
6226
6227         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6228         this from get_throw_pending_exception, make the signature full aot compatible.
6229
6230         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6231
6232         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6233
6234         * exceptions.cs: Add a test.
6235
6236 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6237
6238         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6239         use the DWARF_DATA_ALIGN constant instead.
6240
6241         * exception-<ARCH>.c: Update after the above change.
6242
6243         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6244         dwarf unwinder.
6245
6246         * mini-arm.c: Enable the dwarf unwinder.
6247
6248         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6249         instead of mono_class_setup_vtable ().
6250
6251 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6252
6253         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6254         dwarf unwinder.
6255
6256         * mini-x86.h: Enable the dwarf unwinder.
6257
6258 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6259
6260         Fix mcs/tests/test-7.cs
6261         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6262         2009-02-03.
6263
6264 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6265
6266         * mini.c (print_jit_stats): Remove some unused statistics.
6267
6268 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6269
6270         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6271
6272 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6273
6274         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6275         the method we get from mono_object_get_virtual_method() because
6276         that function does it properly, now.
6277
6278 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6279
6280         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6281         opcodes. Fixes #472775.
6282
6283 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6284
6285         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6286         fact that mono_find_jit_info() sometimes returns the context
6287         corresponding to the jit info in new_ctx.  Fixes #472600.
6288
6289 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6290
6291         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6292         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6293         klass->enum_basetype directly.
6294
6295         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6296         enum subtypes.
6297
6298         * unwind.c: Avoid 0 sized arrays.
6299
6300 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6301
6302         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6303         size on systems with 64k pages. Fixes #471389.
6304
6305 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6306
6307         Contributed under the terms of the MIT/X11 license by Steven
6308         Munroe <munroesj@us.ibm.com>.
6309
6310         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6311         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6312         necessary.
6313
6314 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6315
6316         Contributed under the terms of the MIT/X11 license by Steven
6317         Munroe <munroesj@us.ibm.com>.
6318
6319         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6320         comparison fix.
6321
6322         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6323         The trampoline can be longer on PPC64.
6324
6325 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6326
6327         Contributed under the terms of the MIT/X11 license by Steven
6328         Munroe <munroesj@us.ibm.com>.
6329
6330         * mini-ppc.c: Compiler warning fixes and trivial code
6331         simplifications.
6332
6333 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6334
6335         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6336         ins->dreg which could be a hardware register, not a vreg.
6337
6338         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6339         
6340         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6341         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6342
6343         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6344         
6345         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6346         ->dreg, that is not the vreg we are looking for.
6347
6348         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6349
6350         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6351         LIVERANGE_END.
6352
6353         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6354         strange crashes.
6355
6356 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6357
6358         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6359
6360         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6361         the line diff is 0.
6362
6363         * aot-compiler.c: Add xdebug support on x86.
6364
6365         * unwind.c: Add x86 support.
6366         
6367         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6368         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6369
6370         * mini.c (mini_method_compile): Ditto.
6371         
6372         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6373         the variable index.
6374
6375         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6376         which mimic .push_section/.pop_section in GAS.
6377         
6378         * aot-compiler.c: Emit precise live range information for variables.
6379
6380         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6381
6382         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6383         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6384         them.
6385
6386         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6387         the live ranges of variables.
6388
6389         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6390         of the variable in terms of native offsets.
6391
6392 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6393
6394         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6395         
6396 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6397
6398         Contributed under the terms of the MIT/X11 license by Steven
6399         Munroe <munroesj@us.ibm.com>.
6400
6401         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6402         order (offset then base reg) for ppc_load_multiple_regs.
6403         (emit_save_saved_regs) Correct operand order for
6404         ppc_store_multiple_regs.
6405         (mono_arch_get_call_filter): Correct operand order for
6406         ppc_load_multiple_regs.
6407
6408         * mini-ppc.c (emit_memcpy): Fix operand order for
6409         ppc_load_reg_update and ppc_store_reg_update.
6410         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6411         (mono_arch_emit_epilog): Correct operand order for
6412         ppc_load_multiple_regs.
6413
6414         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6415         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6416
6417 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6418
6419         * cpu-ppc64.md: Fixed storer4_memindex length.
6420
6421 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6422
6423         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6424         line number info.
6425         
6426         * aot-compiler.c (emit_line_number_info): Optimize this.
6427
6428 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6429
6430         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6431         
6432         * aot-compiler.c: Add debug info for methods without debug info by
6433         emitting an IL file and having the line number info referencing that file.
6434
6435         * aot-compiler.c: Optimize the size of the generated line number info.
6436
6437         * aot-compiler.c: Emit line number info in xdebug mode.
6438
6439         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6440         million arguments.
6441
6442 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6445
6446         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6447         is used.
6448
6449 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6450
6451         * basic-calls.cs: Test for the weird crash found on arm.
6452         
6453 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6454
6455         * cpu-arm.md: Increase the size of storer8_membase_reg and
6456         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6457
6458         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6459         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6460         reg to LR otherwise we'll be loading/storing from just the offset.
6461
6462 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6463
6464         Question: if we are storing gint32's inside the "*native_offset",
6465         should we change the signature to "gint32 *native_offset" to
6466         ensure that we do not have type definition problems?
6467         
6468         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6469         an int * as this is what the other function expects, causes
6470         problems with Freescale's compiler that defined int32_t to be a
6471         long and makes int incompatible 
6472
6473 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6474
6475         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6476         filename conflict with bjam.
6477
6478 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6479
6480         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6481         as it might use decomposed ops.
6482
6483 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6484
6485         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6486
6487         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6488         is defined.
6489
6490         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6491
6492         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6493         offsets.
6494
6495         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6496         way registers are stored in MonoContext on arm.
6497
6498         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6499         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6500
6501         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6502
6503         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6504
6505         * mini.c (mini_init): Register mono_isfinite.
6506
6507         * jit-icalls.c (mono_isfinite): New jit icall.
6508
6509         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6510         
6511         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6512         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6513         the parent frame.
6514
6515 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6516
6517         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6518         separate frame and stack pointers, so we must use FP to find the register
6519         spill area.
6520         The FP reg is retrieved from the MonoContext::regs array.
6521
6522 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6525         as FPA requires it.
6526
6527 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6528
6529         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6530         return R4 and R8 when not running under softfloat.
6531
6532         Fixes basic-calls.exe
6533
6534 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6535
6536         * mini-arm.c: Implement some overflow opcodes.
6537
6538 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6539
6540         * ssa.c: handle another alloca.h
6541
6542         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6543         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6544         MONO_ARCH_USE_SIGACTION. 
6545
6546         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6547         capability defines.
6548
6549         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6550
6551         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6552         PPC targets as sigaction does not exist on all platforms, define
6553         this on a per-platform basis.
6554
6555         Instead of erroring out if the platform is not defined, include
6556         mini-ppc-os.h, and expect that the OS specific setting provides
6557         the required information.   
6558
6559 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6560
6561         * aot-compiler.c: Fix --enable-minimal=aot.
6562
6563 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6564
6565         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6566         previous change.
6567
6568 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6569
6570         * exceptions-arm.c: Fix warnings.
6571
6572         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6573         ARM.
6574
6575         * mini-x86.c: Fix --enable-minimal=jit build.
6576
6577         * mini.c: Really fix --enable-minimal=jit build.
6578         
6579         * mini.c (construct_object_context_for_method): Move this outside
6580         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6581
6582         "Backported" of r124984 from 2.0 branch.
6583         
6584         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6585
6586         "Backport" of r124977 + r124978 from 2.0 branch.
6587         
6588         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6589         to avoid calling mono_exception_from_token () from the throw trampoline.
6590         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6591         for throwing corlib exceptions, this fixes full-aot support for corlib
6592         exceptions.
6593
6594         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6595
6596 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6597
6598         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6599         part of the changes to split the code in mini into operating
6600         system specific files.
6601
6602         This patch was done by copying mini.c to the respective files to
6603         preserve SVN history.
6604
6605 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6606
6607         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6608
6609 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6610
6611         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6612         remoting-invoke-with-check wrappers of shared methods.
6613
6614         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6615
6616 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6617
6618         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6619         optimization if the top of stack is the last instruction in the
6620         bblock.  Otherwise it might have been used after its definition.
6621         Fixes #469742.
6622
6623 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6624
6625         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6626         method as well when get_vcall_slot () fails to match a code sequence.
6627
6628         * mini-arm.c: Fix the android build, which doesn't have
6629         __aeabi_read_tp.
6630
6631 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6632
6633         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6634         the s390x build.
6635
6636 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6637
6638         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6639
6640 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6641
6642         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6643         and put its id into jinfo->used_regs. This is only used on amd64,
6644         which is currently the only platform generating unwind info.
6645
6646         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6647         the dwarf unwinder. This is required to correctly handle async exceptions
6648         like thread abort and stack overflows, which can happen while a method
6649         is in the middle of its prolog or epilog.
6650         
6651         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6652         the unwind info belonging to an AOTed method.
6653
6654         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6655         into cfg->unwind_ops.
6656         
6657         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6658
6659         * mini.c (mini_init): Call mono_unwind_init ().
6660         (mini_cleanup): Call mono_unwind_cleanup ().
6661
6662         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6663         unwind info to be shared between methods.
6664
6665         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6666         saved in the LMF.
6667
6668         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6669         get_throw_pending_exception () to avoid initialization races.
6670
6671         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6672         mono_arch_exceptions_init () function.
6673
6674         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6675
6676 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6677
6678         * mini.c (mono_get_domain_intrinsic): New helper function.
6679         (mono_get_thread_intrinsic): Ditto.
6680
6681         * mini-arm.c mini-ia64.c: Use the new helper functions.
6682         
6683         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6684         the last constrained_call change, since it is needed in the non-AOT
6685         case as well.
6686
6687         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6688         
6689         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6690         mono_get_lmf_addr () on arm eabi linux.
6691
6692 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6693
6694         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6695         code sequence which matches a non-virtual call.
6696
6697 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6698
6699         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6700         stack pointer (r1).
6701
6702 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6703
6704         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6705         runtime-invoke wrappers, since they are also shared based on signature.
6706
6707 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6708
6709         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6710         info from the (correct) context.
6711
6712 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6713
6714         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6715         
6716         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6717         using dwarf unwinding info. Not yet used.
6718
6719         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6720
6721 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6722
6723         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6724         descriptors.
6725
6726         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6727         special case and handle mono_arch_delegate_invoke_impl() returning
6728         function descriptors.
6729
6730         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6731         trampolines return function descriptors, too.
6732
6733 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6734
6735         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6736         out_of_line optimization.
6737
6738 2009-01-21  Martin Baulig  <martin@ximian.com>
6739
6740         * mini.h
6741         (MonoCompile): Added `disable_deadce_vars' to disable removing
6742         unused variables.
6743
6744         * mini.c
6745         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6746         inside the debugger.
6747
6748         * liveness.c (mono_analyze_liveness): Don't remove any unused
6749         variables if `cfg->disable_deadce_vars' is set.
6750
6751 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6752
6753         * method-to-ir.c: Only apply exception constructor optimization if
6754         the the method actually belongs to an exception class.  Fixes
6755         #467456.
6756
6757 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6758
6759         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6760         change inside a #ifdef __mono_ppc64__.
6761
6762         * aot-compiler.c (compile_method): Remove the previous limitation.
6763
6764         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6765         on type variables in AOTed code.
6766         
6767         * aot-compiler.c (compile_method): Skip generic methods having type 
6768         constraints on their generic parameters.
6769
6770         * aot-compiler.c (compile_method): Check for methods which cannot be
6771         encoded inside RGCTX_FETCH patches as well.
6772
6773         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6774         build.
6775
6776 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6777
6778         * method-to-ir.c: Force the vtable variable in shared generic code
6779         for the case that they might show up on a stack trace where they
6780         are needed.
6781
6782         * mini-exceptions.c: Save and use generic sharing info as well as
6783         IP in stack traces to resolve shared generic instantiations.
6784
6785 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6788         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6789
6790 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6791
6792         * method-to-ir.c: Do generic sharing for array constructors.
6793
6794 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6795
6796         * mini-exceptions.c (mono_print_thread_dump): Add information
6797         about the thread state using wapi_current_thread_desc.
6798
6799 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6800
6801         * basic-simd.cs: Tests for the new constructors. 
6802
6803 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6804
6805         * mini-ops.h: Added OP_EXPAND_*
6806
6807         * cpu-x86.md: Same.
6808
6809         * mini-x86.c (mono_arch_output_basic_block): Same.
6810         
6811         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6812
6813 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * iltests.il.in: Add a test for #467385.
6816
6817 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6818
6819         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6820         thread been cleaned up is not the same currently in execution.
6821
6822         Fixes appdomain-unload crashes on windows, osx and linux variants
6823         without the __thread keyword.
6824
6825 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6826
6827         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6828         (koush@koushikdutta.com). Implement this for android.
6829
6830         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6831         begins with a digit.
6832
6833         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6834         mono_marshal_get_write_barrier ().
6835
6836 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6837
6838         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6839         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6840         that pass them on a register pair.
6841
6842         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6843         test was crashing due to that.
6844
6845 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6846
6847         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6848         trampoline code. Include ucontext.h only if available.
6849
6850 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6851
6852         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6853         and doesn't check whether it's sharable, like it was before
6854         removing the shared generics hash.  This brings IronPython
6855         performance back to what it was before that change.
6856
6857 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6858
6859         * method-to-ir.c: Handle delegate invocation optimization earlier,
6860         otherwise it would be handled (much more slowly) by the
6861         final/sealed optimization.
6862
6863 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6864
6865         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6866         domain is not set. Fixes #465864.
6867
6868 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6869
6870         * method-to-ir.c: Don't stop sharing of generic methods with catch
6871         clauses - we already handle those.
6872
6873 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6874
6875         * mini.c, mini.h: lookup_generic_method() is now
6876         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6877         making the shared_generics_hash obsolete.
6878
6879 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6880
6881         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6882         use the red zone.  Make room on the stack first and then use it,
6883         not the other way around.
6884
6885 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6886
6887         * mini.c (mini_init): Call mono_xdebug_init ().
6888
6889         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6890
6891 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6892
6893         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6894
6895         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6896         trampolines.
6897
6898         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6899         debug+unwind info for trampolines.
6900
6901         * mini.c (mono_create_unwind_op): New helper function.
6902
6903         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6904
6905 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6906
6907         * aot-compiler.c: Fix the build.
6908
6909 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6910
6911         * Makefile.am: Update dtrace-prelink.sh location.
6912
6913 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6914
6915         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6916         optimization. Fixes #464520.
6917
6918 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6919
6920         * mini-amd64.c : Adding code to save/restore non-volatile registers
6921            on Winx64.
6922
6923         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6924           registers on Winx64.
6925
6926         Contributed under MIT/X11 license.
6927
6928 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6929
6930         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6931         __GNUC_MINOR__ which can break when the major version changes.
6932
6933 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6934
6935         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6936
6937 2009-01-07  Geoff Norton  <gnorton@novell.com>
6938
6939         * helpers.c:  Allow mono -v -v -v to work on darwin.
6940
6941 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6942
6943         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6944           pattern. 
6945
6946         Contributed under MIT/X11 license.
6947
6948 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6949
6950         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6951         instead of directly accessing type->data.klass. Fixes #462016.
6952         (mono_allocate_stack_slots_full): Ditto.
6953
6954         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6955         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6956
6957         * aot-compiler.c (emit_plt): Fix ARM build.
6958
6959 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6960
6961         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6962         
6963         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6964         change.
6965
6966         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6967         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6968         #463357.
6969
6970         * iltests.il.in: Add a regression test.
6971
6972 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6973
6974         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6975
6976 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6977
6978         * basic-simd.cs: Add a regression test for #462457.
6979
6980 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6981
6982         * mini-ops.h: Add a definition of XPHI.
6983
6984         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6985
6986         * ssa.c (op_phi_to_move): Handle XPHI.
6987
6988         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6989
6990         Fixes #462457
6991
6992 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6993
6994         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6995
6996 2008-12-31  Geoff Norton  <gnorton@novell.com>
6997
6998         * mini-ppc.c: The prolog size allocated can be too small for darwin
6999         ppc32 under certain circumstances.  Also fix a small logic bug.
7000
7001 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
7002
7003         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
7004         while loading AOT methods.
7005
7006         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
7007         since only the former is nulled out after a successful cast. This prevents
7008         crashes with rethrown exceptions when using --debug=casts.
7009
7010 2008-12-24  Mark Probst  <mark.probst@gmail.com>
7011
7012         * mini.h: New macro for checking whether a method is final,
7013         i.e. whether the method or its class is marked final.
7014
7015         * method-to-ir.c: Use the new macro for all final-checks
7016         consistently.  Fixes the crash in the System.ServiceModel tests.
7017
7018 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7019
7020         * mini-exceptions.c (get_exception_catch_class): Corrected another
7021         overly strict assertion.
7022
7023 2008-12-23  Mark Probst  <mark.probst@gmail.com>
7024
7025         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
7026         Clobbering it is not allowed because the caller might use it as
7027         the vtable register in the interface call.
7028
7029 2008-12-19  Mark Probst  <mark.probst@gmail.com>
7030
7031         * mini-exceptions.c (get_exception_catch_class): Corrected an
7032         overly strict assertion.
7033
7034 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
7035         
7036         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
7037
7038         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
7039
7040         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
7041
7042         * cpu-mips.md: correct lengths for certain long_ opcodes.
7043
7044         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
7045
7046         * 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().
7047         
7048 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7049
7050         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
7051         
7052 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
7053         
7054         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
7055         
7056 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
7057
7058         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
7059         next basic block.
7060         
7061 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
7062
7063         * 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
7064
7065         * 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)
7066         
7067 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
7068         
7069         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
7070         
7071 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
7072
7073         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
7074         gshared code. Fixes #458947.
7075
7076         * generics.cs: Add a test.
7077
7078 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7079         
7080         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7081         
7082         * mini-mips.c: first pass n32 code generation.
7083
7084         * mini-mips.h: datatypes and defines for n32 support.
7085
7086         * exceptions-mips.c: first pass n32 code generation.
7087         
7088         * tramp-mips.c: first pass n32 code generation.
7089         
7090         * cpu-mips.md: add long_ opcodes.
7091         
7092 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
7093
7094         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7095
7096         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7097         
7098         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7099         
7100         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7101
7102         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7103
7104         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7105
7106         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7107
7108         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7109
7110         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7111
7112 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7113
7114         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7115
7116 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7117
7118         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7119
7120 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7121
7122         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7123         descriptors for helper functions directly in front of the code.
7124
7125 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7126
7127         * method-to-ir.c: Removed an unnecessary assertion.
7128
7129 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7130
7131         * method-to-ir.c: Merge SGEN changes from the old JIT.
7132
7133 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7134
7135         * driver.c (compile_all_methods_thread_main): Handle failure of
7136         mono_get_method ().
7137
7138 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7139
7140         * mini-ppc.c: Merged with mini-ppc64.c.
7141
7142         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7143
7144         * Makefile.am: Use the same sources for PPC and PPC64.
7145
7146         * mini-ppc64.c: Removed.
7147
7148 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7149
7150         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7151         code to mono_bb_is_fall_through.
7152         
7153         * branch-opts.c (mono_remove_critical_edges): Same.
7154
7155 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7156
7157         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7158         expect that an OP_BR_REG will be there.
7159
7160 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7161
7162         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7163         for the many branch ops. The original check miss OP_BR_REG.
7164
7165         Fixes #457574.
7166         
7167 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7168
7169         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7170
7171 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7172
7173         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7174         while holding the aot lock.
7175
7176 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7177
7178         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7179         
7180 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7181
7182         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7183           to release all runtime callable wrappers held by the runtime.
7184
7185         Contributed under MIT/X11 license.
7186
7187 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7188
7189         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7190           for Winx64.
7191
7192         Contributed under MIT/X11 license.
7193
7194 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7197         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7198
7199 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7200
7201         * cpu-mips.md: fix ckfinite length
7202
7203         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7204         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7205         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7206         
7207 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7208
7209         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7210         
7211 2008-12-08  Geoff Norton  <gnorton@novell.com>
7212
7213         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7214         size by 8 bytes as well.
7215
7216 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7217
7218         * basic-simd.cs: Fix method names for Vector16b.
7219         
7220 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7221
7222         * basic-simd.cs: Fix method names for Vector16sb.
7223
7224 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7225
7226         * basic-simd.cs: Fix method names for Vector8us.
7227         
7228 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7229
7230         * basic-simd.cs: Fix method names for Vector8s.
7231         
7232 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7233
7234         * basic-simd.cs: Fix method names for Vector4ui.
7235
7236 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7237
7238         * basic-simd.cs: Fix method names for Vector2l.
7239
7240 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7241
7242         * basic-simd.cs: Fix method names for Vector2d.
7243
7244 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7245
7246         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7247         that are extension methods.
7248
7249 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7250
7251         * basic-simd.cs: Fix method names for Vector4f.
7252
7253 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7254
7255         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7256         as such. Fixes #456669.
7257
7258 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7259
7260         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7261         
7262 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7263
7264         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7265         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7266         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7267         (mips_adjust_stackframe): handle FP spills
7268                 
7269         * mini-ops.h: add mips_mtc1_s2
7270         
7271         * cpu-mips.md: add mips_mtc1_s2
7272         
7273 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7274
7275         * unwind.c: New file, move the unwind info encoding functions here from
7276         aot-compiler.c, so they could be used at runtime too.
7277
7278 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7279
7280         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7281         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7282         
7283 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7284
7285         * mini-mips.c: cleanup warnings
7286         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7287         (mips_adjust_stackframe): handle case of taking the address of stack locals
7288         
7289 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7290
7291         * aot-compiler.c: Implement a few functions missing from the asm writer.
7292         (emit_method_code): Only write symbols for methods when using the bin
7293         writer, since the assembler can't deal with the characters in our method
7294         names.
7295
7296         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7297
7298         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7299         call.
7300
7301         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7302         a bit to also restore %rax.
7303
7304 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7305
7306         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7307
7308 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7309
7310         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7311         arguments.
7312
7313 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7314
7315         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7316
7317         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7318         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7319
7320         * exceptions-ppc64.c: Removed.
7321
7322         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7323
7324 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7325
7326         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7327         tramp-ppc64.c.
7328
7329         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7330
7331         * tramp-ppc64.c: Removed.
7332
7333 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7334
7335         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7336         the TYPESPEC table.
7337
7338 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7339
7340         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7341
7342         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7343         mini-ppc.h instead of mini-ppc64.h.
7344
7345         * mini-ppc64.h: Removed.
7346
7347 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7348
7349         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7350         
7351         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7352         
7353 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7354
7355         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7356         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7357         code easier.
7358
7359 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7360
7361         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7362
7363 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7364
7365         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7366
7367 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7368
7369         * basic-simd.cs: Tests for operator == and != on Vector4f.
7370
7371 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7372
7373         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7374
7375         * simd-intrinsics.c: Kill useless enum.
7376
7377 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7378
7379         * cpu-mips.md: add long_conv_to_ovf_i4_2
7380         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7381
7382 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7383
7384         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7385         
7386         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7387
7388 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7389
7390         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7391         
7392 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7393
7394         * basic-simd.cs: Add tests for new methods.
7395
7396 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7397
7398         * simd-intrinsics.c: Add support for operator == and !=
7399         on Vector4(u)i.
7400
7401         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7402
7403 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7404
7405         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7406
7407 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7408
7409         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7410
7411         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7412         MONO_PATCH_INFO_ICALL_ADDR.
7413
7414         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7415
7416         * aot-compiler.c: Resurrect full-aot support.
7417
7418 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7419
7420         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7421         
7422 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7423
7424         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7425         
7426 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7427
7428         * basic-simd.cs: Fix tests to work under ppc.
7429         Remove tests for methods that will be removed.
7430
7431 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7432
7433         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7434         generic type (via a typedef or typeref) correctly.
7435
7436 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7437
7438         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7439         diagnose an assertion failure.
7440
7441 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7442
7443         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7444         Fix trampoline size.
7445
7446         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7447         conversion opcodes are implemented natively instead via emulation.
7448
7449 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7450
7451         * cpu-mips.md: remove mips_xori
7452
7453         * mini-ops.h:  remove mips_xori
7454
7455         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7456
7457         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7458         
7459         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7460         
7461 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7462
7463         * cpu-mips.md: fix instruction lengths.
7464
7465         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7466
7467         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7468
7469         * mini-ops.h: fix slti / sltiu op profiles.
7470         
7471 2008-12-02  Martin Baulig  <martin@ximian.com>
7472
7473         * method-to-ir.c (mono_method_to_ir): Disable debugging
7474         information for the init locals block to make the debugger stop
7475         after all locals have been initalized.
7476
7477 2008-12-02  Martin Baulig  <martin@ximian.com>
7478
7479         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7480         running inside the debugger.
7481
7482 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7483
7484         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7485         is enabled.
7486
7487         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7488         alu->alu imm optimization which only shows if deadce is disabled.
7489
7490         * aot-compiler.c: Rename the function names for the binary and asm writers
7491         so they can coexist in the same process. Rework the xdebug code to use the
7492         asm writer. This avoids the need to call into the runtime to dump the
7493         debugging info. Add more debugging info for types.
7494
7495         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7496
7497         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7498         cpu description tables, they can't occur in cpu-<ARCH>.md.
7499
7500         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7501         the stack in CEE_LDFLDA. Fixes #450542.
7502
7503         * generics.cs: Add a new test.
7504
7505 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7506
7507         * mini-ops.h: updated MIPS opcodes
7508         * mini-mips.c: decompose long opts
7509         * mini-mips.h: decompose long opts
7510         
7511 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7512
7513         * cpu-mips.md: fix length on int_rem_un
7514         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7515         
7516 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7517
7518         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7519
7520         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7521
7522 2008-11-29  Martin Baulig  <martin@ximian.com>
7523
7524         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7525         mono_debug_using_mono_debugger() in addition to the
7526         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7527
7528 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7529
7530         * mini-ops.h: updated more MIPS opcodes
7531         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7532         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7533         
7534 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7535
7536         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7537
7538 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7539
7540         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7541         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7542         * mini-ops.h: correct selected mips opcode entries
7543         
7544 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7545
7546         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7547         make them work.
7548
7549 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7550
7551         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7552
7553 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7554
7555         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7556         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7557         * mini-mips.h: disable IMT
7558         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7559         
7560 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7561
7562         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7563
7564 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7565
7566         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7567
7568 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7569
7570         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7571         consistency.
7572
7573 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7574
7575         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7576         for Set/GetVector aligned versions.
7577
7578 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7579
7580         * basic-simd.cs: Add tests for Get/SetVector.
7581
7582 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7583
7584         * mini.c: Removed g_slist_append_mempool().  Now in
7585         metadata/mempool.c.
7586
7587 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7588
7589         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7590         size properly and make the bounds check optional.
7591
7592         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7593         for SetVector and IsAligned.
7594
7595 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7596
7597         * mini.c: Remove unused mono_normalize_opcodes () function.
7598
7599 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7600
7601         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7602         using the new atomic add ops now.
7603
7604         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7605         add.
7606
7607 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7608
7609         * mini-ppc64.c: Several fixes.
7610
7611 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7612
7613         * cpu-mips.md: added jump_table
7614         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7615
7616 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7617
7618         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7619
7620 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7621
7622         * mini-ops.h: corrected a handful of MIPS opcodes.
7623
7624 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7625
7626         * aot-compiler.c: MIPS to use ELF writer
7627
7628 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7629
7630         * mini-codegen.c: remove MIPS specific assert.
7631
7632 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7633
7634         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7635         fixes.  PPC64 now passes most of the runtime regressions.
7636
7637 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7638
7639         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7640         volatile intervals a bit.
7641
7642 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7643
7644         * basic-long.cs: New test case.
7645
7646 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7647
7648         * mini.c (mini_method_compile): Disable globalra for large methods for 
7649         now.
7650
7651         * regalloc2.c (order_moves): Add fp support.
7652
7653         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7654         source bblock ends with an OP_BR_REG.
7655
7656         * ratests.cs: Add a new test.
7657
7658 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7659
7660         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7661         sharing.  PPC64 now passes generics.exe.
7662
7663 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7664
7665         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7666
7667 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7668
7669         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7670         memory when mono_jit_info_table_find () can't find the method in the
7671         LMF case.
7672
7673         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7674         AOTed code too.
7675         
7676         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7677         writer too.
7678
7679 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7680
7681         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7682         Several fixes.  PPC64 now runs exceptions.exe and
7683         devirtualization.exe.
7684
7685 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7686
7687         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7688         arrays.exe and basic-math.exe.
7689
7690 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7691
7692         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7693         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7694
7695 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7696
7697         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7698
7699 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7700
7701         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7702
7703         * ir-emit.h: Move macros from method-to-ir.c to here.
7704
7705 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7706
7707         * mini-ops.h: Correct the long simd ops to use LREG.
7708
7709 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7710
7711         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7712         
7713         * mini-ops.h: Correct the dreg type of a few long opcodes.
7714
7715         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7716         Add netbsd support.
7717
7718 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7719
7720         * mini-ppc.c: remove negative stack references in epilog
7721         for platforms that don't support the red zone.
7722
7723 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7724
7725         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7726         point regs.  Now PPC64 passes basic-calls.exe.
7727
7728 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7729
7730         * basic-simd.cs: Add tests for accessors of Vector2l.
7731
7732 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7733
7734         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7735
7736         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7737         
7738         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7739
7740 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7741
7742         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7743         PPC64 passes basic-long.exe.
7744
7745 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7746
7747         * decompose.c: Decompose carry and overflow add on PPC64 like on
7748         other 64 bit archs.  Don't decompose sub at all on PPC64.
7749
7750         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7751         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7752         basic-long.exe.
7753
7754 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7755
7756         * basic-simd.cs: Add tests for accessors of Vector2d.
7757
7758 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7759
7760         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7761
7762         * cpu-x86.md: Same.
7763
7764         * mini-x86.c (mono_arch_output_basic_block): Same.
7765         
7766         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7767
7768 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7769
7770         * basic-simd.cs: Add tests for accessors of Vector4f.
7771
7772 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7773
7774         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7775
7776         * cpu-x86.md: Same.
7777
7778         * mini-x86.c (mono_arch_output_basic_block): Same.
7779         
7780         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7781
7782 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7783
7784         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7785
7786 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7787
7788         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7789
7790         * cpu-x86.md: Same.
7791
7792         * mini-x86.c (mono_arch_output_basic_block): Same.
7793         
7794         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7795
7796 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7797
7798         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7799
7800 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7801
7802         * simd-intrinsics.c: Enable setters for Vector16sb.
7803
7804 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7805
7806         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7807
7808         * cpu-x86.md: Same.
7809
7810         * mini-x86.c (mono_arch_output_basic_block): Same.
7811         
7812         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7813
7814 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7815
7816         * simd-intrinsics.c: Implement setter for Vector8us.
7817
7818 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7819
7820         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7821         for dead variables.
7822
7823 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7824
7825         * mini-ppc.c: remove references to the red zone in the prolog
7826         (for systems that don't support it).
7827
7828 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7829
7830         * cpu-ppc64.md: Fixed a few instruction lengths.
7831
7832         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7833         now.
7834
7835 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7836
7837         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7838         basic.exe now.
7839
7840 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7841
7842         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7843
7844 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7845
7846         * mini-ops.h: Added OP_INSERT_I2.
7847
7848         * cpu-x86.md: Same.
7849
7850         * mini-x86.c (mono_arch_output_basic_block): Same.
7851         
7852         * simd-intrinsics.c: Implement setter for Vector8s.
7853
7854         * simd-methods.h: Add the names of get setters of Vector8s.
7855
7856 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7857
7858         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7859         
7860         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7861         parameters.
7862
7863         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7864
7865 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7866
7867         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7868         for PPC64.  An empty program runs now.
7869
7870 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7871
7872         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7873
7874         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7875         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7876         info for JITted code is emitted into a shared library, loadable into gdb.
7877
7878 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7879
7880         * Makefile.am: Changes to build PPC64.
7881
7882         * mini-arch.h: Include mini-ppc64.h on PPC64.
7883
7884 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7885
7886         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7887         in PPC code up to r119147.
7888
7889 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7890
7891         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7892         cpu-ppc64.md: Changes for PPC64.
7893
7894         Based on code submitted by andreas.faerber@web.de at
7895         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7896         X11/MIT license.
7897
7898 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7899
7900         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7901         cpu-ppc64.md: Copied from the corresponding PPC files from
7902         r118846.
7903
7904 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7905
7906         * mini-ops.h: Added OP_ROUND.
7907
7908         * cpu-x86.md: Added round.
7909
7910         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7911
7912         * basic-math.cs: Added test_0_round to test rounding.
7913
7914         Contributed under MIT/X11 license.
7915
7916 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7917
7918         * aot-compiler.c : Fix the Winx64 build.
7919
7920         Contributed under MIT/X11 license.
7921
7922 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7923
7924         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7925         in OP_EXTRACT_R8 to avoid possible stack corruption.
7926
7927 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7928
7929         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7930
7931         * cpu-x86.md: Added extract_r8.
7932
7933         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7934         
7935         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7936         a couple of OP_EXTRACT_I4.
7937
7938         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7939
7940         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7941
7942 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7943
7944         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7945         and not 4.1. 
7946
7947 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7948
7949         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7950         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7951
7952         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7953         are not needed any more.
7954
7955         * mini.h: Remove the unused INS_LIST macros.
7956
7957         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7958         longer needed.
7959
7960         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7961         ir-emit.h.
7962
7963         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7964         mono_alloc_ireg () instead.
7965
7966         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7967         macros.
7968
7969         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7970         on amd64.
7971
7972         * aot-runtime.c (load_aot_module): Disable AOT when running under
7973         CAS.
7974
7975         * mini-amd64.h: Change the monitor fastpath defines to check for
7976         !PLATFORM_WIN32 so they work on *bsd too.
7977
7978         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7979
7980         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7981
7982         * mini.h (MonoCompile): Remove new_ir flag.
7983
7984         * regalloc.h regalloc.c: Remove unused code.
7985
7986         * cpu-*.md: Remove more unused opcodes.
7987
7988         * simple-cee-ops.h simple-mini-ops.h: Removed.
7989
7990         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7991         
7992 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7993
7994         * aliasing.h: Removed.
7995
7996         * *.c: Remove references to aliasing.h and inssel.h.
7997
7998         * mini.c: Remove additional unused functions.
7999
8000         * mini-ops.h cpu-*.md: Remove unused opcodes.
8001
8002 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8003
8004         Remove the old JIT code.
8005
8006         * inssel*.brg: Removed.
8007
8008         * ssa.c abcremoval.c aliasing.c: Removed.
8009
8010         * ssa2.c: Renamed to ssa.c.
8011
8012         * abcremoval2.c: Renamed to abcremoval.c.
8013
8014         * *.c: Removed all !cfg->new_ir code.
8015
8016         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
8017         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
8018
8019         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
8020         
8021 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
8022
8023         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
8024         to simplify the code and cut back on the number of global symbols in the AOT
8025         file.
8026         
8027         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
8028
8029 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
8030
8031         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
8032         with the got/got_info tables.
8033
8034         * mini.h: Bump AOT file format version.
8035         
8036         * unwind.h: New file, contains definitions for stack unwinding.
8037
8038         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
8039         to cfg->unwind_ops.
8040         
8041         * aot-compiler.c: Generalize the emitting of unwind information to use the
8042         information in cfg->unwind_ops.
8043
8044         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
8045
8046         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
8047         AOT method frames. Enable writing symbols for methods by default.
8048
8049 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
8050
8051         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
8052         and make it work with vectors of element sizes 1, 2 and 4.
8053
8054         * simd-intrinsics.c: Enable getter for all vectors with element size
8055         1, 2 or 4.
8056
8057         * simd-methods.h: Add the names of other getters.
8058
8059         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
8060
8061         * cpu-x86.md: Same.
8062
8063         * mini-x86.c: Same.
8064
8065 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
8066
8067         * mini-ppc.h: portability fix.
8068
8069 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8070
8071         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
8072         buggy and will overwrite it.
8073
8074 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8075
8076         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
8077         Use it to emit local symbols for all methods so AOTed methods show up with
8078         their full name in gdb/valgrind output.
8079
8080 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
8081
8082         * mini-ppc.c: portability fixes.
8083
8084 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
8085
8086         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
8087         entries out of the if (!generic_shared...) code so it is always done.
8088         (mono_class_init_trampoline): Do the patching when running under valgrind
8089         too, newer versions of valgrind have no problems with it.
8090
8091 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8092
8093         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
8094         further sections.
8095
8096 2008-11-13  Mark Probst  <mark.probst@gmail.com>
8097
8098         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
8099         filters.
8100
8101 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8102
8103         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8104
8105 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8106
8107         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8108
8109         * cpu-x86.md: Same.
8110
8111         * mini-x86.c: Same.
8112
8113         * simd-intrinsics.c: Same.
8114
8115 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8116
8117         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8118
8119 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8120
8121         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8122         to work with more Vector types.
8123
8124 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8125
8126         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8127         store the elemens directly instead of using and intermediate.
8128
8129 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8130
8131         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8132
8133         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8134         to preserve %eax for aot plt trampolines.
8135
8136         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8137         (encode_method_ref): Flag synchronized methods so they won't go through
8138         the AOT trampoline.
8139
8140         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8141         wrappers.
8142
8143         * cpu-ia64.md (jmp): Increase max length.
8144
8145 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8146
8147         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8148         open generic classes.
8149
8150         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8151
8152         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8153         box+brtrue optimization since it causes test failures on x86.
8154
8155 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8156
8157         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8158
8159         * cpu-x86.md: Same.
8160
8161         * mini-x86.c: Same.
8162
8163         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8164         for simd ctor values. 
8165
8166         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8167         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8168
8169 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8170
8171         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8172         LogicalRightShift.
8173
8174         * simd-instrincs.c: Same.
8175
8176         * basic-simd.cs: Same.
8177
8178 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8179
8180         * ratests.cs: Add more tests.
8181
8182         * regalloc2.c (add_spill_code): Handle more corner cases.
8183
8184 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8185
8186         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8187         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8188         both the source an destination of an instruction.
8189
8190 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8191
8192         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8193         wapihandles.c: more portability changes.
8194
8195 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8196
8197         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8198         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8199         safe to execute in a signal handler and the kernel provides better
8200         the info in /proc/self/smaps. Avoid the assert on sigaction during
8201         cleanup.
8202
8203 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8204
8205         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8206         do the bblock linking hack if it is actually needed.
8207
8208         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8209         up linking.
8210
8211         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8212         crash problem is fixed.
8213
8214         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8215         bblocks.
8216
8217         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8218         for catch clauses.
8219         (mini_method_compile): Set the starting value of next_vreg to 
8220         MAX_IREGS + MAX_FREGS when using globalra.
8221
8222         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8223         filter clauses with BB_EXCEPTION_HANDLER.
8224
8225         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8226
8227 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8228
8229         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8230         space for stdcall.  Fixes regressions on Win32.
8231
8232 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8233
8234         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8235         bblocks.
8236         (linear_scan): Remove an assert which doesn't seem to be needed.
8237
8238         * local-propagation.c (mono_local_deadce): Avoid a call to
8239         MONO_DELETE_INS which would screw up the instruction linking.
8240
8241         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8242
8243         * regalloc2.c: Upgrade to work the current JIT code.
8244
8245 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8246
8247         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8248         case.
8249
8250         * aot-runtime.c: Remove some dead code.
8251
8252         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8253         consistency.
8254         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8255
8256         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8257         trampolines using sscanf since atoi doesn't work on large unsigned values.
8258
8259         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8260         Initialize code_size.
8261
8262 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8263
8264         * method-to-ir.c (mini_emit_inst_for_method): Make
8265         Interlocked.CompareExchange work for Int arguments on 32 bit
8266         archs, as well.
8267
8268 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8269
8270         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8271
8272 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8273
8274         * main.c Fix MSVC build.
8275
8276         Contributed under MIT/X11 license.
8277
8278 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8279
8280         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8281         alignment larger than 8 bytes are aligned correctly, too.
8282
8283         * mini.c: Honor the min_align field of MonoClass when laying out
8284         the stack.
8285
8286 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8287
8288         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8289
8290         * aot-compiler.c (emit_plt): Fix a warning.
8291         
8292         * aot-compiler.c: Implement ARM support in the binary writer.
8293
8294 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8295
8296         * basic-simd.cs: Add test for getter with byref arg.
8297         Fix the naming of a few tests.
8298         Add missing checks to a test.
8299
8300 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8301
8302         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8303
8304         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8305         most of the full-aot support for monitor enter/exit trampolines.
8306
8307         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8308         enter/exit trampoline creation functions.
8309
8310         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8311         make dist.
8312
8313 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8314
8315         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8316         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8317         implement the needed functionality without adding crap to the runtime.
8318
8319 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8320
8321         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8322         non-x86 builds.
8323
8324         * mini.c (mono_build_date): New global version holding the build date in
8325         string format.
8326         
8327         * Makefile.am (buildver.c): Generate a file containing the build date.
8328
8329         * main.c: Set the build date from the generated file.
8330
8331         * mini.c (mono_get_runtime_build_info): New helper function returning build
8332         information in a string format.
8333         
8334         * driver.c (mono_main): Print the build date in --version.
8335
8336         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8337         file when the bind-to-runtime-version option is used.
8338
8339 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8340
8341         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8342
8343 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8344
8345         * simd-methods.h: Rename prefetch methods.
8346
8347         * simd-intrinsics.c: Same.      
8348
8349 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8350
8351         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8352         sizes.
8353
8354 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8355
8356         * aot-compiler.c: Use the bundled elf header files instead of depending on
8357         the system one.
8358         
8359         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8360         mempool.
8361
8362         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8363         on every call.
8364
8365 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8366
8367         * cpu-x86.md: Add store nta ops.
8368
8369         * mini-ops.h: Same.
8370
8371         * mini-x86.c: Same.
8372
8373         * mini.h: Add an enum for simd prefetch modes.
8374
8375         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8376         of store. Use the changed code to support store nta.
8377
8378         * simd-intrinsics.c: Add prefetch ops for all vector types.
8379
8380 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8381
8382         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8383         threads.
8384         
8385         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8386         names.
8387
8388         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8389         trampolines.
8390
8391 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8392
8393         * mini-x86.c: Fixed commit.
8394
8395 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8396
8397         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8398
8399 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8400
8401         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8402         and MONITOR_EXIT, for the ASM fastpaths.
8403
8404         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8405         available.
8406
8407         * mini.c, patch-info.h: Signature and patch infos for
8408         Monitor.Enter/Exit trampolines.
8409
8410         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8411
8412         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8413         Monitor.Enter/Exit ASM fastpath for Linux.
8414
8415 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8416
8417         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8418
8419         * objects.cs: Add a new test.
8420         
8421         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8422
8423         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8424         if MONO_LOG_LEVEL is set.
8425
8426         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8427
8428         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8429
8430         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8431         
8432         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8433         of file offsets. Align the sections belonging to the data segment to 
8434         PAGESIZE.
8435
8436 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8437
8438         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8439         elf.h. Port it to amd64.
8440
8441 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8442
8443         * driver.c: Enable SIMD by default.
8444
8445 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8446
8447         * cpu-x86.md: Add prefetch op.
8448
8449         * mini-ops.h: Same.
8450
8451         * mini-x86.c: Same.
8452
8453         * mini.h: Add an enum for simd prefetch modes.
8454
8455         * simd-methods.h: Add prefetch function names.
8456
8457         * simd-intrinsics.c: Add prefetch ops for all vector types.
8458
8459 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8460
8461         * aot-compiler.c (emit_bytes): Speed this up a little.
8462
8463 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8464
8465         * aot-compiler.c: Add JIT time etc. statistics.
8466         
8467         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8468
8469         * mini.h (MonoCompile): Add 'got_offset' field.
8470
8471         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8472         method_got_offsets array.
8473
8474         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8475         wrappers.
8476
8477         * aot-compiler.c (compile_method): Add generic method instances referenced
8478         by the method to the list of methods to be compiled, this is required so if
8479         A<T> references B<T>, and another assembly references A<int>, then it will
8480         also get a copy of B<int>.
8481
8482         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8483         when checking for monitor enter/exit.
8484
8485 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8486
8487         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8488         for Monitor.Enter and Monitor.Exit if enabled.
8489
8490         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8491         Solaris.
8492
8493 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8494
8495         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8496         of an OP_MOVE. Fixes #440046.
8497
8498         * basic-long.cs: Add a new test.
8499
8500 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * mini.h: Add synchronization note for the managed counter-part.
8503
8504         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8505         returns the simd caps of the current cpu.
8506
8507 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8508
8509         * basic-simd.cs: Remove Console.WriteLine.
8510
8511 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8512
8513         * basic-simd.cs: New tests for Vector2ul.
8514
8515 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8516
8517         * simd-intrinsics.c: Add new vector type Vector2ul.
8518
8519 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8520
8521         * basic-simd.cs: New tests for Vector2l.
8522
8523 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8524
8525         * cpu-x86.md: Add long version of most packed int ops.
8526
8527         * mini-ops.h: Same.
8528
8529         * mini-x86.h: Same.
8530
8531         * simd-intrinsics.c: Add new vector type Vector2l.
8532
8533 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8534
8535         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8536
8537         * simd-methods.h: Remove SN_op_BitwiseXor.
8538
8539 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8540
8541         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8542         alignment.
8543
8544 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8545
8546         * basic-simd.cs: Test for Vector2d.
8547
8548         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8549         value.
8550
8551 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8552
8553         * cpu-x86.md: Add double version of all packed float ops.
8554
8555         * mini-ops.h: Same.
8556
8557         * mini-x86.h: Same.
8558
8559         * simd-intrinsics.c: Add new vector type Vector2d.
8560
8561         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8562
8563         * simd-methods.h: Add Duplicate.
8564
8565 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8566
8567         * basic-simd.cs: Test for packing with signed saturation.
8568
8569 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8570
8571         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8572         found in the TYPESPEC table.
8573
8574 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8575
8576         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8577         too.
8578
8579         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8580
8581         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8582         instead of the RVA, since the RVA can be changed by tools like the cil 
8583         stripper.
8584
8585         * method-to-ir.c (mono_method_to_ir2): Ditto.
8586
8587         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8588         (deserialize_variable): Ditto.
8589
8590 2008-10-25  Martin Baulig  <martin@ximian.com>
8591
8592         * debug-mini.c (write_variable): Use
8593         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8594
8595 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8596
8597         * cpu-x86.md: Add unsigned variants of packd and packw.
8598
8599         * mini-ops.h: Same.
8600
8601         * mini-x86.h: Emit the right instruction for packd and packw.
8602         Add unsigned variants of packd and packw.
8603
8604         * simd-intrinsics.c: Packd and packw were used in place of their
8605         unsigned variants. Change that.
8606         Add intrinsics for (Signed)PackWithSignedSaturation.
8607
8608         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8609
8610 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8611
8612         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8613
8614 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8615
8616         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8617
8618         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8619
8620         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8621         sse instructions.
8622
8623         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8624
8625 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8626
8627         * method-to-ir.c, mini.c: Special casing for the synchronized
8628         wrapper for the ldtoken+GetTypeFromHandle case.
8629
8630 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8631
8632         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8633
8634         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8635         created/split bblocks.
8636
8637 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8638
8639         * mini-ops.h: Add packed signed mul high.
8640         
8641         * cpu-x86.md: Same.
8642
8643         * mini-x86.c (mono_arch_output_basic_block): Same.
8644
8645         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8646
8647         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8648
8649 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8650
8651         * basic-simd.cs: Tests for Vector16sb.
8652
8653 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8654
8655         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8656
8657 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8658
8659         * mini-ops.h: Add packed signed min, max and compare greater.
8660         
8661         * cpu-x86.md: Same.
8662
8663         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8664         saturation.
8665
8666         * simd-methods.h: Add CompareGreaterThan.
8667
8668         * simd-methods.h: Remove CompareEquals.
8669
8670         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8671
8672         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8673
8674         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8675         CompareEqual.
8676
8677 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8678
8679         * basic-simd.cs: Fix tests due to change in the API.
8680
8681 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8682
8683         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8684
8685 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8686
8687         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8688
8689         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8690         inst_offset as this has invalid values for LDADDR.
8691
8692 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8693
8694         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8695
8696         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8697
8698 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8699
8700         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8701         for accessing field->data.
8702
8703 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8704
8705         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8706
8707 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8708
8709         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8710
8711         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8712
8713 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8714
8715         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8716         from the cfg mempool.
8717
8718 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8719
8720         * basic-simd.cs: Tests for new methods in Vector8us.
8721
8722 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8723
8724         * mini-ops.h: Add multiply and store high.
8725         
8726         * cpu-x86.md: Same.
8727
8728         * mini-x86.c (mono_arch_output_basic_block): Same.
8729
8730         * simd-methods.h: Same.
8731
8732         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8733         and CompareEqual.
8734
8735 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8736
8737         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8738         mono_class_setup_vtable ().
8739
8740         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8741         mono_class_get_vtable_entry () for accessing klass->vtable.
8742
8743         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8744
8745         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8746         found.
8747
8748         * method-to-ir.c (mono_save_token_info): Don't save references made from
8749         wrappers.
8750
8751         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8752         of generic instances.
8753
8754         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8755
8756 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8757
8758         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8759         OP_JMP depends on the method signature.  Calculate it properly.
8760
8761 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8762         
8763         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8764         called directly.
8765
8766         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8767         instances.
8768         (emit_extra_methods): Add another table mapping method indexes to 
8769         offsets in the extra_method_info table.
8770
8771         * mini.h: Bump AOT file format version.
8772         
8773         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8774         and mono_aot_get_method_from_token () into one function.
8775
8776 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8777
8778         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8779         separate counter.
8780
8781 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8782
8783         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8784         methods.
8785
8786         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8787         disable_aot.
8788
8789         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8790
8791         * mini.h: Bump aot file format version.
8792
8793         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8794         AOT file can contain native code for methods which are not in the METHOD
8795         table. Generate code for non-sharable generic instances of generic methods
8796         found in the METHODSPEC table.
8797         
8798         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8799         encoding generic type handles.
8800
8801         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8802         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8803
8804         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8805         macros + MONO_ADD_INS.
8806
8807         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8808         context as well.
8809
8810         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8811
8812         * mini.h: Bump aot file format version.
8813
8814         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8815
8816 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8817
8818         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8819         platforms, with definable stack alignment value.  Set to 16 now
8820         for all platforms.
8821
8822         * mini.c, mini.h, driver.c: Command line option for disabling
8823         stack alignment.
8824
8825 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8826
8827         * basic-simd.cs: Tests for new methods in Vector4ui.
8828
8829 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8830
8831         * mini-ops.h: Add packed int shuffle.
8832         
8833         * cpu-x86.md: Same.
8834
8835         * mini-x86.c (mono_arch_output_basic_block): Same.
8836
8837         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8838         extract mask, max, min, shuffle.
8839
8840         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8841
8842 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8843
8844         * basic-simd.cs: Tests for new methods in Vector8us.
8845
8846 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8847
8848         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8849         RuntimeTypeHandle, not a TypedReference.
8850
8851 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8852
8853         * simd-intrinsics.c: remove relocations.
8854
8855 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8856
8857         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8858         optimizations from the x86 backend.
8859
8860 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8861
8862         * simd-methods.h, simd-intrinsics.c: debloat method names and
8863         prepare for no relocations.
8864
8865 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8866
8867         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8868         
8869         * cpu-x86.md: Same.
8870
8871         * mini-x86.c (mono_arch_output_basic_block): Same.
8872
8873         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8874         extract mask, max, min and sum of absolute differences.
8875
8876         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8877         method name.
8878
8879 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8880
8881         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8882         Renamed one test for consistency.
8883
8884 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8885
8886         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8887         fix to the code that deal with other blocks.
8888
8889 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8890
8891         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8892
8893 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8894
8895         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8896         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8897         able to process the source reg.
8898
8899 2008-10-16  Martin Baulig  <martin@ximian.com>
8900
8901         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8902
8903         * inssel.brg: Add `OP_HARD_NOP'.
8904
8905         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8906
8907         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8908         `OP_HARD_NOP' instruction when running inside the debugger.
8909
8910         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8911         `OP_HARD_NOP' instruction when running inside the debugger.
8912
8913 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8914
8915         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8916         now works. The issue with the regalloc tripping up no longer
8917         happens.
8918
8919         * simd-intrinsics.c (load_simd_vreg): Same.
8920
8921 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8922         
8923         * basic-simd.cs: Tests for new Vector8ui methods.
8924
8925 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8926
8927         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8928         only for type. This fixes crashes where MonoInst::klass is checked
8929         for ops of type != VTYPE or OBJ.
8930
8931         * simd-intrinsics.c (load_simd_vreg): Same.
8932
8933 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8934
8935         * mini-ops.h: Add ops for packed shuffle/max/avg and
8936         extract mask.
8937         
8938         * cpu-x86.md: Same.
8939
8940         * mini-x86.c (mono_arch_output_basic_block): Same.
8941
8942         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8943         extract mask.
8944
8945         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8946         to emit extract mask op.
8947
8948         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8949         to emit word shuffles.
8950
8951 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8952
8953         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8954         the largest alignment needed by a variable, but at least
8955         sizeof(gpointer).
8956
8957 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8958
8959         * basic-simd.cs: Tests for the fixes in the last commit.
8960
8961 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8962
8963         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8964         no longer handles STACK_PTR input.
8965
8966         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8967
8968         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8969         get_simd_vreg   but handles STACK_PTR input.
8970
8971         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8972         as the input can be an arbitrary pointer.
8973
8974         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8975         LDADDR local optimization directly otherwise use a store op.
8976
8977 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8978
8979         * basic-simd.cs: Tests for dup low and dup high.
8980
8981 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8982
8983         * mini-ops.h: Add dup low and dup high ops.
8984         
8985         * cpu-x86.md: Same.
8986
8987         * mini-x86.c (mono_arch_output_basic_block): Same.
8988
8989         * simd-intrinsics.c (vector4f_intrinsics): Same.
8990
8991 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8992
8993         * basic-simd.cs: Tests for recently added functionality.
8994
8995 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8996
8997         * mini-ops.h: Add remaining sse1 fp ops.
8998         
8999         * cpu-x86.md: Add remaining sse1 fp ops.
9000
9001         * mini-x86.c (mono_arch_output_basic_block): Same.
9002
9003         * mini.h: Add enum for simd FP compare conditions.
9004
9005         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
9006
9007         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
9008         so the backed can generate the appropriate op.
9009
9010 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
9011         This patch squeese one more byte from the SimdIntrinsc struct.
9012
9013         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
9014         a a shift amount intead of simply or'ing it.
9015
9016         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
9017
9018         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
9019         byte so we can have an aditional flags field without increasing struct size.
9020
9021         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
9022         against the simd_supported_versions bitmask.
9023
9024         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
9025
9026 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
9027
9028         * mini.c: remove rawbuffer code (the only use here is unsafe because
9029         it takes locks during signal handling and the kernel now provides much
9030         better info in proc/pid/smaps these days).
9031
9032 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
9033
9034         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
9035         OP_X86_PUSH_OBJ. Fixes #434620.
9036
9037         * objects.cs: Add a test.
9038         
9039 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
9040
9041         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
9042         that the packuswb/packusdw don't work with unsigned numbers for what
9043         would be negative numbers in signed format.
9044
9045         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
9046         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
9047
9048         * mini-ops.h: Add doubleword forms of many ops and packing ones.
9049
9050         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
9051
9052         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
9053
9054         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
9055
9056         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
9057         add more ops.
9058
9059         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
9060         version as the enum in mini.h.
9061
9062         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
9063         for sse3 ops, check the simd_version field if present. This way the code
9064         works with all versions of sse.
9065
9066 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9067
9068         * simd-intrinsics.c: Fixed intrinsic name typo.
9069
9070         * mini.h: Added missing simd exported function.
9071
9072         * basic-simd.cs: Added tests for Vector4ui.
9073         Fixed broken test for Vector16b.
9074
9075 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
9076
9077         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
9078         the max length to 64.
9079
9080 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9081
9082         * method-to-ir.c: Only do the fast virtual generic method call for
9083         non-wrapper methods.
9084
9085         * mini.h, mini-trampolines.c: The new generic virtual remoting
9086         trampoline handles virtual method calls via the vtable (as done by
9087         the fast virtual generic method calls) to remoting proxies.
9088
9089         * mini.c (mono_jit_create_remoting_trampoline): For generic
9090         methods reate a generic virtual remoting trampoline.
9091
9092         * mini-amd64.h: Enable fast virtual generic method calls again.
9093
9094 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9095
9096         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
9097         restore registers when doing tail calls.
9098
9099 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9100
9101         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9102         Vector4ui.
9103
9104 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9107
9108 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9109
9110         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9111
9112 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9113
9114         * basic-simd.cs: Retrofit for API changes.
9115
9116 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9117
9118         * mini-ppc.c: Handle integer stack arguments for tail calls.
9119
9120 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9121
9122         * optflags-def.h: Removed sse3 optimization.
9123
9124         * driver.c: Same.
9125
9126         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9127         sse3.
9128
9129         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9130
9131         * mini.h: Added enumeration with simd versions.
9132
9133         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9134         for detecting SSE3.
9135
9136         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9137
9138         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9139
9140 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9141
9142         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9143
9144         * basic-simd.cs: Fixed test naming.
9145
9146 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9147
9148         * mini-ops.h: Added ops for packed and saturated math, shifts
9149         and packing/unpacking.
9150
9151         * cpu-x86.md: Added descriptors for the above ops.
9152
9153         * mini-x86.c: Added code to emmit the above ops.
9154
9155         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9156
9157 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9158
9159         * aot-compiler.c (compile_method): Enable AOT for generic code.
9160
9161         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9162
9163 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9164
9165         * mini.c: add a workaround for a common screwup that ends up blamed
9166         to mono (other processes blocking signal delivery).
9167
9168 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9169
9170         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9171         in the LDFLD/STFLD opcodes. Fixes #432673.
9172
9173         * iltests.il.in: Add a new test.
9174
9175 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9176
9177         * mini-arm.c: attach the thread in unmanaged->managed transitions
9178         using delegates (bug #433148).
9179
9180 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9181
9182        * basic-simd.cs: Use new ShuffleSel constants.
9183
9184 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9185
9186         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9187
9188         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9189         only disable simd intrinsics if no sse2 is detected.
9190
9191         * optflags-def.h: Added sse3.
9192
9193         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9194         is disabled.
9195
9196 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9197
9198         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9199         when adding delegate-invoke wrappers.
9200
9201 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9202
9203         * Makefile.am: Reenable the simd tests.
9204
9205 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9206
9207         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9208           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9209           other vreg is allocated to that hreg.
9210
9211         Contributed under MIT/X11 license.
9212
9213 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9214
9215         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9216         yet checked in.
9217
9218 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9219
9220         * basic-simd.cs: New test suite for SIMD intrinsics.
9221
9222         * Makefile.am: Added new tests.
9223
9224 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9225
9226         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9227
9228         * mini-ops.h: Same.
9229
9230         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9231
9232         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9233         using SSE2 aware opcodes.
9234
9235         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9236         is enabled, this code path is only reachable if conversion ops are emmited after
9237         mono_method_to_ir.
9238
9239         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9240
9241         This optimization saves 6 bytes per conversion against the old version.
9242
9243 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9244
9245         * aot-compiler.c (compile_method): Don't skip methods referencing 
9246         generic methods without a corresponding entry in token_info_hash, since
9247         encode_method_ref () can handle all generic methods now.
9248
9249         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9250         generic context is set.
9251         
9252         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9253         generic sharing of LDTOKEN.
9254
9255 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9256
9257         * mini-amd64.h: Temporarily disabled fast virtual generic method
9258         calls because it breaks the System.Runtime.Remoting tests.
9259
9260 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9261
9262         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9263
9264         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9265         so inlining actually works.
9266         (check_inline_caller_method_name_limit): Ditto.
9267
9268 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9269
9270         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9271         64 bit safety (from Olaf Hering and Andreas Farber).
9272
9273 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9274         
9275         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9276         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9277         unused virtual call support code.
9278
9279         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9280         
9281         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9282         which can't use aot trampolines.
9283         (decode_patch): Don't create aot trampolines for methods which can't use
9284         them.
9285
9286         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9287         use aot trampolines.
9288
9289         * mini.h: Bump AOT image format version.
9290         
9291 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9292
9293         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9294         to save_token_info () since cmethod is inflated for constrained calls.
9295
9296         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9297
9298 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9299
9300         * Makefile.am: Add build rules for ppc64.
9301         This avoids the build failing at pedump with unresolved symbols
9302         due to lack of arch_sources. Instead it will now fail earlier
9303         due to lack of cpu-ppc64.md.
9304
9305         Contributed under MIT/X11 license.
9306
9307 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9308
9309         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9310         tail calls.
9311
9312         * iltests.il.in: Add test case for tail call with many arguments.
9313
9314 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9315
9316         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9317         to the fast virtual generic method code until the aot case is fixed.
9318
9319 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9320
9321         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9322
9323 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9324
9325         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9326         thunks.
9327
9328 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9329         
9330         * simd-intrinsics.c: Forgot to add this one.
9331
9332         * mini-codegen.c: Fix macro in case SIMD is not supported.
9333
9334 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9335         
9336         This patch land initial JIT support for simd intrinsics.
9337
9338         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9339
9340         * Makefile.am: Added simd-intrinsics.c
9341
9342         * simd-intrinsics.c: New file with simd instrinsic related
9343         code.
9344
9345         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9346
9347         * cpu-x86.md: Add simd related instructions.
9348
9349         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9350
9351         * driver.c: Added two new --regression variants.
9352
9353         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9354
9355         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9356
9357         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9358         extract some complicated logic to helper functions.
9359
9360         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9361
9362         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9363
9364         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9365         the specialized simplification pass.
9366
9367         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9368
9369         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9370
9371         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9372         table.
9373
9374         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9375         if MONO_ARCH_NEED_SIMD_BANK is defined.
9376
9377         * mini-ops.h: Added the new simd ops.
9378
9379         * mini-x86.c: Added mono_arch_xregname.
9380
9381         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9382
9383         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9384
9385         * mini-x86.h: Define simd related MONO_ARCH macros.
9386
9387         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9388
9389         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9390
9391         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9392         MONO_CLASS_IS_SIMD to deal with simd related IR.
9393
9394         * mini.h (MonoInst): Added spill_var to the backend union.
9395
9396         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9397
9398         * mini.h: Added forward declarations of the new simd fuctions.
9399
9400         * optflags-def.h: Added new optimization names SIMD.
9401
9402         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9403
9404         * regalloc.h: Added support for working with 3 register banks.
9405
9406         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9407
9408         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9409
9410 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9411
9412         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9413
9414 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9415
9416         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9417         instead of one on 64 bit systems.
9418
9419         * method-to-ir.c: Remove unused includes.
9420
9421 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9422
9423         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9424         cfg->used_int_regs, since the two are different on arm.
9425
9426 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9427
9428         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9429         mono_method_get_vtable_index() to get the vtable index.
9430
9431 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9432
9433         * method-to-ir.c (mono_method_to_ir2): Don't create native
9434         wrappers for array methods, because they're never called (and if
9435         they were called they wouldn't work).
9436
9437 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9438
9439         * method-to-ir.c (mono_method_to_ir2): Array methods are
9440         special-cased and must not be invoked indirectly via the (M)RGCTX
9441         when generic sharing is turned on.  Fixes #431413.
9442
9443 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9444
9445         * method-to-ir.c: When generic sharing is active, call
9446         non-interface virtual generic methods via the standard trampoline.
9447
9448         * mini-trampolines.c: Handle virtual generic shared methods.
9449
9450         * mini.h, mini-x86.c, mini-x86.h: New argument for
9451         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9452         method thunks and which is the trampoline to call if the lookup
9453         fails.  Enable the virtual generic method thunk for x86.
9454
9455         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9456         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9457         argument but assert that it's NULL, because these archs don't yet
9458         implement the virtual generic method thunk.  Changes in the IMT
9459         thunk data structures.
9460
9461 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9462
9463         * aot-compiler.c (emit_globals): Avoid invalid characters in
9464         the static linking symbol.
9465
9466         * objects.cs: Add a test for the range check optimization. Fix warnings.
9467
9468         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9469         optimization from the current JIT.
9470
9471         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9472         later in decompose_array_access_opts () to allow more optimizations.
9473
9474         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9475         mono_decompose_soft_float () for consistency.
9476
9477         * mini-ops.h: Fix arguments of OP_STRLEN.
9478
9479         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9480         into a separate function.
9481         (reset_cast_details): Ditto.
9482         (handle_unbox): Save cast details. Fixes #431254.
9483
9484         * method-to-ir.c: Remove some obsolete FIXMEs.
9485
9486 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9487
9488         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9489
9490 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9491
9492         * mini-codegen.c: More work on macros to make them
9493         ready for multiple regbanks.
9494
9495 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9496
9497         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9498
9499         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9500
9501 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9502
9503         * mini-codegen.c (mono_spillvar_offset): Proper support for
9504         multiple regbanks.
9505
9506 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9507
9508         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9509         the stack overflow changes.
9510
9511 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9512
9513         * mini-codegen.c: Make all bank macros depend on reg_bank.
9514
9515         * mini-codegen.c (mono_local_regalloc): Make free mask
9516         initialization regbank aware.
9517
9518 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9519
9520         * mini-codegen.c (mono_local_regalloc): Extract callee
9521         mask selection to a function and make it regbank aware.
9522
9523 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9524
9525         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9526         code to deal with many regbanks.
9527
9528 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9529
9530         * mini-codegen.c: More fp->regbank changes.
9531
9532 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9533
9534         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9535         of a hardcoded constant.
9536
9537 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9538
9539         * method-to-ir.c (type_from_stack_type): Fix typo.
9540
9541 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9542
9543         * mini-ia64.c (emit_move_return_value): Convert float return values to
9544         double.
9545
9546         * objects.cs: Add a new test.
9547         
9548         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9549         VARARG methods to fix an assert later.
9550
9551         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9552         end so it at least compiles.
9553
9554 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9555
9556         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9557
9558 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9559
9560         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9561         optimization to a new function (emit_optimized_ldloca_ir) and enable
9562         it for both ldloca and ldloca_s.
9563
9564 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9565
9566         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9567         gshared CASTCLASS code.
9568
9569         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9570         amd64, where the libc stack unwinder encounters stack frames referring to
9571         native code in unmapped memory.
9572
9573         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9574         sharing.
9575
9576         * generics.cs: Add new test.
9577
9578 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9579
9580         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9581         add a check that one of the ARM_FPU_ constants is defined.
9582
9583         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9584         
9585         * mini-exceptions.c: Fix build on non-altstack platforms.
9586
9587         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9588         sharing of vtypes.
9589
9590         * ir-emit.h: Add a comment to NEW_PCONST.
9591
9592         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9593
9594         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9595
9596         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9597         after the changes to MonoJitDomainInfo.
9598
9599 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9600
9601         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9602
9603 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9604
9605         * mini-ppc.c: Compiler warning fixes.
9606
9607 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9608
9609         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9610         for pinvokes.
9611
9612 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9613
9614         * exceptions-ppc.c, mini-ppc.h: Compile
9615         mono_arch_handle_altstack_exception() on Darwin, too.
9616
9617 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9618
9619         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9620         work on archs which don't have generic sharing implemented, only
9621         without the vtable_arg.
9622
9623 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9624
9625         * mini.c: Added comment explaining why delegate ctor icall
9626         wrappers are compiled.
9627
9628 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9629
9630         * mini.c: Don't produce trampolines to delegate ctor icall
9631         wrappers but compile them upfront.
9632
9633 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9634
9635         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9636         runtime-set function when going back to managed code. Currently this
9637         is used to set back the protection on the soft ovf pages and/or to
9638         throw the stack overflow exception that happened in unmanaged code.
9639
9640 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9641
9642         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9643         runtime-set function when going back to managed code. Currently this
9644         is used to set back the protection on the soft ovf pages and/or to
9645         throw the stack overflow exception that happened in unmanaged code.
9646
9647 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9648
9649         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9650         the support code for restoring stack protection after stack overflows
9651         that happen in unmanaged code. Don't set the exec permission on the
9652         soft overflow area.
9653
9654 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9655
9656         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9657         delegate->method_ptr is set. Fixes #428054.
9658
9659 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9660
9661         * tests.cs: Rename to ratests.cs.
9662
9663         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9664         emit_get_rgctx_... functions.
9665
9666 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9667
9668         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9669
9670 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9671
9672         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9673         before asserting that method is sharable.
9674
9675 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9676
9677         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9678         whether method needs a static RGCTX wrapper used instead of
9679         complex conditions.
9680
9681         * generic-sharing.c, mini.h: A few functions moved to
9682         metadata/generic-sharing.c.
9683
9684 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9685
9686         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9687         Generic code sharing for value types, which essentially means
9688         treating value type methods like static methods.  The RGCTX is
9689         passed in the same way.
9690
9691 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9692
9693         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9694         opcode when creating multi-dimensional arrays of open types.
9695
9696         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9697         open generic types.
9698
9699         * generics.cs: Add a test.
9700
9701         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9702
9703 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9704
9705         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9706
9707         * mini.c (mini_method_compile): Set it when running under the debugger. 
9708
9709         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9710         vreg optimization if the flag is set.
9711
9712         * driver.c (mono_main): Add --attach= option to pass options to
9713         the attach agent.
9714
9715         * mini.c (sigquit_signal_handler): Start the attach agent.
9716
9717         * ssapre.c: Disable this to save space since it is not yet ported to
9718         linear IR.
9719
9720         * regalloc2.c: Disable this to save space.
9721
9722         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9723
9724 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9725
9726         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9727         the -v option useful again.
9728
9729 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9730
9731         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9732         --break-at-bb.
9733
9734         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9735         arrays of arrays. Fixes #428406.
9736
9737         * method-to-ir.c (mini_emit_castclass): Ditto.
9738
9739         * objects.cs: Add new test.
9740         
9741 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9742
9743         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9744         was wrong at it choked against target_type_is_incompatible for byref types.
9745
9746 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9747
9748         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9749         places.
9750
9751 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9752
9753         * mini-exceptions.c: update a few more exceptions-related counters.
9754
9755 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9756
9757         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9758         new functions to allocate from persistent mempools.
9759
9760 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9761
9762         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9763         multiple register banks in the future.
9764
9765         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9766
9767 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9768
9769         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9770
9771         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9772
9773         * mini.h: Export type_to_eval_stack_type.
9774
9775         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9776         is only ins->klass of byref types.
9777
9778 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9779
9780         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9781         (mini_emit_memcpy2): Ditto.
9782
9783         * mini-amd64.c: Fix a warning.
9784
9785 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9786
9787         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9788         linking.
9789
9790 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9791
9792         * method-to-ir.c: Extract stloc micro-optimization to a
9793         function and apply it to all cases.
9794
9795 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9796
9797         * method-to-ir.c: Don't fail generic code sharing in cases we
9798         already support.
9799
9800 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9801
9802         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9803
9804 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9805
9806         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9807         implementation.
9808
9809 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9810
9811         * trace.c: make tracing more useful and correct, with per-thread
9812         id and indent info.
9813
9814 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9815
9816         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9817         doing a method call and the argument is an R4.
9818
9819 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9820
9821         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9822         generic methods.
9823
9824 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9825
9826         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9827
9828 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9829
9830         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9831         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9832
9833 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9834
9835         * driver.c: Add a --agent argument (not supported yet) to load managed
9836         agent assemblies before loading the main assembly, similarly to how the
9837         Java VM handles agents.
9838
9839 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9840
9841         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9842         function to do stack layout of local variables.
9843
9844 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9845
9846         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9847         calculation.
9848
9849 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9850
9851         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9852         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9853         JIT if DISABLE_JIT is defined.
9854
9855         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9856         defined.
9857
9858 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9859
9860         * iltests.il.in: Disable the fconv test on PPC (the result is
9861         undefined according to ECMA).
9862
9863 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9864
9865         * iltests.il.in: Enable tail call tests for PPC.
9866
9867         * mini.h: Add variable for storing incoming valuetype argument
9868         addresses for tail calls.
9869
9870         * mini-ppc.c: Implement valuetype arguments and return values for
9871         tailcalls on Linux.
9872
9873 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9874
9875         * mini-ppc.c: Partially implement tail calls (struct arguments and
9876         return values not supported).
9877
9878         * method-to-ir.c: Enable tail calls on PPC.
9879
9880 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9881
9882         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9883         runtime-invoke wrappers to work around the problem of them getting
9884         assigned to a random class.
9885
9886         * aot-runtime.c (mono_aot_get_method): Ditto.
9887         
9888 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9889
9890         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9891         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9892
9893 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9894
9895         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9896         until they're implemented properly.
9897
9898         * exceptions-ppc.c: Use arch-independent exception-handling code
9899         instead of custom one.
9900
9901         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9902         for Linear IR.
9903
9904         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9905
9906         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9907         applies when __powerpc__ is defined.
9908
9909 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9910
9911         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9912         methods to their code to avoid computing the full name of wrappers and
9913         doing a lookup in a string hash table.
9914
9915 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9916
9917         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9918         we identify bblocks before method_to_ir () is ran.
9919
9920         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9921         Also avoid optimizing branches pointing to themselves.
9922
9923         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9924
9925 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9926
9927         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9928
9929 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9930
9931         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9932         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9933         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9934         'buf'.
9935
9936         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9937         jumped to the same entry in plt_jump_table.
9938
9939 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9940
9941         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9942         dynamic images.
9943
9944 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9945
9946         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9947         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9948         #421807.
9949
9950 2008-08-29  Geoff Norton  <gnorton@novell.com>
9951
9952         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9953         segment, and doesn't properly handle .space as .text.  Fixes
9954         AOT Mach/ARM
9955
9956 2008-08-29  Geoff Norton  <gnorton@novell.com>
9957
9958         * mini.c: Disable the mach exception handler when running on 
9959         ARM
9960
9961 2008-08-29  Geoff Norton  <gnorton@novell.com>
9962
9963         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9964         globals on Darwin/ARM
9965
9966 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9967
9968         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9969         since too many things depend on it. Instead, call 
9970         mono_runtime_set_no_exec ().
9971         
9972         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9973         the new JIT.
9974
9975         * aot-compiler.c: Add an 'asm-only' AOT option.
9976
9977         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9978                 
9979         * aot-compiler.c (compile_method): Disable gshared support for now as it
9980         doesn't yet work.
9981
9982 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9983
9984         * mini-amd64.h : Fix a compiler warning.
9985
9986         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9987           Changed to use a callback function to retrieve the unwind info.
9988           This avoids problems observed when code blocks were removed by
9989           unloading an app domain.
9990
9991         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9992           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9993           to work properly.
9994
9995         Contributed under MIT/X11 license.
9996
9997 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9998
9999         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
10000           case to keep the stack aligned to 8.
10001
10002         Contributed under MIT/X11 license.
10003
10004 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
10005
10006         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
10007         avoid repeated linear searches.
10008
10009 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
10010
10011         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
10012         methods it can't handle.
10013         
10014         * aot-compiler.c (add_method): Avoid adding a method twice.
10015         (add_wrappers): Add runtime invoke wrappers for all methods.
10016
10017         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
10018         function to create an aot-compatible version of this trampoline.
10019
10020         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
10021
10022 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
10023
10024         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
10025
10026         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
10027         with a generic sharing failure.
10028
10029         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
10030
10031         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
10032         CEE_RETHROW. Fixes #419634.
10033
10034         * mini.c (mono_method_to_ir): Ditto.
10035
10036         * exceptions.cs: Add a new test.
10037         
10038         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
10039         to mono_type_stack_size_internal () since some callers might not pass in
10040         an rgctx.
10041
10042         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
10043         instrument_prolog. Fixes #419878.
10044
10045         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
10046         doubles in soft float mode volatile.
10047
10048 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
10049
10050         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
10051
10052         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
10053         to handle soft float correctly.
10054
10055         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
10056         the fast path.
10057
10058         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
10059
10060         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
10061         to sp, since the generics catch code requires it.
10062
10063         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
10064         copying.
10065
10066         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
10067         mono_arch_emit_imt_argument ().
10068
10069         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
10070
10071         * mini-arm.c tramp-arm.c: Generic sharing updates.
10072
10073 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
10074
10075         * mini-arm.c: Fix the arm build.
10076
10077         * generic-sharing.c (mini_type_get_underlying_type): New helper function
10078         handling enums, generic instances and generic sharing.
10079         (mini_type_stack_size_full): Ditto.
10080
10081         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
10082         
10083         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
10084
10085         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
10086
10087         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
10088         trampolines.
10089
10090         * mini-arm.c: Various small generic sharing changes.
10091
10092         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
10093         this for x86.
10094         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
10095         custom code.
10096
10097         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
10098         helper function to return a generic class init trampoline.
10099
10100         * method-to-ir.c mini.c: Use it.
10101         
10102         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10103         arch-specfic function to return a generic class init trampoline.
10104
10105         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10106         the GENERIC_CLASS_INIT custom code.
10107
10108         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10109         a fatal error, not a sharing failure.
10110
10111         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10112         needed.
10113
10114         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10115         trampoline argument from MONO_ARCH_VTABLE_REG.
10116
10117         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10118         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10119         argument, and pass the vtable in VTABLE_REG.
10120
10121         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10122         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10123         argument, and pass the vtable in VTABLE_REG.
10124         (mono_arch_create_trampoline_code_full): Remove some special casing for
10125         the rgctx fetch trampoline.
10126
10127         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10128         Fixes #419273.
10129
10130         * iltests.il: Add a test for it.
10131
10132 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10133
10134         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10135
10136         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10137         no longer needed.
10138
10139         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10140         use mono_jit_info_table_find () to avoid recursion.
10141         (mono_delegate_trampoline): Add a sync wrapper here.
10142
10143         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10144         here.
10145
10146         * mini.c (mono_method_to_ir): Ditto.
10147         
10148         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10149         add_sync_wrapper argument. Don't add a sync wrapper here.
10150         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10151
10152         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10153         
10154 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10155
10156         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10157           of nonvolatile registers back from MonoContext to CONTEXT.
10158
10159         Contributed under MIT/X11 license.
10160
10161 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10162
10163         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10164           arguments on Winx64 there are only 4 argument registers.  For this
10165           logic to work the last argument must be pulled from the stack.  
10166
10167         Contributed under MIT/X11 license.
10168
10169 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10170
10171         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10172
10173         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10174         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10175         encode/decode_method_ref ().
10176
10177         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10178
10179         * aot-runtime.c (decode_patch): Ditto.  
10180
10181         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10182         MONO_PATCH_INFO_METHOD.
10183
10184         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10185         MonoGenericJitInfo.
10186
10187         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10188         MonoGenericJitInfo.
10189
10190         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10191
10192         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10193         one from the caller.
10194
10195         * aot-runtime.c (decode_generic_inst): New function to decode and
10196         return a interned generic inst.
10197         (decode_klass_ref): Use it.
10198         (decode_method_ref): Ditto.
10199
10200         * aot-compiler.c (emit_exception_debug_info): Save 
10201         jinfo->has_generic_jit_info too.
10202
10203 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10204
10205         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10206
10207         * iltests.il.in: Add a test for fconv_to_i.
10208
10209         * liveness.c: Disable the liveness2 pass for now to save space.
10210
10211         * regalloc2.c: Include mempool-internals.h to fix warnings.
10212
10213         * aot-compiler.c (encode_method_ref): Encode the context of generic
10214         instance methods.
10215
10216         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10217         the context saved in the aot file.
10218
10219         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10220
10221         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10222
10223         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10224         volatile so they won't be optimized away.
10225
10226 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10227
10228         * ssa.c:
10229         * ssa2.c:
10230         * mini.c:
10231         * regalloc2.c:
10232         * dominators.c: Remove duplicated functions that now are in
10233         mempool-internals.h.
10234
10235 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10236
10237         * aot-compiler.c: Fix warnings.
10238
10239         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10240
10241         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10242
10243         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10244         as the patch type.
10245
10246         * mini.c (mono_resolve_patch_target): Ditto.
10247         
10248         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10249         (encode_klass_ref): Add support for encoding VARs/MVARs.
10250
10251         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10252
10253         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10254         the handling of the got entries into a separate 'decode_got_entry' function.
10255         Add support for RGCTX_FETCH.
10256
10257         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10258         clobbered by the trampoline code.
10259
10260         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10261         not clobbered by the indirect calling code.
10262
10263 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10264
10265         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10266         to fix the build.
10267
10268 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10269
10270         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10271         signature using the compilation mempool otherwise we would leak it.
10272
10273 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10274
10275         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10276         mono_emit_abs_call ().
10277
10278         * patch-info.h: Add GENERIC_CLASS_INIT.
10279
10280         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10281
10282         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10283         as their target as a near call.
10284
10285         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10286         ABS handling code.
10287         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10288
10289         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10290         call to a runtime function described by a patch.
10291
10292         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10293         mono_emit_abs_call, this has the advantage that the ABS handling code in
10294         mono_codegen () can handle them both, and can handle other stuff in the
10295         future without additional code.
10296
10297         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10298         entry.
10299         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10300         abs addresses.
10301
10302         * mini.h: Add missing bblock related prototypes.
10303
10304         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10305         reverse_inst_list_len fields.
10306
10307         * mini.c: Refactor this file a bit by moving branch optimizations to 
10308         branch-opts.c.
10309
10310         * method-to-ir.c: Merge generic sharing changes missed earlier.
10311
10312         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10313
10314         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10315         shared patches. Process METHODCONST as a shared patch.
10316
10317         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10318         as it crashes on the 2.0 mscorlib.
10319
10320         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10321         to cause crashes.
10322         
10323         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10324         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10325         by IMT.
10326
10327         * aot-compiler.c: Reorganize the got handling code to be a bit more
10328         understandable.
10329
10330 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10331
10332         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10333         mono_patch_info_equals/hash, and use it to massively simplify
10334         get_plt_index ().
10335
10336         * mini.c (mono_patch_info_hash): Simplify this and add support for
10337         more patch types.
10338
10339         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10340
10341         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10342         handling code, since an offset is not enough to identify a trampoline.
10343
10344         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10345
10346 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10347
10348         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10349
10350         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10351
10352         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10353
10354         * decompose.c: PPC decompositions for various ops.
10355
10356         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10357
10358 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10359
10360         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10361         call the generic trampoline code using a call, instead of a jump, to
10362         remove some special casing from the generic trampoline code.
10363
10364         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10365         (mono_codegen): Ditto.
10366
10367         * aot-compiler.c aot-runtime.c: Ditto.
10368
10369         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10370
10371         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10372         helper function to find the offset corresponding to a lazy fetch trampoline.
10373
10374         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10375         when doing generic sharing.
10376
10377         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10378         places.
10379         
10380         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10381         mini-trampolines.c to be with the other trampoline creation functions.
10382
10383         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10384         as it is equal to method->signature in most cases, add a 
10385         mono_emit_method_call_full variant which takes a signature and an imt
10386         argument as well.
10387
10388 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10389
10390         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10391         to this function, since it could be computed easily from the method 
10392         argument.
10393         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10394         more.
10395
10396         * method-to-ir.c mini.c: Remove references to 
10397         compile_generic_method_wo_context.
10398
10399         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10400         generic method calls.
10401         
10402         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10403         dimensional non-szarrays.
10404
10405         * mini.c (mini_init): Register mono_array_new_1.
10406
10407         * jit-icalls.c (mono_array_new_1): New jit icall.
10408
10409         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10410         pointing to the method.
10411
10412         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10413         method addresses belonging to METHOD_JUMP patches in the 
10414         jump_target_got_slot_hash.
10415         (mono_aot_load_method): Ditto.
10416
10417         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10418         METHOD_JUMP patches.
10419
10420         * mini.c (mini_create_jit_domain_info): New helper function which 
10421         initializes/frees domain->runtime_info.
10422         (mini_free_jit_domain_info): Ditto.
10423         (mini_init): Install the domain hook functions with the runtime.
10424
10425         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10426         information maintained by the JIT.
10427
10428         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10429         insertion into jump_table_hash into mono_codegen (), also implement proper
10430         locking.
10431
10432         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10433         tail calls, it is already done by the aot code.
10434         
10435         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10436         mechanism on amd64.
10437
10438         * iltests.il.in: Make the jmp test a bit more complex.
10439
10440         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10441         generic instances which doesn't have a token.
10442
10443         * aot-runtime.c (decode_method_ref): Ditto.
10444         
10445         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10446         can handle this case now.
10447         (handle_box): Ditto.
10448
10449 2008-08-15  Geoff Norton  <gnorton@novell.com>
10450
10451         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10452         debugging check.
10453
10454 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10455
10456         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10457         calling generic methods.
10458
10459         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10460
10461         * aot-runtime.c (decode_patch_info): Ditto.
10462
10463         * mini.c (mono_resolve_patch_target): Ditto.
10464         
10465         * patch-info.h: Add METHOD_RGCTX.
10466
10467         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10468
10469 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10470
10471         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10472         arguments in registers.
10473
10474         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10475         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10476
10477         * mini.c (mini_method_compile): Abort aot compilation for generic
10478         methods if generic sharing is disabled.
10479         
10480         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10481         an mrgctx.
10482
10483         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10484         requiring an mrgctx.
10485
10486         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10487         store instructions when converting a vcall to a normal call.
10488
10489         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10490         mono_arch_find_jit_info.
10491
10492 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10493
10494         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10495         avoid calling mono_method_full_name () for every method even if the
10496         env var is not set.
10497         (check_inline_caller_method_name_limit): Ditto.
10498
10499 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10500
10501         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10502         assemblies in one run.
10503
10504         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10505         skipped methods if it is not 0.
10506
10507         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10508
10509 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10510
10511         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10512           MONO_ARCH_HAVE_UNWIND_TABLE.
10513
10514         Contributed under MIT/X11 license.
10515
10516 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10517
10518         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10519           from default optimizaton list on Winx64.
10520
10521         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10522
10523         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10524           the LMF from the MonoJitTlsData structure.
10525
10526         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10527
10528         Contributed under MIT/X11 license.
10529
10530 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10531
10532         * mini.c (sigsegv_signal_handler): Fix the build.
10533
10534         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10535         assembly->aot_module.
10536
10537         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10538         hash table. This simplifies and speeds up a lot of code, and fixes support
10539         for .netmodules.
10540
10541         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10542         with the runtime.
10543
10544         * mini-exceptions.c: Ditto.
10545         
10546         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10547         'native_offset' argument, since these are computed in the 
10548         mono_find_jit_info () function.
10549
10550         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10551         is used by exceptions-ppc.c.
10552
10553         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10554         mono_arch_find_jit_info ().
10555         
10556         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10557         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10558         generic code in mini-exceptions.c.
10559
10560 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10561
10562         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10563
10564         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10565         
10566         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10567         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10568         called while holding the loader lock. Fixes #415608.
10569         (mono_aot_get_method_from_token_inner): Ditto.
10570
10571 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10572
10573         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10574         to reduce differences between this and the generic implementation in
10575         mini-exceptions.c.
10576         (ves_icall_get_frame_info): Ditto.
10577
10578         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10579
10580         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10581         longer neccesarry.
10582
10583         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10584         mono_arch_get_call_filter () and make it non-static, for consistency with the
10585         other architectures.
10586
10587 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10588
10589         * mini.c:
10590         * local-propagation.c:
10591         * mini-x86.c: Correct the name of arch defines.
10592
10593 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10594
10595         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10596         NO_EMULATE_LONG_SHIFT_OPS define.
10597
10598 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10599
10600         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10601         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10602
10603         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10604         MACH fixes. Merged from the 2.0 branch.
10605
10606         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10607
10608         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10609         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10610
10611         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10612
10613         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10614         mono_marshal_get_native_wrapper () signature changes.
10615
10616 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10617
10618         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10619         conversion bug under arm.
10620
10621 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10622
10623         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10624
10625         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10626         with overflow checking.
10627
10628 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10629
10630         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10631         to the genmdesc.pl file
10632
10633 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10634
10635         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10636         arg_array in the soft-float versions of the LOAD/STORE macros.
10637
10638         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10639         implementation.
10640
10641         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10642
10643 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10644
10645         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10646         a float HFA. Fixes #413621.
10647
10648 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10649
10650         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10651         frame_size to args_size. Fixes build.
10652
10653 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10654
10655         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10656         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10657
10658         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10659         the stack are not unaligned. Fixes #413247.
10660         
10661 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10662
10663         * mini.c: update jitted methods performance counters.
10664
10665 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10666
10667         * mini-exceptions.c: increase the exceptions thrown performance
10668         counter in mono_handle_exception ().
10669
10670 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10671
10672         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10673         can work with netmodules.
10674
10675 2008-07-28  Geoff Norton  <gnorton@novell.com>
10676
10677         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10678         regression tests.
10679
10680 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10681
10682         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10683         correct place.
10684
10685 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10686
10687         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10688           The float param registers and other param registers must be the 
10689           same index on Windows x64.
10690
10691         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10692           ArgValuetypeAddrInIReg argument case.  Setting the argument
10693           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10694
10695         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10696           variable computed above as the copy length for arguments of storage
10697           type ArgValuetypeAddrInIReg.
10698
10699         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10700           ArgValuetypeAddrInIReg argument case.  This case will rely on
10701           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10702
10703         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10704           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10705           jump and tail call instructoins as they do not follow the typical call behavior.
10706
10707         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10708           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10709           local variable and pass the local variable by reference to the called method.
10710
10711         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10712           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10713           of a struct is passed in a register it must be saved with the other
10714           volatile argument on the stack.
10715
10716         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10717           frame pointer the stack adjustment value must be saved to the unwind 
10718           info structure.
10719
10720         Contributed under MIT/X11 license.
10721
10722 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10723
10724         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10725         which got lost in the merge.
10726
10727 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10728
10729         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10730         build.
10731
10732         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10733         
10734         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10735         icalls, since they won't be patched.
10736
10737         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10738         different code sequence when running under valgrind to prevent some valgrind
10739         errors.
10740
10741         * iltests.il.in: Add new regression test.
10742
10743         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10744         end with a throw.
10745
10746         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10747         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10748
10749         * iltests.il.in: Add new test.
10750
10751         * aot-compiler.c: Fix some warnings.
10752
10753         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10754         Fixes #412494.
10755
10756 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10757
10758         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10759         (mini_usage_jitdeveloper): Add a missing --wapi option.
10760
10761 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10762
10763         * mini-codegen.c: Simplify the is_fp macros.
10764         (free_up_ireg): Remove, use free_up_reg instead.
10765         (free_up_reg): Fix the fp case.
10766
10767 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10768
10769         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10770         lowered earlier.
10771
10772         * exceptions-x86.c: Merge some changes which seemed to have got lost
10773         in the linear-ir merge.
10774
10775         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10776
10777         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10778         long vreg volatile even if the variable was already created.
10779
10780         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10781         volatile variables.
10782
10783 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10784
10785         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10786
10787         * mini.c (mono_jit_compile_method_inner): Add support for 
10788         MONO_EXCEPTION_BAD_IMAGE.
10789
10790         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10791         mini_method_get_context () returns NULL. Fixes #356531.
10792
10793         * mini.c (mono_method_to_ir): Ditto.
10794         
10795         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10796         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10797
10798 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10799
10800         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10801         in the LDFTN implementation.
10802
10803 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10804
10805         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10806         code, patch calls to icalls, too, even if they're not in the
10807         shared generic code hash.  Fixes #411962.
10808
10809 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10810
10811         * cpu-x86.md: Increase the length of the fcall opcodes.
10812
10813         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10814         calls returning floats.
10815
10816         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10817         on NEWARR.
10818         
10819         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10820         missed earlier.
10821
10822         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10823         into the domain->method_code_hash.
10824
10825         * aot-compiler.c: Fix win32 build.
10826
10827         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10828         
10829         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10830         gshared NEWARR implementation.
10831
10832         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10833
10834         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10835         can be used outside of method_to_ir.
10836
10837         * mini.h (MonoCompile): Add arg_types field.
10838
10839         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10840         
10841         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10842         the values of the local arg_array and param_types array.
10843
10844 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10845
10846         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10847         got accesses might only get generated later when NEWOBJ is decomposed.
10848         
10849         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10850         looking up the native code of the target method when a delegate is called
10851         for the first time.
10852
10853         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10854         optimization.
10855
10856         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10857
10858         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10859         AOT work on platforms without a working dlsym implementation.
10860
10861         * mini.h: Bump AOT image format version.
10862         
10863 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10864
10865         * mini-exceptions.c: Free a MonoType with
10866         mono_metadata_free_type() instead of g_free().
10867
10868         * aot-runtime.c: Free a MonoType.
10869
10870 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10871
10872         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10873         optimization.
10874
10875         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10876         fp stack on x86.
10877
10878 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10879         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10880         profiler hook.
10881
10882 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10883
10884         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10885         NEWOBJ calls on valuetypes.
10886
10887         * iltests.il.in: Add new test.
10888
10889         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10890
10891 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10892
10893         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10894         is no longer needed.
10895
10896         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10897         non register sized integer arguments.
10898         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10899         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10900         emit_memcpy2 ().
10901
10902         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10903         CEE_MONO_RETOBJ.
10904         
10905         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10906         two a binop with different sized arguments is emitted.
10907
10908         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10909         instruction in the ins==NULL case.
10910
10911 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10912
10913         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10914
10915         * mini-x86.c: Fix osx build.
10916
10917         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10918         opcodes as well.
10919
10920         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10921         instruction for non int sized variables.
10922
10923         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10924         implementation.
10925
10926 2008-07-23  Robert Jordan  <robertj@gmx.net>
10927
10928         * method-to-ir.c: Fix MSVC build.
10929
10930 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10931
10932         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10933         a non int sized type, widen it to an int since newer versions of gcc seem to
10934         generate code which needs this.
10935
10936         * ssa2.c abcremoval2.c: Fix warnings.
10937
10938         * *: Merge the Linear IR branch.
10939
10940         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10941         the ChangeLog file there describes all the changes done over the years. 
10942         Further documentation can be found at www.mono-project.com/Linear_IL.
10943
10944 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10945
10946         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10947           The float param registers and other param registers must be the 
10948           same index on Windows x64.
10949
10950         Contributed under MIT/X11 license.
10951
10952 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10953
10954         * mini.c: Make the previous fix GC safe.
10955
10956 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10957
10958         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10959
10960 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10961
10962         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10963           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10964           ArgValuetypeAddrInIReg instead.
10965
10966         Contributed under MIT/X11 license.
10967
10968 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10969
10970         * mini-codegen.c (get_register_spilling): Fix a warning.
10971
10972 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10973
10974         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10975         for types which the initialization fails. Raises the provided exception
10976         at the right stop after cleanup.
10977
10978 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10979
10980         * aot-compiler.c: Free most of the memory allocated during compilation.
10981
10982         * mini.c (mini_parse_debug_options): Fix a leak.
10983         
10984         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10985         during aot compilation.
10986
10987 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10988
10989         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10990         it has too much register pressure.
10991
10992 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10993
10994         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10995
10996 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10997
10998         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10999         on x86.
11000
11001         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
11002         on amd64 similar to the way it is done on arm.
11003
11004         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11005
11006         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
11007         consistency, normalize error messages, avoid loading aot-only modules in
11008         normal mode.
11009
11010         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
11011         for consistency.
11012
11013         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
11014
11015 2008-07-11  Martin Baulig  <martin@ximian.com>
11016
11017         * debug-debugger.h
11018         (MonoDebuggerInfo): Add `interruption_request'.
11019
11020 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
11021
11022         * aot-compiler.c (emit_plt): Remove some dead code.
11023
11024         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
11025
11026         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
11027         return the plt info offset belonging to a given plt entry.
11028
11029         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
11030         mono_aot_get_plt_info_offset.
11031         
11032         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
11033         similar to the amd64 code by makeing jumps through a separate jump table 
11034         instead of embedding the jump addresses into the code.
11035
11036 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
11037
11038         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
11039         method.
11040
11041 2008-07-10  Martin Baulig  <martin@ximian.com>
11042
11043         * mini.c (mini_method_compile): Disable generics sharing when
11044         running in the debugger.
11045
11046 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11047
11048         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
11049
11050         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
11051         the local register allocator from running out of registers on x86 when 
11052         using aot.
11053
11054 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
11055
11056         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
11057         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
11058         C4146.
11059
11060         Contributed under MIT/X11 license.
11061
11062 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
11063
11064         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
11065         speed up the assembler.
11066
11067 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11068
11069         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
11070         support.
11071
11072         * mini.c: Move the soft float handling macros a bit earlier, add 
11073         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
11074         place.
11075
11076         * mini.h: Add prototype for mono_arch_fixup_jinfo.
11077
11078         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
11079         read-only to help catch code allocation requests.
11080         
11081         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
11082         and turn it off when using --aot-only or when compiling with --aot=full.
11083
11084         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
11085         jump table for switches from the normal domain mempool, not the code
11086         manager.
11087
11088         * mini-trampolines.c (get_unbox_trampoline): New function to return an
11089         unbox trampoline which handles aot-only mode too.
11090
11091         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
11092         an AOTed unbox trampoline.
11093
11094         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
11095
11096 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11097
11098         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
11099         ""
11100
11101         Contributed under MIT/X11 license.
11102
11103 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11104
11105         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11106           the unwind information for the method at the end of the allocated block.
11107           
11108         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11109           MonoCompileArch to hold the unwind info for SEH on Winx64
11110         
11111         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11112           frame pointer info for the method being compiled.
11113           
11114         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11115           the call to mono_exception_from_token.
11116           
11117         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11118           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11119           information is stored a the end of the method block because it is all 32-bit offset based.
11120
11121         Contributed under MIT/X11 license.
11122
11123 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11124
11125         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11126
11127         * wapihandles.c: Fix warnings.
11128
11129         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11130         mode.
11131
11132         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11133         mono_jit_compile_method in aot-only mode since that calls the type 
11134         initializer.
11135         
11136         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11137         get_delegate_invoke_impl in aot-only mode.
11138
11139         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11140
11141 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11142
11143         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11144
11145         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11146         is on by default.
11147
11148         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11149
11150         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11151         init trampoline from the AOT file as well.
11152
11153         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11154         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11155         code.
11156
11157         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11158         mono_init.
11159
11160         * exceptions-amd64.c: Add _full variants for the remaining exception code
11161         creation functions as well, allow emission of relocatable code, remove
11162         caching since that is now done by the caller.
11163
11164         * mini-exceptions.c: Add _full variants for the remaining exception code
11165         creation functions as well, add aot-only support.
11166
11167         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11168         if we can determine a proper token for them.
11169         (add_wrappers): Add a few more wrappers.
11170         (emit_method_code): Remove some dead code.
11171         (emit_trampolines): Emit exception code too.
11172
11173         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11174
11175         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11176         mono_array_new_va which avoids varargs.
11177
11178         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11179
11180         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11181         mono_arch_create_specific_trampoline () in all places.
11182
11183         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11184         a bit so it can be used for other things as well.
11185         
11186         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11187         on demand as well.
11188
11189         * exceptions-amd64.c: Rename the caching from the exception code creation
11190         functions, it is done by the caller instead.
11191         
11192         * exceptions-amd64.c: Change the signature of the exception code creation 
11193         functions to allow the creation of relocatable code later.
11194
11195         * mini-exceptions.c: Add a set of functions to query the various 
11196         runtime-generated exception functions.
11197
11198         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11199         mono_arch_.. () functions.
11200         
11201 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11202
11203         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11204
11205         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11206
11207         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11208         (mini_get_vtable_trampoline): Ditto.
11209
11210         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11211         code in the AOT case by returning the code size and a list of relocations to
11212         the caller.
11213
11214         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11215
11216 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11217
11218         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11219           clean the stack.
11220
11221         Contributed under MIT/X11 license.
11222
11223 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11224
11225         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11226         so the buffer size can be computed correctly. Fixes #404735.
11227
11228         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11229         normally as cfg->debug_info is already freed.
11230
11231 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11232
11233         * mini-amd64.c: For calls returning vtypes in registers, don't store
11234         the return address on the stack, instead allocate a separate local for
11235         it. Fixes #404729.
11236
11237 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11238
11239         * mini-trampolines.c, mini.h: Add an argument to
11240         mono_create_jit_trampoline_in_domain() for turning off the adding
11241         of the sync wrapper.
11242
11243         * mini.c: Use the JIT trampoline without sync instead of
11244         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11245         be patched.
11246
11247 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11248
11249         * driver.c: Turn on GSHARED optimization by default.
11250
11251 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11252
11253         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11254         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11255
11256         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11257         create a variant of the generic trampoline code callable from AOTed trampolines.
11258
11259         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11260         trampoline code callable from AOTed trampolines.
11261
11262         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11263
11264 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11265
11266         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11267         pass-through manner.
11268
11269         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11270         and don't fail sharing for them anymore.
11271
11272         * mini-exceptions.c: Handle exceptions in shared generic methods.
11273
11274         * generic-sharing.c: When checking the context of a generic
11275         method, also check its class's context.  Don't treat wrappers as
11276         sharable.
11277
11278         * mini-trampolines.c: Some code factored out to
11279         metadata/generic-sharing.c.  Handle the MRGCTX case.
11280
11281         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11282         we must deal with the method being of another instantiation of the
11283         class.  Add static rgctx invoke wrappers to generic methods.
11284
11285 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11286
11287         * mini.c: Provide all jit infos of generic shared methods with a
11288         generic jit info.
11289
11290         * mini-exceptions.c: Handle the new situation that a generic info
11291         might be available, but not info about the this/vtable/mrgctx
11292         variable.
11293
11294 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11295
11296         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11297         generic methods.
11298
11299 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11300
11301         * dominators.c (check_dominance_frontier): Fix a warning.
11302
11303         * mini.h: Add some missing prototypes.
11304
11305         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11306
11307         * driver.c (mono_jit_init_version): Correct the comments since the first
11308         argument should be the name of the root domain, not a filename.
11309
11310         * aot-runtime.c (make_writable): Error out if this is called while running
11311         with --aot-only.
11312         (load_aot_module): Ditto.
11313
11314         * aot-compiler.c: Really fix the computation of method indexes.
11315
11316         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11317         optimizations as this is no longer called frequently.
11318
11319         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11320         method and the invoke impl code and pass it to the delegate trampoline instead of
11321         just the delegate class.
11322
11323 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11324
11325         * aot-compiler.c: Fixup the computation of method indexes.
11326         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11327         the method builder infrastructure.
11328
11329         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11330         has no header.
11331
11332         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11333         mode, load the method right away instead of creating a trampoline.
11334
11335         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11336
11337         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11338         some checks a bit.
11339
11340 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11341
11342         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11343         (mono_aot_load_method): Use method_index instead of method->token.
11344
11345         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11346         can handle icalls etc. properly.
11347
11348         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11349
11350         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11351
11352         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11353         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11354         JIT_ICALL_ADDR patch type.
11355
11356         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11357
11358         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11359         request flag.
11360         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11361
11362         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11363
11364 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11365
11366         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11367         domain->jit_code_hash.
11368
11369 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11370
11371         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11372
11373 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11374
11375         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11376         get_this_arg_from_call, let it compute it when needed.
11377
11378         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11379         gsctx from code only when needed.
11380
11381         * mini-trampolines.c (get_generic_context): Rename this to 
11382         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11383         it can be called by the arch backends.
11384
11385         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11386
11387 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11388
11389         * driver.c (mono_main): Add experimental --aot-only command line option.
11390
11391         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11392         set.
11393
11394 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11395
11396         * driver.c (DllMain): Remove mono_module_handle.
11397
11398         Contributed under MIT/X11 license.
11399
11400 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11403         for emitting methods which are not in the source assembly. Detect and report
11404         failure of assembling+linking.
11405         
11406         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11407
11408         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11409
11410 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11411
11412         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11413
11414 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11415
11416         * mini.h: Remove some obsolete prototypes.
11417
11418         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11419
11420 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11421
11422         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11423         supported by Visual Studio, so use alloca().
11424
11425 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11426
11427         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11428         Fixes #402585.
11429
11430 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11431
11432         * mini.c: Fail sharing of a generic method if it contains an open
11433         catch clause (because we don't pass MRGCTXs yet).
11434
11435 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11436
11437         * mini.c: When compiling a method with generic sharing, insert the
11438         method instantiated with an all-Object generic context into the
11439         jit info table, instead of the context of the first instantiation
11440         of the method we happen to compile.
11441
11442 2008-06-18  Martin Baulig  <martin@ximian.com>
11443
11444         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11445         `major_version' and `minor_version'.
11446
11447 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11448
11449         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11450         mono_method_is_generic_sharable_impl() takes an additional
11451         argument specifying whether to treat type variables as reference
11452         types.
11453
11454 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11455
11456         * mini.h: Removed obsolete prototypes.
11457
11458 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11459
11460         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11461         already handle them.
11462
11463 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11464
11465         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11466         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11467         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11468         tramp-x86.c: Added a MonoGenericContext* argument to
11469         mono_arch_get_unbox_trampoline() so that it can call other
11470         functions which require it.
11471
11472 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11473
11474         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11475         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11476         mono_arch_get_this_arg_from_call() takes a
11477         MonoGenericSharingContext* as well.
11478
11479 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11480
11481         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11482         implement generic sharing of unbox.
11483
11484 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11485
11486         * mini.c: Don't compute the vtable to determine whether a field is
11487         special static, because it might not work for open types.
11488
11489 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11490
11491         * mini.c: Removed the unused token_type and token_source arguments
11492         from get_runtime_generic_context_ptr().
11493
11494 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11495
11496         * mini.c (ADD_BINOP): fix the build
11497
11498 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11499
11500         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11501         a widening op.
11502
11503 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11504
11505         * mini.h: Removed class relations enum that's not used anymore.
11506
11507 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11508
11509         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11510
11511         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11512         the lazy fetch trampoline access code.
11513
11514 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11515
11516         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11517
11518 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11519
11520         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11521
11522         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11523
11524         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11525
11526 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11527
11528         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11529         intrinsics.
11530
11531         * mini-ops.h: Add MIN/MAX_UN opcodes.
11532
11533         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11534         intrinsics.
11535
11536         * basic-math.cs: Add more min/max tests.
11537
11538         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11539
11540 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11541
11542         * mini.c: Small fix in the prologue of emit_castclass.
11543
11544 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11545
11546         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11547
11548         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11549         do not work even for unsigned types. Fixes #400014.
11550
11551         * basic-math.cs: Add regression tests for unsigned Min/Max.
11552
11553 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11554
11555         * mini.c: Added additional context_used argument to several
11556         functions, which will be needed for sharing generic methods.  Use
11557         GET_RGCTX macro wherever appropriate.  Declare only one
11558         context_used in mono_method_to_ir().
11559
11560 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11561
11562         * mini.c, generic-sharing.c: Removed generic class relations.
11563
11564         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11565         functions due to MRGCTX changes.
11566
11567 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11568
11569         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11570         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11571         with calculated IMT.
11572
11573         * mini.c: Generic sharing of calls via generic interfaces.
11574
11575         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11576         generic method with non-constant MonoGenericContext*.  Instead,
11577         the context is taken out of the method itself.
11578
11579 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11580
11581         * mini.c: Generic sharing of ldvirtftn.
11582
11583 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11584
11585         * mini.c: Generic sharing of ldftn.
11586
11587 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11588
11589         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11590
11591 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11592
11593         * mini.c: Generic sharing of the special case of ldtoken followed
11594         by a call to GetTypeFromHandle.
11595
11596 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11597
11598         * mini.c: Generic sharing of box for nullable types.
11599
11600 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11601
11602         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11603         are passed on the stack. Fixes #324807.
11604
11605 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11606
11607         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11608         for the ArgValuetypeAddrInIReg case.
11609
11610         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11611         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11612
11613         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11614         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11615         local variable and pass the local variable by reference to the called method.
11616           
11617         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11618         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11619
11620         Contributed under MIT/X11 license.
11621
11622 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11623
11624         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11625
11626         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11627         everything.
11628
11629 2008-06-10  Martin Baulig  <martin@ximian.com>
11630
11631         * debug-mini.c
11632         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11633
11634 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11635
11636         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11637         possible error when no arguments are passed.
11638
11639         Contributed under MIT/X11 license.
11640
11641 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11642
11643         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11644         where the file name is NULL.
11645
11646 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11647
11648         * mini.c: Fix s390 build.
11649
11650 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * trace.c (mono_trace_parse_options): Fix warnings.
11653
11654         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11655
11656 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11657
11658         * mini.c (remove_block_if_useless): Avoid printing the method name.
11659         
11660         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11661         MONO_INST_NEW.
11662
11663         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11664         LMF. Not yet used.
11665
11666         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11667         translated code after it has been patched.
11668
11669 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11670
11671         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11672         avoid problems during code patching on SMP systems.
11673         (emit_call): Avoid adding a patch info which is already added by 
11674         emit_call_body.
11675         (mono_arch_emit_exceptions): Ditto.
11676
11677 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11678
11679         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11680         MONO_TYPE_ISSTRUCT already checks for it.
11681
11682 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11683
11684         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11685           structs with floats on Winx64 the float registers are not used.  
11686           The integer registers are always used..
11687         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11688           only one register will be used and only if the size of the struct 
11689           is 1,2,4, or 8 bytes.
11690
11691         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11692           to work for Winx64.
11693
11694         Contributed under MIT/X11 license.
11695
11696 2008-06-05  Martin Baulig  <martin@ximian.com>
11697
11698         * debug-debugger.c (debugger_lookup_class): Also call
11699         mono_class_setup_methods() here; we're only called from RTI.
11700
11701 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11702
11703         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11704         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11705         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11706         Post-process object files and add dtrace-generated object, if necessary.
11707
11708         Contributed under MIT/X11 license.
11709
11710 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11711
11712         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11713         element class.
11714
11715         * mini.c: Generic sharing for unbox.any and castclass.
11716
11717 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11718
11719         * mini.c: Ignore tailcall prefix in shared generic code and when
11720         doing calls which require a vtable/rgctx argument.
11721
11722 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11723
11724         * mini.c: Don't free the JIT info.
11725
11726         * driver.c: Changes in the JIT info table testing code.
11727
11728 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11729
11730         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11731         interruption. Fix some warnings.
11732
11733         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11734         interruption_checkpoint.
11735
11736 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11737
11738         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11739         from embedding applications.
11740
11741 2008-06-02  William Holmes  <billholmes54@gmail.com>
11742
11743         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11744           reserving 32 bytes on the stack when making calls. 
11745
11746         Contributed under MIT/X11 license.
11747
11748 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11749
11750         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11751         the linear IL branch.
11752
11753         * driver.c: Print out more information for --version on arm.
11754
11755 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11756
11757         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11758         bb_exit instead, since out of line bblocks might not actually be emitted
11759         out-of-line.
11760         
11761         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11762         maximum epilog size for out of line bblocks if tracing is enabled.
11763
11764         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11765
11766 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11767
11768         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11769
11770 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11771
11772         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11773         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11774         opcodes.
11775
11776 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11777
11778         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11779         the 'value' to store is a constant.
11780
11781         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11782
11783         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11784         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11785
11786 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11787
11788         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11789         for accessing method->generic_container.
11790
11791 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11792
11793         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11794         
11795         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11796
11797         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11798
11799         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11800         fails.
11801
11802 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11803
11804         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11805
11806         * mini.c: Handle the case when mono_class_vtable () fails.
11807
11808 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11809         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11810         the stat profiler.
11811
11812 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11813
11814         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11815         together with domain sharing.
11816
11817 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11818
11819         * mini.c: Treat callvirts to final methods like non-virtual calls
11820         when doing generic sharing, i.e. look them up in the runtime
11821         generic context.
11822
11823 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11824
11825         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11826         with computed types (for generic sharing).
11827
11828         * mini.c: Generic sharing for mkrefany and refanyval.
11829
11830 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11831
11832         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11833         possible.
11834
11835         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11836         the generic sharing code.
11837         
11838         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11839         when needed.
11840
11841 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11842
11843         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11844
11845 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11846
11847         * driver.c: updated copyright date
11848
11849 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11850
11851         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11852         needed.
11853
11854 2008-05-19  Martin Baulig  <martin@ximian.com>
11855
11856         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11857         pointing to the new `_mono_debug_using_mono_debugger' variable.
11858
11859         * driver.c
11860         (mono_main): Check mono_debug_using_mono_debugger() rather than
11861         the `MONO_INSIDE_MDB' environment variable to check whether we're
11862         inside the debugger.
11863
11864 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11865
11866         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11867         argument.
11868
11869 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11870
11871         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11872
11873         * mini.c: Added mini_assembly_can_skip_verification. This
11874         function checks if the assembly requested to skip verification. 
11875         Fixes part of #387274.
11876
11877 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11878
11879         * mini.c (mini_get_method): Disable the check for open generic classes when
11880         using generic sharing.
11881
11882         * generics.cs: Add a test for #387034.
11883
11884         * mini.c (mini_get_method): Check whenever the method class is an open generic
11885         type, and return NULL in that case, causing a verification error. Fixes
11886         #384123.
11887
11888 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11889
11890         * driver.c (mono_main): Revert r102623. The right
11891         thing to do is to enable the verifier under verifiable
11892         unless a --security flag was passed.
11893
11894         We need this non-trivial behavior for --verify-all otherwise
11895         mcs-compileall won't be able to use it. As it needs everything to
11896         be verified under validil.
11897
11898 2008-05-06  Martin Baulig  <martin@ximian.com>
11899
11900         Fix #383749.
11901
11902         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11903         (mono_debugger_thread_cleanup): Likewise.
11904         (mono_debugger_extended_notification): Likewise.
11905
11906 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11907
11908         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11909         against both inflated and non-inflated methods. We need to check against the
11910         generic definition for cases where the instantiated method is not visible.
11911         We need to check against the inflated types for cases where the instantiation
11912         changes any super type. This fixes #382986.
11913
11914         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11915         that check for visibiliy as generic params only appears as the type subject
11916         of tokens on call opcodes. Field manipulation and ldftn must always
11917         target an exact type.
11918
11919 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11920
11921         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11922         if no related --security flag is passed.
11923
11924 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11925
11926         * mini-arch.h: Prepare support for ppc64.
11927
11928         Contributed under MIT/X11 license.
11929
11930 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11931
11932         * aot-runtime.c: Prepare support for ppc64.
11933
11934         Contributed under MIT/X11 license.
11935
11936 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11937
11938         * mini-ops.h: Prepare support for ppc64.
11939
11940         Contributed under MIT/X11 license.
11941
11942 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11943
11944         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11945
11946         Contributed under MIT/X11 license.
11947
11948 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11949
11950         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11951         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11952         assemblies on windows.
11953
11954 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11955
11956         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11957         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11958         * main.c: Use UTF-8 encoded command line instead of Windows default code
11959         page on Windows to support Unicode.
11960         * driver.c (DllMain): New function for mixed-mode assembly support.
11961         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11962         export __stdcall functions without decoration.
11963
11964         Contributed under MIT/X11 license.
11965
11966 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11967
11968         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11969         saving it very early.
11970
11971 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11972
11973         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11974         deleted.  The only way to access the new RGCTX is via the
11975         trampline.
11976
11977         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11978         vtable instead of the RGCTX to static methods.
11979
11980         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11981         accessing the new RGCTX.
11982
11983         * generic-sharing.c: There is no separation between self, type
11984         arguments and other types in the RGCTX anymore.
11985
11986 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11987
11988         * mini-amd64.c (add_general): Remove previous stack adjustment.
11989         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11990         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11991         for 32 bytes of stack space reserved for all calls.
11992         
11993         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11994         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11995         adjustment.
11996         
11997         Code contributed under MIT/X11 license.
11998
11999 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
12000
12001         * mini.c (mini_method_verify): Only verify non-inflated methods, check
12002         against the root definition, peeling out method and type instantiations.
12003         Cache verify success results, code that fails verification is still
12004         checked multiple times.
12005
12006 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
12009
12010 2008-04-23  Jonathan Chambers <joncham@gmail.com>
12011
12012         * mini-amd64.c (add_general): Always increment stack on Win64.
12013         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
12014         on Win64.
12015         
12016         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
12017         stack based argument handling on Win64.
12018         
12019         Code contributed under MIT/X11 license.
12020
12021 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
12022
12023         * Makefile.am (version.h): Add support for git-svn.
12024
12025 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
12026
12027         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
12028         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
12029         avoiding allocations and libc functions which might deadlock.
12030         
12031         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
12032         'no-gdb-backtrace' option is set.
12033
12034         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
12035
12036         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
12037
12038 2008-04-21  Martin Baulig  <martin@ximian.com>
12039
12040         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
12041         and `get_lmf_addr'; `notification_address' is no longer a pointer.
12042
12043 2008-04-21  Martin Baulig  <martin@ximian.com>
12044
12045         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
12046         `thread_vtable', `event_handler_ptr' and `event_handler'.
12047
12048 2008-04-21  Martin Baulig  <martin@ximian.com>
12049
12050         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
12051         allows delayed initialization of the `executable_code_buffer' when
12052         attaching.
12053
12054 2008-04-21  Martin Baulig  <martin@ximian.com>
12055
12056         * mini.h (mono_debugger_create_notification_function): Removed.
12057         * tramp-*.c (mono_debugger_create_notification_function): Removed.
12058
12059         * mdb-debug-info64.s
12060         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12061
12062         * mdb-debug-info32.s
12063         (MONO_DEBUGGER__notification_function): Added this in the .text section.
12064
12065         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
12066         currently only works on x86 and x86_64, so don't create it on ppc.
12067
12068 2008-04-21  Martin Baulig  <martin@ximian.com>
12069
12070         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
12071
12072         * mini.c
12073         (mini_method_compile): In the fp elimination check, check
12074         `debug_options.mdb_optimizations' in addition to
12075         mono_debug_using_mono_debugger().       
12076
12077         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
12078         disable some JIT optimizations which are only disabled when
12079         running inside the debugger.
12080         Added `--help-debug' option to describe the debugging options.
12081         (parse_debug_options): New static function to parse the `--debug'
12082         options, so we can easily add more stuff in future.
12083
12084 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
12085
12086         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
12087         the method has no body.
12088
12089 2008-04-19  Jonathan Chambers <joncham@gmail.com>
12090
12091         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
12092         assembly is not allowed in MSVC 64-bit compiler. 
12093         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
12094         as we get floating point exceptions everywhere.
12095         
12096         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
12097         correctly align arguments for call to throw_exception.
12098         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
12099         
12100         Code contributed under MIT/X11 license.
12101
12102 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12103
12104         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12105
12106 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12107
12108         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12109
12110         * mini-amd64.c (NEW_INS): Set cil_code.
12111
12112         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12113         from mini-amd64.c so all debugger related logic is in one place.
12114
12115         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12116         later won't have a random ip assigned to them.
12117
12118 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12119
12120         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12121         the arch specific function initializes code_size.
12122         (mono_create_delegate_trampoline): Ditto.
12123
12124         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12125         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12126         platforms.
12127
12128         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12129         running under the debugger.
12130
12131         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12132         debugger.
12133
12134         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12135         debugger. Also move the disabling of optimizations here from driver.c.
12136         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12137         debugger.
12138
12139         * mini.h (MonoCompile): Add a few new flags.
12140
12141 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12144         so the cil_code field of created MonoInst's is properly set.
12145         (mini_select_instructions): Ditto.
12146
12147         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12148         (MONO_INST_NEW_CALL): Ditto.
12149
12150         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12151         in many places so the ins->cil_code field is properly initialized.
12152
12153         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12154         place.
12155
12156 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * mini.c (mini_method_compile): Print a different message when compiling a 
12159         shared method.
12160         
12161         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12162         > 1.
12163
12164 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12165
12166         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12167         SSE2 instructions.
12168
12169         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12170         
12171 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12172
12173         * mini.c (handle_stack_args): Make this return void since its return value was
12174         never used. Also set cfg->unverifiable for invalid IL instead of calling
12175         G_BREAKPOINT ().
12176
12177 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12178
12179         * mini.c: Make sure "this" is live in catch clauses with type
12180         variables in shared generic code.
12181
12182 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12183
12184         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12185         generic_class_is_reference_type() to ensure the proper behaviour
12186         when sharing generic code and the type in question is a type
12187         argument.
12188
12189 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12190
12191         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12192         race conditions when printing thread dumps. Fixes #377738.
12193
12194 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12195         
12196         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12197         shows up when both MonoInst arguments can cause aliasig.
12198         There is likely no way in the current JIT to trigger this problem, but
12199         it showed up in the development of generics sharing, when in a new
12200         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12201         When the generics sharing code will be committed, its tests will be
12202         valid also for this bug.
12203
12204 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12207         PATCH_INFO_METHOD.
12208
12209         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12210         NULL.
12211
12212 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12213
12214         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12215         use a more detailed exception message for InvalidCastException.
12216
12217         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12218
12219         * driver.c (mono_main): Add --debug=casts option to turn on better 
12220         InvalidCastException message details.
12221
12222         * mini.c (mini_get_debug_options): New helper function to return the address of
12223         the debug_options variable.
12224
12225         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12226         the jit_tls TLS variable.
12227
12228         * mini.c (mono_jit_tls): New TLS variable.
12229
12230         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12231         option is used.
12232
12233 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12234
12235         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12236
12237         * mini.c: Removed verifer related stuff, code moved to verify.c.
12238
12239         * driver.c: Using code from verify.c instead of mini.c.
12240
12241 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12242
12243         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12244         longer valid.
12245
12246 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12247
12248         * mini.c (check_for_method_verify): Enabling verification of
12249         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12250         have been fixed.
12251
12252 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12253
12254         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12255         caller saved registers as well.
12256         
12257         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12258         saved registers as well.
12259
12260 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12261
12262         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12263
12264         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12265         code.
12266
12267 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12268
12269         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12270         to get_call_info.
12271         (get_call_info): Take a gsctx argument instead of 'cfg'.
12272
12273 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12274
12275         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12276         mono_verify_all is set.
12277
12278         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12279
12280         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12281
12282 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12283
12284         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12285         an exception.
12286
12287         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12288         verifier and the code generated by the compiler.
12289
12290 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12291
12292         * mini.c: Generic sharing of the non-nullable case of the box
12293         instruction.
12294
12295 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12296
12297         * inssel.brg: Fix the build.
12298
12299         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12300
12301 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12302
12303         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12304         Array:Address. Fixes #372410.
12305
12306         * iltests.il.in: New tests for readonly prefix.
12307
12308 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12309
12310         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12311         mini-trampolines.c.
12312
12313         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12314         mini-exceptions.c.
12315
12316         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12317         
12318         * mini.c (mono_decompose_op_imm): New helper function.
12319
12320         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12321         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12322         return value.
12323
12324         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12325         mono_arch_output_basic_block. Fix warnings.
12326
12327         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12328         for now.
12329
12330 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12331
12332         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12333         since the extra frame is now detected automatically inside the loop.
12334
12335         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12336         opts which are now in mono_peephole_ins ().
12337         
12338         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12339
12340         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12341         frames and skip duplicate managed-to-native frames. Fixes #367665.
12342
12343         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12344         opts which are now in mono_peephole_ins ().
12345         (mono_arch_peephole_pass_2): Ditto.
12346
12347         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12348
12349         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12350         arch independent peephole optimizations.
12351
12352         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12353         opts which are now in mono_peephole_ins ().
12354
12355         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12356         
12357         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12358
12359         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12360         pattern.
12361
12362         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12363         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12364         opcode. 
12365
12366 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12367
12368         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12369         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12370         return value.
12371
12372         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12373         mono_arch_output_basic_block. Fix warnings.
12374
12375 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12376
12377         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12378         conv.ovf.u.un.
12379
12380 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12381
12382         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12383         conv.ovf.u.un.
12384
12385         * iltests.il: Add new tests.
12386
12387 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12388
12389         * mini.c: Removed Windows version macros.
12390
12391 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12392
12393         * generic-sharing.c: Put reflection types in the extensible part
12394         of the runtime generic context.
12395
12396         * mini.c: Generic sharing of the GetTypeHandle special case of the
12397         ldtoken instruction.
12398
12399 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12400
12401         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12402
12403         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12404         
12405         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12406         consistency with the other version on the linear IR branch.
12407
12408         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12409
12410         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12411
12412         * iltests.il.in: Add new tests.
12413
12414 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12415
12416         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12417
12418         * iltests.il.in: Add new tests.
12419
12420 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12421
12422         * mini.c: Two variables with the same name were declared in
12423         nesting contexts and one wasn't initialized.  Fixed.
12424
12425 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12426
12427         * mini.c: Generic sharing of the initobj instruction.
12428
12429 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12430
12431         * mini.c: make the test to optimize ldtoken from typeof() more
12432         precise.
12433
12434 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12435
12436         * mini.c: Generic sharing of the initobj instruction for reference
12437         types.
12438
12439 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12440
12441         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12442         the mono_breakpoint_clean_code() code to perform bound checks.
12443
12444 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12445
12446         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12447         mono_arch_patch_callsite() to include the start of the managed method
12448         to be able to perform bound checks.
12449
12450 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12451
12452         * mini.c: Generic sharing for the isinst instruction.
12453
12454 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12455
12456         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12457         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12458         with the runtime generic context argument.
12459
12460         * mini.c: Share calls to several types of unsharable methods by
12461         putting the address of the method code in the runtime generic
12462         context and doing an indirect call.
12463
12464         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12465         to switches.
12466
12467 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12468
12469         * generic-sharing.c: Change due to a change in the runtime genric
12470         context API.
12471
12472 2008-03-15  Martin Baulig  <martin@ximian.com>
12473
12474         * tramp-x86.c
12475         (mono_arch_nullify_class_init_trampoline): Add call to
12476         mono_breakpoint_clean_code() to make things work when running
12477         inside the debugger.
12478
12479         * tramp-amd64.c
12480         (mono_arch_nullify_class_init_trampoline): Add call to
12481         mono_breakpoint_clean_code() to make things work when running
12482         inside the debugger.
12483
12484 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12485
12486         * inssel-long.brg (reg): Fix 64 bit build.
12487
12488 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12489
12490         * mini.c, mini.h: Share static generic code by passing it an
12491         implicit argument pointing to the runtime generic context.
12492
12493         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12494         inssel-long32-mips.brg: New opcodes for calling shared static,
12495         which need to be passed the runtime generic context.
12496
12497         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12498         argument on the stack in the prologue if needed.  New function for
12499         finding the runtime generic context argument from the registers
12500         saved by the trampoline.
12501
12502         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12503         runtime generic context argument.
12504
12505         * tramp-amd64.c: Also restore the register used for the runtime
12506         generic context argument.
12507
12508         * mini-trampoline.c: Resolve shared static calls by consulting the
12509         runtime generic context via the new argument.
12510
12511         * generic-sharing.c: Add an argument to sharability-checking
12512         functions that specifies whether type variables should be treated
12513         as sharable type arguments.
12514
12515         * inssel-x86.brg: Removed a superfluous, buggy rule.
12516
12517         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12518         to switches.
12519
12520 2008-03-14  Martin Baulig  <martin@ximian.com>
12521
12522         * debug-debugger.c (main_thread_handler): Call
12523         mono_runtime_run_main() without sending any notifications.
12524
12525         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12526
12527 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12528
12529         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12530
12531 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12532
12533         * tramp-x86.c: Fixed register restore offsets in the trampoline
12534         code for ECX and EDX.
12535
12536 2008-03-12  Geoff Norton  <gnorton@novell.com>
12537
12538         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12539         different ucontext_t implementations.
12540         * exceptions-arm.c: Use the above defines to get exceptions working on 
12541         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12542         * mini-arm.c: Implement iPhone icache support (based on a patch by
12543         Luke Howard lukeh@padl.com)
12544
12545 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12546
12547         * mini.c: Enable generic sharing of calls to non-static
12548         non-interface non-generic non-value-type methods.
12549
12550         * mini-trampolines.c: Resolve calls from shared generic code.
12551
12552 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12553
12554         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12555
12556         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12557
12558 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12559
12560         * mini.c: some fixes for the AOT compiler.
12561
12562 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12563
12564         * cpu-amd64.md: Add clob:1 to some float opcodes.
12565
12566 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12567
12568         * mini.h: Added MiniVerifierMode enumeration.
12569
12570         * mini.c: Added mini_verifier_set_mode to control
12571         the usage of the new verifier.
12572
12573         * mini.c (mono_method): Integrated the new verifier.
12574
12575         * driver.c: Extended --security option with validil and
12576         verifiable options to activate the new verifier.
12577
12578 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12579
12580         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12581         optimization to ctors taking 0 or 2 arguments too.
12582
12583         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12584         a bit.
12585
12586         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12587
12588         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12589
12590 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12591
12592         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12593         non-aot case as well.
12594
12595         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12596
12597         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12598         changes.
12599
12600         * aot-compiler.c (encode_patch): Ditto.
12601
12602         * mini.h (G_MININT32): Fix the definition of this.
12603
12604 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12605
12606         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12607
12608         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12609
12610 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12611
12612         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12613         methods returning vtypes in registers.
12614         (mono_arch_allocate_vars): Ditto.
12615
12616         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12617
12618         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12619
12620         * generics.cs: Add a test from the linear IR branch.
12621
12622         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12623
12624         * mini.c (inline_method): Cache failed inline attempts.
12625
12626 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12627
12628         * mini.c: For shared methods of generic classes put the location
12629         of "this" into the MonoGenericJitInfo.
12630
12631         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12632         register out of a MonoContext by register number.  Add the generic
12633         sharing context as an argument to mono_arch_find_this_argument().
12634
12635         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12636         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12637         for new arch function.
12638
12639         * mini-exception.c: Handle open exception clauses in shared
12640         generic code.
12641
12642         * mini-trampolines.c: Supply additional argument to
12643         mono_arch_find_this_argument().
12644
12645 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12646
12647         * Makefile.am (regtests): Run the bench.exe tests last.
12648
12649 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12650
12651         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12652         a bit.
12653
12654 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12655
12656         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12657         with MS.
12658
12659         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12660         
12661         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12662
12663         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12664         whose class has no cctor.
12665
12666         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12667
12668 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12669
12670         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12671         unverified.
12672
12673 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12674
12675         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12676         to be in sync with the code on the linear IR branch.
12677
12678         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12679
12680         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12681
12682 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12683
12684         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12685
12686         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12687
12688         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12689
12690         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12691
12692         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12693         
12694         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12695         body.
12696
12697 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12698
12699         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12700         OP_LOADR4_MEMBASE emission.
12701
12702         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12703         (mono_spillvar_offset_float): Ditto.
12704
12705         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12706
12707         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12708         emission.
12709
12710         * basic-long.cs: Add regression tests for them.
12711
12712         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12713         use.
12714         (mono_arch_allocate_vars): Fix representation of single-precision float
12715         argument.
12716         (mono_arch_output_basic_block): Ditto.
12717
12718         * inssel-mips.brg: Ditto, remove duplicate items.
12719
12720         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12721         arguments of tail calls as on other platforms.
12722         (mono_arch_output_basic_block): Handle tail calls.
12723
12724         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12725         register.
12726
12727         * objects.cs (test_5_pass_static_struct): Add test for it.
12728
12729         Contributed under MIT/X11 license.
12730
12731 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * Makefile.am: Use gmcs for compiling the regression tests.
12734
12735         * *.2.cs *.2.il: Rename to *.cs and *.il.
12736
12737 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12738
12739         * regalloc.h: Make the vassign array smaller.
12740
12741         * mini.c (mini_method_compile): Remove an unused field in cfg.
12742
12743         * mini-codegen.c: Add a bunch of micro optimizations.
12744
12745 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * regalloc.h: Remove some unused fields.
12748
12749 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12750
12751         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12752
12753         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12754
12755 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12756
12757         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12758
12759         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12760         trampoline: Fetch an entry from the runtime generic context.  If
12761         it's NULL, jump to the actual trampoline to fill the runtime
12762         generic context.  Otherwise, return it.
12763
12764         * mini.c: Call the lazy fetch trampoline to get entries out of the
12765         runtime generic context.
12766
12767         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12768         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12769         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12770
12771 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12772
12773         * mini.c: Fetch data out of the extensible part of the runtime
12774         generic context instead of calling a helper function.
12775
12776         * generic-sharing.c: Some functions moved into
12777         metadata/generic-sharing.c.  Helper function for fetching other
12778         types now checks and asserts against extensible rgctx (just for
12779         debugging purposes - the helper function isn't called anymore
12780         unless for debugging).
12781
12782 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12783
12784         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12785         for tail calls up to the point that the tests in iltests.exe run. Also add a
12786         dummy CKFINITE implementation.
12787         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12788         needed for trampoline LMF frames.
12789
12790         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12791         trampoline LMF frames.
12792
12793 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12794
12795         * mini.c (inline_method): clean any pending loader error when inlining fail.
12796         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12797
12798 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12801
12802         * aot-runtime.c (decode_patch_info): Ditto.
12803
12804         * mini.c (mono_resolve_patch_target): Ditto.
12805         
12806         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12807         icall wrappers.
12808
12809         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12810         
12811         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12812         if it references an icall address.
12813
12814 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12815
12816         * cpu-s390x.md: Remove some more unused opcodes.
12817         
12818         * cpu-s390x.md: Remove some unused opcodes.
12819
12820         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12821         mono_op_imm_to_op ().
12822
12823         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12824         instead of a switch statement.
12825         
12826         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12827         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12828
12829         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12830         
12831         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12832
12833         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12834         -1.
12835
12836 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12837
12838         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12839         opened. Fixes #362607.
12840
12841         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12842
12843         * iltests.il.in: Add a test for static methods in interfaces.
12844
12845 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12846
12847         * genmdesc.c (build_table): Fix a crash on older glib versions.
12848
12849         * cpu-sparc.md: Remove some unused opcodes.
12850         
12851         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12852         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12853
12854         * cpu-amd64.md: Remove some unused opcodes.
12855
12856         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12857         like the other opcodes.
12858
12859 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12862
12863         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12864
12865         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12866         variables 'cfg' instead of 'm' for consistency.
12867
12868         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12869
12870         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12871         argument holding the vtype return address, to avoid the ambigious use of
12872         cfg->ret for this purpose.
12873
12874         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12875
12876         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12877         
12878         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12879         new mono_print_ins () function which only takes one argument.
12880
12881 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12882
12883         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12884         macro arguments.
12885
12886 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12887
12888         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12889
12890         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12891
12892         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12893         opcodes and other small changes.
12894
12895         * mini-ops.h: Add some new opcodes from the linear IR branch.
12896
12897         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12898
12899         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12900         opcodes, use the REG_MEMBASE opcodes instead.
12901         
12902         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12903         opcodes, use the REG_MEMBASE opcodes instead.
12904         
12905         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12906         linear IR branch.
12907
12908         * mini.c (mono_op_imm_to_op): New helper function.
12909
12910         * mini-ops.h: Add some opcodes from linear IR branch.
12911
12912 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12913
12914         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12915         <tsv@solvo.ru>.
12916
12917 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12920         OP_ICONV_TO_R4/R8.
12921
12922         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12923
12924 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12925
12926         * aot-compiler.c (emit_method_code): Add an assert.
12927
12928         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12929         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12930         methods.
12931
12932 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12933
12934         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12935         some load/store opcodes so they are consistent. 
12936         (mono_arch_emit_prolog): Simplify some code.
12937
12938         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12939
12940         * objects.cs: Add tests for large argument offsets on ARM.
12941
12942         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12943         stack offsets. Fixes #359651.
12944
12945         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12946
12947         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12948
12949         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12950
12951         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12952
12953         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12954
12955         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12956         rid of CEE_CONV_R_UN.
12957
12958         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12959
12960 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12961
12962         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12963
12964         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12965
12966         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12967
12968         * cpu-amd64.md: Remove some unused opcodes.
12969
12970         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12971
12972         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12973
12974         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12975         arch specific functions for its parts. Call the peephole pass after local
12976         regalloc so the prolog can compute a more accurate max_offset.
12977         
12978         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12979         the corresponding OP_I/OP_L opcodes.
12980
12981         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12982
12983         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12984
12985 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12986
12987         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12988         as they are handled in mini.c.
12989
12990         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12991         
12992         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12993         case since it is handled in mini.c.
12994
12995         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12996
12997         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12998
12999         * *.c: Use the new opcodes in the IR and back end code.
13000
13001         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
13002
13003         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
13004
13005 2008-02-06  Mark Probst  <mark.probst@gmail.com>
13006
13007         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
13008         an assert because it has a race condition.
13009
13010 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
13013
13014         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
13015
13016         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
13017
13018         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
13019         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
13020
13021 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
13022
13023         * cpu-amd64.md (move): Correct the maximum size of move.
13024
13025 2008-02-05  Mark Probst  <mark.probst@gmail.com>
13026
13027         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
13028         the generic class init trampoline to return quickly if the class
13029         is already inited.
13030
13031 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
13032
13033         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
13034         issues where an 32 bit callsite cannot be patched by a 64 bit address.
13035
13036 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
13037
13038         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
13039         branch.
13040
13041 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
13042
13043         * objects.cs: Add some soft-float tests.
13044
13045         * mini.c: Fix a couple more soft-float issues.
13046
13047         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
13048
13049         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
13050         avoid a REX prefix.
13051
13052 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
13053
13054         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
13055         exception happens while compiling a virtual method.
13056
13057 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
13058
13059         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
13060         
13061         * mini-sparc.c: Fix build.
13062
13063         * mini-sparc.c (get_call_info): Add support for generic sharing.
13064
13065         * mini-exceptions.c: Add a FIXME.
13066
13067 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
13068
13069         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
13070         altstack handling code.
13071
13072         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
13073         
13074         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
13075
13076         * mini-s390.c: Add support for generic sharing.
13077
13078         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13079         Fix CAS on s390.
13080         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13081
13082         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
13083
13084         * mini-s390x.c: Add support for generic sharing.
13085         
13086         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
13087         Fix CAS on ia64.
13088         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
13089
13090         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
13091         can be used since it takes a 16 bit signed immediate.
13092
13093         * inssel-s390x.brg: Fix OP_SETRET.
13094
13095         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
13096
13097         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
13098
13099         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13100
13101         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13102
13103         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13104         in one place.
13105
13106         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13107         stuff.
13108
13109         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13110         of the unused mono_arch_patch_delegate_trampoline stuff.
13111
13112 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13113
13114         * basic-long.cs: Move the fp related tests to basic-float.cs.
13115
13116         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13117
13118         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13119
13120         * basic-calls.cs: Add a test for proper float argument passing.
13121
13122         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13123         if the context corresponds to an exception received through a signal.
13124
13125         * exceptions.cs: Add a test for nullref handling at the start of a try
13126         clause.
13127
13128         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13129
13130         * jit-icalls.c (mono_break): New JIT icall.
13131
13132         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13133
13134         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13135
13136 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13137
13138         * cpu-*.md: Get rid of unused opcodes.
13139
13140         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13141
13142         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13143         by all platforms.
13144
13145         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13146         define.
13147
13148         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13149         the arch independent trampoline code in mini-trampolines.c.
13150
13151         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13152
13153         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13154
13155         * mini-s390.h: Remove an unused define.
13156         
13157         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13158         the arch independent trampoline code in mini-trampolines.c.
13159
13160         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13161
13162 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13163
13164         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13165
13166         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13167
13168         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13169
13170         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13171
13172         * cpu-amd64.md: Use smaller sizes for int opcodes.
13173
13174         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13175
13176         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13177         objects.cs.
13178
13179         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13180         debugging.
13181
13182         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13183         instead of though a pointer to save an indirection when accessing elements of
13184         the array.
13185
13186         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13187         some typos.
13188         (NOT_IMPLEMENTED): New helper macro.
13189         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13190         of a bb.
13191
13192         * *.c: Use the new helper macro.
13193
13194 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13195
13196         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13197
13198 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13199
13200         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13201         stack slots.
13202
13203 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13204
13205         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13206         profiling is enabled.
13207         
13208         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13209         the end.
13210         (mono_arch_emit_prolog): Add more first bblock optimizations.
13211
13212         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13213         in order if possible.
13214         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13215         bblock, since the arguments are still in their original registers.
13216
13217         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13218
13219 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13220
13221         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13222         as well.
13223
13224         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13225         offset 0.
13226
13227         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13228
13229         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13230         process async exceptions received while in unmanaged code.
13231
13232         * mini.c (mini_init): Install a callback with the runtime which will be called
13233         when a thread receives an async exception while in unmanaged code.
13234
13235         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13236
13237         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13238
13239 2008-01-16  Wade Berrier  <wberrier@novell.com>
13240
13241         * cpu-g4.md:
13242         * cpu-arm.md:
13243         * cpu-s390x.md:
13244         fix build
13245
13246 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13247
13248         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13249         compilation with sun cc.
13250
13251         * cpu-*.md: Fix the build.
13252
13253         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13254
13255         * mini-amd64.h: Add some comments to the MonoLMF structure.
13256
13257         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13258         
13259         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13260         in the LMF structure if possible. This saves two instructions in the
13261         managed->native wrappers.
13262
13263         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13264
13265 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13266
13267         * generic-sharing.c: New type argument lookup code which uses the
13268         runtime generic context template.
13269
13270 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13271
13272         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13273
13274         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13275         (mono_arch_output_basic_block): Fix localloc implementation.
13276
13277         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13278
13279         * mini-ia64.c (peephole_pass): Fix ia64 build.
13280
13281         * mini-amd64.c (peephole_pass): Fix a warning.
13282         
13283         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13284         at a constant offset from sp/fp.
13285
13286         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13287         instead of obtaining it from *lmf in the managed method case.
13288
13289 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13290
13291         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13292
13293 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13294
13295         * mini.h (MonoInstList): New type.
13296         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13297         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13298         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13299         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13300         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13301         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13302         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13303         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13304         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13305         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13306         MONO_INST_LIST_FOR_EACH_ENTRY,
13307         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13308         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13309         mono_inst_list_first, mono_inst_list_last,
13310         mono_inst_list_next, mono_inst_list_prev): New instruction
13311         list handling interfaces.
13312         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13313         list head 'ins_list'.
13314         (MonoInst): Replace next pointer with list head 'node'.
13315         (MonoCallInst): Make 'out_args' a MonoInstList.
13316         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13317         (MonoCompile): Delete reverse_inst_list and
13318         reverse_inst_list_len.
13319         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13320         mono_arch_lowering_pass, mono_arch_local_regalloc,
13321         mono_arch_output_basic_block, mono_arch_emit_prolog):
13322         Convert to new instruction lists.
13323         (insert_after_ins): Delete.
13324         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13325         instruction lists.
13326         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13327         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13328         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13329         mono_emulate_opcode, mono_emit_load_got_addr,
13330         inline_method, mono_method_to_ir, mono_print_bb_code,
13331         print_dfn, decompose_pass, nullify_basic_block,
13332         replace_out_block_in_code, remove_block_if_useless,
13333         merge_basic_blocks, move_basic_block_to_end,
13334         try_unsigned_compare, optimize_branches, mono_print_code,
13335         mini_select_instructions, remove_critical_edges): Likewise.
13336         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13337         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13338         mono_arch_output_basic_block, mono_arch_emit_prolog):
13339         Likewise.
13340         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13341         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13342         mono_arch_output_basic_block): Likewise.
13343         (inst_list_prepend, insert_after_ins): Delete.
13344         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13345         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13346         instruction lists.
13347         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13348         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13349         mono_arch_emit_prolog): Likewise.
13350         * cfold.c (mono_constant_fold): Likewise.
13351         * liveness.c (visit_bb, mono_analyze_liveness,
13352         optimize_initlocals): Likewise.
13353         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13354         * graph.c (mono_draw_code_cfg): Likewise.
13355         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13356         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13357         mono_ssa_cprop): Likewise.
13358         * abcremoval (get_relations_from_previous_bb, process_block):
13359         Likewise.
13360         * local-propagation (mono_cprop_invalidate_values,
13361         mono_local_cprop_bb): Likewise.
13362         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13363         peephole_pass, mono_arch_output_basic_block,
13364         mono_arch_emit_prolog): Likewise.
13365         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13366         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13367         mono_arch_emit_prolog): Likewise.
13368         (insert_after_ins): Delete.
13369         * aliasing.c (print_code_with_aliasing_information,
13370         mono_build_aliasing_information, mono_aliasing_deadce):
13371         Convert to new instruction lists.
13372         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13373         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13374         mono_arch_local_regalloc, mono_arch_output_basic_block):
13375         Likewise.
13376         (insert_after_ins): Delete.
13377         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13378         peephole_pass, mono_arch_output_basic_block): Convert to
13379         new instruction lists.
13380         * mini-codegen (InstList, inst_list_prepend,
13381         insert_after_ins): Delete.
13382         (insert_before_ins, get_register_force_spilling,
13383         get_register_spilling, free_up_ireg, free_up_reg,
13384         create_copy_ins, create_spilled_store, alloc_int_reg,
13385         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13386         to new instruction lists.
13387         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13388         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13389         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13390         (insert_after_ins): Delete.
13391         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13392         mono_arch_local_regalloc, mono_arch_output_basic_block,
13393         mono_arch_call_opcode): Convert to new instruction lists.
13394         (insert_after_ins): Delete.
13395         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13396         peephole_pass, mono_arch_output_basic_block,
13397         mono_arch_emit_prolog): Convert to new instruction lists.
13398
13399 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13400
13401         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13402
13403         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13404         Fixes #353182.
13405
13406         * Makefile.am (version.h): Make this work with non-bash shells.
13407
13408 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13409
13410         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13411
13412 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13413
13414         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13415         the InitializeArray optimization.
13416
13417 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13418
13419         * mini.c driver.c: Don't include os/gc_wrapper.h.
13420
13421 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13422
13423         * mini.c (print_jit_stats): Print GC statistics if available.
13424
13425 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13426
13427         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13428
13429 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13430
13431         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13432
13433 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13434
13435         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13436         
13437         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13438
13439         * driver.c (mono_main): Ditto.
13440
13441 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13442
13443         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13444
13445         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13446         in the vtable can't be encoded.
13447         (compile_method): Ditto.
13448
13449 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13450
13451         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13452         defined.
13453
13454         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13455         lmf->rbp.
13456
13457         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13458         the top LMF entry belongs to the current method.
13459
13460         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13461
13462 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13463
13464         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13465         
13466         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13467
13468         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13469
13470         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13471
13472         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13473
13474         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13475         implementation.
13476
13477         * basic-float.cs: Add an ulong->double cast test.
13478
13479 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13480
13481         * mini.c (mono_method_to_ir): Fix a warning.
13482
13483 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13484
13485         * mini-ops.h: Add OP_SWITCH.
13486
13487         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13488         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13489
13490 2007-12-11  Geoff Norton  <gnorton@novell.com>
13491
13492         * mini-s390x.c: Minor change to the MAX() define to allow
13493         it to compile with other gcc versions.
13494
13495 2007-12-11  Geoff Norton  <gnorton@novell.com>
13496
13497         * cpu-s390x.md:
13498         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13499
13500 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13501
13502         exceptions-arm.c (mono_arch_get_restore_context): Restore
13503         the frame pointer.
13504
13505         exceptions-arm.c (throw_exception): Save the frame pointer.
13506         This is a partial fix for #323747. Only the client side is
13507         fixed.
13508
13509 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13510
13511         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13512         was using an unrelated variable to log the class which
13513         needed the cctor to be called. This was crashing on arm.
13514
13515 2007-12-09  Robert Jordan  <robertj@gmx.net>
13516
13517         * mini-x86.c (mono_arch_emit_epilog):
13518         Consider all kinds of 64-bit types. Fixes #323114.
13519
13520 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13521
13522         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13523
13524 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13525
13526         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13527
13528 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13529
13530         * mini.c: run type ctor before allocating an object, not only
13531         when running it's constructor method (fixes at least part of bug #342507).
13532
13533 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13534         
13535         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13536         
13537         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13538         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13539         function.
13540
13541         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13542         mono_generic_class_init_trampoline () the same as it is done with the other
13543         trampolines.
13544
13545         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13546         aot-runtime.c aot-compiler.c: Implement AOT support.    
13547
13548 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13549
13550         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13551         build for archs which don't have the vtable trampoline defined
13552         yet.
13553
13554 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13555
13556         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13557
13558         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13559
13560         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13561
13562         * tramp-<ARCH>.c: Use the new helper function.
13563
13564 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13565
13566         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13567         trampoline call, which takes a vtable argument.
13568
13569         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13570         OP_TRAMPCALL_VTABLEs like other calls.
13571
13572         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13573         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13574         call.  Implemented a support function which fetches the vtable
13575         from a register set.
13576
13577         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13578         Implemented a generic class init trampoline, using the
13579         OP_TRAMPCALL_VTABLE opcode.
13580
13581         * mini.c: Implemented static field access when sharing generic
13582         code.  This implies initing the class using the new
13583         OP_TRAMPCALL_VTABLE call.
13584
13585 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13586
13587         * mini.c: Don't compile methods with sharing enabled if their
13588         classes are disabled for sharing.
13589
13590 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13591
13592         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13593         opcodes. Fixes #346563.
13594
13595         * objects.cs: Add a new test.
13596
13597         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13598
13599         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13600         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13601
13602 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13603
13604         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13605
13606 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13607
13608         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13609         code stream.
13610
13611 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13612
13613         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13614
13615         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13616         optimization in the AOT case.
13617         
13618 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13619
13620         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13621         
13622         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13623
13624         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13625
13626         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13627
13628         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13629         is created by the inlined delegate ctor.
13630
13631         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13632
13633         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13634
13635 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13636
13637         * cpu-x86.md: Fix the length of ckfinite.
13638
13639 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13640
13641         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13642         
13643         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13644         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13645
13646         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13647
13648         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13649         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13650
13651 2007-11-28  Martin Baulig  <martin@ximian.com>
13652
13653         * mini-x86.c
13654         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13655         after creating the trampoline.
13656
13657 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13658
13659         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13660
13661         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13662         the same version.
13663
13664         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13665         instead of the calling method to help AOT.
13666
13667         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13668
13669 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13670
13671         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13672         is defined.
13673
13674 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13675
13676         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13677         
13678         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13679         (encode_method_ref): No need to handle generic method definitions specially.
13680
13681         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13682
13683         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13684         decode_klass_info.
13685
13686         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13687         encode_klass_info.
13688         (compile_method): Enable generic sharing.
13689
13690 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13691
13692         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13693         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13694
13695         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13696         generic code.
13697
13698         * mini-trampolines.c: Fix a warning.
13699
13700         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13701         NEW_PCONST.
13702         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13703         (generic_class_is_reference_type): Remove unused function.
13704
13705         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13706         in the generic vtable trampoline case.
13707
13708         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13709         
13710         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13711         return an AOT method based on a vtable slot.
13712
13713         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13714
13715         * mini.c (mini_get_vtable_trampoline): Export this.
13716
13717 2007-11-22  Martin Baulig  <martin@ximian.com>
13718
13719         * debug-debugger.h
13720         (MonoDebuggerInfo): Move `debugger_version' up.
13721
13722 2007-11-22  Martin Baulig  <martin@ximian.com>
13723
13724         * mini-amd64.c
13725         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13726
13727         * mini-trampolines.c
13728         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13729         after compiling the method.
13730
13731 2007-11-20  Martin Baulig  <martin@ximian.com>
13732
13733         * debug-mini.c
13734         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13735         (mono_debugger_remove_breakpoint): Likewise.
13736         (mono_debugger_check_breakpoints): Likewise.
13737
13738         * debug-debugger.c: Implement the new breakpoint interface here.
13739
13740 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13741
13742         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13743         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13744
13745         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13746
13747 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13748
13749         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13750
13751         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13752         mini.c.
13753
13754         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13755         mini.c.
13756
13757         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13758         returning a vtype in a register.
13759
13760         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13761         here from the arch specific code.
13762
13763         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13764         mini.c.
13765
13766         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13767         (mono_arch_emit_prolog): Increment maximum prolog size.
13768
13769         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13770         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13771
13772         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13773         MonoGenericSharingContext.
13774
13775         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13776         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13777
13778 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13779
13780         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13781         which extract fields out of the runtime generic context.  Full
13782         sharing of the NEWARR opcode.
13783
13784 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13785
13786         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13787         --enable-minimal=ssa.
13788
13789 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13790
13791         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13792         mono_marshal_get_delegate_invoke () signature change.
13793
13794 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13795
13796         * mini.c: Removed the shared context in favor of the generic
13797         sharing context.  Allocate the MonoJitInfo structure with room for
13798         the generic sharing context if it's needed.
13799
13800         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13801         domain-internals.h now.
13802
13803         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13804
13805         * generic-sharing.c: Several changes for working without a shared
13806         context and instead operating on open types instead.
13807
13808 2007-11-12  David S. Miller  <davem@davemloft.net>
13809
13810        * inssel-sparc.brg: Fix double instruction emit.
13811
13812 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13813
13814         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13815         Get/Set/Address methods.
13816         
13817         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13818         mono_marshal_get_delegate_invoke signature change.
13819
13820 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13821
13822         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13823         This can happens with dynamic methods. Fixes the other bug in #322722.
13824
13825 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13826
13827         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13828         BX call sequence.
13829
13830         * mini-arm.c (arm_patch): Implement patching of BX call
13831         sequence. Fixes one of the bugs in #322722.
13832
13833 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13834
13835        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13836        under Linux.  We only need to flush every 32-byte cache line.    
13837
13838 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13839
13840         * mini.c:
13841         move_basic_block_to_end: Add branches when needed, eventually creating
13842         a new BB.
13843         optimize_branches: added a parameter that tells if it's ok to create
13844         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13845         and avoid calling move_basic_block_to_end when it's not ok.
13846         Fixes bug 318677.
13847
13848 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13849
13850         * mini.c: Abort inlining call to InitializeArray if something
13851         looks wrong.  Let the icall handle it, which now has proper safety
13852         checks.
13853
13854 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13855
13856         * mini.c (mono_spill_call): add support for soft-float.
13857
13858         * mini.c (mono_method_to_ir): add support for soft-float
13859         to inlined functions that return float.
13860
13861         * mini.c (mono_method_to_ir): add support for soft-float
13862         to cee_stsfld opcode on float fields.
13863
13864 2007-11-05  Geoff Norton  <gnorton@novell.com>
13865
13866         * mini-x86.h: Fix the structure access for X86 Leopard.
13867
13868
13869 2007-11-05  Martin Baulig  <martin@ximian.com>
13870
13871         * mini-trampolines.c
13872         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13873         after compiling the method to notify the debugger.
13874
13875 2007-11-05  Martin Baulig  <martin@ximian.com>
13876
13877         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13878
13879 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13880
13881         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13882         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13883
13884 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13885
13886         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13887         native-to-managed wrappers.
13888         
13889 2007-11-01  Geoff Norton  <gnorton@novell.com>
13890
13891         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13892         members.
13893
13894 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13895
13896         * mini.c, mini-x86.c: when getting back from unmanaged code
13897         to managed via a marshaled delegate we also need to set the
13898         right domain.
13899
13900 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13901
13902         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13903         for amd64.
13904
13905 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13906
13907         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13908         let the debugger or other external agents to tell the JIT when
13909         a sw breakpoint has been inserted in the code that the JIT needs
13910         to be able to inspect.
13911
13912 2007-10-31  Martin Baulig  <martin@ximian.com>
13913
13914         * debug-debugger.h
13915         (MonoDebuggerInfo): Remove `runtime_class_init'.
13916
13917 2007-10-30  Martin Baulig  <martin@ximian.com>
13918
13919         * debug-mini.h
13920         (mono_debugger_thread_created): Added `MonoThread *' argument.
13921         (mono_debugger_extended_notification): New public method.
13922         (mono_debugger_trampoline_compiled): New public method.
13923
13924         * debug-mini.c
13925         (MonoDebuggerThreadInfo): Added `thread' and
13926         `extended_notifications' fields.
13927
13928         * debug-debugger.c
13929         (debugger_executable_code_buffer): New static variable.
13930
13931         * debug-debugger.h
13932         (MonoDebuggerInfo): Added `executable_code_buffer',
13933         `executable_code_buffer_size', `breakpoint_info_area',
13934         `breakpoint_table' and `breakpoint_table_size'.
13935
13936 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13937
13938         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13939         that IP  either is an unused value or the vtable pointer. IMT 
13940         calls use vtable + offset now. Reduced by almost half the size
13941         of IMT entries.
13942
13943 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13944
13945         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13946         defines to access param registers. Replace long usage with
13947         gsize as sizeof(long) != sizeof(void*) on Win64.
13948
13949         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13950         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13951         instead of non-existant _GetAddressOfReturnAddress.
13952
13953         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13954         param registers. Save/restore %rdi and %rsi in MonoLMF.
13955
13956         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13957         param registers. Modify (throw_exception) signature to take 
13958         %rdi and %rsi on Win64. 
13959
13960         Code is contributed under MIT/X11 license.
13961
13962 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13963
13964         * helpers.c: unlink debugging output files.
13965
13966 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13967
13968         * mini.c: Move mono_create_ftnptr () to object.c.
13969
13970 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13971
13972         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13973         optional. This function can now be used to disassemble code generated
13974         outside the JIT such as trampolines and IMT thunks.
13975
13976         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13977
13978         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13979         vtable pointer from a ldr instruction.
13980
13981         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13982         new IMT call sequence.
13983
13984         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13985         call sequence for interface invocations.
13986
13987         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13988         for imt support. This function is empty since IMT on ARM requires no
13989         special handling on the IR side.
13990
13991         * mini-arm.c (mono_arch_find_imt_method): added, required for
13992         imt support.
13993
13994         * mini-arm.c (mono_arch_find_this_argument): added, required
13995         for imt support.
13996
13997         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13998         a ldr instruction to load a value stored in the code stream.
13999
14000         * mini-arm.c (mono_arch_build_imt_thunk):added, required
14001         for imt support.
14002
14003
14004 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
14005
14006         * mini.c (mini_init): Install the jump trampoline callback.
14007
14008 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14009
14010         * mini-trampolines.c: handle synchronized methods with the common
14011         vtable trampoline (bug #335601).
14012
14013 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
14014
14015         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
14016
14017         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
14018         64 bit platforms.
14019
14020         * mini-ia64.h mini-ia64.c: Add support for IMT.
14021
14022         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
14023         prolog. Fixes #331958.
14024
14025 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
14026
14027         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
14028
14029 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14030
14031         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
14032         trampoline.
14033
14034 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14035
14036         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
14037         trampoline.
14038
14039 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
14040
14041         * mini-x86.c, mini-x86.h: x86 support for the common vtable
14042         trampoline.
14043
14044 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
14045
14046         * mini-trampolines.c: changed the magic rampoline to understand
14047         the common vtable trampoline method: the method to invoke is
14048         determined by the vtable displacement of the call.
14049
14050 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14051
14052         * mini.c, mini.h: register the common vtable trampoline if the
14053         architecture supports it.
14054
14055 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14056
14057         * cpu-amd64.md: use the correct max length for tls_get.
14058
14059 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
14062         CEE_STELEM_ANY. Fixes #333696.
14063
14064 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14065
14066         * exceptions-x86.c: provide more graceful handling of the case where
14067         we followed a bogus function pointer from managed code (bug #332866).
14068
14069 2007-10-11  Mark Probst  <mark.probst@gmail.com>
14070
14071         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
14072         replaces the generic_shared flag and will carry more information
14073         in the future.
14074
14075         * generic-sharing.c: Added mini_type_stack_size() which allows
14076         allows open types if given a generic sharing context.
14077         mini_get_basic_type_from_generic() takes a
14078         MonoGenericSharingContext* instead of a MonoCompile* now.
14079
14080         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
14081         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
14082         mini-sparc.c, mini-x86.c: Trivial changes required by the two
14083         changes above.  Just passing arguments through to the right
14084         places.
14085
14086 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14087
14088         * mini-arm.c: unify the call emission to emit_code_seq().
14089
14090 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
14091
14092         * tramp-arm.c: reduced the trampoline size.
14093
14094 2007-10-10  Mark Probst  <mark.probst@gmail.com>
14095
14096         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
14097         variable handling out of arch-specific code.
14098
14099 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14100
14101         * mini-arm.c: implemented fast delegate dispatch.
14102
14103 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14104
14105         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14106         that fp elimination is turned off if the space required by locals is too
14107         big. Fixes #331958.
14108
14109 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14110
14111         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14112         ARM to the new style trampoline.
14113
14114 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14115
14116         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14117
14118         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14119
14120 2007-10-09  Martin Baulig  <martin@ximian.com>
14121
14122         * debug-debugger.h
14123         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14124         `field_info_offset_offset'.     
14125
14126 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14127
14128         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14129         removed more internal usage of the r11 register and made it available
14130         to the register allocator.
14131
14132 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14133
14134         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14135         when sharing generics and treat type variables as references.
14136
14137 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14138
14139         * mini-ppc.c: started removing the internal uses of register r11
14140         to eventually allow the register allocator to manage it as an
14141         additional available register.
14142
14143 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14144
14145         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14146
14147 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14148
14149         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14150         specific trampolines as they are not performance critical as a jump
14151         target (maybe align as before only for AOT code?). This saves about
14152         200 KB of native code on x86 for monodevelop startup.
14153
14154 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14155
14156         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14157         monodevelop startup.
14158
14159 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14160
14161         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14162
14163         * mini-sparc.h mini-sparc.c: Implement IMT support.
14164
14165         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14166         its smaller and doesn't clobber sparc_g1.
14167
14168         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14169
14170 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14171
14172         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14173
14174 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14175
14176         * mini-ppc.c: implemented fast delegate invocation.
14177
14178 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14179
14180         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14181
14182 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14183
14184         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14185         code to the new style trampoline in preparation for IMT support.
14186
14187 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14188
14189         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14190         systems already. This also reduces the specific trampiline sizes and
14191         prepares for the use of r12 as the IMT identifier register.
14192
14193 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14194
14195         * mini-mips.h: endianess fix (simplified from a patch by
14196         Thomas Kunze <thommy@tabao.de>, bug #323737).
14197
14198 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14199
14200         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14201         to access ucontext fields and enable netbsd support
14202         (partially from Magnus Henoch <mange@freemail.hu>).
14203
14204 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14205
14206         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14207         use the preprocessor from the CPP env var if it is set.
14208
14209 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14210
14211         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14212         code, before interface_offset gets used.
14213
14214 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14215
14216         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14217         mono_class_setup_vtable () before accessing klass->vtable.
14218
14219 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14220
14221         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14222         hackish.
14223
14224 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14225
14226         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14227         IMT slots (this saves hundreds of KB of memory in programs like
14228         IronPython and Monodevelop).
14229
14230 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14231
14232         * mini.c: print the delegate counter.
14233
14234 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14235
14236         * mini-x86.c: make it easier to enable the debugging code for IMT
14237         slots.
14238
14239 2007-09-28  Martin Baulig  <martin@ximian.com>
14240
14241         * debug-debugger.h
14242         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14243         `mono_method_klass_offset' and `mono_method_token_offset'.
14244
14245 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14246
14247         * mini.c: First generics sharing implementation.  Can only share
14248         in very simple cases.  If sharing doesn't work it falls back to
14249         dedicated compilation.
14250
14251         * mini.h: Flag in MonoCompile to specify whether generic
14252         compilation is shared.  Flags enum for marking which generic inst
14253         of a context is used.  Prototypes for helper functions.
14254
14255         * generic-sharing.c: Helper functions for generic method sharing.
14256
14257         * optflags-def.h: Optimization flag (gshared) for enabling generic
14258         method sharing added.
14259
14260         * Makefile.am: generic-sharing.c added.
14261
14262 2007-09-19 Daniel Nauck <dna@mono-project.de>
14263
14264         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14265
14266 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14267         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14268         fixes bug 325507.
14269
14270 2007-09-19  Martin Baulig  <martin@ximian.com>
14271
14272         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14273         mono_debug_cleanup() is now part of mono_cleanup().
14274
14275 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14276
14277         * driver.c (mono_main): Fix a warning.
14278
14279 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14280
14281         * aot-compiler.c: Optimize various parts when processing large assemblies.
14282         Fixes ##325568.
14283
14284         * mini.c (mono_patch_info_hash): Improve hash function.
14285
14286 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14287
14288         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14289         
14290         Code is contributed under MIT/X11 license.
14291
14292 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14293
14294         * mini.c (mini_init): Fix a leak.
14295
14296         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14297
14298 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14299
14300         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14301
14302 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14303
14304         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14305
14306 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14307
14308         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14309         variance tests.
14310
14311         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14312
14313         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14314
14315         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14316
14317         * aot-runtime.c (decode_patch_info): Ditto.
14318
14319 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14320
14321         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14322         static case. Cache delegates in architecture specific code, 
14323         based on number of parameters.
14324         
14325         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14326         in architecture specific code, based on number of parameters.
14327         
14328         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14329         caching happen in architecture specific code now.
14330         
14331         Code is contributed under MIT/X11 license.
14332
14333 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14334
14335         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14336         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14337         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14338
14339         Code is contributed under MIT/X11 license.
14340
14341 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14342         * mini.c: (mono_thread_abort) Fixed bug #82416.
14343
14344 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14345
14346         * mini.: hook the new managed GC allocation feature into the JIT.
14347
14348 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14349
14350         * mini.c: implementation for the new runtime tls opcode.
14351
14352 2007-09-11  Martin Baulig  <martin@ximian.com>
14353
14354         * debug-debugger.h
14355         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14356         `mono_method_inflated_offset'.
14357
14358 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14359
14360         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14361         async exceptions into a method.
14362
14363         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14364         purpose of testing whenever the unwinder works at every instruction.
14365
14366 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14367
14368         * mini.c: check accessibility of method used in ldftn (fixes
14369         bug #82635).
14370
14371 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14372
14373         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14374
14375         * inssel.brg: Fix a warning.
14376
14377 2007-09-03  Martin Baulig  <martin@ximian.com>
14378
14379         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14380         now takes the `main_method' as argument.
14381
14382 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14383
14384         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14385
14386 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14387
14388         * driver.c: include the cil-coff.h header on Windows.
14389         
14390         Code is contributed under MIT/X11 license.
14391
14392 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14393
14394         * mini.c, driver.c: don't include the cil-coff.h header.
14395
14396 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14397
14398         * mini.c: flag places that needs fixes fo soft-float support.
14399
14400 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14401
14402         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14403         endian systems (partially from Dean Jenkins, bug #81924).
14404
14405 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14406
14407         * mini.c (check_linkdemand): Remove embedded reference object in
14408         call to LinkDemandSecurityException.
14409         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14410         with an IntPtr instead of a reference object.
14411
14412 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14413
14414         * mini.c (handle_initobj): Handle alignment properly.
14415
14416         * inssel.brg (mini_emit_memset): Ditto. 
14417
14418         * inssel.brg (mini_emit_memcpy): Ditto. 
14419
14420         * inssel-sparc.brg: Ditto.              
14421
14422         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14423
14424 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14425
14426         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14427         exceptions raised in unmanaged code. Fixes part of #82594.
14428
14429 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14430
14431         * mini.c (mono_method_to_ir), declsec.c
14432         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14433
14434 2007-08-22  Martin Baulig  <martin@ximian.com>
14435
14436         * debug-mini.h
14437         (MonoDebuggerThreadInfo): New typedef.
14438         (mono_debugger_thread_table): New global variable.
14439         (mono_debugger_thread_created): New public function.
14440         (mono_debugger_thread_cleanup): New public function.
14441
14442         * debug-debugger.h
14443         (MonoDebuggerInfo):
14444         - removed `get_current_thread' and `lookup_assembly'.
14445         - removed `data_table'.
14446         - added `thread_table'.
14447
14448         * mini.c
14449         (mono_thread_start_cb): Call mono_debugger_thread_created().
14450         (mono_thread_attach_cb): Likewise.
14451         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14452         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14453         initial domain.
14454
14455         * driver.c (mono_main): Move mono_debug_init() up, before calling
14456         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14457
14458 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14459
14460         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14461         together when passing several arguments of type double (gives a small
14462         speedup and saves a few bytes of generated code).
14463
14464 2007-08-20  Jb Evain  <jbevain@novell.com>
14465
14466         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14467
14468 2007-08-20  Jb Evain  <jbevain@novell.com>
14469
14470         * mini.c (mono_method_to_ir): throw MethodAccessException
14471         and FieldAccessException instead of InvalidProgramException.
14472
14473 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14474
14475         * mini.c: CoreCLR security checks.
14476
14477         * mini.h: Removed MonoSecurityMode (moved to
14478         metadata/security-manager.h) and mono_security_mode global var
14479         (replaced by set/get functions in security-manager.h).
14480
14481         * driver.c: Added "core-clr-test" security mode for testing.  Used
14482         set-function for setting security mode.
14483
14484 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14485
14486         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14487         the new jit_info_table.
14488
14489         * driver.c: Test code for the new jit_info_table (enabled by the
14490         define MONO_JIT_INFO_TABLE_TEST).
14491
14492 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14493
14494         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14495         detection of call <REG> instruction sequence. Fixes build on freebsd.
14496
14497 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14498
14499         * mini-exceptions.c: Fix a warning.
14500
14501 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14502
14503         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14504         stack overflow handling code on amd64 too.
14505
14506         * mini-exceptions.c (mono_setup_altstack): Make this use 
14507         mono_thread_get_stack_bounds ().
14508
14509         * mini-x86.h: Disable sigaltstack on solaris x86.
14510
14511 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14512
14513         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14514
14515 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14516
14517         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14518
14519 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14520
14521         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14522
14523         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14524
14525 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14526
14527         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14528         due to alignment.
14529
14530 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14531
14532         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14533         to be emitted (bug #82281).
14534
14535 2007-08-01  Martin Baulig  <martin@ximian.com>
14536
14537         Merged the `debugger-dublin' branch.
14538
14539         * debug-debugger.h (MonoDebuggerInfo):
14540         Removed the `old_*' compatibility entries.
14541         Added `debugger_version' and `data_table'.
14542         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14543         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14544
14545         * debug-mini.c
14546         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14547         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14548         instead of a `gconstpointer'.
14549         (mono_debugger_insert_method_breakpoint): Return a
14550         `MonoDebugMethodAddressList *'.
14551
14552 2007-06-28  Martin Baulig  <martin@ximian.com>
14553
14554         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14555
14556 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14557
14558         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14559         __builtin_frame_address () since it is broken on older gcc versions.
14560
14561 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14562
14563         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14564         on the stack overflow handling and made the managed stack overflows
14565         catchable in most cases using soft guard pages.
14566         * exceptions-x86.c: added code to restore the protection in the soft
14567         guard pages at the end of exception handling.
14568
14569 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14570
14571         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14572
14573 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14574
14575         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14576         exception handling.
14577
14578 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14579
14580         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14581         signal handling support until it has been ported to the new mechanism.
14582         * mini.c: fixed stack overflow detection and use the new
14583         architecture code  to handle signals on the altstack.
14584
14585 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14586
14587         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14588         stack overflows on the alt stack.
14589
14590 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14591
14592         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14593         stack overflows on the alt stack.
14594
14595 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14596
14597         * exceptions-ppc.c: cleanup preparing for altstack support.
14598
14599 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14600
14601         * exceptions-arm.c: cleanup preparing for altstack support.
14602
14603 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14604
14605         * mini.c (print_jit_stats): Output hazard pointer stats.
14606
14607 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14608
14609         * driver.c, mini.c: Replaced security mode flags with a single
14610         enum variable.
14611
14612 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14613
14614         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14615
14616 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14617
14618         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14619         (which doesn't do anything yet) for activating Core CLR
14620         (Silverlight) security.
14621
14622 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14623
14624         * mini-codegen.c: work around a possible gcc bug on arm.
14625
14626 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14627
14628         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14629         message for platforms that don't support AOT compilation.
14630
14631 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14632
14633         * mini.h, mini.c, driver.c: temporary smcs hack.
14634
14635 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14636
14637         * mini-arm.h, mini-arm.c: arm EABI fixes.
14638
14639 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14640
14641         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14642         case.
14643
14644         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14645         trampolines taking a method argument.
14646
14647         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14648
14649         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14650         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14651
14652         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14653         JIT compilation throws an exception. Fixes #82050.
14654
14655 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14656
14657         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14658         with the MONO_EXCEPTION_ defines.
14659
14660 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14661
14662         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14663         #82117.
14664         
14665         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14666         the cause of an assertion.
14667
14668 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14669
14670         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14671         removed.
14672
14673 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14674
14675         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14676         assert. Should fix #82103.
14677
14678 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14679
14680         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14681         here too. Fixes #82095.
14682
14683         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14684         addresses.
14685
14686         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14687
14688         * mini-amd64.h: Enable IMT for amd64.
14689         
14690         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14691
14692 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14693
14694         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14695
14696 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14697
14698         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14699         as soon as check_linkdemand sets an exception_type.
14700
14701 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14702
14703         * mini-x86.c: fixed offsets for IMT call sequence.
14704         * mini-x86.h: enable IMT again.
14705
14706 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14707
14708         * trace.c (mono_trace_enter_method): Decode MonoType too.
14709
14710         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14711
14712         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14713
14714         * mini-amd64.c: Add preliminary IMT implementation.
14715         
14716 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14717
14718         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14719         understand the new IMT-base interface invocation (thanks to
14720         Daniel Nauck for the report and the remote debugging session).
14721
14722 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14723
14724         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14725
14726 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14727
14728         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14729
14730 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14731
14732         * mini-trampolines.c: implement AOT IMT support.
14733         * mini-x86.h: enable IMT support for wider testing.
14734
14735 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14736
14737         * inssel.brg (emit_imt_argument): Add aot support here.
14738
14739         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14740
14741 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14742
14743         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14744         of the IMT implementation, partially from massi, with my
14745         implementation of the bsearch sequence. Disabled by default until
14746         the AOT code is implemented.
14747
14748 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14749
14750         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14751
14752         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14753
14754 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14755
14756         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14757         arch-independent IMT JIT code from Massimiliano
14758         Mantione (massi@ximian.com) with small cleanups from me.
14759
14760 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14761
14762         * Makefile.am: fix svn invocation to get the svn revision to be
14763         independent of the local language (build fix).
14764
14765 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14766
14767         * mini.c (inline_method): Reset cfg->exception_type if the
14768         inlining is aborted.  Fixes: 82049.
14769
14770 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14771
14772         * mini.c: remove assert from exception handling code when exception_ptr
14773         is not set.
14774
14775 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14776
14777         * mini.c (mono_codegen): Add an assert.
14778
14779         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14780         enter and leave code.
14781         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14782
14783 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14784
14785         * mini-ppc.c: fixed memory corruption for localloc(0)
14786         (bug #81852).
14787
14788 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14789         
14790         * mini.c: Fix warnings.
14791
14792 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14793
14794         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14795         to emit better double->int conversions.
14796
14797 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14798
14799         * mini.c: the provided Min/Max optimizations are valid for unisgned
14800         ints.
14801
14802 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14803
14804         * 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
14805
14806 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14807
14808         * mini.c (mono_running_on_valgrind): Add support for reporting the
14809         method and  its boundaries to valgrind.
14810
14811 2007-06-28  Martin Baulig  <martin@ximian.com>
14812
14813         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14814
14815 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14816
14817         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14818
14819         * generic.2.cs: Add new test case.
14820
14821 2007-06-25  Martin Baulig  <martin@ximian.com>
14822
14823         Merged the `debugger-dublin' branch.
14824
14825         * debug-mini.c
14826         (mono_debugger_insert_method_breakpoint): New public method.
14827         (mono_debugger_remove_method_breakpoint): Likewise.
14828         (mono_debugger_check_breakpoints): New static method.
14829         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14830
14831         * debug-debugger.h (MonoDebuggerInfo):
14832         Renamed (to keep backward compatibility in the vtable):
14833         `insert_breakpoint' -> `old_insert_breakpoint'.
14834         `remove_breakpoint' -> `old_remove_breakpoint'.
14835         `create_string' -> `old_create_string'.
14836         `lookup_class' -> `old_lookup_class'.
14837         `lookup_type' -> removed; changed into a dummy field.
14838         `lookup_assembly' -> `old_lookup_assembly'.
14839         Added (same functionality, but different signature):
14840         `create_string', `lookup_class', `lookup_assembly'
14841         Added new:
14842         `get_method_addr_or_bpt', `remove_method_breakpoint',
14843         `runtime_class_init'.
14844
14845         * debug-debugger.c: Merged the `debugger-dublin' branch.
14846
14847 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14848
14849         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14850         well.
14851         (peephole_pass): Likewise.
14852
14853 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14854
14855         * driver.c: hopefully make setaffinity work also for ancient
14856         versions of linux.
14857
14858 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14859
14860         * driver.c : win32 build fix.
14861
14862 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14863
14864         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14865         processor if it is set.
14866
14867 2007-06-21  Martin Baulig  <martin@ximian.com>
14868
14869         * debug-mini.h: New file.
14870
14871         * debug-mini.c
14872         (mono_debugger_insert_breakpoint_full): Moved here from
14873         ../metadata/mono-debug-debugger.c.
14874         (mono_debugger_remove_breakpoint): Likewise.
14875         (mono_debugger_breakpoint_callback): Likewise.
14876
14877 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14878
14879         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14880         changes in MonoGenericClass.
14881
14882 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14883
14884         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14885
14886 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14887
14888         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14889         removal of MonoGenericMethod.
14890
14891 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14892
14893         * mini-exceptions.c: hooks for the exception events profiling API.
14894
14895 2007-06-14  Randolph Chung  <tausq@debian.org>
14896
14897         * Makefile.ma: Add hppa target.
14898         * mini-arch.h: Include mini-hppa.h
14899         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14900         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14901         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14902
14903 2007-06-14  Randolph Chung  <tausq@debian.org>
14904
14905         * inssel.brg: Add rules for "chained" compare-branch operations so that
14906         a single compare op can affect multiple branches.  Adjust cost for
14907         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14908         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14909         cost for some rules so that they can more easily be overridden by
14910         per-arch rules (with fixes from lupus).
14911         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14912
14913 2007-06-13  Randolph Chung  <tausq@debian.org>
14914
14915         * mini-ops.h: Reorder branch ops so that they match the order of the
14916         corresponding CEE_* ops.  The code expects them this way.
14917         Add new ops for HPPA target.
14918         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14919
14920 2007-06-13  Randolph Chung  <tausq@debian.org>
14921
14922         * mini-exceptions.c: Handle cases where the stack grows towards
14923         larger addresses.
14924         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14925
14926 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14927
14928         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14929         counter.
14930         * driver.c: explain where a non-matching corlib is found.
14931
14932 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14933
14934         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14935
14936 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14937
14938         * mini-exceptions.c: Generate a method profile leave event during
14939         an exception to ensure that the profiler gets notified.
14940
14941 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14942
14943         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14944         branch.
14945
14946         * cpu-amd64.md: Add long_and/or/xor opcodes.
14947
14948 2007-06-06  Wade Berrier  <wberrier@novell.com>
14949
14950         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14951         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14952         length of instruction shr_imm (expected 8, got 10)
14953
14954 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14955
14956         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14957
14958 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14959
14960         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14961         MonoInternalHashTable again (fixed bug in the internal hash table
14962         code).
14963
14964 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14965
14966         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14967         Have to figure out what makes it crash the SWF regression.
14968
14969 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14972
14973 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14974
14975         * mini.c: optimize out the type check when storing null in a
14976         reference array.
14977
14978 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14979
14980         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14981         MonoInternalHashTable.
14982
14983 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14984
14985         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14986         signed integer methods.
14987
14988 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14989
14990         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14991         permanently since the current approach doesn't work.
14992
14993 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14994
14995         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14996         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14997
14998 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14999
15000         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
15001         the sreg2==rdx case.
15002         
15003         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
15004         account if it contains a rex prefix.
15005         (peephole_pass): Handle OP_FMOVE as well.
15006
15007 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
15008
15009         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
15010         as it causes regressions.
15011
15012 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
15013
15014         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
15015         static case as well.
15016
15017         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
15018
15019         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15020         (mono_arch_get_this_arg_from_call): Ditto.
15021
15022         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
15023
15024         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
15025         invoke_impl field.
15026
15027         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
15028         (mono_arch_get_this_arg_from_call): Ditto.
15029
15030         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
15031         
15032         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
15033         try to create optimized invoke code and use that for further invocations. 
15034         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
15035
15036         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
15037
15038 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
15039
15040         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
15041         sealed classes or methods.
15042         *devirtualization.cs: tests for the new optimization
15043
15044 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
15045
15046         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
15047         by the update_volatile () function.
15048
15049 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
15050
15051         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
15052         require it.
15053
15054         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
15055
15056 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
15057
15058         * mini.c: Add configure checks for header files.
15059         * mini-x86.c: Add configure checks for header files.
15060         * trace.c: Add configure checks for header files.
15061         * aot-runtime.c: Add configure checks for header files.
15062         * aot-compiler.c: Add configure checks for header files.
15063         * driver.c: Add configure checks for header files.
15064         * mini-codegen.c: Add configure checks for header files.
15065         
15066         Code is contributed under MIT/X11 license.
15067
15068 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
15069
15070         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
15071         icompare_imm -128 + op_iclt. Fixes #81703.
15072
15073 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
15074
15075         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
15076
15077 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
15078
15079         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
15080         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
15081         so that all isinst checks now use "interface_bitmap".
15082
15083 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
15084
15085         * cpu-amd64.md (jmp): Fix a warning.
15086
15087         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
15088
15089         * basic.cs: Add new regression test.
15090
15091         * basic.cs: Remove test which is now in basic-long.cs.
15092
15093         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
15094
15095         * basic-long.cs: Add new test.
15096         
15097 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
15098
15099         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15100
15101 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15102
15103         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15104
15105         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15106         places.
15107         
15108         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15109         throwing code a bit.
15110
15111         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15112         the exception throwing code a bit.
15113
15114         * mini-x86.c (get_call_info): Allocate result from a mempool.
15115
15116 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15117
15118         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15119
15120         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15121
15122         * mini.h (MonoCompile): Add 'token_info_hash' field.
15123
15124         * mini.c: Save token->method associations during compilation so the AOT 
15125         compiler can use it.
15126         
15127         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15128         which reference generic classes and methods.
15129
15130 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15131
15132         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15133
15134         * aot-compiler.c (compile_method): Fix a typo in a comment.
15135
15136         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15137
15138         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15139         everything generic.
15140
15141         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15142
15143 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15144
15145         * mini.h (MonoCompile): Add 'args' field.
15146
15147         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15148         into cfg->args.
15149
15150         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15151
15152 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15153
15154         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15155
15156         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15157
15158         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15159         opcodes for some opcodes.
15160
15161         * mini.h *.brg *.c: Use the new opcodes.
15162
15163 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15164
15165         * mini.h: Bumped aot revision.
15166
15167         * inssel.brg: modified code generation of type checks for interfaces
15168         to use the new "MonoClass.interface_bitmap" instead of the old
15169         "MonoClass.interface_offsets".
15170
15171 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15172
15173         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15174
15175 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15176
15177         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15178         64 bit platforms.
15179
15180 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15181
15182         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15183
15184 2007-04-27  Wade Berrier  <wberrier@novell.com>
15185
15186         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15187         mini.h) to fix build.
15188
15189 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15190
15191         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15192         
15193         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15194         causes the corlib unit tests to fail.
15195
15196 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15197
15198         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15199
15200         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15201
15202         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15203         opcodes to the comparison relations.
15204
15205         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15206         opcodes to their types.
15207         
15208         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15209
15210         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15211         it in cfg->arch.cinfo.
15212
15213         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15214
15215         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15216         cfg->cil_offset_to_bb.
15217
15218 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15219
15220         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15221         created becase of initlocals.
15222
15223 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15224
15225         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15226         Sergey Tikhonov <tsv@solvo.ru>.
15227
15228 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15229
15230         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15231
15232 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15233
15234         * cpu-s390.md (break): Correct the length of break instruction.
15235
15236 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15237
15238         * mini.c: fix a couple of soft-float issues and comments.
15239
15240 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15241
15242         * trace.c (is_filenamechar): - is also a filename char.
15243
15244 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15245
15246         * mini-s390.c: Correct checking for enum type in return value processing.
15247
15248 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15249
15250         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15251         (version.h): Makefile is in the build directory.
15252
15253 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15254
15255         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15256
15257 2007-04-11  Martin Baulig  <martin@ximian.com>
15258
15259         * mini.c (can_access_member): Fix handling of generic classes;
15260         fixes #81259.
15261
15262 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15263
15264         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15265
15266 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15267
15268         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15269
15270 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15271
15272         * mini-codegen.c: make sure the right spill amount is
15273         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15274
15275 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15276
15277         * mini-ppc.c: fixes for the fp_branch_nan test.
15278
15279 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15280
15281         * basic.cs: Comment out new test which still fails on ia64.
15282
15283 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15284
15285         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15286
15287 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15288
15289         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15290
15291 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15292
15293         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15294         on 64 bit machines. Fixes part of #80738.
15295
15296         * basic.cs: Add regression test.
15297
15298 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15299
15300         * inssel.brg basic.cs: Revert previous change to fix build.
15301
15302         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15303         platforms.
15304         
15305         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15306
15307         * basic.cs: Add new regression test.
15308
15309 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15310
15311         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15312         many arguments.
15313
15314 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15315
15316         * cpu-s390x.md: Correct length of break instruction.
15317
15318 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15319
15320         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15321         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15322
15323 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15324
15325         * *.c: Begin WIN64 port.
15326         * mini.c:  Use correct register in profiler.
15327         * mini-amd64.c: No inline assembly on Win64.
15328         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15329         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15330         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15331         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15332         mono_arch_ip_from_context for Win64.
15333         
15334         Contributed under MIT/X11 license.
15335
15336 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15337
15338         * exceptions-amd64.c (seh_handler): Ditto.
15339
15340         * exceptions-x86.c (seh_handler): Fix a memory leak.
15341
15342 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15343
15344         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15345         mini-s390x.c: fixed peephole optimizations to deal
15346         correctly with 1 and 2 byte reload avoidance.
15347
15348 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15349
15350         * cpu-s390.md, cpu-s390x.md: update localloc length.
15351
15352 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15353
15354         * cpu-g4.md: added missing descriptions.
15355
15356 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15357
15358         *  Makefile.am: Add support so the tail tests are not executed on
15359         PowerPC as that is a known limitation of the PowerPC port.
15360
15361 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15362
15363         * runmdesc.bat:  Move to msvc directory.
15364         
15365 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15366
15367         * runmdesc.bat:  Run executable that was produced by the current
15368         target and sent via an argument.
15369         
15370 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15371
15372         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15373         #81102.
15374
15375         * generics.2.cs: Add regression test.
15376
15377 2007-03-09  Wade berrier  <wberrier@novell.com>
15378
15379         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15380
15381 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15382
15383         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15384         AOT code depends on this.
15385
15386 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15387
15388         * mini.c: more precise tracking of types in the eval stack
15389         (part of fix for bug #81044).
15390
15391 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15392
15393         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15394
15395         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15396
15397 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15398
15399         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15400
15401         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15402
15403 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15404
15405         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15406         a pointer on 64 bit systems. Fixes #80190.
15407
15408         * iltests.il: Add new regression test.
15409
15410 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15411
15412         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15413
15414 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15415
15416         * trace.c: Remove an erroneous alignemnt check when tracing.
15417           Fixes --trace on OSX86.
15418
15419 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15420
15421         * mini-$(arch).h: initialize SP in context for all the archs.
15422
15423 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15424
15425         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15426         regressions in the thread tests.
15427
15428 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15429
15430         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15431         - fixed implementation of LOCALLOC opcode
15432         - implemented non-un compare for floats
15433         - code cleanup
15434         - implementation of FDIV and CKFINITE opcodes
15435         - fixes for latest mono updates
15436         - additional arch opcodes
15437
15438 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15439
15440         * Makefile.am: simplify and merge rules for cross-compilation.
15441
15442 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15443
15444         * local-propagation.c: Actually *apply* the fix for bug 80591...
15445
15446 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15447
15448         * mini-exceptions.c: backuot part of the last change
15449         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15450
15451 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15452         * inssel.brg: Fix bug 59286.
15453
15454
15455 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15456
15457         * mini-exceptions.c: patch from Zoltan to correctly check for
15458         stack boundaries (using the stack register, not the frame register),
15459         fixes bugs #80724, #79717.
15460
15461 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15462
15463         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15464         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15465
15466         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15467         presence of frame pointer elimination.
15468
15469 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15470         
15471         * mini-x86.h: NetBSD UCONTEX_REG defines.
15472
15473 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15474
15475         * inssel-amd64.brg: Fix amd64 build.
15476
15477 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15478
15479         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15480         on amd64.
15481
15482 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15483
15484         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15485         ends.
15486
15487         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15488
15489 2007-01-30 Mark Mason <mason@broadcom.com>
15490
15491            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15492            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15493            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15494            beginning support for CEE_JMP [not quite working yet]
15495            * tramp-mips.c: LMF handling now works
15496         
15497 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15498
15499         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15500
15501         * mini.h (NULLIFY_INS): New macro.
15502
15503 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15504
15505         * mini.c: statistical profiler fix for windows, patch
15506         from Tor Lillqvist (tml@novell.com).
15507
15508 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15509         * local-propagation.c: Fix bug 80591.
15510
15511 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15512
15513         * Makefile.am: put back the --export-dynamic option as with
15514         the previous gmodule flags (thanks to Robert Jordan).
15515
15516 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15517
15518         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15519
15520         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15521         simplify and speed up the local register allocator. Also rename some fields
15522         like iassign->vassign.
15523         
15524         * regalloc.c: Remove some functions which are no longer used since their
15525         inlined version is in mini-codegen.c.
15526         
15527         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15528
15529         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15530
15531 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15532
15533         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15534         narrowing. Fixes #80622.
15535
15536         * iltests.il: Add new regresssion test. 
15537
15538 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15539
15540         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15541         debug-debugger.c, debug-debugger.h: warning fixes.
15542         * driver.c: updated copyright year and made it fit in one line.
15543
15544 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15545
15546         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15547
15548 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15549
15550         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15551
15552         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15553
15554         * iltests.il: Add new test for bug #80507.
15555
15556 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15557
15558         * mini-arm.h: use soft-float also on vfp for now.
15559
15560 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15561
15562         * mini.c: fix some more soft-float issues.
15563
15564 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15565
15566         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15567
15568 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15569         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15570         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15571         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15572
15573 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15574
15575         * mini-arm.c: typo fix.
15576
15577 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15578
15579         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15580
15581 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15582
15583         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15584         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15585
15586         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15587
15588         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15589
15590         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15591         
15592         * inssel.brg: Fix a warning.
15593
15594         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15595
15596         * abcremoval.c ssa.c ssapre.c: Update after this change.
15597         
15598         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15599
15600         * dominators.c (df_set): Use mono_bitset_union_fast.    
15601
15602 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15603
15604         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15605         mini-codegen.c: reduce relocations and memory usage for the cpu
15606         description.
15607
15608 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15609
15610         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15611
15612         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15613         to reduce their size.
15614
15615 2007-01-19 Mark Mason <mason@broadcom.com>
15616
15617         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15618         * mini-mips.c: more configuration macros, support long conditional branches, additional
15619         asserts, fix epilog instrumentation.
15620         * mini-mips.h: use standard stack walk
15621         * cpu-mips.md: increase size of div, rem and conditional branches
15622         
15623 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15624
15625         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15626         to cpu spec data.
15627
15628 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15629
15630         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15631         (compile_method): Ditto.
15632
15633         * aot-runtime.c (decode_klass_info): Ditto.
15634
15635         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15636         needed by the code generated by inssel.brg. Also fix a warning.
15637
15638 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15639
15640         * mini.c: deal with enums that become genericinsts by
15641         being nested in a generic class (bug #79956).
15642
15643 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15644
15645         * mini.c: match the generic definition to check for
15646         private access with generic types (bug #78431).
15647
15648 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15649
15650         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15651         to make life easier for people cross-compiling that insist on not
15652         using scratchbox.
15653
15654 2007-01-17 Mark Mason <mason@broadcom.com>
15655
15656         * inssel-long.brg: patch to deal with mips missing flags
15657         * inssel-long32-mips.brg: implement overflow checks
15658         * insset-mips.brg: implement overflow checks
15659         * mini-mips.h: implement conditional exception handling
15660         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15661           Remove unused code, minor cleanups.
15662         * exceptions-mips.c: minor cleanups
15663         * mini-ops.h: add mips conditional exception ops
15664         * cpu-mips.md: add mips conditional exception ops
15665
15666         
15667 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15668
15669         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15670         to deal with mips missing of flags.
15671
15672 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15673
15674         * exceptions-ppc.c: execute fault handlers.
15675
15676 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15677
15678         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15679
15680 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15681
15682         * mini.c: handle also floating point values in initialize_array.
15683
15684 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15685
15686         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15687         array initialization and make it conditional on the intrins option.
15688
15689 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15690
15691         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15692         relocations and put the patch info names close to the enum definition.
15693
15694 2007-01-15 Mark Mason <mason@broadcom.com>
15695
15696         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15697
15698 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15699
15700         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15701
15702 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15703
15704         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15705
15706 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15707
15708         * Makefile.am: distribute the mips sources.
15709
15710 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15711
15712         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15713         directly.
15714
15715 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15716
15717         * cpu-x86.md: back out for now as this triggers other regressions.
15718
15719 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15720
15721         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15722         to eax:edx, so ecx can't get allocated to them (bug #80489).
15723
15724 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15725
15726         * mini.c, mini-exceptions.c: enabled running fault handlers
15727         (bug #80469).
15728
15729 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15730
15731         * driver.c: If nothing fail, do not use the string "failed",
15732         because it makes it very annoying to view test result logs on the
15733         web. 
15734
15735 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15736
15737         * debug-debugger.c (mono_debugger_main): Rename "main" to
15738         "main_method" to prevent a warning.
15739
15740         Remove a warning for unused field.
15741
15742 2006-12-28  Martin Baulig  <martin@ximian.com>
15743
15744         * debug-debugger.c
15745         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15746
15747 2006-12-22  Martin Baulig  <martin@ximian.com>
15748
15749         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15750         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15751         seperate `.mdb_debug_info' section, so we can access it from the
15752         debugger even if the binary is stripped.
15753
15754         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15755         from the `.mdb_debug_info' here to prevent the linker from
15756         removing that section.
15757
15758         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15759         mdb-debug-info64.s.
15760
15761 2006-12-19  Robert Jordan  <robertj@gmx.net>
15762
15763         * mini-x86: enable the code to return small structures in
15764         registers for FreeBSD as well. Fixes bug #80278.
15765         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15766
15767 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15768
15769         * mini-x86.c: align the stack when calling the profiler
15770         function instrumenting the prolog (on OSX).
15771
15772 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15773
15774         * mini.c: emit a break opcode where Debugger.Break () is called.
15775
15776 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15777
15778         * mini.c (mono_method_to_ir): Provide useful information on this
15779         assert, to prevent others from debugging like I did.
15780
15781 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15782
15783         * mini.c: enable code which was incorrectly commented
15784         (bug #80235).
15785
15786 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15787
15788         * mini-x86.c: enable on OSX, too, the code to return small
15789         structures in registers.
15790
15791 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15792
15793         * mini-x86.c: remove the use of the dynamic code manager here, too.
15794
15795 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15796
15797         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15798         mono_debugger_create_notification_function() to use
15799         mono_global_codeman_reserve () instead of a dynamic code manager.
15800
15801 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15802
15803         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15804         ves_array_element_address() jit icall and use a generated
15805         managed method instead (which is about 4 times faster for a rank 3
15806         array access).
15807
15808 2006-11-29  Mark Mason  <mason@broadcom.com>
15809
15810         * basic-calls.cs: additional tests for passing
15811         structures as function arguments.
15812
15813 2006-11-29  Mark Mason  <mason@broadcom.com>
15814
15815         * mini-mips.h: disable custom exception handling
15816         * mini-mips.c: throw/rethrow should use jalr to call
15817         exception stubs.  Fixed bug with passing structures
15818         by value. More support for tracing floating point
15819         functions.
15820
15821 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15822
15823         * mini.c: fixed typo in the soft-float ldind.r4 handling
15824         (bug #80086).
15825
15826 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15827
15828         * mini.c, mini.h, driver.c: added --runtime command line
15829         option to select a different runtime than the autodetected one.
15830         * jit.h: added API for embedders to initialize with a specific
15831         runtime version.
15832
15833 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15834
15835         * mini.c: handle also boxing of r4 values (bug #80024).
15836
15837 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15838
15839         * mini-ppc.c: force indirect calls until we reserve
15840         enough address space for all the generated code.
15841
15842 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15843
15844         * exceptions-arm.c: workaround bugs in the libc definition
15845         of struct ucontext.
15846
15847 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15848
15849         * inssel.brg: fixes from me and Mark Mason.
15850
15851 2006-11-23  Dick Porter  <dick@ximian.com>
15852
15853         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15854         semaphore display now we've fixed the initial value
15855
15856 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15857
15858         * inssel.brg: partially revert the last change to fix the build.
15859
15860 2006-11-21  Mark Mason  <mason@broadcom.com>
15861
15862         * inssel.brg: Add and use compare-and-branch macros to support
15863         architectures that do not have condition code registers (ie. MIPS).
15864         * *-mips.{c,brg,md}: Fix copyright statements
15865
15866 2006-11-20  Mark Mason  <mason@broadcom.com>
15867
15868         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15869         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15870         * mini.h: Added declaration for mono_print_ins()
15871         * mini-codegen.c: added ins_spec initializer for MIPS
15872         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15873         vreg to be virtual and hreg to be non-virtual.
15874         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15875         is not yet working/implemented correctly.
15876         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15877         non-static, fixup calls to print_ins() from other parts in the file.
15878
15879 2006-11-20  Mark Mason  <mason@broadcom.com>
15880
15881         * basic-calls.cs: added tests for passing structures as arguments
15882         to calls.
15883
15884 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15885
15886         * inssel-long32.brg: optimize signed division by power of two.
15887
15888 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15889
15890         * mini-arm.c: added support for interworking with thumb code
15891         (mono must be still be built using the ARM instruction encoding).
15892
15893 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15894
15895         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15896         verifier has different rules for it.   Fixes a few verifier issues
15897         in the test suite.
15898
15899         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15900         at the end, so people know what happened.
15901
15902 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15903
15904         * brach-opts.c: in optimize_exception_target() make sure we
15905         are in a catch clause (fixes bug #79871).
15906
15907 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15908
15909         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15910         more soft-float support fixes.
15911
15912 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15913
15914         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15915         that are passed half on the stack and half in registers.
15916
15917 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15918
15919         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15920         more mips integration work from Mark E Mason 
15921         <mark.e.mason@broadcom.com>.
15922
15923 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15924
15925         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15926         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15927         tramp-mips.c: added sources for the mips port, not
15928         integrated in the build yet. Contributed by
15929         Mark E Mason <mark.e.mason@broadcom.com>.
15930
15931 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15932
15933         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15934
15935 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15936
15937         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15938         put the soft-float rules in its own file since it seems to
15939         break s390 compilation.
15940
15941 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15942
15943         * mini-arm.c: fixed wrnings.
15944
15945 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15946
15947         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15948         inssel-arm.brg: ARM support for soft-float.
15949
15950 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15951
15952         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15953         loads and stores of 32 bit fp values.
15954
15955 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15956
15957         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15958
15959         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15960         works. Fixes #79852 and #79463.
15961
15962 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15963
15964         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15965         more soft-float support WIP and fixes.
15966
15967 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15968
15969         * mini-arm.c: some VFP updates.
15970
15971 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15972
15973         * mini-exceptions.c: 0 is a valid local var offset in some
15974         architectures, don't assert (bug #78508).
15975
15976 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15977
15978         * exceptions-arm.c: fixed off by one error in stack walk code.
15979
15980 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15981
15982         * mini.h, mini.c: more precise tracking of type load exceptions.
15983
15984 2006-11-03  Robert Jordan  <robertj@gmx.net>
15985
15986         * Makefile.am: [WIN32] Add monow.exe target.
15987         * driver.c: [WIN32] Don't detach the console when debugging.
15988         Fixes bug #79797.
15989         
15990 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15991
15992         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15993
15994 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15995
15996         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15997
15998         * driver.c (mini_regression): Fix --regression with AOT.
15999
16000         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
16001
16002 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
16003
16004         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
16005
16006         * mini-sparc.h: Don't use sigaction on sparc/linux.
16007
16008         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
16009
16010         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
16011
16012         * mini-exceptions.c: Add proper include files for getpid ().
16013
16014 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
16015
16016         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
16017         address instead of a MonoJitInfo* to avoid decoding the exception info for the
16018         method.
16019
16020         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
16021         name cache to reduce its size.
16022
16023         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
16024
16025 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
16026
16027         * mini-x86.c: Save/restore the current LMF structure more efficiently using
16028         the mono_lmf TLS variable.
16029
16030         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
16031         trampoline lmf frames.  
16032
16033         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
16034
16035 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
16036
16037         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
16038         the mono_lmf TLS variable.
16039
16040         * mini-exceptions.c: Access the LMF structure through accessors.
16041
16042         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
16043         variable instead of in jit_tls->lmf.
16044
16045         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
16046         
16047         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
16048         trampoline lmf frames.
16049
16050         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
16051
16052 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
16053
16054        * mini.c trace.c mini-x86.c: Revert these too.
16055         
16056        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
16057        signature change.
16058
16059 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
16060
16061         * genmdesc.c: removed now dead code.
16062
16063 2006-10-09  Robert Jordan <robertj@gmx.net>
16064
16065         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
16066
16067 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
16068
16069         * mini.h: do not leave gaps in the opcode values.
16070
16071 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
16072
16073         * jit-icalls.h: flag functions as internal here, too.
16074
16075 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
16076
16077         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
16078         functions with the internal attribute.
16079
16080 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
16081
16082         * aot-compiler.c: fclose the file descriptor in the profile read loop.
16083
16084 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
16085
16086         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
16087         for soft-float.
16088
16089 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
16090
16091         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
16092         tail calls as on other platforms.
16093
16094         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
16095
16096         * iltests.il: Add a few tailcall tests.
16097
16098 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16099
16100         * driver.c: fix loop for old compilers (bug #79521).
16101
16102 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16103
16104         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16105
16106         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16107
16108         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16109         metadata without any code.
16110
16111         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16112         more precise debugging information using gdb.
16113
16114 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16115
16116         * inssel-ia64.brg: Make the helper methods static.
16117
16118 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16119
16120         * inssel-x86.brg: make the helper methods static.
16121
16122 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16123
16124         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16125
16126 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16127
16128         * mini.c: updates for monoburg changes.
16129         * inssel.brg: make a few helper functions static as they should.
16130
16131 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16132
16133         * Makefile.am: Move mini-codegen.c to common_sources.
16134
16135 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16136
16137         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16138         instructions.
16139         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16140         mini-ppc.h: port to use the common local register allocator.
16141
16142 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16143
16144         * mini.h: Remove the comment too then.
16145
16146 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16147
16148         * mini.h: put back backend.data which is to be used shortly and
16149         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16150         pointers on 4 byte boundaries it'd have much bigger issues running
16151         and you can ifdef it out anyway.
16152
16153 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16154
16155         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16156         MonoInst size by 4 bytes on 64 bit machines.
16157
16158 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16159
16160         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16161         replacement with more meaningful field names. Arch maintainers, please
16162         check the assigned names are good enough for your arch.
16163
16164 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16165
16166         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16167         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16168
16169 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16170
16171         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16172         relocations and memory requirements, put the optimization flags
16173         definitions in their own file.
16174
16175 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16176
16177         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16178
16179         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16180
16181 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16182
16183         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16184
16185 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16186
16187         * inssel.brg: use the correct function to get the size of an item
16188         in an array, given an element class.
16189         * aot-compiler.c: do not access class->class_size directly.
16190
16191 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16192
16193         * mini.h, debug-mini.c: added a debugging function to print
16194         info about local variables and arguments in a jitted method.
16195
16196 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16197
16198         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16199
16200         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16201
16202 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16203
16204         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16205         inner and outer loops when passing vtypes.
16206
16207 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16208
16209         * mini-ppc.c: take into account the cpu errata for cache flushing
16210         which caused some random errors (bug #79381).
16211
16212 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16213
16214         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16215         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16216
16217 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16218
16219         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16220         loaded.
16221
16222         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16223         freebsd ports tree.
16224
16225         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16226         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16227
16228         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16229         displacement.
16230
16231 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16232
16233         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16234
16235 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16236
16237         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16238         macro does not have to be changed during debugging.
16239
16240         * 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>.
16241
16242         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16243
16244         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16245         
16246         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16247         MONO_ARCH_NO_EMULATE_MUL is defined.
16248
16249         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16250
16251         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16252
16253         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16254
16255         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16256         
16257 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16258
16259         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16260         stuff to mini-exceptions.c where it is used.
16261
16262         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16263         setup code, the real one is in mini-exceptions.c.
16264
16265         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16266         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16267         some changes from the freebsd ports tree.
16268
16269         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16270         constants.
16271         
16272         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16273
16274 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16275
16276         * mini.c: on Linux, check for /proc to be mounted
16277         (bug# 79351, novell bug#201204).
16278
16279 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16280
16281         * mini.c: handle cases where pthread_attr_getstack() behaves
16282         incorrectly (bug #78096).
16283
16284 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16285
16286         * mini-arm.c: support larger stack frames (bug #79272).
16287
16288 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16289
16290         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16291
16292         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16293         tokens.
16294
16295         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16296         mono_class_from_name () to find a class from its name.
16297
16298         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16299
16300 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16301
16302         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16303
16304 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16305
16306         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16307
16308 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16309
16310         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16311         callinfo->trampoline.
16312
16313         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16314         fixes #79271.
16315         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16316         future.
16317
16318 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16319
16320         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16321
16322 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16323
16324         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16325         stats.method_trampolines, it is already done by the generic trampoline code.
16326
16327         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16328         
16329 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16330
16331         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16332
16333         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16334
16335         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16336
16337         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16338         
16339         * mini.c (print_jit_stats): Print new stats.
16340
16341         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16342
16343 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16344
16345         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16346         Address on two dimensional arrays. Fixes #78729.
16347
16348         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16349
16350         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16351         a method.
16352
16353         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16354
16355         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16356         #79130.
16357         
16358         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16359         a race condition.
16360         (mini_get_ldelema_ins): Ditto.
16361
16362 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16363
16364         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16365         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16366         Fixes #79213.
16367
16368 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16369
16370         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16371         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16372
16373         * exceptions-s390x.c: Cosmetic change.
16374
16375         * tramp-s390.c: Fix warning.
16376
16377         * cpu-s390.md: Correct length of mul_imm.
16378
16379 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16380
16381         * aot-compiler.c: added binary writer with ELF backend
16382         implementation (only on Linux/x86 for now).
16383
16384 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16385
16386         * Makefile.am: Don't run net 2.0 AOT tests.
16387
16388         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16389         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16390
16391         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16392
16393 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16394
16395         * aot-compiler.c: simplified and refactored the asm-writing code
16396         to allow different backends.
16397
16398 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16399
16400         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16401
16402         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16403         little. Share patches of type TYPE_FROM_HANDLE as well.
16404
16405         * mini.c (mono_patch_info_equal): New helper function.
16406         (mono_patch_info_hash): Ditto.
16407
16408         * aot-compiler.c (emit_method_code): Fix s390 build.
16409
16410         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16411         is not handled because it is stored as a flag and not as a type ctor. Fixes
16412         #79016.
16413
16414 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16415
16416         * aot-compiler.c: Fix computation of GOT slot statistics.
16417         
16418         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16419         Also remove support for not PIC AOT.
16420
16421         * mini.h: Bump AOT file format version.
16422
16423         * objects.cs: Add a test for #78990.
16424
16425         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16426         (peter.dettman@iinet.net.au). Fixes #79087.
16427
16428         * basic-long.cs: Add a test for the above.
16429
16430 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16431
16432         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16433         
16434         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16435         code somewhat.
16436
16437 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16438
16439         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16440         exceptions.
16441
16442 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16443
16444         * mini.c: Don't verify COM proxy invoke calls
16445         
16446
16447 2006-08-10  Dick Porter  <dick@ximian.com>
16448
16449         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16450         which process is holding semaphores locked.
16451
16452 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16453
16454         * mini-ia64.c mini-amd64.c: Fix #79027.
16455
16456         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16457
16458         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16459
16460         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16461         implicit arguments in a vararg call. Fixes #79027.
16462
16463 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16464
16465         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16466         (mono_get_array_new_va_signature): Ditto.
16467
16468 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16469
16470         * aot-runtime.c: Call init_plt lazily.
16471
16472         * inssel-long.brg: Fix unsigned long->int conversion.
16473
16474         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16475
16476         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16477         that most data is now in the .rss/.data section.
16478
16479 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16480
16481         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16482
16483         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16484
16485         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16486
16487         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16488
16489         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16490         virtual call. Fixes #79010.
16491
16492         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16493         and use the result as the this argument in the real call.
16494
16495         * generics.2.cs: Add a new test for #79010.
16496         
16497 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16498
16499         * mini-x86.c: Fix a warning.
16500
16501         * aot-compiler.c: Add a bunch of statistics.
16502
16503         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16504
16505 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16506
16507         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16508
16509 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16510
16511         * 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>.
16512
16513 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16514
16515         * mini.c (mono_method_to_ir): Obtain the original method in the
16516         CIL stream and use this to perform validation.
16517
16518         Fixed: #78816
16519
16520 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16521
16522         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16523         (mono_arch_call_opcode): Ditto.
16524
16525         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16526         #78826.
16527
16528         * mini.c (mono_patch_info_dup_mp): New helper function.
16529         
16530         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16531         compilation. Fixes #78827.
16532
16533 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16534
16535         * declsec.c: Use original security informations for
16536           MONO_WRAPPER_MANAGED_TO_MANAGED.
16537
16538 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16539
16540         * mini.c: Allow Com Interop methods/classes and
16541         don't verify COM wrapper calls
16542         
16543
16544 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16545
16546         * inssel-long32.brg: Fix long->i4 checked conversion.
16547
16548         * exceptions.cs: Add a test for the above.
16549
16550 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16551
16552         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16553
16554         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16555         leaks.
16556
16557         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16558         #78775.
16559
16560 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16561
16562         * mini.c: Fix solaris/x86 exception handling.
16563
16564         * Makefile.am: Get rid of $(ICU_LIBS).
16565
16566 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16567
16568         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16569         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16570         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16571
16572         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16573
16574         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16575         this function causes a SIGSEGV.
16576
16577 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16578
16579         * mini.c: Remove unused solaris/x86 includes.
16580
16581 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16582
16583         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16584
16585 2006-06-20  Jb Evain  <jbevain@gmail.com>
16586
16587         * cpu-g4.md: fix max length of start_handler instruction.
16588
16589 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16590         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16591
16592 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16593         * ssa.c: Fixed bug 78653 for SSA based deadce.
16594         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16595         MonoInst.flags, used in SSA based deadce.
16596         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16597         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16598
16599 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16600
16601         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16602         it can end up using non executable memory on ppc64 systems
16603         running ppc32 userspace (fix from Johannes Berg).
16604
16605 2006-06-14  Dick Porter  <dick@ximian.com>
16606
16607         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16608         4.1.1
16609
16610 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16611         * mini.c: Made so that inline is locally disabled if it would
16612         trigger a .cctor, because too many apps depend on this behavior
16613         (which seems to be also the one of the MS CLR).
16614
16615 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16616
16617         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16618         No idea why this worked before.
16619
16620         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16621         which branch to outer exception clauses since they could skip the
16622         inner finally clauses. Fixes #78633.
16623
16624         * exceptions.cs: Add a test for the above.
16625
16626         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16627         Fixes #78629.
16628
16629         * iltests.il: Add a test for the above.
16630
16631 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16632
16633         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16634         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16635
16636         * iltests.il: Add a test for the above.
16637
16638 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16639
16640         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16641         
16642         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16643         methods as instrinsics.
16644
16645 2006-06-09  Wade Berrier <wberrier@novell.com>
16646
16647         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16648         (simple-cee-ops.h ssapre-mini-ops.h)
16649
16650 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16651
16652         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16653         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16654         instruction).
16655         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16656         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16657
16658 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16659
16660         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16661
16662 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16663
16664         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16665         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16666         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16667         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16668         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16669         of opcodes, so that bug 78549 should not happen again.
16670         * ssapre.c: Updated to use the renamed files.
16671
16672 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16673
16674         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16675         in OP_ATOMIC_EXCHANGE_I4.
16676
16677 2006-06-07  Wade Berrier <wberrier@novell.com>
16678
16679         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16680         in mono_debugger_create_notification_function)
16681
16682 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16683
16684         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16685         
16686         * mini.c (type_from_stack_type): Disable some changes which do not
16687         seem to work.
16688
16689         * driver.c: Reenable opts.
16690
16691         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16692         of the evaluation stack.
16693         
16694         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16695         evaluation stack trace at entry to the bblock.
16696
16697         * mini.c (merge_stacks): New function to perform verification of stack merges.
16698         Turned off by default.
16699
16700         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16701         STACK_MP.
16702         
16703 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16704
16705         * local-propagation.c: Fixed bug 78549.
16706
16707 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16708
16709         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16710
16711 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16712
16713         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16714         tramp-arm.c, tramp-ia64.c
16715         (mono_debugger_create_notification_function): Update signature to
16716         new signature and use new protocol for creating the notification
16717         function.  
16718
16719         Should fix the build.
16720
16721 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16722
16723         * exceptions-ppc.c (mono_jit_walk_stack)
16724         (ves_icall_get_frame_info): Fix the build
16725
16726 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16727
16728         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16729
16730 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16731
16732         * il2tests.2.il: New file for generics CIL tests.  Add test for
16733         #78019.
16734         * Makefile.am: Update.
16735
16736         Fix #78019
16737         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16738         to nullable types.
16739
16740 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16741
16742         * aliasing.c: Fixed bug 78311.
16743
16744 2006-05-29  Martin Baulig  <martin@ximian.com>
16745
16746         * mini-exceptions.c (mono_find_jit_info): When computing the
16747         native offset, check whether we're actually inside the method's
16748         code; call mono_debug_print_stack_frame() to format the frame.
16749         (ves_icall_System_Exception_get_trace): Call
16750         mono_debug_print_stack_frame() to format the stack frame.
16751         (ves_icall_get_trace): Update to the new debugging API.
16752         (mono_jit_walk_stack_from_ctx): Likewise.
16753         (ves_icall_get_frame_info): Likewise.
16754
16755         * mini.c (get_method_from_ip): Use the new debugging API.
16756         (mono_print_method_from_ip): Likewise.
16757
16758         * exceptions-ppc.c
16759         (mono_jit_walk_stack): Use the new debugging API.
16760         (ves_icall_get_frame_info): Likewise.   
16761
16762 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16763
16764         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16765
16766 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16767
16768         * mini.c: Added "limitator" to inline for debugging.
16769
16770 2006-05-24  Martin Baulig  <martin@ximian.com>
16771
16772         * debug-debugger.c (mono_debugger_init): Create a private,
16773         malloc()-based code manager for the notification function and
16774         intentionally leak it on exit.  This fixes the crash-on-exit race
16775         condition.
16776
16777         * tramp-amd64.c
16778         (mono_debugger_create_notification_function): Added
16779         `MonoCodeManager *' argument.
16780
16781         * tramp-x86.c
16782         (mono_debugger_create_notification_function): Added
16783         `MonoCodeManager *' argument.
16784
16785 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16786
16787         * aliasing.c: Fixed 64 bit issue.
16788         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16789         default since all known bugs are fixed (one more time!).
16790
16791 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16792
16793         * mini.c: write barrier support.
16794
16795 2006-05-23  Martin Baulig  <martin@ximian.com>
16796
16797         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16798         check at the top of the file.
16799
16800 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16801
16802         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16803         reverting changes without reason and without changelog entries.
16804
16805 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16806
16807         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16808         to a few opcodes. Fixes #78439.
16809
16810         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16811         consistency with other archs.
16812
16813         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16814
16815 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16816
16817         * debug-debugger.c: fix the build.
16818
16819 2006-05-17  Martin Baulig  <martin@ximian.com>
16820
16821         * debug-debugger.c
16822         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16823         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16824         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16825         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16826
16827 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16828
16829         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16830
16831 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16834         MONO_TYPE_GENERICINST.
16835         
16836         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16837         MONO_TYPE_GENERICINST.
16838
16839 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16840
16841         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16842         #78325.
16843
16844 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16845
16846         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16847         mempool.
16848         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16849
16850 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16851
16852         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16853         mono_trace_cleanup ().
16854
16855         * iltests.il: Fix problem with the newly added test.
16856
16857         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16858         due to register constraints, free up the previous hreg. Fixes #78314.
16859
16860         * iltests.il: Add new test for #78314.  
16861
16862         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16863         Interlocked.Add. Fixes #78312.
16864
16865         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16866         
16867 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16868
16869         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16870
16871 2006-05-05  Martin Baulig  <martin@ximian.com>
16872
16873         * debug-mini.c (mono_debug_open_block): New method.
16874
16875         * mini-amd64.c
16876         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16877         the beginning of each basic block.
16878
16879         * mini-x86.c
16880         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16881         the beginning of each basic block.
16882
16883 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16884
16885         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16886         default until I understand why they break the build on amd64.
16887
16888 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16889
16890         * mini.c (mini_cleanup): Call mono_cleanup ().
16891
16892         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16893         errors.
16894
16895 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16896
16897         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16898         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16899         default since all known bugs are fixed, and I cannot reproduce bug
16900         77944... I'm asking Matt Hargett to test again after this commit.
16901
16902 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16903
16904         * mini-codegen.c: Fixed typo that thrashed inline.
16905
16906 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16907
16908         * dominators.c (compute_dominators): Avoid using a worklist since
16909         it is not correct in some cases. Instead, iterate over all bblocks as
16910         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16911
16912 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16913
16914         * mini.c (mono_jit_compile_method_inner): Use
16915         mono_prepare_exception_from_error that resets the value
16916         internally.
16917
16918 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16919
16920         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16921         
16922 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16923
16924         * aliasing.c: Fixed bug 78210.
16925
16926 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16927
16928         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16929         default until all their problems (or the ones they trigger) are fixed.
16930
16931 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16932
16933         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16934         
16935         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16936         as loaded only after resolving patches since that could invoke the same method.
16937
16938         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16939
16940         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16941         functions.
16942
16943         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16944         AOT loader.
16945
16946         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16947         stack.
16948
16949         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16950         made from AOT code through the PLT table.
16951
16952         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16953         holding the plt offset when a call is made to the aot plt trampoline.
16954         
16955 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16956
16957         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16958         amd64 AOT support.
16959
16960         * Makefile.am (common_sources): Fix build breakage.
16961
16962         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16963         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16964         intra-assembly calls if possible.
16965         
16966         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16967
16968         * mini-trampolines.c: Handle PLT entries.
16969
16970         * mini.c: Avoid creating a GOT var for calls.
16971
16972         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16973         from mscorlib code.
16974
16975         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16976         from mscorlib code.
16977
16978         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16979         AOT code.       
16980
16981         * mini.h: Bump AOT file format version.
16982         
16983         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16984         covers more cases.
16985
16986 2006-04-25  Martin Baulig  <martin@ximian.com>
16987
16988         * driver.c: Disable copyprop, consprop and inline when running
16989         inside the debugger.
16990
16991 2006-04-25  Martin Baulig  <martin@ximian.com>
16992
16993         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16994         with `get_current_thread' and added `detach'.
16995         (MonoDebuggerMetadataInfo): Added `thread_size',
16996         `thread_tid_offset', `thread_stack_ptr_offset' and
16997         `thread_end_stack_offset'.
16998
16999 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
17000
17001         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
17002         aot-runtime.c.
17003
17004         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
17005         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
17006
17007         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
17008
17009         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
17010
17011         * aot.c: Add support for ADJUSTED_IID.  
17012
17013 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
17014
17015         * aot.c (emit_method_order): Don't align method_order_end.
17016
17017         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
17018         the interface ID changes.
17019
17020 2006-04-21  Dick Porter  <dick@ximian.com>
17021
17022         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
17023         cleaning up a thread.  Fixes the new part of bug 77470.
17024
17025 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
17026
17027         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
17028         to managed wrapper.
17029                      
17030 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
17031
17032         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
17033         
17034         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
17035         SIGSEGV. Fixes #78072.
17036
17037         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
17038         unregister our SIGABRT handler.
17039
17040 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
17041
17042         * mini.c: Disabled inline where it can alter the call stack in a
17043         way visible from managed code.
17044         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
17045         default.
17046
17047 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
17048
17049         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
17050         on other platforms. Fixes #78089.
17051
17052 2006-04-13  Martin Baulig  <martin@ximian.com>
17053
17054         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
17055         determine whether we're inside the debugger.
17056
17057         * debug-debugger.h
17058         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
17059
17060 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
17061
17062         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
17063         handler clauses. Fixes #78024.
17064
17065         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
17066         in the CALL_MEMBASE opcodes. Fixes #78088.
17067         (mono_arch_get_vcall_slot_addr): Ditto.
17068
17069 2006-04-10  Martin Baulig  <martin@ximian.com>
17070
17071         * debug-debugger.c: The thread handling code has now been moved
17072         into ../metadata/threads.c.
17073
17074 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17075
17076         * driver.c (mono_main): Fix --with-gc=none build.
17077
17078         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
17079         (mono_spillvar_offset_float): Ditto.
17080         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
17081         hreg, not when its !global, since on ia64, there is a third category: stacked
17082         registers.      
17083
17084 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
17085
17086         * mini.c: set MonoInst->klass for load field address and a few other
17087         places.
17088
17089 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
17090
17091         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
17092
17093 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
17094
17095         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
17096         the branch opt changes.
17097
17098 2006-04-06  Dick Porter  <dick@ximian.com>
17099
17100         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17101         
17102         * wapihandles.c (mini_wapi_seminfo): 
17103         * driver.c (mono_main): Add semaphore info option
17104
17105 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17106
17107         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17108         branch optimization changes. Fixes #78009.
17109
17110 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17111
17112         * mini.c: ignore accessibility of methods in managed->native wrappers.
17113
17114 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17115
17116         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17117         
17118         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17119
17120 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17121
17122         * mini.c: Modify the branch optimizations to preserve the invariant that
17123         the entries inside the in_bb and out_bb arrays are unique.
17124         (mono_unlink_bblock): Avoid creation of new arrays.
17125
17126 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17127
17128         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17129         change (#77992).
17130
17131 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17132
17133         * mini.c (optimize_branches): Remove the "optimizations" in
17134         the cbranch1/cbranch2 -> branch cases which were causing several
17135         problems in the past. Fixes #77986.
17136
17137 2006-03-31  Chris Toshok  <toshok@ximian.com>
17138
17139         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17140         default optimizations :(
17141
17142 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17143
17144         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17145         branch.
17146
17147 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17148
17149         * local-propagation.c: Added comments to structs and removed
17150         "Mono" prefixes from local tree mover types.
17151
17152 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17153
17154         * Makefile.am (arch_sources): Define this for each architecture so 
17155         libmono_la_SOURCES is defined in one place.
17156
17157 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17158
17159         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17160         from handles/.
17161
17162 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17163
17164         * driver.c: print the GC name supplied by configure.
17165
17166 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17167
17168         * local-propagation.c: Added tree mover, and moved here all the
17169         local propagation code from mini.c
17170         * mini.c: Added support for treeprop, and moved all the local
17171         propagation code to local-propagation.c
17172         * mini.h: Added support for treeprop
17173         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17174         treeprop, inline and deadce by default
17175         * Makefile.am: Added local-propagation.c
17176
17177 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17178
17179         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17180
17181 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17182
17183         * debug-debugger.c: make it compile without the Boehm GC.
17184
17185 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17186
17187         * mini.c: fixed issue with mismatch when an icall is registered
17188         with multiple names but same address.
17189
17190 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17191
17192         * declsec.c, mini-exceptions.c: use write barrier to set reference
17193         fields of managed objects.
17194
17195 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17196
17197         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17198         (can_access_internals): Fix a warning.
17199
17200         * mini.c (print_method_from_ip): Rename this to 
17201         mono_print_method_from_ip so it gets exported.
17202
17203         * trace.c: Deal with strings inside StringBuilder's containing garbage
17204         and fix memory leaks. Fixes #77848.
17205
17206 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17207
17208         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17209         fixes #77787.
17210
17211 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17212         
17213         * mini-s390.c: Remove OP_X86_TEST_NULL.
17214
17215 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17216
17217         * mini.c: use the correct GetHashCode() for the moving collector.
17218
17219 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17220
17221         * liveness.c: Regalloc spill cost tuning.
17222
17223 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17224         
17225         * mini-s390x.h: Correct S390_LONG macro.
17226
17227         * mini-s390x.c: Cleanup unused code.
17228
17229 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17230
17231         * jit-icalls.h: New file.
17232
17233         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17234         icalls and include that instead of including jit-icalls.c.
17235
17236         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17237         OP_X86 opcodes.
17238
17239 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17240
17241         * mini.c: when checking for member accessibility, also check for
17242         friend assemblies and for explicit interface implementations.
17243
17244 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17245
17246         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17247
17248         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17249
17250         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17251         common cases are done first.    
17252
17253         * mini-ops.h: Only define platform specific opcodes on the given platform.
17254
17255         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17256         branch.
17257         
17258 2006-03-14  Martin Baulig  <martin@ximian.com>
17259
17260         Revert Paolo's change from r57348:
17261
17262         * mini.h: don't use gboolean for bitfields.
17263         * mini.c: verifier changes for fields and methods accessibility.
17264
17265 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17266
17267         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17268
17269         * mini-s390x.c: Fix conv_r_un.
17270
17271         * cpu-s390, cpu-s390x.md: Fix lengths.
17272
17273 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17274
17275         * mini.c: nested types have access to all the nesting
17276         levels, not just the enclosing types.
17277
17278 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17279
17280         * mini.c: added a few more verification checks.
17281
17282 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17283
17284         * liveness.c: Merge optimizations from the linear-il branch.
17285
17286 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17287
17288         * mini-ia64.c (emit_call): Add a comment.
17289
17290         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17291
17292         * tramp-ia64.c: Fix some warnings.
17293
17294 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17295
17296         * mini.h: don't use gboolean for bitfields.
17297         * mini.c: verifier changes for fields and methods accessibility.
17298
17299 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17300
17301         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17302         lazy icall wrapper changes.
17303
17304         * dominators.c: Replace all the dominator algorithms with faster
17305         ones from the linear-il branch.
17306
17307         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17308         the mempool.
17309
17310         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17311         common cases are done first.
17312
17313         * mini-amd64.c: Fix some warnings.
17314
17315         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17316         from the mempool.
17317
17318         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17319         added code.
17320
17321         * mini.h: Add a missing prototype.
17322
17323 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17324
17325         * mini.c: Compile icall wrappers lazily.
17326
17327         * mini-codegen.c: Use printf instead of g_print since its much faster.
17328
17329         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17330         function.
17331
17332         * mini.c (optimize_branches): Cache the negative result from 
17333         remove_block_if_useless ().
17334
17335         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17336         Also fix some bblock linking issues.
17337
17338         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17339         assembly files.
17340
17341         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17342
17343         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17344         accessed fields first, for better cache behavior.
17345         
17346 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17347
17348         * mini.c: speedup IList<T> array accesses.
17349
17350 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17351
17352         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17353         inline_costs counter. Fixes #77190.
17354
17355 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17356
17357         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17358         trace messages. Fixes #77706.
17359
17360 2006-03-04  Martin Baulig  <martin@ximian.com>
17361
17362         * tramp-amd64.c, tramp-x86.c
17363         (mono_debugger_create_notification_function): Use
17364         mono_global_codeman_reserve() to allocate a buffer at runtime and
17365         return it.
17366
17367         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17368
17369         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17370         notification function at runtime and then call `initialize' in the
17371         `MONO_DEBUGGER__debugger_info' vtable.
17372
17373 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17374
17375         * iltests.il: Fix a visibility problem.
17376
17377 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17378
17379         * driver.c, mini.c: add hooks for the counters API.
17380
17381 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17382
17383         * driver.c: show disabled options.
17384
17385 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17386
17387         * linear-scan.c: always use cost-driven selection.
17388
17389 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17390
17391         * jit-icalls.c (helper_compile_generic_method): Revert change from
17392         2006-02-24.
17393
17394 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17395
17396         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17397
17398 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17399
17400         * inssel.brg: style fixes, mostly to force the updated monoburg
17401         to run for people using svn.
17402
17403 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17404
17405         * mini.c: match monoburg changes.
17406
17407 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17408
17409         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17410         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17411         declaration in the header file.
17412
17413 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17414
17415         * helpers.c: reduce relocations and mem usage.
17416
17417 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17418
17419         * mini.h, mini-codegen.c: disable logging features if
17420         requested by configure.
17421
17422 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17423
17424         * mini.c: tiny verifier changes.
17425
17426 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17427
17428         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17429         cpu-pentium.md: stack alignment changes for osx/x86,
17430         partially from Geoff Norton <gnorton@customerdna.com>.
17431
17432 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17433
17434         * jit-icalls.c (helper_compile_generic_method): Update to changes
17435         in metadata/class.c.
17436
17437 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17438         
17439         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17440         
17441         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17442         interface calls with large offsets.
17443
17444 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17445
17446         * jit-icalls.c (helper_compile_generic_method): Document the
17447         special-case we depend on so that we can inflate the method twice
17448         with the same context with no bad side-effects.
17449
17450 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17451
17452         * mini-x86.c, mini-amd64.c: fix for case when xen support
17453         is disabled.
17454
17455 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17456
17457         * mini-x86.c, mini-amd64.c: generate code to access tls items
17458         in a faster way for Xen systems.
17459
17460 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17461
17462         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17463         updates and compilation fixes for the OSX/x86 port, mostly from
17464         Geoff Norton <gnorton@customerdna.com>.
17465
17466 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17467
17468         * inssel.brg: faster interface call implementation
17469         to sync with the interface_offsets MonoVTable changes.
17470
17471 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17472
17473         * mini.c: more verification checks.
17474
17475 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17476
17477         * mini.c: added a few more verification checks.
17478
17479 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17480
17481         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17482         facility on the processor and use it if available.
17483
17484 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17485
17486         * driver.c, aot.c, mini.c: throw exception if the IL code is
17487         invalid or unverifiable.
17488
17489 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17490
17491         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17492         m.StructField.
17493
17494 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17495
17496         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17497
17498 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17499
17500         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17501         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17502         handling of instantiated generic valuetypes.
17503
17504 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17505
17506         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17507         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17508         instead.
17509
17510         * generics.2.cs: Revert the nullable reftypes tests.
17511
17512 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17513
17514         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17515         using __builtin_frame_address (1) as it doesn't work in the presence
17516         of optimizations. Hopefully fixes #77273.
17517
17518         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17519         -> generics.cs change as it doesn't work with some automake versions.
17520
17521 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17522
17523         * mini.c: handle systems that sue a different way to
17524         retrieve the stack address of the current thread.
17525
17526 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17527
17528         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17529         it specially in the makefile.
17530
17531         * generics.2.cs: Add tests for nullable reference types.
17532
17533 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17534
17535         * mini.c: always handle the case when mono_jit_init()
17536         is called in a thread different from the main thread,
17537         confusing libgc (bug #77309).
17538
17539 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17540
17541         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17542
17543 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17544
17545         * mini.c: change optimize_branches () to use a single loop
17546         and introduce a new optimization to simplify some range checks.
17547
17548 2006-02-03  Martin Baulig  <martin@ximian.com>
17549
17550         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17551         and merged with debugger_thread_manager_add_thread().
17552         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17553         inform the debugger about the main thread.
17554
17555 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17556
17557         * basic.cs: Add test for div.un/rem.un constant folding.
17558
17559 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17560
17561         * cpu-s390x.md: correct int_xor_imm length
17562
17563 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17564
17565         * generics.2.cs: New test for #77442.
17566
17567         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17568         #77442.
17569
17570 2006-02-02  Martin Baulig  <martin@ximian.com>
17571
17572         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17573         <mono/metadata/mono-debug-debugger.h>   
17574
17575         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17576
17577 2006-02-02  Martin Baulig  <martin@ximian.com>
17578
17579         * debug-debugger.h: New header file for debug-debugger.c.
17580
17581         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17582         function is a separate thread anymore; add support for attaching.
17583
17584 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17585
17586         * tramp-x86.c: Fix a warning.
17587
17588 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17589
17590         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17591         on very large methods.
17592
17593         * aot.c (load_patch_info): Fix a warning.
17594
17595 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17596
17597         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17598         mini-ops.h: alu membase optimizations.
17599
17600 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17601
17602         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17603         to speedup StringBuilder.
17604
17605 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17606
17607         * dominators.c (mono_compute_natural_loops): Fix detection of
17608         loop body start blocks.
17609
17610         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17611
17612 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17613
17614         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17615         #75145.
17616
17617 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17618
17619         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17620
17621 2006-01-25  Martin Baulig  <martin@ximian.com>
17622
17623         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17624         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17625         started to cleanup this file a little bit.
17626
17627 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17628
17629         * mini.c: optimize a codepath frequently happening in generics code.
17630
17631 2006-01-23  Martin Baulig  <martin@ximian.com>
17632
17633         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17634
17635         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17636         functions directly.
17637
17638         * driver.c: debug-debugger.c is only available if
17639         `MONO_DEBUGGER_SUPPORTED' is defined.   
17640
17641 2006-01-23  Martin Baulig  <martin@ximian.com>
17642
17643         * debug-debugger.c: Only enable this on platforms where the Mono
17644         Debugger is working (x86 and x86_64).
17645
17646 2006-01-21  Martin Baulig  <martin@ximian.com>
17647
17648         The Mono Debugger is now using the normal `mono' instead of the
17649         `mono-debugger-mini-wrapper' when executing managed code.
17650
17651         * debug-debugger.c: New file; previously known as
17652         debugger/wrapper/wrapper.c.
17653
17654         * debug-mini.c (mono_init_debugger): Removed.
17655
17656         * driver.c (mono_main): Added new `--inside-mdb' command line
17657         argument which is used when running inside the debugger.
17658
17659 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17660
17661         * liveness.c (mono_analyze_liveness): Remove some unused data
17662         structures.
17663
17664 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17665
17666         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17667
17668 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17669
17670         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17671         depends on implementation details of monobitset.
17672
17673         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17674         Fixes #77271.
17675
17676 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17677
17678         * liveness.c: Update after monobitset changes.
17679
17680 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17681
17682         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17683
17684 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17685
17686         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17687
17688         * mini-s390x.c: Remove warning messages.
17689
17690 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17691
17692         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17693
17694 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17695
17696         * generics.2.cs: Add ldelem/stelem_any test.
17697
17698 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17699
17700         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17701
17702 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17703
17704         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17705         
17706 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17707
17708         * generics.2.cs: Reenable vtype tests.
17709
17710         * inssel-x86.brg: Remove an icorrect valuetype rule.
17711
17712 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17713
17714         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17715         initial support for OP_ABS.
17716
17717 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17718
17719         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17720
17721 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17722
17723         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17724         conversion and implement LADD/LSUB.
17725
17726         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17727         architectures.
17728
17729 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17730
17731         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17732
17733         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17734         architectures.
17735
17736 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17737
17738         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17739         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17740         (stack walk problem).
17741
17742 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17743
17744         * aot.c (mono_aot_load_method): Fix a warning.
17745
17746 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17747
17748         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17749
17750 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17751
17752         * iltests.il: Add test for #77148.
17753
17754         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17755         #77148.
17756
17757 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17758
17759         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17760
17761 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17762
17763         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17764         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17765
17766         * basic-long.cs: Add lconv-to-r4/r8 tests.
17767
17768 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17769
17770         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17771
17772         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17773         here as on other archs.
17774
17775 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17776
17777         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17778
17779 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17780
17781         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17782         
17783         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17784
17785         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17786         instrument_prolog; Add memory_barrier instruction.
17787
17788 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17789
17790         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17791
17792 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17793
17794         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17795
17796         * aliasing.c inssel.brg: Fix warnings.
17797
17798         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17799         could skip initialization of some parts of memory.
17800
17801         * mini.c mini-ia64.c: Fix warnings.
17802
17803         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17804
17805 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17806
17807         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17808         a crash seen on sparc.
17809
17810         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17811         
17812         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17813
17814 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17815
17816         * mini-ops.h: Add s390_backchain instruction
17817
17818         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17819
17820         * cpu-s390.md: Add s390_backchain instruction
17821
17822         * mini-s390.c: Significant ABI changes
17823
17824         * mini-s390.h: Cater for zero length structures
17825
17826 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17827
17828         * mini-s390.c: ABI fixes
17829
17830         * inssel-s390.brg: Remove debug statements
17831
17832         * cpu-s390.md: Fix length of ATOMIC_xx operations
17833
17834 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17835
17836         * basic-float.cs: Add float<->long conversion tests.
17837
17838 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17839
17840         * mini-s390.c: Fix LOCALLOC processing.
17841
17842         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17843
17844 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17845
17846         * iltests.il: Add tests for some opcodes not covered by the other
17847         tests.
17848
17849 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17850
17851         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17852         register loading for Tail processing; Correct trace output.
17853
17854         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17855
17856         * cpu-s390.md: Correct size of jmp instruction. 
17857
17858 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17859
17860         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17861
17862 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17863
17864         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17865           Bring s390 up to current level.
17866
17867 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17868
17869         * generics.2.cs: Disable the newly added tests as they do not work yet.
17870         
17871         * generics.2.cs: Add valuetype tests.
17872
17873 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17874
17875         * basic-long.cs: Add i4->u8 test.
17876
17877         * objects.cs: Add tests for JIT intrinsic.
17878
17879         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17880         optimizations lost by a mistake.
17881
17882 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17883
17884         * basic-long.cs: Remove a test moved to objects.cs.
17885
17886         * arrays.cs: Add more array tests.
17887
17888 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17889
17890         * arrays.cs: Add new tests for multi-dimensional arrays.
17891
17892 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17893
17894         * Makefile.am (test_sources2): Add generics.2.cs.
17895         (EXTRA_DIST): Add test_sources2.
17896
17897 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17898
17899         Support for boxing and unboxing nullable types as well as the
17900         isinst operation on nullables, per the CLI ammendment.
17901
17902         * inssel.brg (CEE_ISINST): Special case for nullable
17903
17904         * mini.c (handle_unbox_nullable): new method
17905         (handle_box): Special case for nullable types
17906         (mono_method_to_ir): Call handle_unbox_nullable in correct
17907         places.
17908
17909         * generics.2.cs: New test suite
17910
17911         * Makefile.am: Support for regression tests with generics.
17912
17913 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17914
17915         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17916         allocated to registers. Fixes #76800.
17917
17918 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17919
17920         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17921
17922 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17923
17924         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17925         of platforms.
17926
17927 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17928
17929         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17930         objects.cs.
17931
17932         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17933         
17934         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17935 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17936
17937         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17938         single precision before storing to a single precision location.
17939
17940 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17941
17942         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17943
17944 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17945
17946         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17947         correct files.
17948
17949         * basic.cs: Remove test_0_byte_compares test which was moved to
17950         objects.cs a long time ago.
17951
17952 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17953
17954         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17955
17956 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17957
17958         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17959         handlers are called.
17960
17961         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17962         throwing code.
17963
17964          * mini-ia64.c: Add support for the throw->branch exception 
17965         optimization.   
17966
17967         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17968
17969 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17970
17971         * mini.c: Enabled "fastpath" deadce :-)
17972         
17973 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17974
17975         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17976         alias analysis pass to support it.
17977         * mini.h: Likewise.
17978         * ssa.c: Likewise.
17979         * liveness.c: Likewise (liveness computation can use aliasing
17980         information to be more accurate).
17981         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17982         moreover made so that "--compile-all" uses the given optimization
17983         flags and not the default ones.
17984         * aliasing.c: Alias analysis (new file).
17985         * aliasing.h: Likewise.
17986         * Makefile.am: added "aliasing.c" and "aliasing.h".
17987         
17988 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17989
17990         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17991         OP_L opcodes.
17992
17993 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17994
17995         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17996         fp >= end_of_stack exit condition, as it is not needed, and it might
17997         become true for fp eliminated frames.
17998
17999 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
18000
18001         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
18002         coded offsets.
18003
18004 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
18005
18006         * mini-arm.c: fixed alignment of doubles/longs to match
18007         the C ABI (bug #76635).
18008
18009 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
18010
18011         * aot.c: fix compilation with --enable-minimal=aot.
18012
18013 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
18014
18015         * mini-arm.c: fixed compatibility with the new
18016         floating point emulator package for compares.
18017
18018 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
18019
18020         * mini.c : reverted sig->pinvoke changes (r51396-51397).
18021
18022 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
18023
18024         * mini-exceptions.c (print_stack_frame): Output to stderr.
18025         (mono_handle_native_sigsegv): Ditto.
18026
18027 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18028
18029         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
18030         OP_LCONV_TO_OVF_I implementation.
18031
18032         * mini-amd64.c: Add support for the throw->branch exception 
18033         optimization.
18034
18035         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
18036         when the catch clause catches a more general exception, i.e. Object.
18037
18038 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
18039
18040         * cpu-ia64.md: Remove unused opcodes.
18041
18042         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
18043         specific defines for architectures defining USE_SIGACTION.
18044
18045         * mini-ia64.c: Fix some warnings.
18046
18047         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
18048         version seemed to skip a frame.
18049
18050 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
18051
18052         * mini.c: Clean up the usage of sig->pinvoke flag. Now
18053         only calls which are made to native code use this flag.
18054
18055 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
18056
18057         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
18058         varargs methods as well.
18059         
18060         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
18061         which have save_lmf set. Reorganize methods prologs a bit.
18062
18063         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
18064         debugger to the proper place.
18065
18066 2005-10-29  Martin Baulig  <martin@ximian.com>
18067
18068         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
18069         when running inside the debugger until the debugger has support
18070         for it.
18071
18072 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
18073
18074         * mini.h: Fix a warning.
18075
18076 2005-10-24  Miguel de Icaza  <miguel@novell.com>
18077
18078         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
18079         we expose publicly, this returns the string.
18080
18081 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
18082
18083         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
18084         with fp elimination.
18085
18086 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
18087
18088         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
18089         native stacktrace using the glibc 'backtrace' function if available.
18090
18091 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
18092
18093         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
18094
18095         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
18096         handle SIGSEGVs received while in native code.
18097
18098         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
18099         code, call mono_handle_native_sigsegv which will abort the runtime
18100         after printing some diagnostics, instead of converting it into a
18101         confusing NullReferenceException.
18102
18103 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18104
18105         * cpu-pentium.md: Remove unused opcodes.
18106
18107 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18108
18109         * mini-amd64.h (MonoLMF): Add rsp field.
18110
18111         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18112         the lmf too.
18113
18114 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18115
18116         * mini-codegen.c (get_register_spilling): Fix some warnings.
18117
18118 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18119
18120         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18121         elimination during exception handling. Enable fp elimination by
18122         default.
18123
18124         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18125         elimination.
18126
18127 2005-10-16  Martin Baulig  <martin@ximian.com>
18128
18129         * mini-exceptions.c
18130         (mono_debugger_run_finally): New public method for the debugger.
18131
18132 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18133
18134         * debug-mini.c (mono_debug_init_method): Fix warning.
18135
18136         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18137         the 'exname' parameter const to fix some warnings.
18138
18139 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18140
18141         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18142         introduced by the previous patch.
18143
18144 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18145
18146         * basic-float.cs: Add test for precision of float arithmetic.
18147
18148         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18149         when loading/storing single values from/to memory.
18150
18151         * mini.c (mono_jit_compile_method_with_opt): Create the function
18152         pointers in the correct domain.
18153
18154 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18155
18156         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18157         introduced by previous patch.
18158         
18159         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18160         when out_filter_idx is NULL.
18161
18162         * mini-exceptions.c: Don't run filter clauses twice during exception
18163         handling. Fixes #75755.
18164
18165 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18166
18167         * aot.c: Add support for ldflda wrappers.
18168
18169         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18170         #75902.
18171
18172 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18173
18174         * mini.c, mini.h: do not consider exception handlers blocks when
18175         setting up interface variables.
18176
18177 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18178
18179         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18180
18181 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18182
18183         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18184         causes a regression.
18185
18186         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18187
18188 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18189
18190         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18191         of the OP_P definitions.
18192
18193         * TODO: Add a proposal for dealing with the CEE/OP mess.
18194
18195         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18196         optimizations from the x86 port.
18197
18198         * cpu-amd64.md: Ditto.
18199
18200         * basic.cs basic-long.cs: Add tests.
18201
18202 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18203
18204         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18205         Patrik Torstensson's implementation of my exception-handling
18206         optimization idea, when the exception object is not used
18207         (bug #62150).
18208
18209 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18210
18211         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18212         of the mul_imm optimizations from the old jit.
18213
18214 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18215
18216         * mini.c, liveness.c: patch by Patrik Torstensson and
18217         Zoltan Varga to improve performance in methods with
18218         exception clauses.
18219
18220 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18221
18222         * driver.c: Remove 'Globalization' entry from --version.
18223
18224 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18225
18226         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18227         there is a profiler interested in JIT events.
18228
18229         * aot.c: Load profile files produced by the AOT profiling module, and
18230         reorder methods based on the profiling info. Add a 'method_order' table
18231         to the AOT file to make mono_aot_find_jit_info work with the reordered
18232         methods.
18233
18234         * mini.h: Bump AOT file version info.
18235
18236 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18237
18238         * mini-arm.h: work around what looks like a gcc bug when optimizations
18239         are enabled.
18240
18241 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18242
18243         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18244         conditionals.  Use ...
18245         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18246
18247 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18248
18249         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18250         to determine the amount of memory to copy when passing valuetypes.
18251
18252         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18253         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18254
18255 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18256
18257         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18258         information about aot.
18259
18260 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18261
18262         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18263         macros. This will allow a deadlock debugger to easily be plugged
18264         in.
18265
18266 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18267
18268         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18269
18270 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18271
18272         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18273         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18274         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18275         ($(arch_built)) [CROSS_COMPILING]: Error out.
18276
18277 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18278
18279         * aot.c: Add support for the no_special_static flag for classes.
18280
18281 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18282
18283         * Reapply reverted patches.
18284
18285         * *: Revert r50174 as well.
18286
18287         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18288
18289 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18290
18291         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18292
18293 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18294
18295         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18296         part of the SIG_HANDLER_SIGNATURE.  
18297
18298 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18299
18300         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18301         statistics.
18302
18303         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18304         introduced by previous patch.
18305
18306 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18307
18308         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18309         saved registers too.
18310
18311         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18312         upon the information returned by get_call_info ().
18313         
18314         * mini-x86.c (add_float): Fix stack size calculation.
18315         (mono_arch_call_opcode): Rewrite this so it works based up the
18316         information returned by get_call_info ().
18317         (mono_arch_get_this_vret_args): Ditto.
18318
18319 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18320
18321         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18322         in cinfo to determine the registers which need to be used.
18323
18324 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18325
18326         * driver.c (mono_main): Add --server and --desktop flags. 
18327
18328 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18329
18330         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18331         registers as global registers.
18332
18333         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18334         longer needed with the new register allocator.
18335
18336         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18337
18338         * cpu-ia64.md: Remove unused opcodes.
18339         
18340         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18341         
18342 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18343
18344         * cpu-amd64.md: Remove unused opcodes.
18345
18346         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18347         needed with the new register allocator.
18348
18349         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18350         reg-reg moves.
18351
18352 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18353
18354         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18355
18356 2005-09-16  Martin Baulig  <martin@ximian.com>
18357
18358         * exceptions-amd64.c
18359         (throw_exception): Don't call mono_debugger_throw_exception() if
18360         we're a rethrow - see the FIXME in the code.
18361
18362 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18363
18364         * mini.c (mono_init_exceptions): This only works on some architectures.
18365         
18366 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18367
18368         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18369         on ia64.
18370
18371         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18372
18373         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18374         now in mini-exceptions.c.
18375
18376 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18377
18378         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18379         now in mini-exceptions.c.
18380
18381 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18382
18383         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18384         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18385
18386         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18387         code into mini-exceptions.c. Add some assertions to it.
18388
18389 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18390
18391         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18392         (<software@solmersa.com>). Fix as errors on windows.
18393
18394 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18395
18396         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18397         method info into the LMF.
18398
18399 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18400         
18401         * mini-ia64.c: Add proper unwind info for method epilogs.
18402
18403         * exceptions-ia64.c: Add some code to help debugging.
18404         
18405         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18406
18407         * mini-exceptions.c: Fix warning.
18408
18409 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18410
18411         * mini.c: Really fix build.
18412
18413         * mini-x86.c mini-amd64.c: Fix build.
18414
18415 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18416
18417         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18418
18419         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18420         some Interlocked methods as intrinsics.
18421
18422         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18423         for Thread methods as well.
18424
18425         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18426
18427         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18428
18429         * mini-ia64.c mini-x86.c mini-amd64.c 
18430         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18431         OP_MEMORY_BARRIER.
18432         
18433         * mini.c (mono_init_exceptions): Fix build breakage.
18434
18435 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18436
18437         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18438         of instructions. Use the new ia64_unw_op macros for emitting unwind
18439         info.
18440
18441         * mini.c (mono_init_exceptions): Initialize exception handling
18442         related trampolines at startup.
18443
18444 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18445
18446         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18447
18448 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18449
18450         * mini.c: Handle type loading errors gracefully during compilation and
18451         throw the appropriate exception.
18452
18453 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18454
18455         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18456         for the mono binary.
18457
18458 2005-09-09  Martin Baulig  <martin@ximian.com>
18459
18460         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18461         the release.
18462
18463 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18464
18465         * mini-arm.h: use emulation for conv.r.un for the release.
18466
18467 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18468
18469         * mini-arm.c, objects.cs: more fixes and tests for them.
18470
18471 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18472
18473         * mini-arm.c: align structures to at least 4 bytes to be able
18474         to keep our current optimized memcpy.
18475
18476 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18477
18478         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18479
18480 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18481
18482         * mini.c: ignore SIGPIPE.
18483
18484 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18485
18486         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18487
18488         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18489
18490 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18491
18492         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18493
18494 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18495
18496         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18497         exception handling support.
18498         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18499         patch by Brian Koropoff <briank@marakicorp.com>).
18500
18501 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18502
18503         * mini.c: revert another 'optimization' which breaks when
18504         items on the eval stack need to be saved at a basic block end
18505         (bug #75940).
18506
18507 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18508
18509         * jit-icalls.c: for arrays, ensure we always provide
18510         lower bounds.
18511
18512 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18513
18514         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18515         
18516         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18517
18518 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18519
18520         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18521         arguments in their original register.
18522
18523 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18524
18525         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18526         memset/memcpy.
18527
18528         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18529         when ssapre is enabled.
18530
18531         * inssel-long.brg: Fix bug in previous patch.
18532
18533         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18534         multiplication by a constant.
18535
18536 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18537
18538         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18539         icc.
18540
18541         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18542         saving registers.
18543
18544 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18545
18546         * inssel-arm.brg: apply changes tested by Brian Koropoff
18547         <briank@marakicorp.com>.
18548
18549 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18550
18551         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18552         
18553 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18554
18555         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18556         to the same register if dreg is just a base register.
18557         (print_ins): Improve printing of membase opcodes.
18558
18559         * inssel-x86.brg: Add optimized ldind(reg) rules.
18560
18561         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18562
18563 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18564
18565         * mini.c: when running under valgrind, set the stack bottom for
18566         the GC at the actual approximate stack for the app (fixes running
18567         mono with valgrind).
18568
18569 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18570
18571         * mini.c: do no break at the first valuetype to init found
18572         (fixes bug #75791).
18573
18574 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18575
18576         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18577
18578 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18579
18580         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18581
18582 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18583
18584         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18585
18586 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18587
18588         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18589
18590         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18591         code.
18592
18593         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18594         code.
18595
18596         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18597         methods.
18598
18599 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18600
18601         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18602
18603 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18604
18605         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18606         in the tail recursion optimization.
18607
18608         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18609         debug info into the assembly file.
18610
18611         * iltests.il: Add test for filter regions.
18612
18613         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18614         initial stack of filter regions. Fixes #75755.
18615
18616 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18617
18618         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18619         stack requirements.
18620
18621 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18622
18623         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18624         the check for an already compiled method on non-ia64 platforms.
18625         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18626         proper domain.
18627
18628         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18629
18630         * inssel-x86.brg: Add some optimized call rules.
18631
18632 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18633
18634         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18635         method here.
18636
18637         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18638         mono_arch_patch_delegate_trampoline.
18639
18640         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18641
18642         * mini-trampolines.c: Fix build.
18643
18644         * mini-amd64.h: Add delegate trampolines.
18645
18646         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18647
18648         * inssel-amd64.brg: Add optimized call rules.
18649         
18650         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18651
18652         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18653
18654 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18655
18656         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18657         change.
18658
18659         * mini-ia64.c: Remove LMF fixmes.
18660
18661         * mini-ia64.h: Remove most fields from LMF.
18662
18663         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18664
18665         * mini-trampolines.c: Add support for IA64 function descriptors.
18666
18667         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18668         for IA64 function descriptors.
18669
18670 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18671
18672         * tramp-arm.c: patch the vtable for virtual calls. Added
18673         support code to register/unregister the LMF.
18674         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18675         more LMF work.
18676
18677 2005-08-19  Dick Porter  <dick@ximian.com>
18678
18679         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18680         bit value if needed.
18681
18682 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18683
18684         * mini.c (mini_get_method): Move handling of wrapper data here.
18685
18686         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18687
18688         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18689         virtual.
18690
18691         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18692         bblock->code does not remain empty.
18693
18694 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18695
18696         * arrays.cs: Add regression test for #75832.
18697
18698         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18699         rules. Fixes #75832.
18700
18701         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18702         instruction scheduling.
18703
18704 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18705
18706         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18707
18708 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18709
18710         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18711
18712         * mini-codegen.c: Fix VC build.
18713
18714         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18715
18716 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18717
18718         * mini.h: fix signature for mono_register_opcode_emulation.
18719
18720 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18721
18722         * mini.c: Get rid of most of the helper_sig_... constants using
18723         mono_create_icall_signature ().
18724
18725 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18726
18727         * jit-icalls.c (helper_ldstr): New helper function.
18728
18729         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18730
18731         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18732         throw, load the string using a helper call instead of creating a string object.
18733
18734         * aot.c: Update after LDSTR changes.
18735
18736         * mini.h: Bump AOT file version.
18737         
18738         * aot.c: Save class size info into the AOT file. Print more statistics during
18739         compilation.
18740
18741         * mini.h: Bump AOT file version.
18742
18743         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18744         ordering of disasm cases. Fixes #74957.
18745
18746 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18747
18748         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18749         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18750         the generic code needed for the ARM port.
18751
18752 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18753
18754         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18755         inssel-arm.brg: more ARM features and fixes.
18756
18757 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18758
18759         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18760         ARM port work in progress.
18761
18762 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18763
18764         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18765
18766         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18767
18768         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18769
18770         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18771
18772         * *-ia64.*: Ongoing IA64 work.
18773         
18774         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18775
18776 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18777
18778         * TODO: Remove out-of-data todo stuff.
18779
18780         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18781         dead code.
18782
18783         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18784
18785         * mini.h: Bump corlib version.
18786
18787 2005-07-27  Martin Baulig  <martin@ximian.com>
18788
18789         * mini-codegen.c
18790         (create_copy_ins): Added `const unsigned char *ip' argument; set
18791         `copy->cil_code' from it.
18792
18793 2005-07-27  Martin Baulig  <martin@ximian.com>
18794
18795         * mini-exceptions.c (mono_handle_exception): Don't call
18796         mono_debugger_handle_exception() for filters.
18797
18798 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18799
18800         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18801         as well.
18802
18803 2005-07-26  Martin Baulig  <martin@ximian.com>
18804
18805         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18806
18807         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18808         helper_compile_generic_method() if the method is actually virtual
18809         and non-final.
18810
18811 2005-07-26  Martin Baulig  <martin@ximian.com>
18812
18813         * mini.c
18814         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18815         public; this is now accessed directly by the debugger.
18816         (mono_generic_trampoline_code): Removed.
18817
18818         * debug-mini.c
18819         (mono_debug_init_method): Also add interncalls and wrappers.
18820
18821 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18822
18823         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18824
18825 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18826
18827         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18828
18829 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18830
18831         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18832
18833 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18834
18835         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18836         getting TLS offsets on AMD64 too.
18837
18838 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18839
18840         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18841
18842 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18843
18844         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18845         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18846
18847 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18848
18849         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18850
18851         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18852         to mini.c.
18853
18854         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18855         mono_sparc_is_virtual_call ().
18856         
18857         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18858
18859         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18860         trampoline parameters.
18861
18862         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18863         
18864         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18865         to mono_arch_get_vcall_slot_addr.
18866
18867         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18868         trampoline code.
18869
18870         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18871
18872 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18873
18874         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18875
18876 2005-07-19  Martin Baulig  <martin@ximian.com>
18877
18878         * exceptions-amd64.c (throw_exception): Call
18879         mono_debugger_throw_exception() here like we're doing it on i386.
18880
18881 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18882
18883         * mini-ia64.c: Add optimized TLS access support.
18884
18885 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18886
18887         * mini-exceptions.c: Ongoing IA64 work.
18888
18889         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18890
18891         * mini.c: Use the default optimization set when embedding. Fixes
18892         #75194.
18893
18894 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18895
18896         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18897         of trampolines to a separate file.
18898
18899         * mini-trampolines.c: New file.
18900
18901         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18902         separate file.
18903         
18904         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18905         amd64/ia64 code.
18906
18907         * mini-codegen.c: Fix cygwin build.
18908
18909 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18910
18911         * mini.c: Add some minor changes needed by the IA64 port.
18912
18913         * *-ia64.*: Ongoing IA64 work.
18914
18915 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18916
18917         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18918         trampolines into arch-independent and arch-dependent parts.
18919
18920         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18921
18922 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18923
18924         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18925
18926         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18927         the xp-regalloc-branch for amd64.
18928
18929         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18930         xp-regalloc-branch for x86.
18931
18932 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18933
18934         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18935
18936 2005-07-06  Martin Baulig  <martin@ximian.com>
18937
18938         * mini.c
18939         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18940         (mono_jit_runtime_invoke): Likewise.
18941
18942 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18943
18944         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18945         on x86 too.
18946         
18947         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18948         without loading their metadata. Reorganize the file format so exception handling+
18949         debug info is kept separate from normal method info. Create MonoJitInfo 
18950         structures for methods lazily.
18951
18952         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18953         loading metadata.
18954         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18955
18956         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18957
18958         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18959         in AOT code.
18960
18961         * mini.h: Bump AOT file version.
18962
18963 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18964
18965         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18966
18967 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18968
18969         * Makefile.am (check-local): Call semdel-wrapper.
18970
18971 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18972
18973         * mini-x86.c: Revert the last change as it seems to break the build..
18974
18975 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18978         
18979         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18980
18981 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18982
18983         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18984         outside of the macro, so strange stuff doesn't happen with gcc4
18985         (NEW_AOTCONST_TOKEN): Likewise.
18986
18987 2005-06-28  Martin Baulig  <martin@ximian.com>
18988
18989         * mini.c (mini_class_is_system_array): New static method; use this
18990         instead of `klass->parent == mono_defaults.array_class' everywhere
18991         since this also works for the new generic array class.
18992
18993 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18994
18995         * inssel.brg: Remove warnings.
18996
18997 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18998
18999         * mini-ia64.c: Ongoing IA64 work.
19000
19001         * basic-float.cs: Add float->i1 conversion test.
19002
19003         * iltests.il: Add conv.u4 test.
19004
19005 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
19006
19007         * inssel-long.brg: Fix bug caused by last change.
19008
19009 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
19010
19011         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
19012         BSDs.  Allows the x86 JIT to work on OSX86
19013
19014 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
19017         u4->i8 conversion.
19018
19019         * mini-ia64.c: Ongoing IA64 work.
19020
19021 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
19022
19023         * mini-ia64.c: Ongoing IA64 work.
19024
19025         * driver.c: Clean up jit_code_hash as well when using --regression.
19026
19027         * inssel-long.brg: Fix long->i4/u4 conversion rules.
19028
19029         * basic-long.cs: Add tests for long->u4 conversion.
19030
19031 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
19032
19033         * mini.c: Take mono_get_domainvar out of macros. This makes sure
19034         that we do not depend on undefined C behavior: the order stuff
19035         gets evaluated within an expression. Fixes mono when compiled on
19036         GCC 4.
19037
19038 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
19039
19040         * *-ia64.*: Ongoing IA64 work.
19041
19042         * aot.c: Lower memory usage while loading AOT methods.
19043
19044         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
19045
19046         * mini.h: Bump AOT file format version.
19047
19048 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
19049
19050         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
19051
19052 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
19053
19054         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
19055         not on callee assembly). Fixed some comments.
19056
19057 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
19058
19059         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
19060         it gets proper disassembly.
19061         (emit_method_info): Remove some dead code.
19062
19063         * mini.c (mini_method_compile): Allways allocate the GOT var in
19064         mono_method_to_ir for emulating opcodes.
19065
19066 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
19067
19068         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
19069         before freeing the code memory. Fixes #74990.
19070
19071         * objects.cs: Add regression test for #74992.
19072
19073         * liveness.c: Extend live ranges of arguments to the beginning of the
19074         method. Fixes #74992.
19075
19076         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
19077         so it points into the faulting instruction.
19078
19079 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
19080
19081         * jit-icalls.c (mono_imul_ovf): Add exception handling.
19082
19083         * *-ia64.*: Ongoing IA64 work.
19084
19085         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
19086
19087 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
19090
19091         * *-ia64.*: Ongoing IA64 work.
19092
19093 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
19094
19095         * basic-long.cs: Add tests for add/sub.ovf.
19096
19097         * basic.cs: Add tests for sub.ovf.
19098
19099         * *-ia64.*: Ongoing IA64 work.
19100
19101 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19102
19103         * *-ia64.*: Ongoing IA64 work.
19104
19105         * basic.cs: Add conv.ovf.i4.un test.
19106
19107 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19108
19109         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19110         
19111 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19112
19113         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19114
19115 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19116
19117         * *-ia64.*: Ongoing IA64 work.
19118
19119 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19120
19121         * trace.[ch]:
19122         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19123
19124 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19125
19126         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19127
19128 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19129
19130         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19131
19132         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19133         of a call is callable by a near call.
19134
19135 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19136
19137         * mini-ia64.c: Ongoing IA64 work.
19138
19139 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19140
19141         * genmdesc.c: Make the generated array non-static.
19142
19143         * inssel-long.brg: Fix LSHR_IMM rule.
19144
19145         * *-ia64.*: Ongoing IA64 work.
19146
19147         * *-ia64.*: Ongoing IA64 work.
19148
19149 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19150
19151         * *-ia64.*: Ongoing IA64 work.
19152
19153         * *-ia64.*: Ongoing IA64 work.
19154         
19155         * mini-ia64.c: Ongoing IA64 work.
19156
19157         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19158
19159 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19160
19161         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19162         
19163         * objects.cs basic-long.cs: Move some tests to objects.cs.
19164
19165 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19166
19167         * *-ia64.*: Ongoing IA64 work.
19168
19169         * iltests.il: Add a new test.
19170
19171         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19172         newobj. Fixes #75042.
19173
19174 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19175
19176         * *-ia64.*: Ongoing IA64 work.
19177         
19178         * *-ia64.*: Ongoing IA64 work.
19179         
19180         * *-ia64.*: Ongoing IA64 work.
19181
19182         * basic.cs objects.cs: Move tests accessing static variables as well.
19183
19184         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19185
19186 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19187
19188         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19189
19190         * driver.c: Always print failed tests.
19191
19192         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19193         frame pointer.
19194
19195         * *ia64*: Ongoing IA64 work.
19196
19197 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19198
19199         * basic.cs: Add tests for add.ovf. Fix warnings.
19200
19201 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19202
19203         * driver.c (mono_main): Avoid crash if no argument is passed to
19204         --break;  Do not use g_error, but f_printf.   And fix all other
19205         ocurrences of the same crash.
19206
19207 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19208
19209         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19210         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19211         Fixes #74742.
19212
19213 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19214
19215         * *-ia64.*: Add beginnings of IA64 backend.
19216
19217         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19218
19219 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19220
19221         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19222         Fixes #74925.
19223
19224         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19225
19226         * mini-amd64.c: Fix a warning.
19227
19228 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19229
19230         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19231         in float_neg. Fixes #74897.
19232
19233         * mini-amd64.c (emit_call): Fix another near call bug.
19234
19235 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19236
19237         * declsec.c: Keep the appdomain information in the structure. Added a 
19238         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19239         value gets overwritten).
19240         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19241         an MonoAppDomain member to MonoSecurityFrame.
19242         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19243         used in the stack walk. Now use a MonoArray which grow (double) when
19244         it gets full.
19245
19246 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19247
19248         * mini.c: Re-enabled runtime cleanup, since running threads should
19249         now properly stop when exiting.
19250
19251 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19252
19253         * mini-codegen.c: New file contaning the arch-independent local
19254         register allocator. Not used by any architectures yet.
19255
19256         * mini.h linear-scan.c: Merge some changes from the 
19257         mini-xp-local-regalloc branch.
19258
19259 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19260
19261         * mini-amd64.c (emit_call): Fix calls to native functions when the
19262         runtime is compiled as a shared library. Fixes #74756.
19263
19264         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19265         on a literal field. Fixes #74751.
19266
19267 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19268
19269         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19270
19271 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19272
19273         * objects.cs: Add missing null casting test.
19274
19275 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19278         in wrapper methods. Also rename 'address' variable to 'offset'.
19279
19280 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19281
19282         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19283         warnings.
19284         
19285         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19286
19287         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19288         work on windows.
19289
19290 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19291
19292         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19293
19294 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19295
19296         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19297         just the last bytes.
19298
19299 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19300
19301         * aot.c (mono_compile_assembly): Fix warning.
19302
19303         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19304         by the _MSC_VER stuff.
19305
19306 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19307
19308         * inssel-long.brg: Fix #74588.
19309
19310         * cpu-amd64.md: Fix #74591.
19311
19312         * iltests.il: Add new regression tests.
19313
19314 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19315
19316         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19317         valuetype.
19318
19319 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19320
19321         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19322
19323         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19324         from Bill Middleton <flashdict@gmail.com>.
19325
19326 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19327
19328         * arrays.cs: Add new regression test. Fix warnings.
19329
19330 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19331
19332         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19333         and leakage in CKFINITE.
19334
19335         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19336         this to a null op since it is called on amd64 too.
19337
19338         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19339
19340         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19341         body since this is not used on amd64.
19342         
19343         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19344
19345         * mini-amd64.c: Remove obsolete fixmes.
19346
19347         * mini.c (print_method_from_ip): Fix debugging support.
19348
19349 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19350
19351         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19352         so that expressions that don't give much gain are not reduced.
19353         * ssapre.h: Likewise.
19354
19355 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19358
19359         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19360
19361         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19362
19363 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19364
19365         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19366
19367         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19368
19369 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19372         stack touching.
19373
19374         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19375
19376         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19377
19378         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19379
19380         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19381         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19382
19383         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19384
19385         * mini-x86.c: Fix up stack overflow handling.   
19386
19387         * exceptions.cs: Add new regression test.
19388
19389 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19390
19391         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19392         mono_jit_thread_attach.
19393
19394         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19395
19396 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19399         avoid calling constructors using callvirt.
19400
19401         * inssel.brg: Fix #74073.
19402
19403 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19404
19405         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19406         compilation with non-GCC compilers.
19407         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19408         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19409
19410 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19411
19412         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19413         klass->interface_offsets (will likely fix bug#74073).
19414
19415 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19416
19417         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19418
19419 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19420
19421         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19422         to amd64_div_reg_size ().
19423         
19424         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19425
19426 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19427
19428         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19429
19430 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19431
19432         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19433
19434 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19435
19436         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19437         
19438         * mini.c (mono_precompile_assembly): Load and precompile referenced
19439         assemblies as well. Fixes #74015.
19440
19441 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19442
19443         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19444
19445 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19446
19447         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19448         a lot of checks and (anyway) permissions cannot work until corlib is 
19449         loaded.
19450
19451 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19452
19453         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19454
19455 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19456
19457         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19458         calls (fixes bug#72824).
19459
19460 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19461
19462         * mini.c: fix tail recursion elimination (see test in bug#73936).
19463
19464 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19465
19466         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19467         some fp functions in sse2 mode.
19468
19469 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19470
19471         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19472
19473 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19474
19475         * mini.h mini.c: Add mono_get_jit_tls_key ().
19476
19477         * mini-x86.c: Enable fast TLS support on windows.
19478
19479 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19480
19481         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19482         * mini.c: Check for p/invoke method when generating code. If a
19483         p/invoke method, or it's class, isn't decorated with [Suppress
19484         UnmanagedCodeSecurity] then generate code to call System.Security.
19485         UnmanagedDemand (only if the security manager is active).
19486
19487 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19488
19489         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19490         last change as it seems to cause strange crashes.
19491         
19492 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19493
19494         * *.c: handle unsafe function pointers where needed.
19495
19496 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * mini.c (mono_jit_free_method): Remove the fixme too.
19499
19500 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19501
19502         * mini.c: As discussed, make the code actually free the delegate
19503         thunk now, to enable the debugging of delegate problems, use
19504         MONO_DEBUG=1 when running Mono. 
19505
19506         This takes also care of parts of the leaks as seen by Joe.
19507
19508 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19511         thread_tls_offset calculation.
19512
19513 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19514
19515         * declsec.c: Reworked linkdemand checks for icall. The previous code
19516         was using the declaration code (untrusted) and didn't work as expected
19517         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19518         specific case.
19519
19520 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19521
19522         * iltests.il: Add new localloc test.
19523
19524         * mini-amd64.c: Handle large stack allocations the same way as on
19525         windows if stack overflow handling is working.
19526         
19527         * mini-amd64.c: Allocate the signal stack using mmap.
19528
19529         * mini.c (sigsegv_signal_handler): Fix reading of context.
19530
19531         * mini-exceptions.c: Fix up stack overflow handling.
19532
19533         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19534
19535         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19536
19537         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19538
19539         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19540
19541         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19542         tramp_init functions as they are no longer needed.
19543
19544 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19545
19546         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19547         
19548         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19549
19550         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19551         
19552         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19553         support that now.
19554
19555         * mini-ops.h: Add OP_LMUL_IMM.
19556
19557         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19558         long mul/div opcodes as intrinsic.
19559
19560         * mini-amd64.c (emit_call): Handle the case when the callee might be
19561         an AOT method.
19562
19563 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19564
19565         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19566         extra safe.
19567         
19568         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19569
19570         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19571
19572 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19573
19574         * mini.c (mono_codegen): Don't leak here, to help people running
19575         monogrind.
19576
19577 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19578
19579         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19580         conversions in sse2 mode.
19581
19582         * basic-float.cs: Add regression test.
19583         
19584         * mini-amd64.c: Reenable sse2.
19585
19586 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19587
19588         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19589
19590 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19591
19592         * driver.c: Copyright text should include 2005.
19593         
19594 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19595
19596         * cpu-amd64.md (load_membase): Fix more max lengths.
19597
19598 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19599
19600         * cpu-amd64.md (load_membase): Fix max length.
19601
19602         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19603
19604         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19605
19606         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19607         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19608
19609         * basic-float.cs: Add rounding regression test.
19610
19611         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19612
19613 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19614
19615         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19616         structures in registers for pinvoke wrappers.
19617
19618 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19619
19620         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19621
19622 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19625         wrapper to mono_jit_thread_attach.
19626
19627         * mini.c (mini_jit_thread_attach): New jit icall.
19628
19629         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19630         native->managed wrappers.
19631
19632         * exceptions.cs: Add new regression test.
19633
19634         * mini.c (optimize_branches): Check regions in the cbranch to throw
19635         block case as well. Fixes #73242.
19636
19637 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19638
19639         * mini.c: thread safety fixes.
19640
19641 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19642
19643         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19644         patching stuff, since delegates use jump trampolines so there is
19645         no caller.
19646
19647         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19648         jump trampolines.
19649         
19650         * tramp-amd64.c: Fix build.
19651
19652         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19653         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19654
19655         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19656         Rename this to mono_arch....
19657         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19658
19659         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19660
19661         * mini-amd64.c (emit_call): If both the caller and the callee is
19662         guaranteed to have 32 bit addresses, emit a normal call.
19663
19664         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19665
19666         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19667         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19668         method_ptr inside delegates.
19669
19670 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19671
19672         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19673         invalidated. Fixes #73001.
19674
19675         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19676
19677         * mini-x86.c: Only use stdcall for pinvokes on windows.
19678
19679 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19680
19681         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19682         * mini-x86.c: remove unreliable __thread var offset detection,
19683         use the correct accessors and enable by default.
19684
19685 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19686
19687         * mini.c (mono_jit_free_method): Fix memory leak.
19688
19689 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19690
19691         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19692
19693 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19694
19695         * cpu-amd64.md: Fix lengths of atomic opcodes.
19696
19697 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19698
19699         * driver.c: try to not imply using ICU is any good.
19700
19701 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19702
19703         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19704         functions as inline ops.
19705
19706         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19707         some Interlocked functions as inline ops.
19708
19709         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19710
19711         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19712
19713         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19714
19715         * mini.c: Add support for OP_NOT_TAKEN.
19716
19717         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19718         structures in registers for pinvoke wrappers.
19719
19720         * mini-amd64.c: Fix warnings.
19721
19722 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19723
19724         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19725
19726         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19727
19728         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19729         address instead of loading the address from it.
19730
19731         * mini-x86.c: Add support for returning small structs in registers
19732         on Win32. Fixes part of #70864.
19733         
19734 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19735
19736         * trace.c (get_token): Improve error checking.
19737
19738 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19739
19740         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19741
19742 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19743  
19744         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19745         it can be reused for MonoClass.
19746         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19747         _LINKDEMAND.
19748
19749 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19750
19751         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19752         instead of a MonoReflectionMethod. The method information wasn't used
19753         when displaying SecurityException details (but will be now).
19754
19755 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19756
19757         * Makefile.am : windows build fix.
19758
19759 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19760
19761         * iltests.il: Add new regression test.
19762
19763         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19764         #72522.
19765
19766 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19767  
19768         * mini.c: Moved linkdemand check into helper function check_linkdemand
19769         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19770         LDFTN, LDVIRTFTN).
19771
19772 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19773
19774         * declsec.c: Added statistics counter for different kinds of 
19775         LinkDemands.
19776         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19777         (and commented) declaration.
19778         * mini.c: Added statistics counter for security Demand code 
19779         generation. Added display of security statistics.
19780
19781 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19782
19783         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19784         Fix compilation errors under gcc-2.95.
19785
19786 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19787
19788         * mini.c, driver.c: Use the new jit trampoline hashtable
19789
19790 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19791
19792         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19793
19794 2005-02-11  Martin Baulig  <martin@ximian.com>
19795
19796         * debug-mini.c (mono_debug_close_method): Free the line number array.
19797
19798 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19801         icalls.
19802
19803         * mini.h: Bump AOT file format version. 
19804
19805 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19806
19807         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19808         APTC and P/Invoke.
19809         * declsec.h: Added macros to get/set lazyly initialized security 
19810         informations about assemblies. Added new enum for different type of
19811         possible LinkDemand violation. Added function to check LinkDemands.
19812         * mini.h: Added a field to MonoCompile to hold any security violation
19813         detected when JITting a method (so it can be thrown later).
19814         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19815         and CEE_CALLVIRT. Added code to throw exception at the end of
19816         mini_method_compile (note: the exception is unhandled right now).
19817
19818 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19819
19820         * mini.c, jit-icalls.c: use the managed implementation of
19821         memset for initobj and memset, to avoid managed <-> unmanaged
19822         transitions.
19823
19824 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19827         optimization if it would need a GOT var.
19828
19829         * basic.cs: Add tests for constant propagation and switch statements.
19830
19831         * ssa.c: Fix out-of-range constant propagation and switch statements.
19832
19833 2005-02-09    <vargaz@freemail.hu>
19834
19835         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19836
19837 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19838
19839         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19840
19841 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19842
19843         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19844
19845 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19846
19847         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19848         arithmetic operations.
19849
19850 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19851
19852         * mini-ppc.c: add a workaround for broken user code that
19853         DllImports vararg functions with non-vararg signatures.
19854
19855 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19856
19857         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19858         meaningfull error message for assemblies written in Managed C++.
19859
19860         * tramp-amd64.c mini-amd64.h: Add support for 
19861         create_trampoline_from_token ().
19862
19863         * aot.c mini-x86.c abcremoval.c: Applied patch from
19864         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19865
19866 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19867
19868         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19869         which takes a MonoImage/token as parameter instead of a MonoMethod.
19870
19871         * aot.c: Use the new trampoline for initializing vtables.
19872
19873         * aot.c: Add support for ldfld/stfld_remote wrappers.
19874
19875         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19876         rules for compare <MEM>, IMM.
19877
19878         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19879
19880         * aot.c: Handle inherited finalizers correctly.
19881
19882 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19883
19884         * inssel.brg (stmt): Add a missing _setup_... ().
19885
19886         * aot.c: Save some parts of the class state to the AOT file and use it
19887         to recompute that state when a class is initialized.
19888
19889         * mini.c: Install AOT hooks into the runtime.
19890
19891         * mini.h: Bump AOT file format version.
19892         
19893         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19894         Fixes #72148.
19895
19896         * iltests.il: Add new test.
19897
19898 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19899
19900         * mini.c: fix typo.
19901
19902 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19903
19904         * mini.c: setup the statistical profiler in the thread attach
19905         callback to cope with the new single thread code.
19906
19907 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19908
19909         * mini-ppc.c: ensure we have enough room for the profiler
19910         calls (fixed bug#72084).
19911
19912 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19915         it.
19916
19917 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19918
19919         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19920
19921 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19922
19923         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19924         to succesfully execute parrotbench).
19925         * ssapre.h: Likewise.
19926
19927 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19928
19929         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19930         variable for stores to method arguments (fixes a SSAPRE issue).
19931
19932 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19933
19934         * mini.c: handle value types in dup, fixes gen-112.cs.
19935
19936 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19937
19938         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19939         sequence for calls in dynamic methods to avoid thunks.
19940
19941 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19942
19943         * mini.c: correctly remove dynamic methods from the hashtable.
19944
19945 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19946
19947         * driver.c: Disabled SSAPRE until fix the bug that appears
19948         in IronPython's parrotbench.
19949
19950 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19951
19952         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19953
19954         * mini.c (mono_method_to_ir): Revert the previous change.
19955         
19956         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19957         when AOT compiling.
19958
19959         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19960         mono_jit_info_table_find () etc. when running under valgrind.
19961
19962         * inssel.brg: Fix warnings.
19963
19964         * mini-exceptions.c: Fix warnings.
19965
19966 2005-01-31  Martin Baulig  <martin@ximian.com>
19967
19968         * driver.c (compile_all_methods_thread_main): Don't try to compile
19969         generic methods or anything which has type parameters.
19970
19971 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19972
19973         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19974
19975         * TestDriver.cs: Add --verbose flags.
19976
19977         * graph.c ssa.c: Fix 64 bit warnings.
19978         
19979         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19980         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19981         Fix 64 bit warnings.
19982
19983         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19984         variable not spotted by gcc.
19985         
19986         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19987         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19988         X86_COMPARE_MEMBASE opcodes.
19989
19990         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19991
19992 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19993
19994         * *: MonoMethod->signature might be NULL now. You *MUST* use
19995         mono_method_signature.
19996
19997 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19998
19999         * driver.c (compile_all_methods_thread_main): Compile the methods
20000         without invoking cctors.
20001
20002 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
20003
20004         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
20005         * basic-calls.cs: test for the above.
20006
20007 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
20010         MonoJitInfo changes.
20011
20012 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
20013
20014         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
20015         eagerly if it contains dynamic methods.
20016         
20017         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
20018
20019         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
20020         trace, it is now computed by an icall from trace_ips.
20021         
20022         * mini-exceptions.c: Fix a warning.
20023
20024 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
20025
20026         * mini-exceptions.c: don't bother getting stack trace info if
20027         it's not going to be used.
20028
20029 2005-01-27  Raja R Harinath  <rharinath@novell.com>
20030
20031         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
20032         ssapre-mini-ops.h.
20033
20034 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
20035
20036         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
20037
20038         * aot.c: Avoid calling mono_method_get_header () if not needed.
20039
20040         * mini.h: Bump AOT file format version.
20041         
20042         * mini.c (mono_emit_native_call): Allocate a GOT var here.
20043
20044         * mini.c (mono_print_tree): Print more info for calls.
20045
20046 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
20047
20048         * declsec.h: Remove warning by adding missing include for marshal.h
20049
20050 2005-01-26  Martin Baulig  <martin@ximian.com>
20051
20052         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
20053         `ip' twice.
20054
20055 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
20056
20057         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
20058         flags.
20059
20060         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
20061
20062         * aot.c (mono_compile_assembly): Fix a warning.
20063
20064 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
20065
20066         * declsec.c: Look for security attributes on the original MonoMethod 
20067         (and not the wrapped one). This fix permissions on icalls.
20068
20069 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20070
20071         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20072
20073         * mini.c (mono_allocate_stack_slots): Add a fixme.
20074
20075         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
20076
20077 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
20078
20079         * inssel.brg: optimize casts of sealed types (more
20080         optimizations waiting for fixes in remoting).
20081
20082 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
20083
20084         * inssel.brg (stmt): Add another dummy rule.
20085
20086         * driver.c: Fix warnings.
20087
20088         * driver.c (mono_main): If running under valgrind, instruct glib to use
20089         the system allocation functions so valgrind can track the memory
20090         allocated by the g_... functions.
20091
20092         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
20093
20094         * mini-ops.h: Add OP_DUMMY_STORE opcode.
20095
20096         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
20097
20098         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
20099         variables in try regions.
20100
20101         * mini.c (mini_method_compile): Don't disable optimizations on large
20102         methods when AOT compiling.
20103
20104         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20105         allocate stack slots. Not yet used.
20106
20107 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20108
20109         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20110
20111 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20112
20113         * mini-ppc.c: make the branch info relative as the code
20114         buffer can be reallocated.
20115
20116 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20117
20118         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20119         * driver.c: Removed the AOT/security restriction. Now initialize the
20120         security manager (in metadata) if --security is used.
20121         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20122         rather than the pointer to declarative security, when AOT is used.
20123
20124 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20125
20126         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20127         basic blocks, reduced intrinsic exception throwing code size.
20128
20129 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20130
20131         * driver.c (mini_usage): Reorder the usage screen.
20132
20133 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20134
20135         * mini.c (mono_resolve_patch_target): Fix warning.
20136
20137 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20140         previous patch.
20141
20142         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20143
20144         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20145         breaks the amd64 build.
20146
20147         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20148         register allocation. Fixes #71454.
20149
20150         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20151
20152         * arrays.cs: Add new regression test.   
20153
20154 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20155
20156         * ssapre.c: Turned usage of snprintf to GString.
20157         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20158         (I left it on by mistake in my previous commit).
20159
20160 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20161
20162         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20163         on cond branch optimization (fixes bug# 71515).
20164
20165 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20166
20167         * abcremoval.c: Fixed bug 71062.
20168         * abcremoval.h: Likewise.
20169
20170 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20171
20172         * mini.c: Added a new functionality to optimize_branches, the removal
20173         of useless basic blocks, and fixed some problem in the removal of
20174         critical edges; some utility functions added for both purposes.
20175         * ssapre.c: Added complex expression support, and fixed bug 70637.
20176         * ssapre.h: Likewise.
20177         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20178         enabled in SSAPRE.
20179         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20180         * driver.c: Re-enabled SSAPRE.
20181
20182 2005-01-19  Martin Baulig  <martin@ximian.com>
20183
20184         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20185         the result of mono_get_method_constrained().
20186
20187 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20188
20189         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20190         manager.
20191
20192 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20193
20194         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20195         be detected.  Fixes #59296.
20196
20197 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20198
20199         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20200         which can happen. Fixes #71361.
20201
20202 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20203
20204         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20205         manager.
20206
20207 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20208
20209         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20210         appdomain-unload.exe to fail.
20211         
20212         * mini.c: Fix some memory leaks.
20213
20214 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20215
20216         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20217         Fixed bug and sped up some codepaths.
20218
20219 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * mini.c: Fix some memory leaks.
20222
20223         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20224         conversion.
20225
20226         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20227
20228         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20229         #71320.
20230
20231         * iltests.il: Add regression test for #71320.
20232
20233 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20234
20235         * mini.c (mono_codegen): Fix installation of profiler hooks.
20236
20237         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20238
20239 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20240
20241         * mini.h, mini.c, cfold.c: optimize access to enum
20242         readonly fields, too. Eval conditional branches if possible
20243         to perform unreachable code removal in more cases.
20244
20245 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20246
20247         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20248
20249         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20250         code manager.
20251
20252         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20253         WinXP DEP. Fixes #71244.
20254
20255 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20256
20257         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20258
20259 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20260
20261         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20262
20263 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20264
20265         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20266         changes.
20267
20268         * mini.h: Bump AOT version.
20269
20270         * mini.h (MonoCompile): Change exvar to a hash table.
20271
20272         * mini.c: Allocate a separate exvar for each handler block.
20273
20274         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20275
20276         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20277         ex var with the pending exception and only throw if the two are equal.
20278         Fixes #68552.
20279         
20280         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20281
20282         * mini-x86.c: Fix warnings.
20283
20284         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20285         used by all the ports now.
20286
20287         * aot.c: Add write-symbols and save-temps options.
20288
20289 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20290
20291         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20292
20293 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20294
20295         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20296         operations.
20297
20298         * tramp-s390.c: Check vtable slot belongs to the domain.
20299
20300         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20301         as per other platforms.
20302
20303         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20304
20305 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20306
20307         * driver.c: we don't run the Main() code in a subthread anymore.
20308
20309 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20310
20311         * mini.c: added experimental rtc support in the statistical
20312         profiler: if the user has the permission, more accurate statistics
20313         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20314         The MONO_RTC value must be restricted to what the linux rtc allows:
20315         power of two from 64 to 8192 Hz.
20316
20317 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20318
20319         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20320
20321 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20322
20323         * mini-ppc.c: better icache flush for smp.
20324
20325 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20326
20327         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20328
20329         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20330         amd64 port, not yet used.
20331
20332 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20335         a struct type.
20336
20337 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20338
20339         * driver.c: Added --security option to activate the security manager.
20340         Right now this will allow code generation for declarative demands and
20341         is disabled when AOT is specified.
20342         * mini.c: Add code generation for declarative security demands.
20343         * mini.h: Add mono_use_security_manager as an extern gboolean.
20344
20345 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20346
20347         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20348         emitting more dense assembly code.
20349
20350         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20351         exception throwing stuff.
20352
20353 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20354
20355         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20356         dead code.
20357
20358         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20359         left in by mistake.
20360
20361         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20362         fixed.
20363
20364         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20365
20366         * tramp-*.c: Only patch vtable slots if the object is in the current
20367         domain. Fixes appdomain-unload.exe.
20368
20369         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20370         
20371         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20372         x86 branch.
20373
20374 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20375
20376         * mini.c (reverse_branch_op): New helper function.
20377
20378         * mini.c (optimize_branches): Run the new optimization only on 
20379         platforms which support it. Also reverse all kinds of branches.
20380
20381         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20382
20383         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20384         a throw statement.
20385
20386         * mini.c (optimize_branches): Reverse not-equals branches if the false
20387         bblock is a throw. This happens a lot of time with argument checking in
20388         corlib.
20389
20390         * mini.c (mono_codegen): Add support for placing basic blocks after
20391         the function epilogue.
20392
20393         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20394         function epilogue.
20395         
20396 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20397
20398         * mini.c (setup_stat_profiler): Only set this up if the platform
20399         supports ITIMER_PROF.
20400
20401 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20402
20403         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20404         previous patch.
20405
20406         * inssel.brg: Fix a warning.
20407
20408 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20409
20410         * mini.c: added support for statistical profiler 
20411         (run with: --profile=default:stat).
20412
20413 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20414
20415         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20416
20417         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20418
20419         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20420         related to global registers from the amd64 port.
20421
20422 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20423
20424         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20425
20426         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20427         with global registers.
20428         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20429
20430         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20431
20432 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20433
20434         * debug-mini.c (encode_value): Fix off-by-one.
20435
20436         * aot.c (encode_value): Likewise.
20437
20438         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20439
20440 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20441
20442         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20443         AOT.
20444
20445         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20446         
20447         * aot.c (emit_method_info): Increase size of temp buffer.
20448
20449         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20450         the AOT case.
20451
20452 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20453
20454         * aot.c (emit_method_info): Fix build.
20455         
20456         * aot.c: Further rework of the AOT file format to reduce the size of
20457         the method info data.
20458
20459         * mini.h: Bump AOT file format version.
20460
20461 2004-12-27  Martin Baulig  <martin@ximian.com>
20462
20463         * mini.c (mini_get_method): New static method; call
20464         mono_get_method_full() and mono_get_inflated_method().
20465         (mono_method_to_ir): Use mini_get_method() instead of
20466         mono_get_method_full(). 
20467
20468 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20469
20470         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20471
20472 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20473
20474         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20475
20476         * inssel-amd64.brg: Add some optimization rules.
20477
20478 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20479
20480         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20481         standard not GC'd stuff is fine.
20482
20483 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20484
20485         * aot.c: Rework the AOT file format to get rid of most of the global
20486         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20487
20488         * mini.h: Bump AOT file format version.
20489         
20490 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20491
20492         * mini.h: Bump AOT file format version.
20493
20494         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20495         address is inside a GOT.
20496
20497         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20498
20499         * cpu-pentium.md: Increase the maximum size of some instructions which
20500         might involve a got access.
20501         
20502         * mini.c (get_method_from_ip): Another debug helper function.
20503
20504         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20505         when got var accesses are created during the decompose phase.
20506
20507         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20508
20509         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20510         argument mini_compile_method and to MonoCompile, and use this to
20511         determine whenever a given method is compiled for AOT. This allows the
20512         other methods compiled during AOT compilation to be free of AOT stuff,
20513         so the backends does not need to add special support for them by
20514         creating a fake GOT etc.
20515
20516         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20517         longer needed.
20518
20519 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20520
20521         * mini.c (mono_method_to_ir): It turns out that some of the
20522         x-appdomain wrappers are lax with types, so just ignore this for
20523         all wrappers.
20524
20525         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20526         at the vtable->klass. If it is non-shared code we can just use the
20527         vtable.
20528
20529 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20530
20531         * mini-ppc.c: access MonoDomain from tls, too.
20532
20533 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20534
20535         * declsec.c: Removed unused variable (and related warning ;-)
20536
20537 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20538
20539         * iltests.il: New test for LDELEMA on an array of ref types.
20540
20541         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20542         all ldelema's on reftypes.
20543         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20544         it was the wrong place to put it.
20545
20546         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20547         register to pop to make this cleaner, at the request of Paolo.
20548
20549 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20550
20551         * mini-ops.h (OP_GETHASHCODE): New op.
20552
20553         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20554
20555         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20556         operation.
20557
20558         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20559         by 25%.
20560         
20561         * mini-x86.c (mono_arch_output_basic_block): Rather than
20562
20563         add ebp, 4
20564
20565         Emit
20566
20567         pop edx
20568
20569         The first is 3 bytes while the second is 1. This saves 36 kb on
20570         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20571         see a small boost because of icache locality.
20572
20573         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20574
20575 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20576
20577         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20578         started code sharing with the generic code.
20579
20580 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20581
20582         * mini-ppc.c, cpu-g4.md: added code for direct access to
20583         tls data slots.
20584
20585 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20586
20587         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20588          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20589         to OP_TLS_GET.
20590
20591 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20592
20593         * declsec.c|h: Added functions to cache the declarative stack modifiers
20594         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20595         structure.
20596         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20597         created. Register internal calls for System.Security.SecurityFrame::
20598         _GetSecurityFrame and _GetSecurityStack.
20599         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20600         the definitions for the new stack walk/callback mechanism.
20601         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20602         first security frame for LinkDemands and InheritanceDemands) and
20603         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20604         from lupus.
20605         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20606         walk initialization (lupus).
20607
20608 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20609
20610         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20611         idiom.
20612         (handle_loaded_temps): Do not create a temporary variable for
20613         things that we know are temps. They will never be modified.
20614         (mono_spill_call): Set MONO_INST_IS_TEMP
20615         (mono_emulate_opcode): ditto
20616         (emit_tree): ditto
20617         (mono_method_to_ir.CEE_DUP): ditto
20618
20619 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20620
20621         * mini.c (type_to_eval_stack_type): Make this handle the void type
20622         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20623         (emit_tree): use ip_in_bb to special case some common idioms
20624         Update all callers to pass in the IP.
20625         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20626
20627         This gives us a nice 2% speedup in mcs bootstrap.
20628
20629         * mini-x86.c (peephole_pass): Peephole pass to make
20630         mov  [foo], eax
20631         push [foo]
20632
20633         into
20634
20635         mov [foo], eax
20636         push eax
20637
20638         * mini.c (ip_in_bb): new method.
20639         (mono_method_to_ir): use this method rather than doing the hash
20640         lookup ourselves.
20641
20642         * linear-scan.c (mono_linear_scan): When expiring actives, you
20643         don't need to keep around variables that expire on this
20644         instruction. This makes it so that:
20645              a = b + 1
20646         will turn into:
20647              store (ebx add (ebx, 1))
20648         which will become
20649              add ebx, 1
20650
20651 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20652
20653         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20654         combination to avoid doing two copies. Fix up problems with previous
20655         patch.
20656
20657         * mini.c: Fix 64 bit warnings.
20658
20659         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20660
20661 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20662
20663         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20664         changes from the x86 code.
20665
20666         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20667
20668 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20669
20670         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20671         throwing code to reduce its size, unify the AOT and non-aot code and 
20672         get rid of relocations in the AOT case.
20673
20674         * mini-x86.h mini.c exceptions-x86.c 
20675         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20676         raise corlib exceptions which doesn't require relocations in the 
20677         caller.
20678
20679         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20680
20681 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20682
20683         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20684         needed.
20685
20686         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20687         in the AOT case.
20688
20689 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20690
20691         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20692         with add function when used from Inc/dec atomic 
20693         functions. Re-enabled optimization on x86.
20694         * mini-ops.h: renamed atomic_add functions to
20695         allow _add to match the Interlocked::Add and
20696         _add_next to match Interlocked::Inc/Dec.
20697
20698 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20699
20700         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20701         linking of BBs to the end BB, and enabled SSAPRE also with
20702         consprop and copyprop (which was prevented by that bug).
20703
20704 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20705
20706         * mini-x86.c: disabling the Interlocked optimizing code. 
20707
20708 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20709
20710         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20711         file version check.
20712         
20713 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20714
20715         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20716         interlocked optimization due lack of support on x86, rewrote 
20717         exchange to take into account that base may be in eax.
20718         
20719         xsp works again; activated Interlocked optimizing code.
20720         
20721 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20722
20723         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20724
20725 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20726
20727         * mini-ops.h: Add new opcodes.
20728
20729         * mini.h: Add new patch types. Add got_var to MonoCompile.
20730
20731         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20732         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20733         make it work with all kinds of patchable code.
20734
20735         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20736         address of the GOT, and referencing entries in the GOT.
20737
20738         * mini.c: Add code to load the GOT address if needed by an opcode.
20739
20740         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20741         independent AOT code on the x86 using an elf-style Global Offset Table.
20742
20743 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20744
20745         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20746
20747 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20748
20749         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20750         when running xsp.
20751
20752 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20753
20754         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20755         of Interlocked:Increment/Decrement/Add as inline ops.
20756         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20757
20758 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20759
20760         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20761         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20762
20763 2004-12-12  Duncan Mak  <duncan@ximian.com>
20764
20765         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20766         again. `patch_info->table_size' is no longer valid after Zoltan's
20767         commit #37636.
20768
20769 2004-12-12  Martin Baulig  <martin@ximian.com>
20770
20771         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20772         if we are the "real" method, ie. not an inlined method inside it.
20773
20774 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20775
20776         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20777         before we look in the special fields table. This fixes
20778         ../tests/thread-static-init.cs.
20779
20780 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20781
20782         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20783         for Array get_Rank and get_Length. Fixes bug #70465.
20784
20785 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20786
20787         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20788         separate structure to reduce the size of MonoJumpInfo.
20789
20790 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20791
20792         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20793
20794 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20795
20796         * mini.c (mini_get_inst_for_method): Changed to allow ports
20797         to return a MonoInst instead of opcode 
20798         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20799         
20800         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20801         Allow ports to return a created MonoInst instead of op-code, will enable
20802         new optimizations.
20803         (renamed mini_get_opcode_for_method to better reflected the functionality)
20804
20805 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20806
20807         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20808
20809 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20810
20811         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20812         Fixes #69985.
20813
20814 2004-12-08  Martin Baulig  <martin@ximian.com>
20815
20816         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20817         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20818
20819 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20820
20821         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20822         correctly.
20823
20824         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20825         arithmetic.
20826
20827 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20828
20829         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20830
20831 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20832
20833         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20834         bug introduced by the previous patch.
20835
20836 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20837
20838         * mini-ppc.c, objectc.cs: handle large structs passed by value
20839         (fixes bug #69972).
20840
20841 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20842
20843         * mini-ppc.c: OP_ARGLIST implementation from
20844         Geoff Norton  <gnorton@customerdna.com>.
20845
20846 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20847
20848         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20849         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20850
20851 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20852
20853         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20854
20855 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20856
20857         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20858         support.
20859
20860 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20861
20862         * mini-sparc.c: Zero out localled-ed memory.
20863
20864         * iltests.il: Add tests for zeroing out localloc-ed memory.
20865
20866 2004-12-04  Martin Baulig  <martin@ximian.com>
20867
20868         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20869         mono_method_get_signature_full().       
20870
20871 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20872
20873         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20874         and some utility functions (always for SSAPRE), integrated SSAPRE.
20875         * mini.h: Likewise.
20876         * driver.c: Added ssapre option.
20877         * ssa.c: Small fix on OP_ARG handling.
20878         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20879         * Makefile.am: Likewise.
20880
20881 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20882
20883         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20884         now in the xp code.
20885
20886         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20887         icall.
20888
20889 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20890
20891         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20892         
20893         * cpu-s390.md : Increase instruction length of oparglist.
20894
20895         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20896
20897 2004-11-30  Martin Baulig  <martin@ximian.com>
20898
20899         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20900         virtual generic methods.  We call a special helper_compile_generic_method()
20901         icall to retrieve the method from the vtable, inflate and compile
20902         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20903
20904         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20905
20906 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20907
20908         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20909
20910 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20911
20912         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20913         Fixes #69929.
20914
20915 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20916
20917         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20918         platforms with PIC aot.
20919
20920 2004-11-28  Martin Baulig  <martin@ximian.com>
20921
20922         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20923         Fixes gen-112.cs.
20924
20925 2004-11-28  Martin Baulig  <martin@ximian.com>
20926
20927         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20928         the result of mono_type_get_underlying_type() to check whether
20929         we're byref.
20930
20931 2004-11-26  Martin Baulig  <martin@ximian.com>
20932
20933         * mini.c
20934         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20935         in the g_assert().
20936
20937 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20938
20939         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20940         the same way as the other arguments so they won't get clobbered.
20941
20942         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20943         calls through R11 since it is clobbered by the trampoline code.
20944
20945 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20946
20947         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20948         pick up in-tree mscorlib.dll.
20949
20950 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20951
20952         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20953
20954         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20955         runtime data/code are now stored in a table similar to the GOT in ELF. 
20956         This allows the code itself to be position independent.
20957
20958         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20959         loading changes.
20960
20961         * aot.c: Attach ELF type (object/function) directives to all global
20962         symbols.
20963
20964         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20965
20966         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20967
20968         * mini-amd64.h: Turn on PIC AOT code.
20969
20970         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20971         returning the offset within an OP_AOTCONST instruction where the GOT
20972         offset needs to be added.
20973
20974         * mini.h: Bump AOT file format version.
20975
20976 2004-11-25  Martin Baulig  <martin@ximian.com>
20977
20978         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20979         uninflated generic methods.
20980
20981 2004-11-25  Martin Baulig  <martin@ximian.com>
20982
20983         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20984
20985 2004-11-24  Martin Baulig  <martin@ximian.com>
20986
20987         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20988         original klass (this only applies for generic instances).
20989
20990 2004-11-24  Martin Baulig  <martin@ximian.com>
20991
20992         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20993         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20994         that array).
20995
20996 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20997
20998         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20999         localloc. Fixes #69678.
21000
21001         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
21002         
21003 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
21004
21005         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
21006         used SSE registers on pinvoke calls. Fixes #69774.
21007
21008 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
21009
21010         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
21011         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
21012
21013 2004-11-23  Raja R Harinath  <rharinath@novell.com>
21014
21015         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
21016         Refer directly to the mcs/ tree.
21017
21018 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21019
21020         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
21021         Check if a trampoline for a synchronized method is required. 
21022
21023 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
21024
21025         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
21026         with localloc if needed. Throe arithmetric exception in
21027         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
21028         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
21029
21030 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
21031
21032         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
21033         types before switching on type.  Fixes #69622.
21034
21035 2004-11-19  Raja R Harinath  <rharinath@novell.com>
21036
21037         * Makefile.am (check-local): New.  Integrate into 'make check'.
21038         (MCS,RUNTIME): Define using in-tree mono and mcs.
21039         (ILASM): New.
21040         (%.exe): Use $(ILASM).
21041
21042 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
21043
21044         * mini-ppc.c: adjust initial prolog size (bug #69691).
21045
21046 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
21047
21048         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
21049         #69664.
21050
21051 2004-11-17  Raja R Harinath  <rharinath@novell.com>
21052
21053         * Makefile.am (clean-local): Rename from 'clean'.
21054
21055 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21056
21057         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
21058         to mono_arch_is_int_overflow. 
21059         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
21060         SIGFPE events.
21061
21062 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
21063
21064         * declsec.c|h: New files to support declarative security attributes.
21065         Added function to check if a method has (applicable) security.
21066         * mini.c|h: Add check for declarative security attributes in
21067         mono_method_check_inlining.
21068         * Makefile.am: Added declsec.c and declsec.h to the build.
21069
21070 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
21071
21072         * mini.c, mini.h: update to keep dynamic code info per-domain.
21073
21074 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
21075
21076         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
21077         (mini_init): Get rid of it from here too.
21078
21079 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
21080
21081         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
21082         implemented OP_RETHROW (patch by Geoff Norton
21083         <gnorton@customerdna.com>).
21084
21085 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
21086
21087         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
21088         between appdomains.  Fixes appdomain-unload on PPC.
21089
21090 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
21091
21092         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21093         mini-exceptions.c: handle the new wrapper types.
21094         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
21095         token value as a MonoClass* when compiling a wrapper.
21096         mono_jit_create_remoting_trampoline now takes an additional
21097         MonoRemotingTarget parameter.
21098         
21099 2004-11-10  Martin Baulig  <martin@localhost>
21100
21101         * mini.c (mono_method_to_ir): Use `generic_container->context'
21102         rather than creating a new one.
21103
21104 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21105
21106         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21107
21108         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21109
21110 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21111
21112         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21113         the experimental aot cache stuff.
21114
21115 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21116
21117         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21118         mini-exceptions.c: update to exception clause structure changes.
21119
21120 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21121
21122         * exceptions-x86.c (throw_exception): Fix warnings.
21123
21124         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21125         for OP_RETHROW.
21126
21127 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21128
21129         * exceptions-sparc.c (get_throw_exception): Really fix this.
21130
21131 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21132
21133         * tramp-*.c: we no longer support icalls without wrappers, so
21134         a bit of code can be removed here
21135
21136 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21137
21138         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21139         patch.
21140
21141         * cpu-sparc.md: Add op_rethrow.
21142
21143         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21144
21145         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21146
21147         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21148         * mini-ops.h: Add OP_RETHROW.
21149
21150         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21151
21152         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21153
21154 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21155         
21156         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21157         Makes the output much easier to read
21158
21159 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21160
21161         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21162         prevents another huge leak when compiling with ssa. Secondly, the
21163         performance of doing this rather than freeing the lists is much
21164         better. GList does a lock every time you allocate a list link,
21165         so that it can use a memory pool. So, it is better to just use
21166         a memory pool of our own.
21167         
21168         * ssa.c, linear-scan.c: replace g_list_remove_link with
21169         g_list_delete.  The remove one does not free the GList, so we were
21170         leaking memory. On -O=all --compile-all with corlib, this cut down
21171         3 MB of allocations.
21172
21173 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21174
21175         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21176
21177         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21178
21179         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21180         into a new function mono_create_jit_trampoline ().
21181
21182 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21183
21184         * trace.c (get_spec): Allow tracing of classes without a namespace.
21185
21186 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21187
21188         * mini.c: Fix pointer overwrite in mini_method_compile.
21189
21190 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21191
21192         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21193         The darwin ABI needs some special handling for 1 and 2 byte structs
21194         Lets use lbz/lhz instead of lwz everywhere.
21195         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21196         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21197         Use stb/sth for the former, and put the latter always on stack instead of in
21198         argument registers.
21199
21200 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21201
21202         * trace.c (is_filenamechar): Add '_'.
21203
21204 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21205
21206         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21207
21208         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21209
21210 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21211
21212         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21213         depends on libmonogc. Fixes #68805.
21214
21215 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21216
21217         * mini.c (mono_jit_free_method): Provide extra information for
21218         this error.  Currently this leaks, but will be turned into a
21219         developer option in the future.
21220
21221 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21222
21223         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21224
21225 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21226
21227         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21228         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21229         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21230
21231 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21232
21233         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21234         trampolines for AOT code.
21235
21236 2004-10-22    <vargaz@freemail.hu>
21237
21238         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21239         constructed types. Fixes #68136.
21240
21241 2004-10-21  Martin Baulig  <martin@ximian.com>
21242
21243         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21244         if it returns true, unwind the stack to the call instruction.
21245
21246 2004-10-21    <vargaz@freemail.hu>
21247
21248         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21249
21250         * mini.h: Bump AOT version number.
21251
21252         * objects.cs: Add another test for unbox trampolines.
21253
21254         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21255         valuetype methods.
21256
21257 2004-10-20    <vargaz@freemail.hu>
21258
21259         * driver.c: Add SHARED to the set of optimizations tested.
21260
21261         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21262
21263         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21264         used by CEE_NEWARR.
21265
21266         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21267
21268 2004-10-20  Martin Baulig  <martin@ximian.com>
21269
21270         * mini-exceptions.c (mono_handle_exception): Call
21271         mono_debugger_handle_exception() to tell the debugger about
21272         catch/finally clauses.
21273
21274 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21275
21276         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21277
21278         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21279         #68447.
21280
21281 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21282
21283         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21284         methods as their native size, fixed bug #57543, #57545.
21285         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21286         This saves a temporary register and mullw call down into 1 (minor perf
21287         increase for cases like sum = sum * 5;  This use to translate into:
21288             li r11,5
21289             mullw r28,r28,r11
21290         It now translates to
21291             mulli r28,r28,5
21292
21293 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21294
21295         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21296         #68388.
21297
21298 2004-10-11  Martin Baulig  <martin@ximian.com>
21299
21300         * mini.c (mono_method_to_ir): If we're a generic method, get the
21301         MonoGenericContainer from our MonoMethodNormal and create a
21302         MonoGenericContext from it.
21303
21304 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21305
21306         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21307
21308         * basic-long.cs: Add test for checked i8->i2 cast.
21309
21310 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21311
21312         * inssel-ppc.brg: added a couple of speedup rules.
21313
21314 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21315
21316         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21317         to speed up rebuilds.
21318
21319 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21320
21321         * mini-s390.c: Minor fix to OP_OR_IMM.
21322
21323 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21324
21325         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21326         better. Fixes appdomain-unload.exe on sparc.
21327
21328 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21329
21330         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21331         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21332         see bug 67324.
21333
21334 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21335
21336         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21337
21338 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21339
21340         * mini.c: Always generate a field read/write wrapper for members
21341         of the class MarshalByRefObject since the actual instance could
21342         be a CBO.
21343
21344 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21345
21346         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21347
21348 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21349
21350         * driver.c mini.h trace.c: Move the setting of the main assembly into
21351         a separate function called mono_trace_set_assembly () and call it after
21352         actually loading the main assembly. Fixes #66872.
21353
21354 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21355
21356         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21357         using the code manager.
21358
21359 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21360
21361         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21362
21363 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21364
21365         * cpu-amd64.md: Fix bug in previous patch.
21366         
21367         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21368         #66650.
21369
21370 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21371
21372         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21373         mini-exceptions.c: updates for changed stack walk interface.
21374
21375 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21376
21377         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21378
21379 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21380
21381         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21382
21383 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21384
21385         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21386         since assemblies can't be unloaded.
21387         
21388 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21389
21390         * cpu-amd64.md: Fix more instruction lengths.
21391
21392         * cpu-amd64.md: Fix lengths of some instructions.
21393
21394 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21395
21396         * inssel.brg: Make the array ldelema check aot friendly.
21397
21398 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21399
21400         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21401
21402         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21403
21404 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21405
21406         * mini-x86.c: Fix build.
21407
21408         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21409         mono_type_get_underlying_type () helper function to simplify code.
21410         
21411 2004-09-09  Martin Baulig  <martin@ximian.com>
21412
21413         * mini-amd64.c: Don't access `type->data.klass' directly, call
21414         mono_class_from_mono_type() instead since the type may be a
21415         generic instance.
21416
21417 2004-09-09  Martin Baulig  <martin@ximian.com>
21418
21419         * mini-amd64.c (get_call_info): Fix support for generic instances.
21420         (add_valuetype): Use mono_class_from_mono_type() to get the class
21421         since we can be a generic instance.
21422
21423 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21424
21425         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21426
21427 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21428
21429         * liveness.c: reset spill costs on each scan: bug 62107
21430
21431 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21432
21433         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21434         unnecessary line that doesn't compile
21435
21436 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21437
21438         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21439         trampolines, make them call an error function so people can fix their
21440         code.
21441
21442 2004-09-06  Martin Baulig  <martin@ximian.com>
21443
21444         * mini.c (mono_method_to_ir): When initializing locals, handle a
21445         generic instances like a valuetype if it's a valuetype and like a
21446         class if it's a class.
21447
21448 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21449
21450         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21451         stack. Fixes #64674.
21452
21453         * exceptions.cs: Add test for unwinding of call arguments.
21454
21455 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21456
21457         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21458         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21459         set the carry/borrow flag). The sparc and s390 implementations
21460         can now use optimized versions (and simplify the code). ppc bugfixes.
21461
21462 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21463
21464         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21465
21466 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21467
21468         * inssel-amd64.brg: Remove leftover 32 bit rule.
21469
21470         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21471
21472 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21473
21474         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21475         mono_arch_find_jit_info functions into a new function. Fix a memory
21476         leak.
21477
21478         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21479         refactored code.
21480         
21481 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21482
21483         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21484         as well.
21485         
21486         * exceptions.cs: Add array size tests.
21487
21488         * mini.c: Allocate a separate icall wrapper for each arity of 
21489         mono_array_new_va. Fixes #59509.
21490
21491         * exceptions.cs: Add testcase for 64578.
21492
21493         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21494
21495         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21496         
21497 2004-09-02  Martin Baulig  <martin@ximian.com>
21498
21499         * mini.c (mono_method_to_ir): When initializing the locals, call
21500         handle_initobj() on the generic instance itself, not its
21501         underlying type.
21502
21503 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21504
21505         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21506         MonoJitInfo for dynamic methods.
21507
21508         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21509
21510         * mini.c: Add support for freeing JIT data for dynamic methods.
21511         
21512 2004-09-01  Martin Baulig  <martin@ximian.com>
21513
21514         * mini-x86.c (is_regsize_var): Added support for generic
21515         instances.
21516         (mono_arch_emit_prolog): Make this compile again, use
21517         `x86_push_imm_template (code)'.
21518
21519 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21520
21521         * mini-x86.c: make all push_imm instructions that get
21522         patched always emit the long form
21523
21524 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21525
21526         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21527         in a per-domain hash.
21528
21529         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21530         types.
21531
21532 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21533
21534         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21535         work.
21536         
21537         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21538         work.
21539
21540         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21541         Beginnings of SSE2 support.
21542
21543         * exceptions.cs: Add more tests for checked int<->uint casts.
21544
21545 2004-08-28  Martin Baulig  <martin@ximian.com>
21546
21547         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21548         generic instances.
21549
21550         * mini.c
21551         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21552         Handle generic instances recursively.
21553
21554 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21555
21556         * iltests.il: test for conv.u8 on a constant
21557
21558 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21559
21560         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21561         LCONV_x4 (shrun_32 (membase)).
21562
21563 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21564
21565         * inssel-x86.brg: c&p rules for push/setret of long
21566
21567 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21568
21569         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21570         compare (regvar, base)
21571
21572         * inssel-x86.brg: more burg love
21573
21574         * inssel.brg: more cleanup
21575
21576         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21577
21578 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21579
21580         * basic-long.cs, basic-calls.cs: new tests for optimization.
21581
21582 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21583
21584         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21585         patch.
21586
21587 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21588
21589         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21590         
21591 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21592
21593         * inssel.brg (mini_emit_memcpy): use 
21594         NO_UNALIGNED_ACCESS to disable memcpy optimization
21595
21596 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21597
21598         * mini-amd64.c: Handle generic types in various places.
21599
21600         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21601
21602 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21603
21604         * mini.c (handle_box): Fix warning.
21605
21606         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21607
21608         * mini-amd64.h: Enable the emit_state optimization.
21609
21610         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21611
21612         * mini-amd64.c: Add some new 64 bit peephole opts.
21613
21614         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21615
21616         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21617
21618         * mini-amd64.c: Register allocator fixes.
21619
21620         * mini.c: Add an optimization to emit_state to avoid allocation of new
21621         registers on some platforms.
21622
21623 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21624
21625         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21626
21627         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21628         allocation. Fixes #63085.
21629
21630         * basic-long.cs: Add new regression test.
21631
21632         * mini-amd64.c: Register allocator improvements.
21633
21634 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21635
21636         * mini-amd64.c (read_tls_offset_from_method): Add another code
21637         sequence.
21638
21639         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21640         instruction sequence for nullifying class init trampolines.
21641
21642         * objects.cs: Add new regalloc test.
21643
21644         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21645
21646 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21647
21648         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21649         
21650         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21651         arguments.
21652
21653         * driver.c: Fix profiling after TLS changes.
21654         
21655         * driver.c (mono_main): Set mono_stats.enabled if needed.
21656
21657         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21658         CEE_BOX.
21659
21660 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21661
21662         * mini-x86.c: use a 1 op rather than a 2 op tls access
21663         instruction -> faster.
21664
21665 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21666
21667         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21668         x86 backend.
21669
21670 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21671
21672         * exceptions-sparc.c (throw_exception): fix typo
21673
21674 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21675
21676         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21677         set tree->dreg correctly with tls. Allow any
21678         register to be used.
21679
21680         * mini-x86.c (read_tls_offset_from_method): add new code
21681         generation pattern seen with GCC.
21682
21683
21684 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21685
21686         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21687         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21688         exceptions-sparc.c: fix some performance issues in exception
21689         handling and setting of the stack trace for exceptions that were
21690         already thrown.
21691
21692 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21693
21694         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21695         x86 backend.
21696         
21697         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21698         registers.
21699
21700 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21701
21702         This patch inlines tls access, when possible.
21703         
21704         * mini.h: new arch functions for TLS intrinsics.
21705         All platforms updated with a stub.
21706
21707         * mini.c: use the new intrinsics
21708
21709         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21710         arch specific intrinsic for tls variables
21711
21712 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21713
21714         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21715         under windows.
21716
21717 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21718
21719         * mini.c: thread local allocation
21720
21721 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21724
21725         * Makefile.am: Link against the static version of libmonogc.
21726         
21727         * Makefile.am: Link the static versions of the convenience libraries
21728         into the mono executable.
21729
21730         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21731
21732 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21733
21734         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21735         on integer overflow.
21736
21737         * mini-amd64.c: Reorganize function call code.
21738
21739         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21740
21741 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21742
21743         * inssel-x86.brg: use xor eax,eax.
21744         
21745         * basic.cs: new tests
21746
21747 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21748
21749         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21750         in exception throwing code.
21751         
21752 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21753
21754         * inssel-x86.brg: use xor esi,esi.
21755
21756 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21757
21758         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21759         can trace methods compiled during mini_init () too.
21760
21761         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21762         CEE_CONV_U4.
21763
21764 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21765
21766         * Makefile.am: static link on x86 (r=zoltan)
21767
21768 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21769
21770         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21771         code since it causes some programs to fail.
21772
21773 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21774
21775         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21776
21777 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21778
21779         * mini.c: ovfops_op_map - add STACK_OBJ case for
21780         CONV_I 
21781         * basic.cs: add test_0_pin_string as test
21782         case for above.
21783
21784 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21785
21786         * Makefile.am: build C# if srcdir != builddir
21787
21788 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21789
21790         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21791         fall-through blocks.
21792
21793 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21794
21795         * driver.c: enable loop by default again and include abcrem in -O=all.
21796
21797 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21798
21799         * iltests.il: Add some localloc tests.
21800
21801         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21802
21803         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21804         Fixes #62574.
21805
21806         * inssel-amd64.brg: Add some optimizations.
21807
21808         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21809         for gcc-3.4.
21810
21811         * Makefile.am: Statically link mono against libmono on AMD64.
21812         
21813         * mini-amd64.c inssel-amd64.brg: Optimizations.
21814
21815 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21816
21817         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21818
21819         * tramp-amd64.c: Patch calling code in trampolines.
21820
21821 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21822
21823         * mini-amd64.c: pinvoke struct passing fixes.
21824
21825 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21826
21827         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21828         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21829
21830 2004-08-05  Duncan Mak  <duncan@ximian.com>
21831
21832         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21833         CEE_LDELEM_ANY.
21834
21835 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21836
21837         * mini-amd64.c (emit_move_return_value): Move return value for normal
21838         calls too.
21839
21840 2004-08-05  Martin Baulig  <martin@ximian.com>
21841
21842         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21843         `type->type'; just modify `type' itself when dealing with enums
21844         and generic instances.
21845         (check_call_signature): Make `simple_type' a `MonoType *'.
21846
21847 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21848
21849         * mini.c: Use OP_PADD to add offsets to addresses.
21850
21851         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21852
21853 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21854
21855         * mini-sparc.c (mono_arch_emit_epilog): fix check
21856         for folding last op into restore instruction
21857
21858 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21859
21860         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21861         helper methods using the code manager.
21862         
21863         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21864
21865         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21866
21867 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21868         
21869         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21870           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21871
21872         * mini-s390.c: fix tail processing
21873
21874 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21875
21876         * mini-ppc.c: mul.ovf.un exception name fix.
21877
21878 2004-08-03  Martin Baulig  <martin@ximian.com>
21879
21880         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21881         instances; before jumping to `handle_enum', also modify `ptype'.
21882
21883 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21884
21885         * cpu-sparc.md: fcall maximal length too small.
21886
21887 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21888
21889         * mini-amd64.c mini.h: Add initial support for passing/returning 
21890         structures to/from pinvoked methods.
21891
21892 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21893
21894         * mini-ppc.c: reg allocator fix.
21895
21896 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21897
21898         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21899
21900         * inssel.brg: Optimize memset on 64 bit machines.
21901
21902         * mini-amd64.c: Fix some vararg cases.
21903
21904 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21905
21906         * mini-s390.c: Corrected macro in emit_float_to_int
21907
21908         * s390-abi.cs: Tests to exercise the s390 ABI
21909
21910 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21911
21912         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21913         caller saved regs.
21914
21915         * basic.cs: Add a test for add.ovf.un.
21916
21917 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21918
21919         * mini-sparc.c: add case for OP_IDIV_UN
21920
21921 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21922
21923         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21924         
21925         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21926
21927 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21928
21929         * basic.cs: regression tests.
21930
21931         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21932         regressions.
21933
21934 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21935
21936         * basic.cs: Add a new test.
21937
21938         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21939         and AOT. Various fixes and optimizations.
21940
21941         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21942
21943 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21944
21945         * mini-ppc.c: make sure temp regs are not used for global reg
21946         allocation.
21947
21948 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21949
21950         * cpu-sparc.md: conv_i8 fix for 64bits
21951
21952         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21953
21954 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21955         
21956         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21957         add opcode for cmp BYTE PTR [eax], imm.
21958
21959         * inssel.brg: Make memcpy and memset takes bases.
21960
21961 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21962
21963         * *-amd64.*: More AMD64 work.
21964         
21965 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21966
21967         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21968         add a compare-not-equal opcode.
21969         
21970 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21971
21972         * mini.c: Use mono_init_from_assembly instead of mono_init.
21973         
21974 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21975
21976         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21977
21978         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21979
21980         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21981
21982         * inssel.brg: 64 bit fixes.
21983
21984         * mini.h (MonoCallInst): Add some AMD64 specific data.
21985
21986         * mini.h: Add some OP_P opcodes.
21987
21988 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21989
21990         * basic.cs: tests for 61797 and 61740
21991
21992 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21993
21994         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21995         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21996
21997 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21998
21999         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
22000
22001         * *-amd64*.*: Ongoing AMD64 work.
22002
22003 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
22004
22005         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
22006
22007         * *-amd64*: Ongoing AMD64 work.
22008
22009         * mini-arch.h: Add AMD64 support.
22010
22011         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
22012
22013         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
22014
22015         * mini-ops.h: Add new opcodes.
22016
22017         * Makefile.am: Add AMD64 support.
22018
22019         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
22020         rules into the inssel-long*.brg files.
22021
22022         * *-amd64.*: Add beginnings of AMD64 backend.
22023
22024 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
22025
22026         * mini.c (print_dfn): commenting out the code that prints
22027         the cil. With -O=deadce, this makes -v -v crash.
22028         
22029         * cpu-pentium.md: make checkthis have a length of 2
22030
22031 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
22032
22033         * mini-sparc.h: fix implementations of __builtin
22034         functions for Sun compiler for V9.
22035
22036 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
22037
22038         * mini.c: use the new stelem.ref wrapper
22039         * exceptions.cs, arrays.cs: new stelem.ref tests
22040
22041 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22042
22043         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
22044         new XSP should work with these changes).
22045
22046 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
22047         
22048         * inssel-{long32,x86,}.brg: trivial optimizations.
22049         
22050 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
22051
22052         * mini.c: load value when emitting box operation in
22053         constrained calls.
22054
22055 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
22056
22057         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
22058         is one byte shorter than cmp DWORD PTR [eax], 0.
22059
22060 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22061
22062         * inssel-ppc.brg: arguments on the stack are always
22063         relative to the stack pointer (spotted by Neale Ferguson).
22064
22065 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
22066
22067         * exceptions-x86.c: delay appending the method name to the trace until
22068         after mono_jit_info_table_find is called, as this gets the real
22069         MonoMethod.
22070
22071 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
22072
22073         * aot.c: register roots
22074
22075 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22076
22077         * aot.c : I could just use PLATFORM_WIN32 flag.
22078
22079 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22080
22081         * aot.c : Reverting the previous fix. This time it broke linux build.
22082
22083 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
22084
22085         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
22086
22087 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
22088
22089         * mini.c (handle_stack_args): Remove some more debugging code.
22090         
22091         * mini.c (handle_stack_args): Remove debug output left in by mistake.
22092
22093         * driver.c mini.h aot.c: Allow additional options to be specified with
22094         --aot and pass them to mono_compile_assembly.
22095
22096         * aot.c: Add experimental code to AOT compile all loaded assemblies
22097         on demand and save the code into a cache in the filesystem.
22098
22099         * aot.c: Add support for more wrapper methods.
22100         
22101         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22102         58863.
22103
22104         * cpu-*.md: Remove removed opcodes.
22105
22106         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22107         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22108         related icalls to marshal.c.
22109
22110 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22111
22112         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22113
22114         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22115
22116         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22117
22118 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22119         * liveness.c: If liveness is recomputated we need to reset the information
22120         for each variable. This way, if the liveness range has been narrowed
22121         by optimizations that happened after the last computation, we can return
22122         a smaller range.
22123         
22124         For example, if you have
22125         
22126         {
22127                 int i = 0;
22128                 
22129                 // Tons of code that does not affect i
22130                 
22131                 i = foo ();
22132                 ...
22133         }
22134         
22135         i = 0 is dead code and will be removed by SSA. However, when
22136         linear scan gets to the code, i will still appear to be live
22137         throughout the entire block. This prevents good register allocation.
22138
22139 2004-07-06  Martin Baulig  <martin@ximian.com>
22140
22141         * debug-mini.c (mono_debug_init_method): Allow
22142         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22143         (mono_debug_add_icall_wrapper): New method.
22144
22145         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22146
22147 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22148
22149         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22150         optimization.
22151
22152 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22153
22154         * aot.c (mono_aot_load_method): Fix loading of debug info.
22155
22156 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22157
22158         * aot.c: Add logging support.
22159
22160 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22161
22162         * mini.h: Add prototype for mono_print_method_from_ip.
22163
22164         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22165
22166         * inssel.brg: 64 bit fixes.
22167
22168         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22169         inssel-long32.brg.
22170
22171         * Makefile.am: Add SPARC64 support.
22172
22173 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22174
22175         * aot.c: Fix alignment problems on 32 bit platforms.
22176
22177 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22180         SPARC64.
22181
22182         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22183         problems.
22184
22185         * mini.h: Bump AOT file version. Some 64 bit fixes.
22186
22187 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22188
22189         * inssel-sparc.brg: Add new rule to avoid register moves.
22190
22191         * inssel.brg: Add ldind_to_load_membase helper function.
22192
22193 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22194
22195         * mini.c: OffsetToStringData intrinsic.
22196         
22197 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22198
22199         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22200
22201         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22202         regression tests.
22203
22204         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22205 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22206
22207         * mini.c: reinstated mono_compile_get_interface_var()
22208         on x86, too, since the change breaks the Gtk# build there as well.
22209
22210 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22211
22212         * driver.c: remove loop from the default optimizations: it seems to
22213         interact badly with some of the other options (see bug #60613).
22214
22215 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22216
22217         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22218         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22219
22220 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22221
22222         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22223         vararg-using methods.
22224
22225 2004-06-21  Martin Baulig  <martin@ximian.com>
22226
22227         * mini/mini-exceptions.c
22228         (mono_handle_exception): Added `gpointer original_ip' argument.
22229         After calling mono_unhandled_exception(), call
22230         mono_debugger_unhandled_exception() and if that returns true,
22231         restore the context and return.
22232
22233 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22234
22235         * mini-ppc.c: prefer the use of relative branches so
22236         they won't need to be patched in aot code (patch from Patrick Beard).
22237
22238 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22239
22240         * aot.c: patch from Patrick Beard to make the output assembly
22241         more correct for the MacOSX assembler. Small tweak to
22242         generate sane images on Linux/PPC, too.
22243
22244 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22245
22246         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22247         case until bug #59509 is fixed (shows up in #60332).
22248
22249 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22250
22251         * mini.c: make sure the needed wrappers are compiled, too, with
22252         precomp.
22253
22254 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22255
22256         * driver.c: remove NPTL reference in --version output.
22257
22258 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22259
22260         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22261         generate valid assembly for the Mach-O assembler.
22262
22263 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22264
22265         * driver.c: don't include abcrem in the all optimization specifier
22266         since it slows down jit compilation too much for now.
22267
22268 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22269
22270         * mini.c: use BIGMUL only if both operands have the same signage.
22271         * iltests.il: Test for bug 60056. (errors related to signage in
22272         BIGMUL).
22273
22274         r=lupus.
22275
22276 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22277
22278         * mini.c, aot.c: memory leak fixes.
22279
22280 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22281
22282         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22283
22284 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22285
22286         * Makefile.am: remove the -static hack completely, it links in
22287         statically glib as well.
22288
22289 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22290
22291         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22292         * exceptions.cs: make it compile with new mcs/csc.
22293
22294 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22295         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22296         and added relevant test case.
22297
22298 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22299
22300         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22301         regressions in gtk-sharp.
22302
22303 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22304
22305         * exceptions.cs: New regression tests.
22306
22307         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22308
22309 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22310
22311         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22312
22313 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22314
22315         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22316
22317         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22318
22319 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22320
22321         * mini.c (mono_jit_runtime_invoke): Init class in this
22322         method instead of trusting mono_jit_compile_method to
22323         do the work (because wrappers can be in object class)
22324
22325 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22326
22327         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22328
22329         * basic-long.cs: New regression test.
22330
22331 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22332
22333         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22334         and div/rem checks.
22335
22336 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22337
22338         * Makefile.am: fix miguel's change to build mono statically against
22339         libmono (track build dependencies).
22340
22341 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22342
22343         * cfold.c: Some glib versions do not have G_MININT32.
22344
22345 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22346
22347         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22348         with precision of tan, atan, sin and cos, and implemented related
22349         regressions tests (fixes bug 54467, but one new problem appeared and
22350         is not fixed yet).
22351
22352 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22353
22354         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22355
22356         * exceptions.cs: Add test for constant folding && division by zero.
22357
22358         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22359         since driver.c is in libmono too, so the optimization was useless.
22360
22361         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22362         variable to driver.c so the compiler can emit more efficient code to
22363         access them.
22364
22365 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22366
22367         * Makefile.am: don't distribute generated inssel.[ch] files.
22368
22369 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22370
22371         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22372         into the default appdomain. Fixes #58707.
22373
22374         * jit-icalls.c: Remove the broken approximation for truncl, doing
22375         no conversion is better.
22376
22377         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22378         Fixes #58863.
22379
22380 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22381
22382         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22383         of the mcrxr instruction which is not available on some processors
22384         even if it's documented to be. Implement add and sub overflow correctly
22385         (still not complete for long unsigned). Speed up icalls a bit.
22386
22387 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22388
22389         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22390         we run .cctor in the current domain instead of target_domain.
22391         
22392         Fixes bug #58558, .cctor not being called in -O=shared.
22393
22394 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22395
22396         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22397
22398 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22399
22400         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22401         which can be done with an imm8, do it that way.
22402         (mono_arch_output_basic_block): ditto for a jmp
22403         (mono_arch_emit_prolog): Computate maximum offset of a label.
22404
22405 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22406
22407         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22408         now tries to allocate prefered physical reg's for virtual
22409         regs. This reduces the number of emited spills/loads with
22410         20-30% on our core assemblies.
22411
22412 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22413
22414         * jit-icalls.c: truncl() is not needed and trunc() is
22415         the correct thing to do anyway (bug #58287).
22416
22417 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22418
22419         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22420         if available.
22421
22422 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22423
22424         * driver.c: enable loop optimizations by default.
22425
22426 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22427
22428         * mini-x86.c: fix calc of max loop size when aligning loops start.
22429
22430 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22431
22432         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22433         the stack.
22434
22435 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22436
22437         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22438         should set carry.
22439
22440         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22441
22442         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22443         
22444         * mini.c (inline_method): Allways inline some wrappers even if the cost
22445         is too large. Fixes #58785.
22446
22447         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22448         
22449 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22450
22451         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22452         (crichton@gimp.org). Beginning of support for sparc/linux.
22453
22454         * mini-sparc.c: Optimize retrieval of LMF address.
22455
22456 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22457
22458         * exceptions-ppc.c:  handle alloca in methods with clauses.
22459
22460 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22461
22462         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22463
22464 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22465
22466         * mini.c: Delegate most of the abort signal work to 
22467           mono_thread_request_interruption, which also handles Stop and Suspend
22468           states.
22469
22470 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22471
22472         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22473         supports the save/restore lmf opcodes.
22474
22475 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22476
22477         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22478         by gcc-3.4 as well.
22479
22480         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22481
22482 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22483
22484         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22485         methods which contain array accesses.
22486
22487         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22488         boundaries. Fixes #58537.
22489
22490         * iltests.il: Add regression test for #58537.
22491
22492 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22493
22494         * mini-x86.c (mono_arch_local_regalloc): Last part of
22495         fix for bug #58633 (releasing register to early).
22496
22497 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22498
22499         * basic-long.cs: Add new regression test.
22500
22501 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22502
22503         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22504         register too early on the chain.
22505
22506 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22507
22508         * mini.c (create_helper_signature): Use a helper function to reduce
22509         the code which needs to be written. Also set the calling convention of
22510         icalls on windows. Fixes #57840.
22511
22512 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22513
22514         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22515         exceptions-ppc.c: added helper function to get the instruction address
22516         from a signal handler context.
22517
22518 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22519
22520         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22521         from gonzalo.
22522
22523 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22524
22525         * helpers.c: Add new env variable to pass args to objdump.
22526         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22527
22528 2004-05-17  Radek Doulik  <rodo@ximian.com>
22529
22530         * Makefile.am (common_sources): added abcremoval.h so it get
22531         disted and daily mono packages on go-mono.com will build again
22532
22533 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22534
22535         * abcremoval.c: Fixed coding style, added copyright header.
22536
22537         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22538
22539         * mini.h: Added prototype for abc removal main function.
22540
22541         * build_relations_propagation_table.pl: Added copyright header.
22542
22543 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22544
22545         * basic-long.cs: reg test for complex ceq_long bug.
22546
22547 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22548
22549         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22550         reg in long and clob case (bug #58343). Fixed/added comments.
22551
22552 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22553
22554         * mini.c (mono_jit_runtime_invoke): Follow new convention
22555         of calling the invoke method with an function pointer.
22556
22557 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22558
22559         * ChangeLog: Fix author of memory leak patch.
22560
22561 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22562
22563         * Makefile.am: fix make dist as well...
22564
22565
22566 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22567
22568         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22569         on archs where pointers are 4 bytes long.
22570
22571         * Makefile.am: Added abcremoval.c source file.
22572
22573         * abcremoval.c: Added abcremoval.c.
22574
22575         * abcremoval.h: Added abcremoval.h.
22576
22577         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22578
22579         * inssel.brg: Enabled bounds check removal.
22580
22581         * mini.c: Added support for abcrem optimization.
22582
22583         * mini.h: Added abcrem optimization label.
22584
22585         * driver.c: Added support for abcrem optimization.
22586
22587         * propagated_relations_table.def: Added propagated_relations_table.def.
22588
22589 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22590
22591         * mini.c, cfold.c: fix style.
22592
22593 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22594
22595         * mini.c: handle issue with the low-level implementation of
22596         some long opcodes (bug #54209).
22597
22598 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22599
22600         * basic.cs: test for my new cmov stuff.
22601
22602 2004-05-13      Patrik Torstensson
22603
22604         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22605         opt and added peephole documentation.
22606
22607 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22608
22609         * tramp-ppc.c: rewrote the generic trampoline code.
22610
22611 2004-05-11      Patrik Torstensson
22612
22613         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22614
22615 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22616
22617         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22618
22619         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22620         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22621
22622         * mini.c: Add new icalls for AsAny marshalling.
22623
22624 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22625
22626         * tramp-ppc.c, mini-ppc.c: more cleanups.
22627
22628 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22629
22630         * mini.c: no warnings.
22631
22632 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22633
22634         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22635
22636 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22637
22638         * mini.c: In the thread abort signal handler, if the thread is in the
22639         process of being stoped, don't throw the Abort exception, just stop the
22640         thread.
22641
22642 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22643
22644         * tramp-ppc.c: removed old code.
22645
22646 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22647
22648         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22649         do some simple speed optimizations on ppc.
22650
22651 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22652
22653         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22654         and large offsets in load/store.
22655
22656 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22657
22658         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22659         it causes regressions.
22660
22661 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22662
22663         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22664         support.
22665
22666 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22667
22668         * jit-icalls.c: remove warnings.
22669         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22670         speedups for unsafe code.
22671
22672 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22673
22674         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22675
22676 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22677
22678         * basic-calls.cs: Add new regression test.
22679
22680         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22681         more portable.
22682
22683         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22684
22685         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22686         is no longer used.
22687
22688 2004-05-06      Patrik Torstensson
22689
22690         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22691         long reg allocation in any reg (not only eax:edx) and implemented 
22692         long shl/shr ops in asm instead of helpers.
22693
22694 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22695
22696         * mini-sparc.h: Fix warnings.
22697
22698         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22699         stack.
22700
22701         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22702         separate statement for clarity.
22703
22704         * mini-sparc.c: Update status.
22705
22706 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22707
22708         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22709         here.
22710
22711 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22712
22713         * inssel-ppc.brg: another small pre-release workaround:
22714         we don't do overflow detection for long_sub_un.
22715
22716 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22717
22718         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22719         (also works around a weird ppc bug: 57957).
22720
22721 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22722
22723         * tramp-ppc.c: trampoline fixes.
22724
22725 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22726
22727         * mini-ppc.c: fixed typos.
22728
22729 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22730
22731         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22732         at the top of the stack. Fixed typos. Use a frame registers
22733         for all the methods with exception clauses.
22734
22735 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22736
22737         * exceptions-ppc.c: restore fp registers.
22738
22739 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22740
22741         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22742         order from the stack top (moved the stack room to save the
22743         return value for trace after the param area). Fixed corruption
22744         in restoring registers on unwind.
22745
22746 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22747
22748         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22749
22750 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22751
22752         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22753         and prolog/epilog for methods that use it. Allow
22754         enough param area room for varargs methods. Fix miguel's
22755         breakage in exception handling.
22756
22757 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22758
22759         * Makefile.am: run genmdesc only on current arch.
22760
22761 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22762
22763         * exceptions-x86.c:
22764         * mini-x86.h: fix the build on windows.
22765
22766 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22767
22768         * 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.
22769
22770         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22771
22772         * mini-exceptions.c: New file.
22773         
22774         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22775         Move some parts of the x86 exception handling code to an 
22776         arch-independent file so it can be shared with other ports.
22777
22778 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22779
22780         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22781
22782 2004-04-26  David Waite  <mass@akuma.org>
22783
22784         * driver.c: remove comma from end of enumeration declaration
22785
22786 2004-04-26  Jackson Harper  <jackson@ximian.com>
22787
22788         * driver.c: parse config file before loading first assembly. This
22789         allows the user gac to be enabled/disabled. 
22790         
22791 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22792
22793         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22794         simpler mechanism: we do not care what is encoded initially
22795         (branch absolute or relative), we care about the code and its
22796         target.  I kept the old code for reference for now.
22797
22798         The new code tries first to determine if the jump is anywhere in
22799         the -/+32 absolute meg range, if it succeeds, it encodes using the
22800         absolute branch;  If not, it tried to find something in the
22801         relative range, if not, it uses the handle_thunk code. 
22802
22803 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22804
22805         * exceptions-ppc.c: use the correct ip register on macosx.
22806
22807 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22808
22809         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22810
22811 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22812
22813         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22814         Raise exception on integer divide by zero by hand since the hw
22815         doesn't support it. Handle NaNs in FP compares.
22816
22817 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22818
22819         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22820         code reducing duplication between the platforms and enabled
22821         signal exception handling (on linux for now).
22822
22823 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22824
22825         * exceptions-ppc.c: more macosx support.
22826
22827 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22828
22829         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22830
22831 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22832
22833         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22834
22835 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22836
22837         * iltests.il: more tests.
22838
22839 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22840
22841         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22842         vars as well.
22843
22844 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22845
22846         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22847
22848 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22849
22850         * liveness.c: Mark variables as volatile in all basic blocks reachable
22851         from exception clauses.
22852
22853 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22854
22855         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22856         inlining.
22857
22858 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22859
22860         * iltests.il, basic.cs: more tests for regalloc.
22861
22862 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22863
22864         * iltests.il: Some tests for register allocation modifications
22865         I have locally.
22866
22867 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22868
22869         * exceptions.cs: Add regression test for bug #56782.
22870
22871         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22872         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22873         the beauty of fixing the same thing in 5 different files...
22874
22875 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22876
22877         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22878         methods.
22879
22880 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22881
22882         * mini.c: Add support for STRWLPARRAY marshalling convention.
22883
22884 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22885
22886         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22887         to init the context to setup the regs pointer).
22888
22889 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22890
22891         * exceptions-ppc.c: more exceptions work.
22892
22893 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22894
22895         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22896         not allowed.
22897
22898 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22899
22900         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22901         can use the memory directly.
22902
22903         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22904
22905         add x86_add_membase, x86_sub_membase, x86_mul_membase
22906
22907 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22908
22909         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22910         GENERAL_REGS they were also hardcoded for all PPC ports.
22911
22912         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22913
22914         Remove hard-coded limit for floating point registers, use
22915         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22916
22917         Notice that in MacOS X calling conventions you can fit a lot more
22918         floating point values in registers, so I should update the PInvoke
22919         test to excercise the passing of floating point values on the
22920         stack (currently broken).
22921         
22922 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22923
22924         * tramp-ppc.c (create_trampoline_code): Added
22925         JUMP_TRAMPOLINE_SIZE. 
22926         (ppc_magic_trampoline): Follow the pattern from
22927         x86_magic_trampoline: if code is set to zero, return. 
22928         (create_trampoline_code): Always pass MonoMethod to the jump
22929         trampoline, before it was passing a null.
22930         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22931         share the code with mono_arch_create_jit_trampoline. 
22932
22933         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22934         implemented.
22935         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22936         implemented.  
22937
22938         * cpu-g4.md: Added length for jmp instruction, the worst case
22939         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22940         for save_lmf).
22941
22942 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22943
22944         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22945
22946 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22947
22948         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22949         before each IL instruction.
22950
22951         * mini.c (CEE_BOX): Fix warnings.
22952
22953 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22954
22955         * mini.c: removed a few unused vars and extra whitespace.
22956
22957 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22958
22959         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22960         checks.
22961         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22962         index.
22963         (OP_GETCHR): use the above
22964         (CEE_LDELEMA): use the above.
22965
22966         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22967         version of the generic impl.
22968         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22969         (CEE_LDELEMA): use the above.
22970
22971 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22972
22973         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22974         Fixes #56317.
22975
22976         * iltests.il: Added new regression test for #56317.
22977
22978 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22979
22980         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22981         under NetBSD. Fixes #56450.
22982
22983         * liveness.c (update_gen_kill_set): Fix previous patch.
22984
22985 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22986
22987         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22988
22989 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22990
22991         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22992         ldsfld and ldsflda.
22993
22994         * inssel-sparc.brg: Add more optimizations.
22995
22996         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22997
22998 2004-04-01  Martin Baulig  <martin@ximian.com>
22999
23000         * mini.c (handle_box): New static function; moved the
23001         implementation of CEE_BOX here.
23002         (mono_method_to_ir): Added `constrained_call' variable.
23003         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
23004         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
23005         mono_method_get_constrained() to get the method.
23006
23007 2004-04-01  Martin Baulig  <martin@ximian.com>
23008
23009         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
23010         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
23011         (mono_method_to_ir): We don't need these macros anymore since
23012         mono_class_get_full() already takes care of it. 
23013
23014 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23015
23016         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
23017         use @function (as doesn't accept #function here) and check the return
23018         value of system and stop if fails.
23019
23020 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23021
23022         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
23023
23024 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
23025
23026         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
23027
23028         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
23029
23030         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
23031         #56223.
23032
23033         * basic-long.cs: Add test for negation of Int64.MinValue.
23034
23035 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
23036
23037         * mini-sparc.c: Update status.
23038
23039         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
23040
23041         * exceptions-sparc.c: Fix return value in filters.
23042
23043         * inssel-sparc.brg: Fix register allocation in some rules.
23044
23045 2004-03-28  Martin Baulig  <martin@ximian.com>
23046
23047         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
23048         if neccessary.  
23049
23050 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
23051
23052         * mini-x86.c (mono_arch_patch_code): Fix warnings.
23053         
23054         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
23055         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
23056         remove unused conv_u4 opcode.
23057
23058         * mini-x86.c: Remove valgrind workaround since it slows down things
23059         even when mono is not run under valgrind.
23060
23061 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
23062
23063         * mini-sparc.c: Update status.
23064
23065         * inssel-sparc.brg: Add some optimizations.
23066
23067         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
23068         future delay slot filling. Add support for varargs, tail calls and JMP.
23069
23070         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
23071         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
23072
23073         * inssel.brg: Fix register allocation in OP_ARGLIST.
23074
23075         * inssel.brg: Fix warnings.
23076
23077 2004-03-25  Martin Baulig  <martin@ximian.com>
23078
23079         * mini.c (inflate_generic_field): Removed.
23080         (mini_get_method): Removed, use mono_get_method_full(),
23081         (mini_get_class): Removed, use mono_class_get_full().
23082         (mono_method_to_ir): Pass our generic context to
23083         mono_field_from_token().        
23084
23085 2004-03-25  Martin Baulig  <martin@ximian.com>
23086
23087         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
23088         of a `MonoMethod *'.
23089         (mini_get_method): Take a `MonoGenericContext *' instead
23090         of a `MonoMethod *'.
23091         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
23092         a new local variable called `generic_context' which holds the
23093         current `MonoGenericContext *'; use it to lookup things.
23094
23095 2004-03-24  Martin Baulig  <martin@ximian.com>
23096
23097         * mini.c (mini_get_class): New static method; if we're inside a
23098         generic instance, inflate the class if neccessary.
23099         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23100
23101 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23102
23103         * iltests.il: New regression test for #55976.
23104
23105         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23106         #55976.
23107
23108 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23109
23110         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23111         output.
23112
23113 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23114
23115         * liveness.c: Consider SSA stores as well as loads when making vars
23116         volatile.
23117
23118         * exceptions.cs: New regression tests for register allocation.
23119         
23120 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23121
23122         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23123         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23124           domain lock only to protect puntual access to data structures.
23125           Added access lock for sighash, jit_icall_hash_name, 
23126           jit_icall_hash_addr and domain->code_mp.
23127
23128 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23129
23130         * driver.c: Print SIGSEGV handling method.
23131
23132         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23133
23134         * mini.c (setup_jit_tls_data): Handle case when this is called
23135         multiple times for a thread.
23136
23137         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23138         is different from fbxx_un. Fixes #54303. Also use constants instead of
23139         magic numbers in a lot of places.
23140
23141 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23142
23143         * exceptions.cs: Fix cctor test when --regression is used.
23144
23145 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23146
23147         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23148         for Linux/ppc.
23149
23150 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23151
23152         * inssel-ppc.brg: fixed register assignments for some rules.
23153
23154 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23155
23156         * exceptions.cs: Add test for exceptions in static constructors.
23157
23158         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23159         static constructors outside the domain lock. Fixes #55720.
23160
23161 2004-03-17  Martin Baulig  <martin@ximian.com>
23162
23163         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23164         (inflate_generic_field): Take the `MonoMethod *' instead of the
23165         `MonoClass *' and added support for generic method.
23166         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23167         have a `field->parent->gen_params', only inflate the field if it's
23168         an open constructed type.
23169
23170 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23171
23172         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23173         exception object instead of the preconstructed ones.
23174
23175 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23176
23177         * mini.c: reverted changed to sigsegv_signal_handler commited
23178         accidentally in the previous patch.
23179
23180 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23181
23182         * mini.c:
23183         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23184         running --aot with an old assembly.
23185
23186 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23187
23188         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23189         point values.
23190
23191         * mini-sparc.c: Add support for v9 branches with prediction.
23192
23193 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23194
23195         * mini.c (mini_init): #warning is GNUC only
23196
23197         * mini-sparc.h: implement __builtin_frame_address
23198         and __builtin_return_address for Sun C compiler
23199
23200 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23201
23202         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23203
23204 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23205
23206         * basic-calls.cs: Add test for unaligned byref long argument passing.
23207
23208         * mini-ops.h: Add sparcv9 compare and branch instructions.
23209
23210         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23211         v9 instructions if we have a v9 cpu.
23212
23213         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23214         registers for global allocation.
23215
23216         * exceptions-sparc.c: Fixes.
23217         
23218 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23219
23220         * liveness.c (mono_analyze_liveness): Optimized version.
23221
23222         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23223
23224         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23225         sparc work.
23226
23227         * basic-float.cs basic-calls.cs: New regression tests.
23228
23229 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23230
23231         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23232         sigaltstack implementation.
23233
23234         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23235         
23236         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23237         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23238
23239 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23240
23241         * mini.c: Fix warnings.
23242         
23243         * mini.c (mono_resolve_patch_target): New function which contains the
23244         arch independent part of the patching process.
23245
23246         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23247         patching code to a separate function.
23248
23249 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23250
23251         * mini.c (add_signal_handler): ifdef out on Windows
23252
23253 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23254
23255         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23256         cpu-sparc.md: Add exception handling support + other fixes.
23257
23258         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23259         typed GC detection in --version.
23260
23261         * basic.cs exceptions.cs: New regression tests.
23262
23263         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23264         the arch specific code can store data during a compilation.
23265
23266         * mini-ops.h: Add OP_SETFRET.
23267
23268         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23269         function, register a separate icall for each arity, so the icalls can
23270         get a wrapper.
23271         
23272         * mini.c (mono_print_tree): Print negative offsets in a more readable
23273         form.
23274         
23275         * mini.c: Make signal handling work on sparc.
23276         
23277         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23278
23279         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23280
23281         * jit-icalls.c: Emulate truncl by aintl on solaris.
23282
23283         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23284
23285 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23286
23287         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23288
23289 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23290
23291         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23292         a MarshalByRef type, inline a method that performs the check, taking into
23293         account that the object can be a proxy. Also implemented tow new opcodes:
23294         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23295         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23296         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23297
23298 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23299
23300         * mini-ppc.c: if a relative branch displacement is too big
23301         but it points to and area reachable with an absolute branch, 
23302         avoid the thunks.
23303
23304 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23305
23306         * mini.c: optimize small copies in cpblk.
23307
23308 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23309
23310         * basic-calls.cs basic-float.cs: New regression tests.
23311
23312         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23313         negative offsets from %fp. Implement localloc. Fix local register 
23314         allocation. Fix the case when the this argument needs to be saved to
23315         the stack. Implement some missing opcodes.
23316
23317 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23318
23319         * mini.c (mini_method_compile): Reenable global regalloc in methods
23320         with exception handlers.
23321
23322         * linear-scan.c (mono_varlist_sort): Fix warning.
23323
23324         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23325
23326         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23327         regalloc costs.
23328
23329         * liveness.c: Make all variables uses in exception clauses volatile, to
23330         prevent them from being allocated to registers. Fixes #42136.
23331
23332 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23333
23334         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23335         causes regressions.
23336
23337         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23338         argument to mono_arch_regalloc_cost.
23339
23340         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23341         precisely.
23342
23343 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23344
23345         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23346         Make the cost of allocating a variable to a register arch dependent.
23347
23348         * basic-calls.cs: Fix compilation of tests.
23349         
23350         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23351         helper function to cut back on the number of #ifdefs needed.
23352
23353         * mini-ppc.c: Fix compilation.
23354
23355         * basic-calls.cs: New regression tests.
23356
23357         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23358
23359         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23360         of l0 since that is callee saved.
23361
23362         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23363         to virtual calls.
23364
23365         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23366         of delay instruction.
23367
23368         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23369
23370         * mini.h (MonoCallInst): Add 'virtual' flag.
23371
23372         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23373
23374 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23375
23376         * *.cs: New regression tests.
23377
23378         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23379         work.
23380
23381         * mini.c (mono_runtime_install_handlers): Fix build.
23382
23383         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23384         'signal_stack_size' members.
23385
23386         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23387         alternate signal stack.
23388
23389         * exceptions-x86.c: Add stack overflow handling.
23390
23391         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23392         functions to arch independent code.
23393
23394         * mini.c (mono_print_tree): Print more detailed info for load_membase
23395         opcodes.
23396         
23397 2004-02-23  Martin Baulig  <martin@ximian.com>
23398
23399         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23400
23401 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23402
23403         * mini-x86.c: fixed reg allocation for div/rem.
23404
23405 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23406
23407         * driver.c (mono_main): Report some configuratio options on --version.
23408
23409 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23410
23411         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23412         low in the address space. Correctly flush memory in thunks where we
23413         output native code.
23414
23415 2004-02-20  Martin Baulig  <martin@ximian.com>
23416
23417         * mini.c (mini_get_method): New static method; inflate all generic
23418         methods and methods in open generic instances.
23419         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23420         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23421
23422 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23423
23424         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23425
23426         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23427
23428 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23429
23430         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23431
23432         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23433         it compile using Sun's compiler.
23434
23435 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23436
23437         * 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.
23438
23439         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23440
23441 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23442
23443         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23444         code.
23445         * mini-ppc.c: handle calls outside of the allowed range with thunks
23446         allocated using the code manager.
23447         * tramp-ppc.c: use the code manager to hold generated native code.
23448         Fixed the magic trampoline to just patch vtable entries.
23449
23450 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23451
23452         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23453         independent file.
23454
23455 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23456
23457         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23458         PPC.
23459
23460         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23461         if we have a working __thread implementation.
23462
23463         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23464         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23465
23466 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23467
23468         * mini-x86.c: Fix compilation under gcc 2.
23469         
23470 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23471
23472         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23473         contains a call to the wrapped function.
23474
23475         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23476         OP_<CALL>_IMM opcodes, and use them under X86.
23477         
23478         * mini.c (mono_jit_find_compiled_method): Fix warning.
23479
23480         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23481
23482         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23483
23484         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23485         functionality to mini.c.
23486
23487         * mini.c (mono_create_jump_trampoline): New function to create a jump
23488         trampoline. Return a compiled method instead of a trampoline if it
23489         exists. Add a cache for jump trampolines.
23490
23491         * mini.c (mono_jit_find_compiled_method): New function to return a
23492         compiled method if it exists.
23493
23494         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23495         mono_arch_create_jit_trampoline.
23496
23497         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23498         a jump trampoline. Fixes #52092.
23499         
23500 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23501
23502         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23503         which is not up-to-date. Add check_corlib_version () instead.
23504
23505         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23506         have to call it.
23507         
23508         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23509         since newer valgrind versions do not need it.
23510
23511         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23512         compile a method with a given set of optimizations.
23513
23514         * mini.c: Compile icall wrappers on-demand instead of at startup.
23515
23516         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23517         wrapper for an icall.
23518
23519 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23520
23521         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23522         #54063.
23523
23524         * iltests.il: Add test for non-empty stack before switch instruction.
23525
23526 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23527
23528         * mini.c: Add support for new stringbuilder marshalling conventions.
23529
23530         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23531
23532 2004-02-01  Martin Baulig  <martin@ximian.com>
23533
23534         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23535         in `ginst->mtype_argv'.
23536
23537 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23538
23539         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23540         facilitate grepping.
23541
23542 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23543
23544         * mini.c: fixed buglet in initobj generic implementation for references.
23545
23546 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23547
23548         * Makefile.am: make the version script conditional.
23549         * jit-icalls.c: handle missing truncl().
23550
23551 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23552
23553         * exceptions.cs: Add more tests for double->int conversion.
23554
23555         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23556         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23557
23558 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23559
23560         * driver.c: make --verbose --version emit an error
23561         if the loaded corlib doesn't match the runtime version.
23562
23563 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23564
23565         * mini-ppc.h: export ppc_patch().
23566         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23567         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23568         on par or better than on MacOSX.
23569
23570 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23571
23572         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23573         mono_lookup_pinvoke_call.
23574
23575         * mini-x86.c: Under windows, the default pinvoke calling convention is
23576         stdcall. Fixes #52834.
23577
23578         * mini.c (optimize_branches): Add an upper bound to the number of
23579         iterations to prevent infinite loops on strange loops. Fixes #53003.
23580
23581 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23582
23583         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23584         and ISINST. Fixes #52093.
23585
23586         * objects.cs (test_0_vector_array_cast): New tests.
23587         
23588 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23589
23590         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23591         checking in Array.Set ().
23592
23593         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23594         #52590.
23595
23596         * object.cs (test_0_multi_array_cast): New regression test.
23597
23598 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23599
23600         * exceptions-ppc.c: fix build on Linux/PPC.
23601
23602 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23603
23604         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23605         running under valgrind.
23606         (x86_magic_trampoline): Fix build bustage.
23607
23608         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23609         negative values as well. This is needed for the encoding of the line number
23610         info, since sometimes the line numbers are not in increasing order.
23611
23612 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23613
23614         * cpu-pentium.md (localloc): Increase the size of the localloc 
23615         instruction since it is a loop under Win32.
23616
23617         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23618         allocation.
23619
23620 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23621
23622         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23623         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23624         Max Horn (max@quendi.de). Fix file names in comments.
23625
23626 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23627
23628         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23629         avoid stack overflow.
23630         (replace_usage): Avoid uninitialized variable warnings.
23631
23632         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23633         and taking the address of valuetype variables.
23634
23635 2004-01-03  Patrik Torstensson
23636
23637         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23638         for other purposes than FP later on.
23639
23640 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23641
23642         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23643         of tail calls.
23644
23645 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23646
23647         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23648
23649 2003-12-30  Patrik Torstensson <p@rxc.se>
23650
23651         * mini-x86.h: Decreased number of availiable fp regs.
23652         Solves corner cases with FP spilling.
23653
23654 2003-12-23  Patrik Torstensson <p@rxc.se>
23655
23656         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23657         for floating point stack tracking / spilling on x86. 
23658         Fixes bug #49012.
23659         
23660         * basic-float.cs: added float mul overflow test.
23661
23662 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23663
23664         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23665
23666 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23667
23668         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23669         supports for cond branches that overflow the immediate
23670         overflow offset. mcs can compile simple programs.
23671
23672 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23673
23674         * exceptions-ppc.c: exception handling support wip:
23675         finally handlers get run on exception.
23676
23677 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23678
23679         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23680         profiling.
23681
23682 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23683
23684         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23685         initial support for stack walking and unwinding.
23686
23687 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23688
23689         * driver.c (mono_main): Make corlib-out-of-sync message more 
23690         descriptive. Also remove verify_corlib call.
23691
23692 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23693
23694         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23695         not overlap with other call's arguments, too.
23696
23697 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23698
23699         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23700         move to arch-specific code the choice of arch-specific
23701         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23702         * mini.c: ensure emulation calls will not interleave
23703         with other calls.
23704
23705 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23706
23707         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23708         the magic trampoline stack frame is dropped before executing
23709         the new method.
23710
23711 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23712
23713         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23714         and integer to fp conversions. Added support for overflowing
23715         arguments on the stack. Reserve a couple more registers as temps.
23716         Added support for aot compilation (as output still needs to be
23717         tweaked, though).
23718
23719 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23720
23721         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23722         Don't overwrite return register in some corner cases.
23723
23724 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23725
23726         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23727         static constructors when AOT compiling.
23728
23729         * driver.c (mono_main): Call mono_check_corlib_version.
23730
23731 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23732
23733         * cpu-g4.md, basic.cs: fixed div target register.
23734
23735 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23736
23737         * mini-ppc.c, basic.cs: shl_imm fix with test.
23738
23739 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23740
23741         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23742         structures by value. Misc fixes.
23743         * objects.cs: more tests.
23744
23745 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23746
23747         * mini-ppc.c: lconv.ovf.i implemented.
23748
23749 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23750
23751         * mini.c:
23752         (mini_init): don't error out if someone already called g_thread_init.
23753
23754 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23755
23756         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23757         to be any type per the spec. Fix abnormal memory usage when
23758         the same object is repeatedly thrown.
23759
23760 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23761
23762         * mini.c: check for overruns in IL code.
23763
23764 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23765
23766         * TODO: Add/remove some todo entries.
23767
23768 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23769
23770         * driver.c (mono_main): Call mono_verify_corlib.
23771
23772 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23773
23774         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23775         This has been moved to mini.c
23776         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23777         type being casted is marshalbyref it could be a proxy, so instead of
23778         emitting the type check code, emit a call to a runtime method that will
23779         perform the check by calling CanCastTo if needed.
23780
23781 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23782
23783         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23784         methods with large stack frames under Win32.
23785
23786 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23787
23788         * Makefile.am: Distribute regression tests.
23789
23790         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23791         at the end instead of inserting each variable into the sorted list.
23792
23793         * linear-scan.c (mono_varlist_sort): New helper function.
23794         
23795 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23796
23797         * mini.c: ensure arguments and locals are within bounds.
23798
23799 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23800
23801         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23802         related fixes.
23803
23804 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23805
23806         * mini.c (mono_cprop_copy_values): Fix crash.
23807
23808         * aot.c: Set verbosity back to 0.
23809         
23810 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23811
23812         * regalloc.c: complete memory leak fix by Laurent Morichetti
23813         (l_m@pacbell.net).
23814
23815 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23816
23817         * driver.c (main_thread_handler): Revert the previous patch.
23818
23819         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23820         under valgrind.
23821
23822         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23823         memory from the memory pool.
23824
23825         * driver.c (main_thread_handler): Turn on all optimizations when
23826         --aot is used.
23827
23828         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23829         an array for better performance.
23830
23831         * regalloc.c (mono_regstate_assign): Fix memory leak.
23832
23833         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23834         serialize the debug info.
23835
23836         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23837         debug info from the serialized representation.
23838
23839         * aot.c: Save debug info into the generated file and load it when 
23840         loading a method.
23841
23842         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23843
23844 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23845
23846         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23847         More FP-related fixes.
23848
23849 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23850
23851         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23852         and register allocation buglet. Hello world now runs.
23853
23854 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23855
23856         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23857         * tramp-ppc.c: fixed class init trampoline.
23858         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23859
23860 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23861
23862         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23863         mini.c: more ppc changes/fixes.
23864
23865 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23866
23867         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23868         Also optimize the case when the arguments are the same in the caller 
23869         and in the callee.
23870
23871         * iltests.il: Add tests for tail calls with valuetype arguments.
23872
23873 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23874
23875         * mini-ppc.c: fixes for struct return type.
23876
23877 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23878
23879         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23880         mono_spillvar_offset() to arch-specific code.
23881
23882 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23883
23884         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23885
23886 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23887
23888         * exceptions-x86.c: Fix stack space leaks.
23889         
23890         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23891         registers from the lmf if the method has save_lmf set.
23892
23893 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23894
23895         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23896         of icall wrappers into InvokeInDomain, since these are now per-domain.
23897
23898 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23899
23900         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23901         make some opcode emulation and intrinsic ops enabled/disabled 
23902         according to the architecture. More fixes.
23903
23904 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23905
23906         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23907
23908 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23909
23910         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23911         arch-specific handling for 'this' and struct return type to
23912         arch-specific code.
23913
23914 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23915
23916         * aot.c: prevent divide by zero error when reporting (it happened with
23917         Accessibility.dll).
23918
23919 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23920
23921         * mini.h (inst_switch): Remove unused macro.
23922
23923 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23924
23925         * aot.c:
23926         (load_aot_module): free 'info->methods' and 'info' properly. No more
23927         "free(): invalid pointer blah" messages when you have an old aot
23928         compiled assembly.
23929
23930 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23931
23932         * jit-icalls.c, mini.c: Added support for context static fields.
23933
23934 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23935
23936         * mini.c (mono_method_blittable): Methods which set LastError are not 
23937         blittable either. Fixes #51108.
23938         
23939 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23940
23941         * mini.c: flush icache.
23942         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23943
23944 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23945
23946         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23947
23948 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23949
23950         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23951         safe on IA32.
23952
23953         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23954         vararg calls.
23955
23956         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23957
23958 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23959
23960         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23961         instruction when the result is discarded.
23962
23963         * iltests.il (test_0_div_regalloc): New regression test.
23964
23965         * arrays.cs: Fix compilation error.
23966
23967 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23968
23969         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23970         float rules to inssel-x86.brg: sane architectures with FP registers
23971         don't need to implement these rules.
23972
23973 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23974
23975         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23976
23977 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23978
23979         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23980         implementation of 32 bit systems.
23981
23982 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23983
23984         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23985         (Jeroen Zwartepoorte).
23986
23987 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23988
23989         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23990         the caller and the callee matches.
23991         
23992         * mini.c (mono_method_to_ir): Add comment.
23993
23994         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23995         signbit is missing on some platforms.
23996
23997 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23998
23999         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
24000
24001         * mini.c (setup_jit_tls_data): Call the new function.
24002         
24003         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
24004
24005         * mini-x86.c: Add experimental support for fast access to the lmf
24006         structure under NPTL/Linux 2.6.x.
24007
24008 2003-11-06  Martin Baulig  <martin@ximian.com>
24009
24010         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
24011         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
24012         the debugger.
24013
24014 2003-11-02  Martin Baulig  <martin@ximian.com>
24015
24016         * mini.c (inflate_generic_field): New static method.
24017         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
24018         generic instance and the field is declared in a generic type, call
24019         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
24020
24021 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
24022
24023         * mini.h mini.c (mono_method_same_domain): New function to return
24024         whenever the caller and the callee are in the same domain.
24025
24026         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
24027
24028 2003-10-30  Martin Baulig  <martin@ximian.com>
24029
24030         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
24031         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
24032         method parameters.
24033         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
24034         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
24035
24036 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
24037
24038         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
24039         propagation.
24040
24041         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
24042         object here, so it is in the correct appdomain etc.
24043
24044 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
24045
24046         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
24047         already done.
24048         (mono_method_to_ir): Avoid freeing the type created returned from
24049         mono_type_create_from_typespec, since it is put into an internal cache
24050         by the function. Fixes pointer.exe.
24051
24052         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
24053         trampolines for icalls and pinvokes as well. Fixes #33569.
24054
24055 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
24056
24057         * mini.c: Update after appdomain changes.
24058
24059         * mini.c (mono_jit_compile_method_inner): Allways compile native
24060         method wrappers in the root domain, since there can only be one
24061         instance of them, whose address is stored in method->info.
24062
24063 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
24064
24065         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
24066         environment variable. Instead detect automatically whenever running
24067         under valgrind using the magic macro RUNNING_ON_VALGRIND from
24068         valgrind.h.
24069
24070 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
24071
24072         * trace.c, trace.h: New files that implement the new trace option
24073         parsing. 
24074
24075         * driver.c: Document new --trace options.
24076
24077         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
24078         mini-x86.c: Apply:
24079
24080         -       if (mono_jit_trace_calls)
24081         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
24082
24083         * mini.h: prototypes.
24084         
24085 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
24086
24087         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
24088
24089         * mini.c inssel.brg: Implement typedefbyref opcodes.
24090
24091         * mini.c (mono_jit_compile_method): Remove unused local variable.
24092
24093         * mini.c (mono_jit_compile_method_inner): Ditto.
24094         
24095 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
24096
24097         * tramp-x86.c (x86_class_init_trampoline): Fix build.
24098         
24099         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24100
24101 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24102
24103         * mini.c (mono_no_aot): Remove unused global variable.
24104
24105         * mini.c: Thread safety fixes.
24106
24107 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24108
24109         * mini.c (mono_create_class_init_trampoline): Add a lock around
24110         class_init_hash_addr.
24111
24112         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24113         #30073.
24114
24115         * mini.c: Decompose the NEWARR instruction before decomposing its
24116         arguments. Fixes #30073.
24117
24118 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24119
24120         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24121         convention.
24122
24123 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24124
24125         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24126
24127         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24128
24129         * driver.c: Add support for compiling icall wrappers to --compile.
24130
24131 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24132
24133         * inssel.brg: The empty value in class->interface_offsets is -1, not
24134         0. Fixes #49287.
24135
24136 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24137
24138         * objects.cs: New test for 'is' operator on an array of interfaces.
24139
24140 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24141
24142         * tramp-ppc.c: update trampoline code to support jumps
24143         and class initialization.
24144
24145 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24146
24147         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24148
24149         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24150
24151         * inssel.brg (OP_UNBOX): Remove unused rule.
24152
24153         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24154         region instead of one for each method. Fixes #47813.
24155
24156 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24157
24158         * exceptions.cs (test_0_nested_finally): New regression test for
24159         nested exception handlers.
24160
24161         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24162
24163         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24164
24165         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24166         inlining.
24167
24168         * mini.c (mono_method_check_inlining): Make the inlining limit 
24169         configurable by an environment variable.
24170         
24171         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24172
24173         * mini.h: Bump AOT file version.
24174
24175         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24176         token, store the image along with the token, since the token might not 
24177         refer to the same image as the method containing the relocation, 
24178         because of inlining.
24179
24180 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24181
24182         * mini.c (mono_precompile_assemblies): New function to compile
24183         all methods in all loaded assemblies.
24184
24185         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24186
24187         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24188         iassign and fassign to int*, since they can contain large negative
24189         values if the register is spilled. Also added some comments. Fixes
24190         #45817.
24191
24192         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24193         under Win32. Fixes #42964.
24194
24195 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24196
24197         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24198
24199         * aot.c: Added support for AOT compiling methods which contain calls
24200         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24201         handled.
24202         
24203         * driver.c (compile_all_methods): Run the compilation in a thread
24204         managed by mono. Fixes #44023.
24205
24206         * mini.c (mono_codegen): Print full method name in verbose output.
24207
24208         * mini-x86.c (mono_arch_patch_code): Fix warning.
24209         
24210         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24211         jumps, since the method we are jumping to might be domain-specific.
24212
24213         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24214
24215 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24216
24217         * inssel.brg: string chars are unsigned.
24218
24219 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * TODO: New todo item.
24222
24223         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24224         which calls mono_runtime_class_init and patches the call site to
24225         avoid further calls.
24226         (mono_arch_create_class_init_trampoline): New arch specific function 
24227         to create a class init trampoline.
24228         (create_trampoline_code): Generalized so it can create
24229         class init trampolines as well.
24230
24231         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24232         (mono_create_class_init_trampoline): New function to create and cache
24233         class init trampolines.
24234         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24235         vtable given the address of a class init trampoline. Used by the
24236         patching process.
24237         (mono_codegen): Generate a call to a trampoline instead of
24238         mono_runtime_class_init in LDSFLD[A].
24239         (mono_codegen): Add relocations for the new trampoline.
24240         
24241         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24242         MONO_PATCH_INFO_CLASS_INIT.
24243
24244         * mini.h: Bump AOT version number.
24245
24246         * aot.c: Create a copy of the loaded code instead of using the original
24247         so methods which call each other will be close in memory, improving
24248         cache behaviour.
24249         
24250         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24251         patch since it breaks the regression tests.
24252         
24253         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24254         for the register saving instruction sequence since the 
24255         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24256
24257 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24258
24259         * TODO: Fix todo item && remove another.
24260
24261 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24262
24263         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24264         previous checkin.
24265
24266         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24267         function of the module.
24268
24269         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24270         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24271         --no-aot command line option.
24272
24273 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24274
24275         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24276         by Bernie Solomon (bernard@ugsolutions.com).
24277
24278         * inssel.brg: Refactor the interface offset table related code into
24279         its separate functions and add support for the AOT case.
24280
24281 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24282
24283         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24284         
24285         * aot.c: Added mono_aot_verbose variable and made all debugging
24286         output depend on the value of this variable.
24287
24288         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24289         method_label and info_label.
24290
24291         * mini.h mini-x86.c aot.c: Added a new relocation type 
24292         MONO_PATCH_INFO_IID for klass->interface_id.
24293
24294         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24295         the MonoJitInfo structure.
24296
24297         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24298         a non-root appdomain in shared mode.
24299
24300 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24301
24302         * aot.c: make aot loader less verbose. Remove free of unused variable.
24303
24304 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24305
24306         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24307
24308         * .cvsignore: Added *.dll.
24309
24310         * mini.c (mono_print_tree_nl): New function callable while debugging.
24311
24312         * mini.c (mono_print_code): Export this.
24313
24314         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24315         patched code.
24316
24317 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24318
24319         * mini.h (MonoCompile): Added 'jit_info' field.
24320
24321         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24322         the cfg structure, since it is needed by the AOT compiler.
24323
24324         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24325
24326         * aot.c: A major rewrite. Changes include:
24327         - save exception tables for methods which have them.
24328         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24329         to g_module_symbol.
24330         - reworked the file format so it is now much smaller and needs
24331         fewer relocation entries.
24332         
24333 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24334
24335         * aot.c (load_aot_module): Fix build bustage on platforms without
24336         Boehm GC.
24337
24338 2003-09-04  Martin Baulig  <martin@ximian.com>
24339
24340         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24341
24342 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24343
24344         * TODO: Some new optimization ideas.
24345
24346         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24347
24348         * aot.c: Save the optimization flags used to compile the code into
24349         the AOT module.
24350
24351         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24352         support emitting domain specific code.
24353         
24354         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24355         no longer domain neutral. It can be made domain neutral by compiling 
24356         with --optimize=shared.
24357
24358         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24359         between appdomains.
24360
24361         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24362         loading of AOT code.
24363
24364         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24365         
24366         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24367         if there is no domain neutrality information.
24368
24369 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24370
24371         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24372         format version into the generated library.
24373
24374         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24375         callee method into the caller since one of them could be shared.
24376
24377         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24378         system exceptions from AOT code now works.
24379
24380         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24381         method if it is domain neutral and the callee is not.
24382
24383         * graph.c (cfg_emit_one_loop_level): Fix warning.
24384
24385 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24386
24387         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24388         last checkin.
24389
24390 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24391
24392         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24393         is needed  by code which is executed before mono_runtime_init ().
24394         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24395         
24396         * mini.c (mono_thread_abort): Fix warning.
24397         (mono_jit_compile_method): Call static constructor in the AOT case too.
24398
24399         * aot.c (mono_compile_assembly): Fix warning.
24400
24401 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24402
24403         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24404
24405 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24406
24407         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24408
24409         * cpu-pentium.md: Fix the length of call opcodes so they include the
24410         ESP restoring instruction. Fixes #47968.
24411
24412 2003-08-28  Martin Baulig  <martin@ximian.com>
24413
24414         * mini-x86.c (mono_arch_call_opcode): Added support for
24415         MONO_TYPE_GENERICINST.
24416
24417         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24418
24419 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24420
24421         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24422         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24423
24424         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24425         metadata_section.
24426
24427 2003-08-26  Martin Baulig  <martin@ximian.com>
24428
24429         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24430         when reporting an error, set this to the actual error location.
24431         (mono_method_to_ir): Report the correct error location if
24432         get_basic_blocks() returned an error.
24433
24434 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24435
24436         * mini.c (mono_type_blittable): OBJECT is not blittable.
24437         (mono_method_blittable): Methods which have marshalling descriptors
24438         are not blittable either. Fixes #47842.
24439
24440 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24441
24442         * driver.c mini.c: Use an environment variable instead of a global 
24443         variable. Also fix the build.
24444
24445         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24446         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24447         reporting this. 
24448
24449         * driver.c mini.c: Added --with-valgrind option to turn off some
24450         code which prevents mono from running under valgrind.
24451
24452         * mini.c (mono_emit_call_args): Fixed warning.
24453
24454         * mini.c (mono_emulate_opcode): Fixed warning.
24455
24456 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24457
24458         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24459         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24460         regalloc.c, regalloc.h: specify available registers in arch-specific
24461         code and support floats in the regallocator (patch by Laurent Morichetti 
24462         <l_m@pacbell.net>)
24463
24464 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24465
24466         * mini.c: mono_thread_current() can be called only after
24467         mono_runtime_init(): rearrange code to not call it early on.
24468
24469 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24470
24471         * mini.c: allocate jump tables in the code mempools.
24472
24473 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24474
24475         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24476         freed.
24477
24478 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24479
24480         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24481         12 to 16.  This fixes bug #47453.
24482
24483
24484 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24485
24486         * mini-ppc.c: fixed indexed load and unsigned compares.
24487
24488 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24489
24490         * mini.c: reenabled installation of handler for
24491           thread abort signal.
24492
24493 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24494
24495         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24496         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24497         until it's fixed and actually useful.
24498
24499 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24500
24501         * inssel-long32.brg: couple more opcodes implemented.
24502
24503 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24504         
24505         * mini-sparc.c: Even more opcodes implemeted.
24506
24507 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24508
24509         * mini-sparc.c: More opcodes implemented.
24510
24511 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24512
24513         * mini-sparc.c: More opcodes implemented.
24514
24515 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24516
24517         * inssel-sparc.brg: Add some needed rules.  Direct
24518         copy from PPC.
24519         * Makefile.am: Use inssel-sparc.brg
24520         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24521         an assert happy for now.
24522
24523 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24524
24525         * mini-sparc.c: Fixed compile errors.
24526         * exceptions-sparc.c: Same.  We now produce a mono binary 
24527         on sparc-linux.  Yea.
24528
24529 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24530
24531         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24532         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24533         They compile, but do not work.
24534
24535 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24536
24537         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24538         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24539         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24540         (ct@gentoo.org).
24541
24542 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24543
24544         * mini.c: more opcodes implemented and better support for generics.
24545
24546 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24547
24548         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24549         * mini.c, mini.h: first cut at generics support: some new instructions 
24550         added and changed the behaviour of some of the existing ones.
24551
24552 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24553
24554         * mini.c: Removed definition of metadata_shared mutex here.
24555
24556 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24557
24558         * mini-x86.c: make vararg calls work for instance methods.
24559
24560 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24561
24562         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24563         returns the arguments in a separte list, now.
24564
24565 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24566
24567         * aot.c, mini.c: updates for array type representation changes.
24568
24569 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24570
24571         * mini.c: register function to perform jit shutdown.
24572
24573 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24574
24575         * mini.c: use a faster allocator if possible.
24576
24577 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24578
24579         * aot.c: some cleanups and portability changes.
24580
24581 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24582
24583         * mini.c: use faster allocation for CEE_BOX if possible.
24584
24585 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24586
24587         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24588         Moved inlined mempcy code to its own function so that is can be
24589         reused. Added an inline memset function as well (optimized initobj).
24590         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24591
24592 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24593
24594         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24595
24596 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24597
24598         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24599         arch code can setup the cpu for CLR execution, if needed.
24600         We use it on x86 to set the precision of FP operations.
24601
24602 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24603
24604         * mini.c: disable some optimizations if we can guess they'll cost too
24605         much for a given method.
24606
24607 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24608
24609         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24610         
24611 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24612         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24613         info collection support.
24614
24615 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24616
24617         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24618         is now implemented in the profiling API. Get rid of a couple of
24619         unnecessary global variables.
24620
24621 2003-06-15  Nick Drochak <ndrochak@gol.com>
24622
24623         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24624         * cpu-g4.md: add op_bigmul and op_bigmul_un
24625         * cpu_pentium.md: add op_bigmul_un
24626         * inssel-long32.brg: add rule for unsigned bigmul
24627         * mini-ops.h: define OP_BIGMUL_UN
24628         * mini-x86.c: THE BUG: handle (un)signed properly
24629         * mini.c: choose unsigned opcode if needed.
24630         This set of patches fixes bug #44291
24631
24632 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24633
24634         * mini.c (optimize_branches): improved to handle all kinds of
24635         conditional branches.
24636
24637 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24638
24639         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24640         don't raise exceptions.
24641
24642 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24643
24644         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24645         to arch-specific files.
24646
24647 2003-06-09  Martin Baulig  <martin@ximian.com>
24648
24649         * Makefile.am (libs): Added $(LIBGC_LIBS).
24650
24651 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24652
24653         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24654         and OP_ATAN (fixes bug#44293).
24655
24656 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24657
24658         * Makefile.am, mini-x86.c: rename cpu description array to
24659         pentium_desc, since some compilers define the 'pentium' preprocessor
24660         symbol.
24661
24662 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24663
24664         * mini.c (mini_select_instructions): add explicit branch if the
24665         following block is not the false target of a conditional branch -
24666         we need this with any optimization that reorder or remove bblocks
24667
24668         * mini.c (optimize_branches): bug fixes
24669
24670 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24671
24672         * mini.c (mono_method_to_ir): inline static readonly fields
24673
24674         * ssa.c (fold_tree): start cfold support for long (very simple
24675         cases only)
24676
24677         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24678
24679 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24680
24681         * inssel.brg: fixed memcpy (bug #44219).
24682
24683 2003-06-05  Dick Porter  <dick@ximian.com>
24684
24685         * driver.c: Set the glib log levels to not abort if g_message
24686         recurses.
24687
24688         g_set_prgname() has to happen before mini_init() so that the
24689         process handle gets the info.
24690         
24691 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24692
24693         * driver.c: add intrins to the default optimizations to get wider
24694         exposure.
24695
24696 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24697
24698         * mini.h: some large basic blocks will overflow a 16-bit
24699         integers for symbolic registers.
24700
24701 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24702
24703         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24704         (mono_arch_output_basic_block): fix bug 43499 
24705
24706 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24707
24708         * mini.c: kill duplicated definition of mono_debug_format.
24709
24710 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24711
24712         * mini-x86.c, arrays.cs: fixed register allocation bug.
24713
24714 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24715
24716         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24717
24718         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24719
24720 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24721
24722         * mini.c:
24723         (print_method_from_ip): also print source location information if
24724         available.
24725
24726 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24727
24728         * mini.c (mono_find_block_region): bug fix in region code
24729         (mini_method_compile): enable removing unreachable code again, but
24730         only in methods without exception clauses.
24731
24732 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24733
24734         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24735         Implemented arglist opcode and handling of TypedReference type.
24736         Fixed x86 call convention when a structure is returned.
24737         Minimal support for calling static vararg methods.
24738
24739 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24740
24741         * mini.c (mini_method_compile):  always remove unreachable code,
24742         because the code in them may be inconsistent  (access to dead
24743         variables for example).
24744
24745 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24746
24747         * driver.c, debug-mini.c: warning fixes.
24748
24749 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24750
24751         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24752
24753 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24754
24755         * mini.c: thread-static fields are registered in mono_class_vtable(),
24756         so ensure the function is called before checking for them.
24757
24758 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24759
24760         * mini.c (optimize_branches): fix for bug 43586
24761
24762         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24763         overflow (fixes Bug #43639)
24764
24765 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24766
24767         * mini.c, objects.cs: allow the use of stobj for primitive types.
24768
24769 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24770
24771         * mini.c: be less strict about argument checking until we support
24772         running the verifier.
24773
24774 2003-05-27  Nick Drochak <ndrochak@gol.com>
24775
24776         * basic-long.cs: tests for (ulong)int * (ulong)int also
24777         * mini.c: use the same trick for (ulong)int * (ulong)int
24778
24779 2003-05-27  Nick Drochak <ndrochak@gol.com>
24780
24781         * basic-long.cs: add regression test for (long)int * (long)int
24782         * cpu-pentium.md: add op_bigmul specification
24783         * inssel-long32.brg: add OP_BIGMUL rule
24784         * mini-ops.h: add OP_BIGMUL
24785         * mini-x86.c: register allocator: handle case where src1 needs to be
24786         in EAX.
24787         * mini.c: substitute special BIGMUL opcode in the tree for 
24788         (long)int * (long)int
24789
24790 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24791
24792         * jit-icalls.c: call the type ctor on field access if needed.
24793
24794 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24795
24796         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24797         to a method (including results of ldelema, bug#43207).
24798
24799 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24800
24801         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24802         colors to show exception handler blocks.
24803
24804         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24805         (fix for pinvoke7.cs).
24806
24807 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24808
24809         * mini.h, mini.c: ensure correct initialization order for types that
24810         require it. Prepare for lazy compilation of jit icall wrappers.
24811         Provide a name for opcode emulation to reduce unneeded mallocing.
24812
24813 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24814
24815         * mini-x86.c: better register restoring code and profiling
24816         support for tail calls.
24817
24818 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24819
24820         * mini.h, driver.c: prepare for leaf methods optimization.
24821
24822 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24823
24824         * mini.c: get targets of branches before converting a method.
24825
24826 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24827
24828         * mini.c (optimize_branches): added some experimental code (disbaled) 
24829
24830 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24831
24832         * mini.c (optimize_branches): fix branch to branch optimization 
24833
24834         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24835
24836         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24837
24838         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24839
24840         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24841         if needed.
24842
24843 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24844
24845         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24846         enable use of interface variables again.
24847
24848         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24849         I1 to registers because there is no simply way to sign extend 8bit
24850         quantities in caller saved registers on x86.
24851
24852         * inssel-float.brg: set costs of some rules to 2 so
24853         that monobure always select the arch. specific ones if supplied,
24854         regardless of the order we pass the files to monoburg.
24855
24856 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24857
24858         * mini.c, mini-x86.c: since the magic trampoline for jumps
24859         can't patch the code directly, we do it as soon as the
24860         method gets compiled.
24861
24862 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24863
24864         * mini-x86.c, mini.h: introduce a new patching method
24865         to support CEE_JMP and tail calls.
24866         * mini.c: obey tail.call. Don't precompile methods target
24867         of CEE_JMP.
24868         * tramp-x86.c: new trampoline code to handle methods
24869         reached through a jump.
24870
24871 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24872
24873         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24874         bit values to registers
24875
24876 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24877
24878         * mini.c (mono_compile_get_interface_var): share interface
24879         variables if possible.
24880
24881 2003-05-16  Martin Baulig  <martin@ximian.com>
24882
24883         * debug-mini.c (mono_init_debugger): New function to initialize
24884         the debugger.  This is not in the debugger since it needs to
24885         access some of mini's internals.
24886
24887 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24888
24889         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24890
24891 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24892
24893         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24894         for value type handling.
24895
24896 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24897
24898         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24899         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24900
24901 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24902
24903         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24904           the constructor through a proxy.
24905
24906 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24907
24908         * jit-icalls.c, inssel.brg: fixes to array element address
24909         calculations.
24910
24911 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24912
24913         * mini-x86.c (is_regsize_var): allocate pointer to registers
24914
24915 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24916
24917         * driver.c: fixed typo, added intrins to the set of optimizations
24918         tested with regressions.
24919
24920 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24921
24922         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24923         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24924         test case.
24925
24926 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24927
24928         * inssel.brg: remove some common pop instructions without side effects
24929
24930 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24931
24932         * inssel-x86.brg: fixed thinko in int to double conversions.
24933
24934 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24935
24936         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24937
24938 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24939
24940         * inssel-long32.brg: two more missing instructions.
24941
24942 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24943
24944         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24945         if not already set.
24946
24947 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24948
24949         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24950         correctly.
24951
24952         * basic-float.cs: Added tests for negative zero.
24953
24954 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24955
24956         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24957         a couple of missing operations for long casts, with test cases.
24958
24959 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24960
24961         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24962
24963 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24964
24965         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24966         code size estimation.
24967
24968 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24969
24970         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24971         abstract methods (fix bug 42542)
24972
24973         * aot.c: add ability to handle array types
24974         
24975 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24976
24977         * mini.c: Call the _specific versions of the object allocation
24978         functions if possible.
24979
24980 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24981
24982         * driver.c: call setlocale ().
24983
24984 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24985
24986         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24987         windows build.
24988
24989 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24990
24991         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24992
24993         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24994         wrappers (fix bug 42122)
24995
24996 2003-05-04  Martin Baulig  <martin@ximian.com>
24997
24998         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24999
25000         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
25001         s/mini_set_defaults/mono_set_defaults/g.
25002
25003 2003-05-04  Martin Baulig  <martin@ximian.com>
25004
25005         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
25006
25007 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
25008
25009         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
25010         (reported by Don Roberts).
25011
25012 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
25013
25014         * mini.c: temporarily work around two bugs for this release.
25015
25016 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
25017
25018         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
25019         that contains -export-dynamic and it makes using the ld script
25020         useless.
25021         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
25022
25023 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
25024
25025         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
25026         specific cpu.
25027
25028 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
25029
25030         * mini.c: make sure leave calls all the needed finally blocks,
25031         even when the target jumps out of multiple exception clauses.
25032
25033 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25034
25035         * ldscript, Makefile.am: add linker script to reduce the number of
25036         exported symbols (should also fix the issues with libwine defining
25037         some of the same symbols in io-layer).
25038
25039 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
25040
25041         * driver.c (mini_main): Avoid assertion when no file name is given on 
25042         the command line.
25043
25044 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
25045
25046         * driver.c: added --version/-V command line option.
25047         Added the inline optimization in the regression tests.
25048
25049 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
25050
25051         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
25052         to the type in the method signature (fixes bug#42134).
25053
25054 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
25055
25056         * mini.c: when inlining, check this is not null only when needed (bug #42135).
25057
25058 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
25059
25060         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
25061
25062 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25063
25064         * driver.c: fixed bug #42100.
25065
25066 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
25067
25068         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
25069
25070 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
25071
25072         * mini.c: moved most of the code required to do inlining to its own
25073         function so it can be reused. Inline also ctors if appropriate.
25074
25075 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
25076
25077         * Makefile.am: Link with -export-dynamic so shared libs loaded by
25078         the runtime can call mono API functions.
25079
25080 2003-04-27  Martin Baulig  <martin@ximian.com>
25081
25082         * debug-mini.c (mono_debug_init_method): Added
25083         `guint32 breakpoint_id' argument; if the method has a breakpoint,
25084         send a notification to the debugger.
25085
25086         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
25087         running in the Mono Debugger, just pass the breakpoint number to
25088         mono_debug_init_method().
25089
25090         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
25091
25092 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
25093
25094         * mini.c: allow some more unsafe compares.
25095
25096 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25097
25098         * mini-x86.c, Makefile.am: make distcheck works (partially from
25099         a patch by Richard Lee <r.h.lee@attbi.com>).
25100         * regset.c, regset.h: removed, they are unused.
25101
25102 2003-04-25  Dick Porter  <dick@ximian.com>
25103
25104         * driver.c: Usage reports the name as 'mono' not 'mini'
25105         * exceptions-x86.c: Build and run on freebsd
25106
25107 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25108
25109         * Makefile.am: install the program with the 'mono' name and
25110         the library as libmono instead of mini and libmini.
25111
25112 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25113
25114         * driver.c: provide the APIs for the embedding interface of the old jit.
25115
25116 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25117
25118         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25119
25120 2003-04-23  Martin Baulig  <martin@ximian.com>
25121
25122         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25123
25124         * driver.c: Added `--debug' command line argument to enable
25125         debugging support.
25126
25127 2003-04-23  Martin Baulig  <martin@ximian.com>
25128
25129         * debug.[ch]: Removed.  The code is now in
25130         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25131
25132         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25133         last six months.
25134
25135 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25136
25137         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25138
25139 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25140
25141         * mini.c:
25142         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25143         mono_domain_finalize.
25144         (mini_method_compile): use mono_method_profile* if the the option is
25145         enabled.
25146
25147 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25148
25149         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25150         methods with their wrapper.
25151
25152         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25153         methods with their wrapper.
25154
25155         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25156         their wrapper.
25157
25158         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25159         wrapper.
25160
25161         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25162         methods.
25163
25164 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25165
25166         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25167
25168 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25169
25170         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25171         of the mempool. This is slightly faster and uses less memory
25172
25173 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25174
25175         * mini.c: avoid O(n) allocation for variables.
25176
25177 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25178
25179         * mini.c: handle items on the stack after inlining methods.
25180
25181 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25182
25183         * mini.c: make the method->opcode optimization dependent
25184         on MONO_OPT_INSTRINS and do it lazily.
25185
25186 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25187
25188         * driver.c: print overall results at the end of regression run.
25189
25190 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25191
25192         * inssel.brg: don't overwrite symbolic registers.
25193
25194 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25195
25196         * inssel-x86.brg: fix conversion from long to float.
25197
25198 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25199
25200         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25201
25202 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25203
25204         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25205
25206         * driver.c: Added --print-vtable option as in the old JIT.
25207
25208 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25209
25210         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25211
25212 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25213
25214         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25215
25216 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25217
25218         * mini.c regalloc.c regalloc.h: Fix memory leak.
25219
25220 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25221
25222         * aot.c (mono_aot_get_method): register all used strings
25223
25224 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25225
25226         * mini.c: always intern strings references with ldstr at compile time.
25227
25228 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25229
25230         * Makefile.am: add BUILT_SOURCES.
25231
25232 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25233
25234         * driver.c: give a better error message when the assembly to execute
25235         doesn't have an entry point.
25236
25237 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25238
25239         * Makefile.am: added hack for automake
25240
25241         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25242         correct sematics.
25243
25244         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25245
25246 22003-04-07  Martin Baulig  <martin@ximian.com>
25247
25248         * Makefile.am: Added Makefile.am.
25249
25250         * debugger-main.c: Removed, this is now in the debugger where it
25251         belongs.
25252
25253         * mini.pc.in: Call this package `mini' for the moment.
25254
25255
25256
25257
25258
25259
25260
25261
25262
25263
25264
25265
25266
25267
25268