2010-05-11 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
2
3         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
4         no longer needed.
5
6 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
7
8         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
9         if a breakpoint cannot be inserted.
10
11 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
12
13         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
14
15 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
16
17         * debugger-agent.c (frame_commands): Return an error instead of asserting if
18         no JIT info is found for the method.
19
20 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
21
22         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
23         in debug printf.
24
25 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
26
27         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
28         a list of arch specific trampolines.
29
30         * aot-compiler.c (emit_trampolines): Use it.
31
32 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
33
34         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
35         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
36         get rid of the _full from their name.
37
38 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
39
40         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
41         get_nullified_class_init_trampoline to remove some code duplication.
42
43 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
44
45         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
46         attach.
47
48 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
49
50         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
51
52         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
53
54         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
55         there is no need to jump through the first plt entry.
56
57         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
58
59         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
60         arch-specific function.
61         (mono_aot_get_plt_info_offset): Ditto.
62
63         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
64         mono_arch_init () to register jit icalls called from full-aot trampolines.
65         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
66         to mini-<ARCH>.c.
67
68         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
69         the specialized throw corlib exception trampoline, use a variant of the normal
70         trampoline along with a new C function which does the call to
71         mono_exception_from_token (), just like on x86.
72
73 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
74
75         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
76         Reorganize the full aot trampoline creation functions, instead of taking a bunch
77         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
78         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
79         creation functions on architectures which have the full-aot ones.
80
81 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
82
83         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
84
85 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
86
87         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
88         explicitly, this seems to be required by some gcc versions at -O2.
89
90         * mini-arm.c: Ditto.
91
92 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
93
94         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
95         has_target delegate invokes.
96
97 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
98
99         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
100         info fields.
101
102         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
103         add patches/unwind info arguments, move to mini.c.
104
105         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
106
107 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
108
109         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
110         command which returns full path names.
111
112 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
113
114         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
115         code_size output variable.
116
117         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
118         mono_get_lmf_addr.
119         
120 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
121
122         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
123         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
124         (mono_arch_cpu_enumerate_simd_versions): Ditto.
125
126 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
127
128         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
129         apple assembler.
130
131 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
132
133         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
134
135 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
136
137         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
138
139 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
140
141         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
142
143 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
144
145         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
146         line number support works with eglib.
147
148 2010-04-27  Miguel de Icaza  <miguel@novell.com>
149
150         * driver.c, mini.c: Since linking with LLVM makes the default Mono
151         dirty an extra 70kb pages on startup we are now going to choose a
152         different strategy: ship mono and mono-llvm binaries, with the
153         second being the one that links with LLVM and defaults to LLVM
154         being enabled.
155
156 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
157
158         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
159         Implement full-aot support on x86.
160
161         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
162         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
163         the first register returned by get_global_int_regs ().
164
165         * cpu-x86.md: Fix the length of insertx_u1_slow.
166
167         * iltests.il.in: Disable tail call tests when running with full-aot.
168
169 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
170
171         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
172
173 2010-04-24  Mark Probst  <mark.probst@gmail.com>
174
175         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
176         in the initializer, because it's non-constant.
177
178 2010-04-23  Miguel de Icaza  <miguel@novell.com>
179
180         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
181         of LLVM on by default.   Used for buildbots and other setups.
182
183 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
184
185         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
186
187 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
188
189         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
190         initonly static fields when using moving GC.
191
192         Contributed under MIT/X11 license.
193
194 2010-04-23  Geoff Norton  <gnorton@novell.com>
195
196         * mini-amd64.h: Darwin x86_64 support.
197
198 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
199
200         * exceptions-arm.c: Remove platform checks in favor of configure checks.
201
202 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
203
204         * exceptions-arm.c: Add Android support for sigcontext structure.
205
206 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
207
208         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
209         wrappers correctly now that their wrapper info is NULL.
210
211 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
212
213         * mini.c (mono_jit_compile_method_inner): Avoid calling
214         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
215
216 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
217
218         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
219         so the latter can be #ifndef DISABLE_JIT-ed.
220
221         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
222
223 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
224
225         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
226
227 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
228
229         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
230         stack.
231
232 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
233
234         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
235         calling mono_class_num_methods (). Fixes #592244.
236
237 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
238
239         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
240
241         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
242
243 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
244
245         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
246         version.
247         * (handle_alloc): Ditto.
248         (mono_method_to_ir): Remove the constrained call restriction added by a previous
249         change, its not needed anymore.
250
251 2010-04-12 Rodrigo Kumpera  <rkumpera@novell.com>
252
253         * mini-posix.c (sigusr1_signal_handler): Fix build on
254         non x86/amd64 systems.
255
256 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
257
258         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
259         calls where the constrained class needs a context. Fixes #595863.
260
261         * iltests.il.in: Add a test.
262
263 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
264
265         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
266         2.6/SVN seems to have broken support for them.
267
268 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
269
270         * mini-llvm.c: Fix support for LLVM 2.6.
271
272 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
273
274         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
275         MonoInternalThread belonging to the thread.
276
277 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
278
279         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
280         unsafe optimization that will remove bound checks.
281
282 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
283
284         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
285         CompareExchange not to be inlined for I8.
286
287         Contributed under MIT/X11 license.
288
289 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
290
291         * array.cs: Add tests for cast between primitive array types.
292
293 2010-04-07 Andreia Gaita  <avidigal@novell.com>
294
295         * Makefile.am: create a convenience library for moon to link with
296
297 2010-04-07 Paolo Molaro <lupus@ximian.com>
298
299         * method-to-ir.c: optimize array accesses from generic interfaces.
300
301 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
302
303         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
304
305 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
306
307         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
308         of marshalbyref classes.
309
310         Fixes #515884.
311
312 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
313
314         * aot-compiler.c (emit_exception_debug_info): Encode try holes
315         information.
316
317         * aot-runtime.c (decode_exception_debug_info): Decode try holes
318         information.
319
320         * mini.h: Increase AOT version.
321
322 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
323
324         * mini-x86.h: Only enable soft debugger when using sigaction or on
325         Windows. Fixes build on Haiku (lacks siginfo_t).
326
327         Code is contributed under MIT/X11 license.
328
329 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
330
331         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
332         BeOS-style signal handlers.
333
334         Code is contributed under MIT/X11 license.
335         
336 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
337
338         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
339
340 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
341
342         * mini-exceptions.c: Fix win32 build.
343
344 2010-04-01  Mark Probst  <mark.probst@gmail.com>
345
346         * mini.c, driver.c: Call mono_gc_base_init() before
347         mono_debug_init().
348
349 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
350
351         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
352         call_method]): Delegate the actual work in security-core-clr.c
353         to ease code sharing.
354
355 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
356
357         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
358         float conv.ovf.un opcodes are encountered, instead of asserting later.
359         Fixes #566296.
360
361 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
362
363         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
364
365         * iltests.il.in: Add a test.
366
367 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
368
369         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
370         large. Fixes #567040.
371
372         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
373
374 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
375
376         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
377         #592711.
378
379 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
380
381         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
382         mono_create_handler_block_trampoline with the proper #ifdef so that it
383         compiles on amd64.
384
385 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
386
387         * mini-exceptions.c: Introduce mono_walk_stack_full, which
388         allows to select if it's new or old context that is passed to 
389         the callback.
390
391         * mini-exceptions.c (mono_handle_exception_internal): Handle the
392         case when executing a guarded handler from the EH machinery.
393
394         * mini-exceptions.c (mono_install_handler_block_guard): New function
395         responsible for checking for handler blocks, installing the guard and
396         clearing abort state.
397
398         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
399         to check for handler blocks and skip interruption logic if one was found.
400
401         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
402         by the handler block guard trampoline. Resumes interruption by raising the
403         pending ThreadAbortException.
404
405         * mini.c (create_jit_info): Calculate the end address of a finally block.
406
407         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
408         of a finally block to a specified address and return the old one.
409
410         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
411         trampoline patches the original return address and calls the trampoline function.
412
413 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
414
415         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
416
417         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
418         does the patching if the callee is in the same domain.
419
420         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
421         of mono_arch_patch_plt_entry ().
422
423 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
424
425         * mini.c (create_jit_info): Fix try block hole length encoding.
426
427 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
428
429         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
430         duplicate information and print offsets instead of absolute addresses.
431
432 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
433
434         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
435         event is sent. Fixes #591733.
436
437 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
438
439         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
440         OpenBSD.
441
442 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
443
444         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
445         thread_to_tls hash table.
446
447         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
448         section. Fixes #591000.
449
450 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
451
452         * Makefile.am (version.h): Check for pure .git directory only,
453         fixes SVN revision when using git without git-svn.
454
455         Contributed under MIT/X11 license.
456
457 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
458
459         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
460
461 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
462
463         * basic-simd.cs: Test for vector x scalar binary operators.
464
465 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
466
467         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
468         intrinsics with expanded scalar arguments.
469
470 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
471
472         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
473         don't have an exception class, so don't decode it. This would crash
474         with filter clauses.
475
476 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
477
478         Make sure that trunk builds with DISABLE_JIT, an update to the
479         PlayStation 3 port.
480         
481         * mini.c (mini_get_shared_method): this code seems to be necessary
482         regardless of whether DISABLE_JIT has been defined.
483
484         (mono_jit_compile_method_inner): it seems that this method is
485         required even in full AOT mode, so ifdef out only the pieces that
486         try to genrate code (the body of code that applies patches to the
487         code).  
488
489         (mini_method_compile): do not compile when using DISABLE_JIT.
490
491         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
492         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
493         compile when DISABLE_JIT is set.
494
495 2010-03-24  Mark Probst  <mark.probst@gmail.com>
496
497         * mini.c (mono_create_tls_get): Only create a TLS operation if the
498         arch really supports it.
499
500 2010-03-24  Mark Probst  <mark.probst@gmail.com>
501
502         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
503
504 2010-03-23  Neale Ferguson <neale@sinenomine.net>
505
506         * exceptions-s390x.c: Add support for
507         mono_arch_get_throw_corlib_exception and fix throw by name.
508
509         * mini-s390x.c: Add IMT support; Fix stack parameter passing
510         logic (especially for varargs); Correct localloc sizing; Add
511         mono_arch_get_this_arg_from_call and
512         mono_arch_get_this_arg_from_call.
513
514         * mini-s390x.h: Add support for facility list extraction;
515         Correct/update MONO_ARCH_xxx settings.
516
517         * mini-s390.c: Minor corrections to instruction output for
518         varargs. No IMT implementation - I think it's time to deprecate
519         s390 and just leave s390x.
520
521         * tramp-s390x.c: Correct creation of trampoline instruction
522
523
524         * cpu-s390x.md: Update some instruction lengths
525
526 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
527
528         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
529         can be hit with partial sharing.
530
531         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
532         in non-shared classes correctly.
533         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
534         Turn on partial sharing.
535
536 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
537
538         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
539         by mistake.
540
541 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
542
543         * method-to-ir.c (mono_method_to_ir): Handle the failure of
544         mono_method_signature ().
545
546         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
547
548         * mini.c (mini_method_compile): Get the signature of cfg->method early with
549         error checking, so later calls do not need error checking.
550
551 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
552
553         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
554
555         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
556
557 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
558
559         * mini-exceptions.c (mono_handle_exception_internal): Don't
560         check try_end for archs different than s390. 
561
562         * mini.c (create_jit_info): Don't crash if the finallt block is the
563         last one.
564
565 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
566
567         * driver.c (mono_main): Don't free global codeman under linux since
568         glic now peeks at code on stack for more archs than just amd64.
569
570 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
571
572         * mini.c, method-to-ir.c: changes to support compressed interface
573         bitmaps.
574
575 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
576
577         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
578         Use sigaction on OpenBSD too.
579
580 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
581
582         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
583
584 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
585
586         * debugger-agent.c: #include sys/select.h for fd_set.
587
588         Code is contributed under MIT/X11 license.
589
590 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
591
592         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
593         (openbsd+amd64 ?).
594
595 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
596
597         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
598         some large methods with lots of exception handlers. Fixes #440924.
599
600 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
601
602         * method-to-ir.c: remove code duplication for interface checks.
603
604 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
605
606         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
607         (assembly_unload): Clear all event requests referencing the to-be unloaded
608         assembly.
609
610
611 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
612
613         * mini.h, mini-exceptions.c: restore the state of the stack
614         guard page permissions.
615
616 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
617
618         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
619         call site patching code, it doesn't appear to be needed.
620
621 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
622
623         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
624         sharing generic methods whose type arguments are a mix of reference and
625         non-reference types. Not yet turned on.
626
627         * mini.c (mini_get_shared_method): New helper function to return
628         the method which will be compiled/registered in the JIT tables when doing
629         generic sharing.
630         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
631         use mini_get_shared_method ().
632
633         * mini.c (mini_method_compile): Register the same method which is compiled when
634         doing generic sharing.
635
636         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
637
638         * generics.cs: Add partial sharing tests.
639
640 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
641
642         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
643                    Add an enum value that or's all possable values together. Add an enum value
644                    that marks the end of the used bit indexes.
645
646         * mini-amd64.c : Make changes to match the changes in mini.h 
647
648         * mini-x86.c : Make changes to match the changes in mini.h
649
650         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
651                    simd_version to support more simd versions. Changed the name of
652                    simd_version to simd_version_flags to make it more intuitive that
653                    it now contains bit flags. Reordered the *_intrinsics arrays to
654                    match the changes above. Changed emit_intrinsics() to use the new
655                    setup mentioned above.
656
657         Code is contributed under MIT/X11 license.
658
659 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
660
661         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
662         remaining archs. Alpha and hppa maintainers, please stand up.
663
664 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
665
666         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
667         is needed even when fail_tramp!=NULL.
668
669 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
670
671         * debugger-agent.c (insert_breakpoint): Write a log message.
672
673 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
674
675         * iltests.il.in: Add a few tests for LEAVE going over multiple
676         finally clauses.
677
678 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
679
680          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
681
682 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
683
684         * mini.h (MonoBasicBlock): Add native_length field.
685         * mini.h (MonoCompile): Add try_block_holes field.
686         * mini.h (MonoInst): Add exception_clause pointer to
687         the data union.
688
689         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
690         * mini.c (mono_cfg_add_try_hole): New function to register possible
691         holes in try blocks.
692         * mini.c (create_jit_info): Fill in the holes information.
693
694         * mini-exceptions.c: Verify for holes when checking if an IP is covered
695         by a try block.
696
697         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
698
699 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
700
701         * jit-icalls.c: adjusted for the array API changes.
702
703 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
704
705         * iltests.il.in: Disable the fconv_to_i test on sparc too.
706
707 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
708
709         * debugger-agent.c: Simplify the way breakpoints are processed by removing
710         the 'pending' flag. This fixes support for appdomains too.
711
712
713 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
714
715         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
716
717 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
718
719         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
720         when using LLVM, LLVM generates it itself when needed.
721
722         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
723
724         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
725         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
726         OP_ANDNPS/OP_ANDNPD.
727
728 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
729
730         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
731         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
732         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
733
734 2010-03-11  Martin Baulig  <martin@ximian.com>
735
736         * debugger-agent.c (type_commands): Add NULL check to
737         `CMD_TYPE_GET_SOURCE_FILES'.
738
739 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
740
741         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
742
743 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
744
745         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
746         #586664.
747
748         * iltests.il.in: Add a test.
749
750 2010-03-05  Martin Baulig  <martin@ximian.com>
751
752         Add support for aborting invocations.
753
754         * debugger-agent.c
755         (InvokeData): Added `InvokeData *last_invoke'.
756         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
757         added a new `invoke' field to keep the `InvokeData *' throughout
758         the invocation.
759         (ErrorCode): Added `ERR_NO_INVOCATION'.
760         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
761         (mono_debugger_agent_handle_exception): Don't report any exception
762         if an abort was requested.
763         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
764         a thread abort if necessary.
765         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
766
767 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
768
769         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
770         so we can release the whole list and not just the first one. Free
771         it in more places as well.
772
773 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
774
775         * method-to-ir.c: Revert r153222 as it doesn't belong here.
776
777 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
778
779         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
780
781 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
782
783         * driver.c: report also other misc build options.
784
785 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
786
787         * method-to-ir.c: Generate better code for the NewObject
788         intrinsic.
789         
790 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
791
792         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
793         is disabled. Fixes #582322.
794
795         * iltests.il.in: Add a test.
796
797 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
798
799         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
800         the handling of obj->synchronization == null and owner != current thread to
801         mono_monitor_exit ().
802
803         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
804
805
806 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
807
808         * mini.c: change the way emulated opcode info is stored and save about
809         4 KB of runtime memory.
810
811 2010-03-04  David S. Miller  <davem@davemloft.net>
812
813        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
814        that don't provide the siginfo in the second signal handler argument
815        are buggy, and this has been fixed for years.
816        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
817        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
818
819 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
820
821         * aot-runtime.c (find_symbol): Fix a leak.
822         (decode_patch): Ditto.
823
824 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
825
826         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
827
828 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
829
830         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
831
832 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
833
834         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
835
836 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
837
838         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
839         to check for errors, it's enough to create the metadata open.
840
841         Fixes #562150
842
843 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
844
845         * trace.c|h:
846         * mini-exceptions.c: Add support for printing stack traces when handling
847         exceptions, and when printing exceptions thrown while tracing also print
848         the exception message.
849
850 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
851
852         * trace.c: We need to parse exclude tokens ('-') before string tokens,
853         since the exclude token is a valid string character.
854
855 2010-03-02  Levi Bard  <levi@unity3d.com>
856
857         * debugger-agent.c: Invalidate thread stacks on domain unload.
858
859 2010-03-02  Mark Probst  <mark.probst@gmail.com>
860
861         * method-to-ir.c: Emit dummy_use for stored reference after write
862         barriers to make sure the object is pinned if the GC interrupts
863         before the write barrier is done.
864
865 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
866
867         * cpu-<ARCH>.md: dummy_use was missing src1:i.
868
869 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
870
871         * debugger-agent.c: Add a log message printing the protocol version.
872
873 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
874
875         * debugger-agent.c: Add a new command to communicate the protocol version used
876         by the client. This could be used to allow newer runtimes to communicate with
877         older clients.
878
879 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
880
881         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
882
883 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
884
885         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
886         type.
887
888 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
889
890         * mini-arm.c: make the arm cpu arch configurable with the
891         MONO_CPU_ARCH env var (for example: "armv4 thumb").
892         Bug #584198.
893
894 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
895
896         * mini.c, mini.h, driver.c: added the --jitmap option to enable
897         support for the perf tool on Linux.
898
899 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
900
901         * method-to-ir.c: make string.InsertenalSetChar() specialization
902         effective.
903
904 2010-03-01  Robert Jordan  <robertj@gmx.net>
905
906         * Makefile.am: fix the non-static build.
907
908 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
909
910         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
911         here.
912
913 2010-02-26  Robert Jordan  <robertj@gmx.net>
914
915         * tasklets.c (continuation_store): Return from an error condition
916         immediately.
917
918 2010-02-26  Martin Baulig  <martin@ximian.com>
919
920         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
921
922         * debug-mini.c
923         (MonoDebuggerThreadInfo): Added `internal_flags'.
924         (MonoDebuggerInternalThreadFlags): New enum.
925         (_mono_debugger_throw_exception): Don't signal the debugger if a
926         type abort was requested.
927         (_mono_debugger_unhandled_exception): Likewise.
928         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
929         (mono_debugger_runtime_invoke): If the debugger requested a thread
930         abort during the invocation, reset it here.
931
932 2010-02-26  Martin Baulig  <martin@ximian.com>
933
934         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
935         instead of `MonoThread *'.
936
937 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
938
939         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
940         code offsets table, as it is mostly sorted.
941
942 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
943
944         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
945         Fixes #582991.
946
947 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
948
949         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
950
951 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
952
953         * Makefile.am: build the new ABI version of the libmono library.
954         * debugger-agent.c, mini.c: fix warnings with the new API.
955         * jit.h: don't depend on glib.h being included.
956
957 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
958
959         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
960
961 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
962
963         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
964         ThreadStatic variables.
965
966 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
967
968         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
969         data is not freed yet. Fixes #582460.
970
971 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
972
973         * debugger-agent.c: Add support for the caught/uncaught flags on exception
974         event requests. Bump protocol minor version.
975
976 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
977
978         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
979
980 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
981
982         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
983         #581950.
984
985         * iltests.il.in: Add a test.
986
987 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
988
989         * mini.c (inline_method): Check for loader errors.
990
991 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
992
993         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
994         instead of mono_method_get_header as it doesn't decode locals
995         so the called method can have unresolved dependencies that will only
996         be satisfied after the current method is JIT'd.
997
998         Fixes #550968.
999
1000 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1001
1002         * basic.cs (test_0_div_opt): Speed this up a bit.
1003
1004 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1005
1006         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1007
1008         * mini.c (mono_jit_create_remoting_trampoline): Call
1009         mono_create_specific_trampoline () instead of
1010         mono_arch_create_specific_trampoline ().
1011
1012         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1013
1014 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1015
1016         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1017         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1018
1019         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1020
1021         * mini-amd64.c: Fix DISABLE_JIT support.
1022
1023 2010-02-20  Geoff Norton  <gnorton@novell.com>
1024
1025         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1026
1027 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1028
1029         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1030         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1031         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1032         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1033         handle_exception.
1034
1035 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1036
1037         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1038         edx/ecx too. This is needed to support OP_SEQ_POINT.
1039
1040 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1043
1044         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1045
1046 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1047
1048         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1049         LLVM+AOT+exceptions, not enabled yet.
1050
1051 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1052
1053         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1054
1055 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1056
1057         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1058         xdebug info for these.
1059
1060         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1061         in a few places.
1062
1063         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1064         not used yet.
1065
1066 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1069
1070 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1071
1072         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1073         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1074
1075         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1076         for mtouch.
1077
1078 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1079
1080         * debugger-agent.c: handle incomplete reads and EINTR in
1081         recv()/send(). This could have been causing random
1082         disconnections.
1083
1084 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1085
1086         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1087         points.
1088
1089         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1090         so they have small offsets. Fixes #566311.
1091
1092 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1093
1094         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1095
1096 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * mini-amd64.c: Remove the special casing of byref in a few places now that
1099         mini_type_get_underlying_type () handles it.
1100
1101         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1102         by returning native int. Fixes #577984.
1103
1104 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1105
1106         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1107         a macro.
1108
1109         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1110         of putting the clause itself.
1111
1112         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1113
1114 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1115
1116         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1117         might be unaligned.
1118
1119 2010-02-10  Geoff Norton  <gnorton@novell.com>
1120
1121         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1122
1123 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1124
1125         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1126         llvm methods too.
1127
1128         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1129         it is not an LLVM generated symbol.
1130
1131         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1132
1133         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1134         implementation in gshared mode because it causes regressions.
1135
1136         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1137
1138         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1139         should be done by the caller.
1140
1141         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1142
1143         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1144
1145         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1146         since mono_jit_info_table_find () doesn't do it anymore.
1147
1148         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1149         instead of mono_jit_info_table_find ().
1150
1151 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1152
1153         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1154
1155         * aot-compiler.c (encode_method_ref): Update after the removal of
1156         mono_gc_get_managed_allocator_type ().
1157
1158         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1159         Fixes #564538.
1160
1161 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1162
1163         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1164         generic params as well.
1165         (handle_isinst): Ditto.
1166
1167         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1168         instead of always calling an icall.
1169
1170         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1171         computing the size of the got.
1172
1173         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1174         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1175         the assembly directive '.set' so it points to the first LLVM emitted method.
1176
1177 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1178
1179         * mini.c (mini_method_verify): Report the method which failed to verify.
1180
1181 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1182
1183         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1184         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1185         runtime MS verifier.
1186
1187 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1190         #561962.
1191
1192 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1193
1194         * mini-llvm.c: Init the jit module only when first JITting.
1195
1196         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1197
1198         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1199
1200         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1201         replaced with the real got.
1202
1203         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1204
1205         * image-writer.c: Reduce the amount of #ifdefs a bit.
1206
1207         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1208         llvm on darwin/arm.
1209
1210         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1211
1212         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1213         global.
1214
1215 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1216
1217         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1218         (mono_llvm_emit_method): Fix unaligned stores too.
1219
1220         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1221         so async stack walks don't crash.
1222
1223 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1224
1225         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1226         was not patched if the callee needed an rgctx trampoline.
1227
1228 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1229
1230         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1231         vtable address in AOT code.
1232
1233 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1234
1235         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1236         MonoInst's.
1237
1238 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1239
1240         * genmdesc.pl: remove dependency on external cpp.
1241
1242 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1243
1244         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1245         using LLVM, its not needed, and abcrem can't handle it.
1246
1247 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1248
1249         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1250         it easier to group instructions and reduce duplication.
1251
1252 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1253
1254         * decompose.c: Move the array/soft float decompose routines here from
1255         method-to-ir.c.
1256
1257         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1258
1259 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1262         to tell LLVM that the got is constant, not used yet.
1263
1264         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1265
1266 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1267
1268         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1269         managed wrappers.
1270
1271 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1272
1273         * aot-compiler.c (add_wrappers): Commit the hack which generates
1274         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1275         custom attribute.
1276
1277 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1278
1279         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1280         a fault, only used by the LLVM backend.
1281
1282         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1283         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1284
1285         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1286         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1287
1288         * mini-llvm.c: Only generate volatile loads from load instructions which have
1289         the MONO_INST_FAULT flag set.
1290
1291 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1292
1293         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1294         64 bit platforms.
1295
1296 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1297
1298         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1299         sequence points. Fixes #571236.
1300
1301 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1302
1303         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1304         end of the appdomain unload process, after assemblies have been unloaded.
1305         Fixes #574842.
1306
1307 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1308
1309         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1310         works.
1311
1312         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1313         Fixes #573988.
1314
1315 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1316
1317         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1318
1319 2010-01-26  Geoff Norton  <gnorton@novell.com>
1320
1321         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1322         with struct marshalability.
1323
1324 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1325
1326         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1327         it supports class names as well.
1328
1329         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1330         needed by the GC map code.
1331
1332         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1333         flags if needed.
1334
1335         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1336         if cfg->init_ref_vars is set.
1337
1338         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1339         cfg->disable_initlocals_op_refs is set.
1340
1341         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1342         using liveness info if cfg->compute_precise_live_ranges is set.
1343
1344         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1345         volatile variables correctly. Add comments about the live ranges. Not enabled
1346         yet.
1347
1348 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1349
1350         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1351         0x2a into them in method prologs.
1352
1353         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1354
1355 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1356
1357         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1358         classes, since llvm is compiled with -fno-rtti.
1359
1360         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1361
1362         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1363         llvm does not require it.
1364
1365         * aot-runtime.c (load_method): Print the full name of the last aot method.
1366
1367 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1370         thread has not fully started yet.
1371
1372 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1373
1374         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1375
1376 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1377
1378         * driver.c: Do not abort if LLVM is not supported, print a
1379         warning and add the information to the Mono JIT information.
1380
1381 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1384         using explicit null checks.
1385
1386 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1387
1388         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1389         related code.
1390
1391         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1392         () in one place.
1393         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1394         its no longer needed.
1395
1396         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1397
1398         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1399         define for platforms still using it (s390). Get rid of the
1400         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1401
1402         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1403         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1404
1405         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1406         the caller pushed the arguments.
1407
1408         * mini-llvm.c: Enable throwing exceptions on x86.
1409
1410         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1411         "Thread (nil) may have been prematurely finalized" messages if this is called
1412         on a thread not registered with the runtime.
1413
1414         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1415
1416 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1417
1418         * jit-icalls.c (mono_array_new_3): New jit icall.
1419
1420         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1421
1422         * arrays.cs: Add a test for 3 dimensional arrays.
1423
1424 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1425
1426         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1427         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1428         used.
1429
1430         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1431         thrown on x86.
1432
1433         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1434
1435         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1436
1437         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1438
1439 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1440
1441         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1442           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1443
1444         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1445
1446         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1447
1448         Code is contributed under MIT/X11 license.
1449
1450 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1453
1454         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1455
1456         * mini.c (mini_method_compile): Set the new flag when running under the
1457         debugger.
1458
1459 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1460
1461         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1462         a ref/noref value + a global pin flag, so parts of stack frames can still be
1463         precisely marked even if they include stuff which needs pinning. Improve logging.
1464         Fix many bugs. Not enabled yet.
1465
1466         * gc-test.cs: Add a few tests.
1467
1468         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1469         the normal -v options. Avoid propagating liveness information through bblocks
1470         which end with a NOT_REACHED opcode.
1471
1472         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1473         after cfg has been freed.
1474
1475 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1476
1477         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1478         if a clause is skipped because it uses the exception object, since it could
1479         have caught the exception.
1480
1481         * exceptions.cs: Add a test.
1482
1483 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1484
1485        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1486
1487         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1488         ICollection<T> wrappers.
1489
1490 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1491
1492         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1493
1494 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1495
1496         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1497         NOMAP32BIT or optimize_for_xen is set.
1498
1499 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1500
1501         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1502         mono_metadata_str_hash () instead.
1503
1504 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1505
1506         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1507         sizeof (void*).
1508
1509         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1510
1511 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1512
1513         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1514         flag is set.
1515
1516         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1517         throwing code correctly.
1518
1519         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1520
1521 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1522
1523         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1524         ftnptrs created by us, handle RGCTX_FETCH correctly.
1525         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1526
1527         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1528         ftnptr added by mono_aot_get_named_code ().
1529
1530 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * mini-arm.c: Fix a few LLVM problems.
1533
1534         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1535
1536 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1537
1538         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1539         AOT compiling.
1540
1541 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1542
1543         * jit.h, method-to-ir.c: added ability to set the policy for
1544         inserting breakpoints from the break IL instruction or the
1545         Debugger.Break () API call.
1546
1547 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1550         assemblies need to be eagerly loaded.
1551
1552 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1553
1554         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1555
1556 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1557
1558         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1559         an argument which matches any exception.
1560
1561 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1562
1563         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1564         optimization if the called method is gshared and marshalbyref, since gshared
1565         methods can' have wrappers. Fixes #569390.
1566
1567         * generics.cs: Add a test.
1568
1569 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1570
1571         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1572         callable from gdb.
1573
1574 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1575
1576         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1577
1578 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1581         since it is not supported in win2000.
1582
1583 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1584
1585         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1586         error if loading an assembly fails.
1587         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1588
1589         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1590         if exists.
1591
1592         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1593         compiled methods.
1594
1595         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1596
1597         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1598         is not supported yet.
1599
1600         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1601
1602 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1603
1604         * method-to-ir.c: All types with variant arguments must fallback to the
1605         slow path. This makes cast of variant delegates work.
1606
1607         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1608         argument that is set to TRUE is the returned vtable slot is for a variant
1609         interface. Changed a g_print + g_assert_not_reached to a g_error.
1610
1611         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1612         a similar fashion of generic virtual methods.
1613
1614 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1615
1616         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1617         when cfg is null.
1618
1619         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1620         method using a variance aware function.
1621
1622         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1623
1624 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1625
1626         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1627         do an icall for now.
1628
1629 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1630
1631         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1632         If LLVM decides to set the code model to Large, reset it to Default.
1633
1634 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1635
1636         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1637         stripped binaries as well.
1638
1639 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1640
1641         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1642         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1643
1644         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1645         reg.
1646
1647 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1648
1649         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1650         separate function.
1651
1652         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1653         as the type info to llvm.eh.selector.
1654         (exception_cb): Use the type info for filling out some fields of
1655         MonoJitExceptionInfo like the flags and the exception class. This is needed
1656         because the LLVM produced exception handling clauses might not match the original
1657         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1658
1659         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1660         separate function. Add an extra argument which returns the type infos
1661         corresponding to the exception clauses.
1662
1663         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1664         exception handling clauses.
1665
1666 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1667
1668         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1669         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1670         to fix an AOT case.
1671
1672 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1673
1674         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1675         internal assembly.
1676
1677 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1678
1679         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1680         llvm code.
1681
1682 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1683
1684         * mini.c (mini_method_compile): Verify the method before calling
1685         mono_compile_create_vars as this might crash since it uses method
1686         information.
1687
1688         Fixes #560196.
1689
1690 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1691
1692         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1693         one case if AOTing, since the class might not be a concrete class.
1694
1695 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1696
1697         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1698         functions which are now defined in mempool-internals.h.
1699
1700         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1701
1702         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1703
1704 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1705
1706         * mini.c:
1707         * method-to.ir.c:
1708         * mini-*.c: Properly handle generic enums.
1709
1710         Fixes #566294
1711
1712 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1713
1714         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1715         in a few more places.
1716
1717 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1718
1719         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1720         nullable parameters. Fixes #567351.
1721
1722 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1723
1724         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1725
1726 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1727
1728         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1729         mono_get_generic_context_from_code () call.
1730
1731         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1732
1733 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1734
1735         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1736         needed.
1737
1738 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1739
1740         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1741         mono_method_get_signature returns NULL. Fix #567084
1742
1743 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1746         instead of once for each module.
1747
1748 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1749
1750         * debugger-agent.c (ss_start): Implement step over for the last sequence
1751         point in methods.
1752
1753         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1754         have the STEP_LOC flag set.
1755
1756         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1757         fails. Fixes #566689.
1758
1759 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * mini.c (mono_add_seq_point): New helper function.
1762         (mono_save_seq_point_info): New function to save sequence point info, extracted
1763         from mini_method_compile ().
1764
1765         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1766
1767         * mini.h (MonoSeqPointInfo): New structure containing information about
1768         the sequence points of a JITted method.
1769         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1770         'bucket' field.
1771
1772         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1773         point information is stored, use a MonoSeqPointInfo structure instead of a
1774         GPtrArray. For each seq point, compute a list of successor seq points.
1775
1776         * debugger-agent.c: Use the successor list to implement step-over more
1777         efficiently: instead of single stepping until a different line/IL offset is
1778         reached, place breakpoints into all successor seq points.
1779
1780         * mini.h: Bump AOT file format version.
1781
1782 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1783
1784         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1785
1786         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1787
1788 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1789
1790         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1791         build.
1792
1793 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1794
1795         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1796         alloca as g_malloc is not signal safe.
1797
1798 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1799
1800         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1801         VALGRIND_DISCARD_TRANSLATIONS.
1802
1803         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1804         checks, they are no longer needed.
1805
1806         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1807         a function into a sigctx which can handle function pointers.
1808
1809         * mini-ppc.c: Implement soft debugger support on ppc64.
1810
1811         * mini-ppc.c: Implement soft debugger support.
1812
1813 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1814
1815         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1816
1817 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1818
1819         * mini.c (mono_get_runtime_build_info): include Mono version in
1820         the returned value.
1821
1822         * driver.c (mono_main): VERSION is now included in the string
1823         returned from mono_get_runtime_build_info()
1824
1825 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1828         signatures. Fixes #565143.
1829
1830         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1831
1832 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1833
1834         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1835
1836 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1837
1838         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1839         making max stack 10x smaller.
1840
1841 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1842
1843         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1844
1845 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1846
1847         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1848
1849 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1850
1851         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1852         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1853
1854         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1855
1856         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1857
1858         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1859
1860         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1861         the compilation.
1862
1863 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1864
1865         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1866         raise an invalid program exception.   
1867
1868         For other opcodes that we might not handle use a g_warning and
1869         raise the exception.   Beats termination.
1870
1871         Fixes #561724
1872
1873 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1874
1875         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1876
1877         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1878         by merging the LLVM and !MAP_32BIT cases.
1879
1880 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1881
1882         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1883         sigctx being passed in, as we have no CONTEXT available in the APC.
1884
1885         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1886         for now.
1887
1888         Code contributed under MIT/X11 license.
1889
1890 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1891
1892         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1893         in the LLVM backend on AMD64.
1894
1895         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1896         FDE.
1897
1898         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1899
1900         * mini-llvm.c: Export mono_personality for AOT.
1901
1902         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1903
1904         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1905         implicit exception can occur.
1906
1907         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1908         OP_IMPLICIT_EXCEPTION instruction.
1909
1910         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1911
1912         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1913
1914         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1915         inside a protected block.
1916
1917         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1918         trampolines doesn't include the argument.
1919
1920         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1921         trampolines on amd64.
1922
1923         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1924         of RDI.
1925
1926         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1927         disabled for methods with clauses.
1928
1929         * mini-llvm.c: Enable support for catch clauses.
1930
1931         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1932         end of an LLVM compiled finally clause.
1933         (mono_handle_exception_internal): Save the exception handling state in TLS
1934         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1935         resume unwinding from that point.
1936
1937         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1938         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1939         to obtain the addresses of the exception handling regions.
1940
1941         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1942         finally clauses are supported.
1943
1944         * mini.c (mini_method_compile): Add support for LLVM code with exception
1945         handlers.
1946
1947 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1948
1949         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1950         proper size.
1951
1952 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1953
1954         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1955         as a primitive type.
1956
1957 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1958
1959         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1960         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1961         #564000.
1962
1963 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1964
1965         * method-to-ir.c (mini_redirect_call): do not redirect the
1966         InternalAllocateStr internal call if string profiling is enabled.
1967
1968 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1969
1970         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1971         generic methods.
1972
1973         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1974         unwind.h header file.
1975
1976         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1977         newer valgrind versions seems to handle this fine.
1978
1979 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1980
1981         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1982         on the debugger thread.
1983
1984 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1985
1986         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1987
1988         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1989
1990         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
1991
1992         * cpu-<ARCH>.md: Make call_handler clob:c.
1993
1994         * mini.c: Reenable SSA for methods with clauses.
1995
1996         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
1997         as it causes failures on x86.
1998
1999 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2000
2001         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2002         returns NULL (e.g. a bad assembly).
2003
2004 2009-12-08  Geoff Norton  <gnorton@novell.com>
2005
2006         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2007         stepping out into native code.  There were issues with nested invokes
2008         like .cctors.
2009
2010 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2011
2012         * mini.c (mini_method_compile): Do the disable_llvm checks early
2013         and avoid the LLVM compile pass if the checks fail.
2014
2015         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2016
2017         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2018         LLVM optimizations don't try to remove them.
2019
2020         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2021         different file so the original remains.
2022
2023 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2024
2025         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2026
2027         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2028
2029         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2030         support for non-inline unwind descriptors.
2031
2032 2009-12-07  Geoff Norton  <gnorton@novell.com>
2033
2034         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2035         the interrupt_count slightly differently.  Native threads were never
2036         marked as resumed.
2037
2038 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2039
2040         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2041         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2042         yet generate this info.
2043
2044         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2045
2046         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2047         client can distinguish between intptrs and longs.
2048
2049 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2052         blob.
2053
2054         * aot-runtime.c (load_function): Update after the change above.
2055
2056         * mini.h: Bump AOT file format version.
2057
2058         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2059         if the delegate class is dynamic.
2060
2061         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2062         in gshared code too using the new rgctx info type
2063         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2064
2065 2009-12-04  Geoff Norton  <gnorton@novell.com>
2066
2067         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2068         we need to track the original suspend count so the thread properly
2069         wakes up in resume_thread.
2070
2071 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2072
2073         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2074         code.
2075
2076         * generics.cs: Add a test.
2077
2078         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2079         is 0. Simplify a lot of code using this.
2080
2081         * mini-trampolines.c (mono_delegate_trampoline): Call
2082         mono_create_static_rgctx_trampoline () before saving the final address in
2083         delegate->method_code, to avoid calling it each time a delegate is first called.
2084
2085         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2086         which need static rgctx trampolines.
2087
2088         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2089         keyed on the method+addr pair, since addr could be either the method addr or
2090         an unbox trampoline in the AOT case. Fixes #560246.
2091
2092 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2093
2094         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2095         place it was called before too.
2096
2097 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2100         if no security manager is present, to speed up the AOT case. Call
2101         mono_class_vtable () full with raise_on_error == TRUE instead.
2102
2103 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2104
2105         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2106         the local optimization passes can take its result into account. Fixes
2107         #559876.
2108
2109         * exceptions.cs: Add a test.
2110
2111 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2112
2113         This patch is contributed under the terms of the MIT/X11 license
2114
2115         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2116
2117 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2118
2119         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2120
2121         * debugger-agent.c: Rework the handling of stack traces of running threads to
2122         avoid crashes if compute_frames () tries to walk the stack of running thread.
2123
2124         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2125
2126         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2127
2128         * mini.h (StackFrameInfo): Add an 'lmf' field.
2129
2130 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2131
2132         * debugger-agent.c (suspend_current): Always set really_suspended.
2133
2134         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2135
2136         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2137
2138 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2139
2140         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2141         really suspended.
2142
2143 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2144
2145         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2146
2147 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2148
2149         * mini-trampolines.c: Fix MSVC build.
2150
2151 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2152
2153         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2154
2155 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2156
2157         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2158         the instruction following an OP_FCOMPARE is optimized away.
2159
2160 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2161
2162         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2163         emit_autoreg () into this arch-specific function.
2164
2165         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2166         code, it is no longer needed.
2167
2168         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2169
2170         * mini.h: Bump AOT file format version.
2171
2172         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2173         using the sorted_code_offsets array, instead of reading it from the
2174         exception debug info.
2175         (load_method): Call mono_aot_find_jit_info instead of
2176         decode_exception_debug_info ().
2177
2178         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2179         LLVM compiled as a flag.
2180
2181 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * debugger-agent.c (resume_thread): Fix a warning.
2184
2185         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2186         generated.
2187
2188 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2189
2190         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2191         contents to MonoAotFileInfo.
2192
2193 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2196         Put all binary data into a giant blob, similarly to the way .net assemblies
2197         store binary data. Emit offset tables in a compact form to reduce their size.
2198
2199         * mini.h: Bump AOT file format version.
2200
2201         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2202         places.
2203
2204         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2205         avoid linear searches at runtime.
2206
2207         * aot-runtime.c (find_symbol): Update this to use the hash.
2208
2209         * mini.h: Bump AOT file format version.
2210
2211 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2212
2213         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2214         container.
2215
2216         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2217         too.
2218
2219         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2220         the distribution of got slot types.
2221
2222         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2223
2224         * method-to-ir.c: Add support for generating explicit null checks.
2225
2226 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2227
2228         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2229         on a random thread if possible.
2230
2231         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2232         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2233         correctly.
2234
2235         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2236         regs. Pass the real size of the regs array to mono_unwind_frame ().
2237
2238         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2239         ones instead.
2240
2241 2009-11-24  Geoff Norton  <gnorton@novell.com>
2242
2243         * mini-darwin.c: Work around apple bug rdar://7209349  See
2244         http://openradar.appspot.com/7209349 for details.  Synopsis,
2245         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2246         never been initialized before.
2247
2248 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2249
2250         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2251
2252         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2253
2254 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2255
2256         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2257         OP_SHL_IMM is not 32 bit.
2258
2259 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2260
2261         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2262
2263 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2264
2265         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2266         encountered.
2267
2268         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2269         > 0 since some threads can resume if their resume_count is > 0.
2270         (invoke_method): Avoid reading freed memory.
2271
2272         * debugger-agent.c (process_suspend): Extract the suspend code from
2273         process_single_step_inner () to a separate function. Rework the code to prevent
2274         races between this function and thread interrupts.
2275
2276         * debugger-agent.c (suspend_current): Check the resume_count field instead
2277         of resume_one so suspends+resumes during single threaded invokes work
2278         correctly.
2279
2280 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2283         to make the generated code smaller.
2284
2285         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2286         sequence generated by recent LLVM versions.
2287
2288         * mini-llvm.c: Add support for a few simple cases which weren't supported
2289         before.
2290
2291         * mini-trampolines.c (mono_magic_trampoline): Don't call
2292         mono_arch_get_vcall_slot () when llvm is enabled.
2293
2294         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2295
2296         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2297         into a new function called common_call_trampoline () which is used by the
2298         llvm vcall trampoline as well.
2299
2300         * debugger-agent.c: Implement single threaded invokes.
2301
2302         * debugger-agent.c: Revert change which broke the agent on linux.
2303
2304         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2305         #557606.
2306
2307         * generics.cs: Add a test.
2308
2309 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2310
2311         * debugger-agent.c: Fix the cygwin build.
2312
2313 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2314
2315         * cprop.c: Remove this unused file.
2316
2317 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2318
2319         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2320         #557262.
2321
2322         * basic.cs: Add a test.
2323
2324 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2325
2326         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2327         in one more place.
2328
2329 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2330
2331         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2332         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2333         it. Use this flag to control llvm related code paths instead of #ifdef
2334         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2335         AOT code.
2336
2337         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2338
2339         * mini.h: Bump AOT file format version.
2340
2341         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2342         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2343
2344         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2345         was used as an assembly filter.
2346
2347 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2348
2349         * unwind.c: Fix support for ppc.
2350
2351         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2352         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2353
2354 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2355
2356         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2357         port.
2358         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2359         added by the ps3 changes.
2360
2361 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2362
2363         * mini-gc.c: Resurrect this, so at least it compiles.
2364
2365         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2366
2367 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2368
2369         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2370         create_event_list () so assembly filters can be used.
2371
2372         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2373         from the LMF.
2374
2375 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2376
2377         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2378         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2379         is disabled.
2380
2381         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2382         classes for char/bool too.
2383
2384         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2385
2386         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2387         used.
2388
2389         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2390         Fix warnings.
2391
2392 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2393
2394         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2395         
2396         Code contributed under MIT/X11 license.
2397
2398 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2399
2400         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2401         threads in native code work.
2402
2403         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2404         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2405         version.
2406
2407 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2408
2409         * debugger-agent.c: Implementation for Windows platform.
2410
2411         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2412         primitives. Use SEH to implement breakpoints and single stepping.
2413
2414         * mini-x86.h: Enable soft debugger on Windows.
2415
2416         Code contributed under MIT/X11 license.
2417
2418 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2419
2420         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2421         under XEN. Fixes #522894.
2422
2423         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2424
2425         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2426         interface calls in LLVM AOT code.
2427
2428         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2429         is found.
2430
2431         * mini-llvm.c: Add support for OP_VPHI.
2432
2433         * objects.cs: Add a test.
2434
2435 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2436
2437         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2438         this is called on the debugger thread.
2439
2440 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2441
2442         * mini-llvm.c: Add soft-float support.
2443
2444         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2445         FCALL which returns an R4.
2446
2447         * driver.c (mono_main): Add a missing '\n'.
2448
2449         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2450         platforms which doesn't support the LLVM IMT trampoline.
2451
2452 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2455
2456         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2457
2458         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2459         virtual calls.
2460
2461         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2462
2463 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2464
2465         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2466         Instead of emitting a method_order table, sort the contents of the code_offsets
2467         table and do a binary search in the sorted table. The previous approach doesn't
2468         work with LLVM which emits methods in a arbitrary order.
2469
2470         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2471         in the .eh_frame section in ELF files.
2472
2473         * mini.h: Bump corlib file format version.
2474
2475         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2476
2477         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2478         LDMIA->LDM macro name change.
2479
2480 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2481
2482         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2483         x86.
2484
2485         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2486         SVN.
2487
2488         * aot-compiler.c: Ditto.
2489
2490         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2491         &align to mini_type_stack_size_full ().
2492
2493         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2494
2495         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2496
2497 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2498
2499         * mini-arm.c: Compute the stack space used by arguments using
2500         mini_type_stack_size_full ().
2501
2502 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2503
2504         * optflags-def.h: Remove dead TREEPROP optimization.
2505
2506 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2507
2508         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2509
2510         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2511
2512 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2513
2514         * driver.c (mono_jit_parse_options): New public API function to parse options
2515         as done by the runtime executable.
2516
2517         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2518         when handling named arguments.
2519
2520 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2521
2522         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2523         for passing small vtypes in registers, make the CallInfo structures more
2524         similar to the code on the other platforms.
2525
2526         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2527         the code in the prolog requires it.
2528
2529 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2530
2531         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2532         (koush@koushikdutta.com).
2533
2534         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2535         where the thunk memory should be allocated from. Fixes appdomain unloading
2536         on arm.
2537
2538 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2541         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2542
2543 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2544
2545         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2546         AOT, as it is not implemented yet.
2547
2548         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2549
2550 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2551
2552         * debugger-agent.c: Fix windows build.
2553
2554 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2555
2556         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2557         after the client connects/disconnects.
2558
2559         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2560         when an exception of a given type is thrown.
2561
2562         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2563         only on an uncaught exception.
2564
2565         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2566
2567         * debugger-agent.c: Add a 'launch' option.
2568
2569 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * debugger-agent.c: Add a 'timeout' option.
2572
2573 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2574
2575         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2576         the JDWP agent.
2577
2578 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2579
2580         * debugger-agent.c (set_breakpoint): Emit a log message.
2581
2582 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2583
2584         * mini-arm.c: Fix the arm build.
2585
2586 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2587
2588         * aot-compiler.c: don't leak the value returned from
2589         mono_type_full_name().
2590
2591 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2592
2593         * debugger-agent.c: defer including mono-mutex.h until we know the
2594         agent is supported.
2595
2596 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2597
2598         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2599         of pthreads directly.
2600
2601         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2602         exception handlers. Pass info argument.
2603
2604         * mini.h: Adjust signatures of soft debugger functions to pass void*
2605         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2606
2607         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2608         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2609         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2610         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2611
2612         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2613
2614         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2615         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2616         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2617         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2618
2619         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2620
2621         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2622
2623         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2624
2625         * mono-semaphore.h: Skeleton implementation for Windows.
2626
2627         Code contributed under MIT/X11 license.
2628
2629 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2630
2631         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2632
2633         Code contributed under MIT/X11 license.
2634
2635 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2636
2637         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2638
2639         Code contributed under MIT/X11 license.
2640
2641 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2642
2643         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2644         debug info to 100 because 10 still slows down gdb too much.
2645
2646         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2647         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2648         them in the wrappers.
2649
2650 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2651
2652         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2653
2654         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2655
2656         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2657         function mono_aot_get_array_helper_from_wrapper ().
2658
2659         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2660         array helper methods.
2661
2662 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2663
2664         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2665         the value was loaded from memory.
2666
2667         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2668         the value was loader from there.
2669
2670         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2671         without constant swizzle.
2672
2673 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2674
2675         * mini-amd64.c: Put soft debugger functions behind a
2676         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2677
2678         * mini-amd64.h: disable the soft debugger in windows.
2679
2680         Code contributed under MIT/X11 license.
2681
2682 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2683
2684         * mini-x86.c: Put soft debugger functions behind a
2685         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2686
2687         Code contributed under MIT/X11 license.
2688
2689 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2690
2691         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2692         to mono_arch_find_jit_info_ext.
2693
2694         Code contributed under MIT/X11 license.
2695
2696 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2697
2698         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2699
2700         * debugger-agent.c: Add support for filtering events by assemblies.
2701
2702         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2703         the agent is not enabled.
2704
2705 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2706
2707         * exceptions-x86.c: hopefully last change to fix the windows build.
2708         This one courtesy of Jonathan Chambers.
2709
2710 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2711
2712         * debugger-agent.c: remove unused function.
2713
2714 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2715
2716         * debugger-agent.c: add #ifdefs for a few header files.
2717         * mini-x86.h: disable the soft debugger in windows.
2718         Step 1 of 2 to make this compile on windows with gcc.
2719
2720 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2721
2722         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2723         as it breaks the build.
2724
2725 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2726
2727         Merge the soft debugger branch.
2728
2729         * debugger-agent.h debugger-agent.c: New files containing the soft
2730         mode debugger module.
2731
2732         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2733         at the appropriate locations.
2734
2735         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2736         opcode.
2737
2738         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2739         enable/disable single stepping.
2740
2741         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2742         which returns all information in a StackFrameInfo structure, and can handle the
2743         LMF frames added by the debugger.
2744
2745         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2746         about an LMF frame.
2747
2748         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2749         walker function which works on a specific thread and passes a StackFrameInfo
2750         structure to its callback.
2751
2752         * mini.c (mini_init): Initialize the debugger agent.
2753
2754         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2755
2756         * mini-ops.h: Add OP_SEQ_POINT opcode.
2757
2758         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2759         arguments to the debugger agent.
2760
2761 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2762
2763         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2764         speed things up.
2765
2766         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2767
2768         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2769
2770         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2771
2772         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2773         if needed.
2774         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2775         sets the IMT argument and makes a virtual call.
2776
2777         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2778
2779 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2780
2781         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2782         the windows build.
2783
2784 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2785
2786         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2787         runtime. Fixes #551228.
2788
2789 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2790
2791         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2792
2793         * basic.cs: Add a test.
2794
2795         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2796         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2797         CONSTRAINED. Fixes #550964.
2798
2799         * generics.cs: Add a test.
2800
2801 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2802
2803         * mini-posix.c (add_signal_handler): Use
2804         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2805
2806 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2807
2808         Contributed under the terms of the MIT/X11 license by
2809         Jerry Maine <crashfourit@gail.com>.
2810
2811         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2812         sse4a for simd intrinsics.
2813
2814         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2815         sse4a for simd intrinsics.
2816
2817 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2818
2819         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2820         instead of inst_p1 which is not the same on ILP32 platforms.
2821
2822 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2823
2824         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2825         not the mscorlib one before calling mono_get_lmf_addr.
2826
2827         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2828         of the ip to the LMF.
2829
2830         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2831         immediate in the op->op_imm optimization.
2832
2833         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2834         understand. VTypes now work, but are not abi compliant, as they are
2835         split into 4 byte parts instead of 8.
2836         (emit_memcpy): Fix the unrolled case to work on the PS3.
2837
2838         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2839
2840         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2841         the default when static linking.
2842
2843         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2844
2845         * aot-compiler.c: Add an autoreg option to automatically register
2846         statically linked aot modules using ELF .ctors.
2847
2848         * genmdesc.pl: Add __ppc64__ to allowed defines.
2849
2850 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2851
2852         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2853         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2854
2855 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2856
2857         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2858
2859 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2860
2861         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2862         which will contain the domain where the method was found.
2863
2864         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2865         mini_jit_info_table_find ().
2866
2867         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2868
2869         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2870
2871 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2874         set, its not supported yet.
2875
2876 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2879         iface wrapper is not found.
2880         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2881
2882 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2883
2884         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2885         which have a different name.
2886
2887         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2888         wrappers and Array.GetGenericValueImpl ().
2889
2890         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2891         because of the change above.
2892
2893         * generics.cs: Add a test for full aot + generic array ifaces.
2894
2895 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2896
2897         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2898         that hides the previous one.
2899
2900 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2901
2902         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2903         marshalled. Fixes #541623.
2904
2905 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2906
2907         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2908
2909 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2910
2911         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2912
2913 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2914
2915         * mini-posix.c (sigprof_signal_handler):
2916         Implemented support for building stat call chans in different ways.
2917
2918 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2919
2920         * mini-exceptions.c (mono_find_jit_info):
2921         Also check that a jit info has been found (fixes a profiler crash).
2922
2923 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2924
2925         * mini.c (mono_codegen):
2926         Call mono_profiler_code_buffer_new with correct code address.
2927
2928 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2929
2930         * driver.c (mono_main): Change the date in the copyright.
2931
2932 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2933
2934         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2935         allocator in shared generic code for open classes, because we
2936         can't get those classes' vtables.  We need to make managed
2937         allocators not depend on the vtable at compile-time to solve this.
2938
2939 2009-10-13  Martin Baulig  <martin@ximian.com>
2940
2941         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2942         `const guint8 *trampoline' argument; send both the old and the new
2943         notification.
2944
2945 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2946
2947         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2948         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2949         (can_marshal_struct): Skip structures with auto layout.
2950
2951         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2952
2953 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2954
2955         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2956         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2957         a variable to hold the stack slot used by the int<->float conversion opcodes.
2958
2959         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2960
2961 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2962
2963         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2964         when using full-aot.
2965
2966 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2967
2968         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2969         each instance of Comparer<T>.
2970
2971         * generics.cs: Add a new test.
2972
2973 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2974
2975         * driver.c (parse_debug_options): Add a 'gdb' option.
2976
2977         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2978
2979         * image-writer.c: Add support for emitting the image into a memory buffer.
2980
2981         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2982
2983         * aot-compiler.c: Add support for registering debug info with GDB using the
2984         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2985         MONO_XDEBUG to 'gdb'.
2986
2987 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
2988
2989         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
2990         gdb mode.
2991
2992 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
2993
2994         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
2995         can be used to set breakpoints in gdb.
2996
2997         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
2998         segment to an absolute address.
2999
3000 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3001
3002         * method-to-ir.c: Use the managed array allocator method if
3003         available.
3004
3005 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3006
3007         * aot-compiler.c : Fix the MSVC builds
3008
3009         Code is contributed under MIT/X11 license.
3010
3011 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3012
3013         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3014         avoid registering 1 symbol file per method with gdb.
3015
3016 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3017
3018         * mini-sparc.c: Fix the handling of enums with base type long.
3019
3020         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3021
3022         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3023         instead of using type->data.klass as the later doesn't work with generics.
3024
3025 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3026
3027         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3028         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3029         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3030         works differently now and we don't handle it in the JIT anymore.
3031
3032         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3033         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3034         the Thread class split.
3035
3036 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3037
3038         * driver.c: Don't run tests with the obsolete treeprop optimization.
3039
3040         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3041         variable volatile. Fixes #541577.
3042
3043         * basic-calls.cs: Add a new test.
3044
3045         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3046
3047 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3048
3049         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3050         work/required with recent iphone sdk versions.
3051
3052         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3053         structures.
3054
3055         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3056         in the VCALL decomposition code.
3057
3058 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3059
3060         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3061
3062         * basic.cs: Add a test.
3063
3064         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3065         generic invokes.
3066
3067         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3068         searches all the domains of the current thread.
3069
3070         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3071
3072 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3073
3074         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3075         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3076
3077         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3078         for non-jit trampolines.
3079
3080         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3081
3082         * aot-compiler.c (add_wrappers): Ditto.
3083
3084         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3085         the size of the param area used by dyn_call to 6 which covers the majority of
3086         methods.
3087
3088         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3089
3090         * mini-arm.c: Implement support for passing/receiving
3091         longs and receiving floats in the dyn_call code.
3092
3093         * mini-amd64.c: Implement support for receiving vtypes in registers in
3094         the dyn_call code.
3095
3096         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3097         the dyn_call code.
3098
3099 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3100
3101         * mini-arm.c (get_call_info): Return more precise information in
3102         ArgInfo->regtype.
3103         (dyn_call_supported): Use the information in CallInfo.
3104
3105         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3106
3107         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3108         code.
3109
3110         * mini-arm.c: Update after the dyn_call api changes.
3111
3112         * mini.c (mini_create_jit_domain_info): Register a destructor function
3113         for the runtime_invoke_hash.
3114
3115         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3116         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3117         this function.
3118         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3119         (dyn_call_supported): Simplify this by using get_call_info ().
3120         (mono_arch_dyn_call_free): New destructor function.
3121
3122         * generics.cs: Remove a printf.
3123
3124         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3125
3126         * mini-arm.c: Add support for enum return values and passing a few arguments
3127         on the stack.
3128         
3129         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3130         dyn invoke.
3131
3132         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3133
3134         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3135         the dynamic invoke wrappers.
3136
3137         * mini-arm.c: Implement OP_DYN_CALL for arm.
3138
3139         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3140         supported by the dynamic runtime invoke wrapper.
3141
3142         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3143         runtime invoke wrapper.
3144
3145         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3146         if possible when running with full-aot.
3147
3148         * mini-ops.h: Add OP_DYN_CALL opcode.
3149
3150         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3151         with dynamic arguments lists similar to libffi.
3152
3153 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3154
3155         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3156         
3157         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3158         to NEWARR.
3159
3160         * iltests.il.in: Add a new test.
3161         
3162 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3163
3164         * aot-compiler.c (add_generic_instances): Add more instances of
3165         GenericEqualityComparer.
3166
3167 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3168
3169         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3170
3171 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3172
3173         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3174         comments on some functions that now can fail.
3175
3176 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3177
3178         * Makefile.am: Add Info.plist to EXTRA_DIST
3179
3180 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3181
3182         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3183         static synchronized wrappers. Fixes #539500.
3184
3185 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3186
3187         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3188         properly.
3189
3190 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3191
3192         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3193         lmf before calling filter clauses as well. Fixes #539550.
3194
3195         * exceptions.cs: Add a test.
3196         
3197 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3198
3199         * aot-compiler.c (add_generic_class): Add instances of
3200         Array.GetGenericValueImpl as well.
3201
3202         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3203         can be tested too.
3204
3205         * generics.cs: Add a fullaot linq test.
3206
3207 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3208
3209         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3210         reg r1 on arm.
3211
3212 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3213
3214         * mini-trampolines.c (mono_delegate_trampoline) : Call
3215           mono_cominterop_get_invoke if the delegate target object
3216           is a COM object.
3217
3218         Code is contributed under MIT/X11 license.
3219
3220 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3221
3222         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3223         internal call is defined outside platform code. Reduce code 
3224         duplication with existing [Method|Field]AccessException
3225
3226 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3227
3228         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3229         if the return value is a small struct passed on regs.
3230
3231 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3232
3233         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3234
3235         * mini-codegen.c: Enable the cpu description validation for arm.
3236
3237 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3238
3239         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3240         test which depends on structs to objects.cs.
3241         
3242         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3243         require object model related stuff working.
3244
3245         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3246
3247         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3248
3249         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3250         against the instruction metadata in mini-ops.h. amd64 only for now.
3251
3252         * mini-ops.h: Fix some instruction descriptions.
3253
3254         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3255         unused instructions.
3256
3257 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3258
3259         * exceptions.cs: Add a new test.
3260
3261 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3262
3263         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3264
3265 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3266
3267         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3268         skip empty phi opcodes.
3269         
3270         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3271         correctly by zero extending after loads. Skip methods containing calls
3272         to the monitor enter/exit trampolines.
3273
3274         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3275         when calling mono_thread_force_interruption_checkpoint ().
3276
3277         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3278
3279         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3280         64 bit thunks.
3281         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3282
3283         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3284         bootstrap could run.
3285
3286 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3287
3288         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3289
3290 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3291
3292         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3293         of the method to
3294         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3295         LLVM might be very short.
3296
3297         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3298         in OP_THROW/RETHROW.
3299
3300         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3301         alignment on osx.
3302
3303 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3304
3305         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3306         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3307         LLVM might be very short.
3308
3309 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3310
3311         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3312         the alignment for the value of sp.
3313
3314 2009-09-01  Geoff Norton  <gnorton@novell.com>
3315
3316         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3317         managed wrappers in full aot.
3318
3319 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3320
3321         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3322
3323 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3324
3325         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3326
3327 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3328
3329         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3330
3331         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3332         saved info.
3333
3334         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3335
3336         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3337         depend on the info MonoMethodHeader which could be missing in IL stripped
3338         assemblies.
3339
3340 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3341
3342         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3343         they are only 4 byte aligned.
3344
3345 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3346
3347         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3348         was done previously, since using SP causes too many problems.
3349
3350         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3351         frames without a frame pointer works.
3352
3353         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3354         global register in methods with calls, since the calls can go through
3355         a static rgctx trampoline which doesn't save it.
3356
3357 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3360
3361 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3362
3363         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3364
3365 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3366
3367         * method-to-ir.c: Fix warnings for uninitialized variables.
3368
3369 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3370
3371         * mini-exceptions.c:
3372         * aot-compiler.c: Fix printf warnings.
3373
3374 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3375
3376         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3377         Add GetGenericValueImpl<string>.
3378         
3379         * aot-compiler.c (add_generic_instances): Add instances of
3380         GenericEqualityComparer<T> for primitive types. Only emit the array
3381         wrappers into the mscorlib image.
3382
3383 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3384
3385         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3386         the methods_loaded array using amodule->info->nmethods.
3387
3388         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3389         (MONO_AOT_FILE_VERSION): Bump this.
3390
3391         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3392         to work.
3393
3394         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3395         MonoJitInfo doesn't belong to its methods aot image.
3396
3397 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3398
3399         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3400
3401         * mini-arm.c: Fix warnings.
3402         
3403         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3404
3405         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3406         supports it.
3407
3408 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3409
3410         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3411         avoid clobbering IP.
3412
3413         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3414         hold the trampoline argument, so its initial value is available during
3415         debugging.
3416
3417 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3418
3419         * exceptions-arm.c:
3420         * exceptions-hppa.c:
3421         * mini.c:
3422         * exceptions-s390x.c:
3423         * exceptions-mips.c:
3424         * exceptions-ppc.c:
3425         * exceptions-sparc.c:
3426         * exceptions-alpha.c:
3427         * aot-runtime.c:
3428         * mini-trampolines.c:
3429         * exceptions-x86.c:
3430         * exceptions-s390.c: add and use #define's instead of sizeof()
3431         for MonoJitInfo and MonoJitInfoTable.
3432
3433 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3434
3435         * tramp-arm.c:
3436         * tramp-amd64.c:
3437         * tramp-ppc.c:
3438         * tramp-x86.c: use a #define instead of sizeof() for a few
3439         structures that use a zero-length array.
3440
3441 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3442
3443         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3444         case when the method is dynamic. Fixes #529238.
3445
3446 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3447
3448         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3449         of asserting when a method is JIT compiled in full-aot mode.
3450
3451 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3452         
3453         Contributed under the terms of the MIT/X11 license by
3454         Jerry Maine <crashfourit@gail.com>.
3455         
3456         * fixed wrong dates in changelog.
3457
3458 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3459         
3460         Contributed under the terms of the MIT/X11 license by
3461         Jerry Maine <crashfourit@gail.com>.
3462
3463         * basic-simd.cs: added test for packed double square root.
3464         * cpu-amd64.md: added opcode info for packed double square root.
3465         * cpu-x86.md: added opcode info for packed double square root.
3466         * mini-ops.h: added IR opcode for packed double square root.
3467         * mini-x86.c: added IR to native translation code for packed double square root.
3468         * mini-amd64.c: removed todo for packed double square root.
3469         * simd-intrinsics.c: added method to IR opcode converstion for
3470         packed double square root.
3471
3472 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3473
3474         Contributed under the terms of the MIT/X11 license by
3475         Jerry Maine <crashfourit@gail.com>.
3476
3477         * mini-amd64.c: Added a change to help tell the difference as 
3478         to what perpose the xmm register is being used--mainly to help
3479         with debuging.
3480         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3481         (one used for special cases) xmm registers for both fp
3482         and simd ops. Added define to turn on new feature in the regalloc
3483         that allows fp and simd ops to share the xmm regs happily.
3484         * codegen.c: Added code to detect for which perpose an xmm reg is
3485         being used (fp or simd) and to translate back and forth to the
3486         correct logical reg bank (fp or simd) for 'spill load's.
3487
3488 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3489
3490         Contributed under the terms of the MIT/X11 license by
3491         Jerry Maine <crashfourit@gail.com>.
3492
3493         * basic-simd.cs: Added tests for stressing the regalloc when running with
3494         16 simd regs and when simd and fp ops share the same reg bank.
3495
3496 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3497
3498         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3499         in shared generic code, we might have to look up the class in the
3500         RGCTX.  If we use the class directly, compute its GC descriptor.
3501
3502 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3503
3504         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3505
3506 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3507
3508         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3509         check for errors. Fixed the case when the class with the Main
3510         method is broken.
3511
3512 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3513
3514         Contributed under the terms of the MIT/X11 license by
3515         Jerry Maine <crashfourit@gail.com>.
3516
3517         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3518
3519 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3520
3521         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3522
3523 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3524
3525         * method-to-ir.c: Fix naming of stelem and ldelem.
3526
3527 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3528
3529         * driver.c (main_thread_handler): Check that the assembly loaded
3530         matches the filename when doing AOT.
3531
3532 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3533
3534         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3535         call it anymore.
3536
3537         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3538         utils/mono-sigcontext.h).
3539
3540         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3541         #ifdef.
3542
3543 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3544
3545         * mini.c (mono_codegen):
3546         Call profiler hook to keep track of method code buffers.
3547
3548 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3549
3550         * method-to-ir.c: Invoke write barriers for the
3551         Interlocked.(Compare)Exchange JIT intrinsics.
3552
3553 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3554
3555         * Makefile.am (version.h): Fix issues when built out of tree.
3556         Remove some redundant 'grep's piped through 'sed's.
3557
3558 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3559
3560         This patch is contributed under the terms of the MIT/X11 license
3561
3562         * mini-ppc.c (mono_arch_output_basic_block):
3563         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3564         for bits 32-47 with signed load/store diplacements for bits
3565         48-63.  Use prefered base/offset order for indexed form.
3566         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3567         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3568         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3569         OP_LOADI2_MEMBASE): Same.
3570         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3571         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3572         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3573         indexed form.
3574         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3575         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3576         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3577         OP_LOADI1_MEMINDEX): Same
3578         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3579         OP_STORER8_MEMINDEX): Same
3580         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3581         computations.
3582         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3583         for bits 32-47 with signed load/store diplacements for bits
3584         48-63.  Use prefered base/offset order for indexed form.
3585
3586 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3587
3588 This patch is contributed under the terms of the MIT/X11 license
3589
3590         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3591         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3592         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3593         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3594         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3595         cfg->stack_usage to avoid size warnings.
3596         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3597         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3598         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3599         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3600         to convert.
3601         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3602         after code varible is initialized.
3603         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3604         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3605         (mono_arch_emit_epilog): 
3606         Move Use ppc_load32 for cfg->stack_usage to avoid size
3607         warnings.
3608
3609 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3610
3611         * method-to-ir.c: The write barrier doesn't do the store anymore,
3612         so we have always to emit it.  Also, emit the wbarrier after the
3613         store.
3614
3615 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3616
3617         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3618         for argument count 3 too.
3619
3620 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3621
3622         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3623         the caller handle the exceptions.
3624         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3625         method. Fixes #524498.
3626
3627 2009-07-22  Geoff Norton  <gnorton@novell.com>
3628
3629         * mini-exceptions.c: Fix build on ia64.
3630
3631 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3632
3633         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3634         barriers.
3635
3636 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3637
3638         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3639         code.
3640
3641 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * basic-simd.cs (Main): Pass args to the test driver.
3644
3645 2009-07-20  Geoff Norton  <gnorton@novell.com>
3646
3647         * mini-x86.h: Fix the x86 version guards to use Apple's
3648         properly defined macros.
3649
3650 2009-07-20  Geoff Norton  <gnorton@novell.com>
3651
3652         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3653         aligned access.
3654
3655 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3656
3657         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3658         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3659         the information which is needed for invokes, so only one locking+hash table
3660         lookup is needed.
3661
3662         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3663         
3664         * aot-compiler.c (add_generic_instances): Emit instances of 
3665         GenericComparer<T> for primitive types.
3666
3667 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3668
3669         * mini-posix.c: Fix linux build.
3670
3671 2009-07-19  Geoff Norton  <gnorton@novell.com>
3672
3673         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3674         mono_gdb_render_native_backtraces
3675         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3676         so we implement the sane semantics to the runtime here
3677         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3678         so we need to call it differently (mono_gdb_render_native_backtraces)
3679         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3680         here for default implementations.
3681         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3682         support Apple's weird syscall (SYS_fork) implementation and not busy
3683         loop in abort() on native crashes on OSX anymore.
3684
3685 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3686
3687         * aot-runtime.c (load_method): Change the handling of the
3688         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3689         are used.
3690
3691         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3692
3693 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3694
3695         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3696         seems to break the aot tests.
3697         
3698         * mini.c (mono_patch_info_equal): Fix the handling of 
3699         MONO_PATCH_INFO_RGCTX_FETCH.
3700
3701 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3702
3703         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3704
3705         * mini.c (mono_patch_info_hash): Fix the handling of 
3706         MONO_PATCH_INFO_INTERNAL_METHOD.
3707         (mono_patch_info_equal): Ditto.
3708
3709 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3710
3711         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3712         in a few places.
3713         
3714         * mini-llvm.c: Add some infrastructure for AOT support.
3715
3716 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3717
3718         * mini-llvm-cpp.c: Update to the latest llvm api.
3719         
3720         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3721         option to false to prevent llvm from installing signal handlers which
3722         trip up the gc.
3723         
3724 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3725
3726         * cpu-x86.md:
3727         * cpu-amd64.md: Revert previous change as those instructions
3728         take 2 separate arguments. Remember to read the arch docs more
3729         carefully next time.
3730
3731 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3732
3733         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3734
3735 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3736
3737         * mini-ppc.c: exploit multiple load/store units if available (rest of
3738         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3739         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3740
3741 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3742
3743         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3744         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3745
3746 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3747
3748         * cpu-x86.md: Fix missing clobbering from trancendental simd
3749         ops.
3750
3751         * cpu-amd64.md: Same.
3752
3753 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3754
3755         Contributed under the terms of the MIT/X11 license by
3756         Jerry Maine <crashfourit@gail.com>.
3757
3758         * basic-simd.cs: Added tests for single and doulble indexers.
3759
3760         * cpu-amd64.md: Added simd opcode information.
3761
3762         * mini-amd64.c: Added IR to native simd generation code.
3763         Added simd register names and function that returns them.
3764
3765         * mini-amd64.h: Added marcos to turn on simd code compilation in
3766         amd64. Added max simd register count marco. Added caller/callee
3767         register mask marcos. Added marcos to use simd register bank.
3768
3769         * mini.h: Added helper marco for shufling dwords and simple
3770         floats.
3771
3772 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3773
3774         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3775
3776         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3777
3778         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3779         the length of the native code as well.
3780
3781         * basic-simd.cs: Add a test for #521662.
3782
3783 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3784
3785         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3786
3787 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3788
3789         * mini.c: Register function for getting the IP from a signal
3790         context with metadata.
3791
3792 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3793
3794         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3795         call a generic class init trampoline if needed. Fixes #519336.
3796
3797         * generics.cs: Add a test.
3798         
3799 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3800
3801         * method-to-ir.c: When doing a call which might be remote from
3802         shared generic code to other shared code with open type arguments,
3803         get the remoting invoke wrapper from the RGCTX and do an indirect
3804         call to it.
3805
3806 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3807
3808         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3809         after the unbox trampoline in the full-aot case.
3810
3811 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3812         
3813         * mini.c: Move initialization of jit_mutex before debugger initialization
3814         
3815         to avoid crashes.
3816         
3817         
3818         * Info.plist: added Info.plist and link flag to enable the mono executable
3819         to access other processes. Requires codesigning of the executable to work.
3820         
3821         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3822         
3823         compile on OS X.
3824         
3825
3826 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3827
3828         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3829
3830 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3831
3832         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3833         when the generic instance is an instantiation of a subclass of the
3834         methods class. Fixes #517166.
3835
3836 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3837
3838         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3839         code.
3840
3841         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3842         AOTed code.
3843
3844         * CMakeLists.txt: Add minimal support for installation.
3845
3846 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3847
3848         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3849         determine whenever a method is directly callable to a separate function.
3850
3851         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3852         needed ones as a result of the previous change.
3853
3854         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3855         type of register arrays.
3856
3857         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3858         type of register arrays.
3859
3860 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3861         
3862         Contributed under the terms of the MIT/X11 license by
3863         Jerry Maine <crashfourit@gail.com>.
3864
3865         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3866
3867 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3868
3869         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3870
3871 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3872
3873         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3874         dump of structure return value. Fix some formatting.
3875         * cpu-s390x.md: Fix lengths of instruction sequences.
3876         * mini-s390.c: Minor formatting changes.
3877
3878 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3879
3880         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3881         Use sigaction on freebsd as well.
3882
3883 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3884
3885         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3886         uses #ifdef on it.
3887         
3888         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3889
3890 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3891
3892         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3893
3894 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3895
3896         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3897
3898 2009-06-20  Martin Baulig  <martin@ximian.com>
3899
3900         * debug-mini.c
3901         (MonoDebuggerThreadFlags): New enum typedef.
3902         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3903         (mono_debugger_thread_created): Added `gpointer func' argument;
3904         initialize the new `thread_flags' field.
3905
3906 2009-06-18  Martin Baulig  <martin@ximian.com>
3907
3908         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3909         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3910
3911         * debug-debugger.c
3912         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3913         flag in `MONO_DEBUGGER__info.runtime_info'.
3914
3915         * driver.c
3916         (mono_main): Call mini_debugger_set_attach_ok() if generics
3917         sharing is disabled.
3918
3919 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3920
3921         * aot-compiler.c (add_wrappers): Fix a warning.
3922
3923         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3924         the ppc load/store macro changes.
3925
3926 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3927
3928         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3929
3930         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3931         not just the got symbol.
3932
3933         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3934         on ppc.
3935
3936         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3937         ppc.
3938         
3939         * aot-compiler.c: Remove some fixmes.
3940
3941         * driver.c (mono_main): Print a helpful message when cross-compiling.
3942
3943         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3944
3945         * method-to-ir.c (initialize_array_data): Do the optimization if the
3946         target byte order is little endian, instead of the host byte order.
3947
3948         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3949         wrappers into the mscorlib image, Emit a unique plt symbol for each
3950         image, emit symbols for plt entries.
3951
3952         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3953         a .size directive.
3954         
3955 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3956
3957         * aot-compiler.c (add_wrappers): Avoid calling 
3958         mono_marshal_get_type_info () since it can assert for some types.
3959
3960         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3961         ldtoken are used inside wrappers.
3962
3963         * helpers.c: Add support for prefixing tools with the arch name.
3964
3965         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3966         quantities when using ilp32.
3967
3968         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3969         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3970
3971         * image-writer.c: Use .long on ilp32.
3972
3973         * aot-compiler.c: Use 32 bit loads on ilp32.
3974         
3975 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3976
3977         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3978
3979         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3980
3981         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3982
3983         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3984         second got slot of every aot image.
3985         
3986         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3987         aot on platforms with function pointers.
3988
3989         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
3990         support for aot/full aot on ppc/ppc64.
3991         
3992         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
3993         arguments which are needed on ppc.
3994
3995         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
3996         argument.
3997
3998         * mini-trampolines.c aot-runtime.c: Update after the above changes.
3999         
4000         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4001
4002         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4003
4004         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4005
4006         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4007
4008 2009-06-17  Geoff Norton  <gnorton@novell.com>
4009
4010         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4011
4012 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4013
4014         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4015         to control whenever the dwarf writer is in xdebug or aot mode.
4016         (emit_class_dwarf_info): Use a separate abbrev for structures without
4017         children.
4018
4019         * aot-compiler.c: Pass the appending parameter to 
4020         mono_dwarf_writer_create ().
4021
4022         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4023         falls through to its next bblock. Fixes #513931.
4024
4025         * iltests.il: Add a test.
4026
4027         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4028         infor even if emit_line is FALSE, as the apple linker seems to require it.
4029
4030         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4031
4032         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4033         gcc does.
4034         (emit_fde): Ditto.
4035
4036 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4037
4038         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4039         mips build.
4040
4041 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4042
4043         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4044         'has_call_handler' fields.
4045
4046         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4047
4048         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4049         first bblock if not needed. Fixes #512790.
4050         
4051 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4052
4053         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4054         
4055         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4056         wrappers.
4057
4058         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4059         remoting-invoke-with-check wrappers, which are not needed when running with
4060         full-aot, since it doesn't support remoting.
4061         
4062 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4065
4066         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4067         method info, it is not used anymore.
4068
4069         * mini.h: Bump AOT file format version.
4070         
4071         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4072         word smaller.
4073
4074         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4075         change above.
4076         
4077         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4078
4079         * mini.h: Bump AOT file format version.
4080         
4081 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4082
4083         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4084         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4085         iphone.
4086
4087         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4088         of CKFINITE and FBGE for VFP.
4089
4090 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4091
4092         * aot-compiler.c: Don't align code to 16 bytes on arm.
4093         
4094         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4095         before the methods they belong to.
4096
4097         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4098         the full-aot case if possible, since the trampoline will be called right 
4099         away.
4100
4101         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4102         trampolines to 1024 after the change above.
4103
4104         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4105         trampoline to save 8 bytes per trampoline.
4106
4107         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4108         change above.
4109
4110 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4111
4112         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4113
4114 2009-06-08  Martin Baulig  <martin@ximian.com>
4115
4116         * debug-mini.c
4117         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4118         (_mono_debugger_throw_exception): Don't make this static.
4119         (_mono_debugger_unhandled_exception): Likewise.
4120         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4121
4122         * debug-mini.c
4123         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4124         (_mono_debugger_throw_exception): Add function prototype.
4125         (_mono_debugger_unhandled_exception): Likewise.
4126
4127         * mini-exceptions.c
4128         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4129         arg; return the first exception handler if the exception is caught
4130         and we're running inside the debugger.
4131         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4132         improve exception handle inside runtime-invoke, check whether the
4133         exception is actually caught in the method being invoked and not
4134         by the runtime-invoke-wrapper.
4135
4136 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4137
4138         * image-writer.c: Improve support for the osx assembler.
4139
4140         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4141         support them.
4142
4143 2009-06-08  Martin Baulig  <martin@ximian.com>
4144
4145         * debug-mini.c
4146         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4147         (_mono_debugger_throw_exception): Don't make this static.
4148         (_mono_debugger_unhandled_exception): Likewise.
4149         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4150
4151         * debug-mini.c
4152         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4153         (_mono_debugger_throw_exception): Add function prototype.
4154         (_mono_debugger_unhandled_exception): Likewise.
4155
4156         * mini-exceptions.c
4157         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4158         arg; return the first exception handler if the exception is caught
4159         and we're running inside the debugger.
4160         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4161         improve exception handle inside runtime-invoke, check whether the
4162         exception is actually caught in the method being invoked and not
4163         by the runtime-invoke-wrapper.
4164
4165 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4166
4167         * image-writer.c (append_subsection): Don't align subsections of the
4168         debug_line section as a workaround.
4169
4170         * dwarfwriter.c: Emit line number info in the AOT case as well.
4171
4172 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4173
4174         This patch is contributed under the terms of the MIT/X11 license
4175
4176        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4177        code_len <= code_size
4178
4179 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4180
4181         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4182
4183 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4184
4185         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4186         invoke wrappers, we now use trampolines instead.
4187
4188 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4189
4190         * mini-darwin.c: The exception thread must not be registered with
4191         the GC.
4192
4193 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4194
4195         * mini-gc.c: Disable the code because it makes SGen crash.
4196
4197 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4198
4199         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4200         instead of asserting.
4201
4202 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4203
4204         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4205         output file after the code has been compiled.
4206
4207 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4208
4209         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4210
4211 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4212
4213         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4214         entries distinction to simplify the code.
4215
4216         * mini.h: Bump AOT file format version.
4217         
4218 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4219
4220         * objects.cs: Fix the signature of one of the tests.
4221
4222         * mini.c (mini_create_ftnptr): New helper function, moved here from
4223         object.c.
4224         (mini_get_addr_from_ftnptr): Ditto.
4225         (mini_init): Install the new helpers.
4226
4227 2009-05-28  Martin Baulig  <martin@ximian.com>
4228
4229         Correctly initialize the debugger when embedding Mono.
4230
4231         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4232         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4233         see documentation in mini_debug_running_inside_mdb().
4234
4235         * debug-debugger.c
4236         (mini_debug_running_inside_mdb): New function to check whether
4237         we're running inside mdb.
4238
4239         * mini.c (mini_init): Call mini_debugger_init() if we're running
4240         inside the debugger.
4241
4242         * driver.c (mono_main): Moved the call to mini_debugger_init()
4243         into mini_init() to make this work when embedding Mono.
4244
4245         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4246         calls to mini_debugger_init().
4247
4248         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4249         mono_debugger_main() -> mini_debugger_main() and put them inside a
4250         `MONO_DEBUGGER_SUPPORTED' conditional.
4251
4252 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4253
4254         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4255         this is no longer in use.
4256         * mini.h: Same.
4257
4258 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4259
4260         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4261
4262         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4263         methods.
4264
4265 2009-05-27  Martin Baulig  <martin@ximian.com>
4266
4267 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4268
4269         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4270         long_conv_to_r_un to 64 bits.
4271
4272         * cpu-x86.md: Increase the instruction size due to the changes.
4273
4274         * iltests.il.in: Add regression test.
4275
4276         Fixes #467201.
4277
4278 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4279
4280         * objects.cs: Move the previous test from basic.cs to here.
4281
4282 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4283
4284         * basic.cs: Add regression test for #506915.
4285
4286 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4287
4288         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4289         optimization we must check the bb of the first byte of stobj as
4290         it's the only one set in cil_offset_to_bb.
4291
4292         Fixes #506915.  
4293
4294 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4295
4296         * image-writer.c: Fix pointer directive on ppc64.
4297
4298 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4299
4300         * image-writer.c (asm_writer_emit_section_change): Avoid using
4301         .bss subsections on ppc too.
4302
4303 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4304
4305         * image-writer.c: Fix the definition of TARGET_ASM_....
4306         
4307         * image-writer.c: Fix the emission of assembler directives in the last
4308         change.
4309
4310         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4311         exception throwing code to accomodate ppc64.
4312
4313         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4314         size to work on ppc64 too.
4315
4316         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4317         too.
4318
4319         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4320         the assembler dialect instead of using platform specific defines.
4321
4322 2009-05-22  Geoff Norton  <gnorton@novell.com>
4323
4324         * mini-arm.c (get_call_info): If a structure is split between the stack
4325         and argument registers, we should not advance the stack pointer by the entire
4326         native size, but just by the amount that spilled.
4327
4328 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4329
4330         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4331         correctly.
4332
4333 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4334
4335         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4336         wrappers normally.
4337         
4338         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4339         methods so wrapper don't get added twice.
4340         (add_generic_instances): Don't add methods of arrays.
4341
4342         * generics.cs: Mark one test as !FULLAOT.
4343
4344 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4345
4346         * mini-x86.c (emit_move_return_value): Remove unused vars.
4347
4348 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4349
4350         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4351         decomposing 8 bytes structs into a LCALL.
4352
4353         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4354         pointer for where to store the returned regs.
4355
4356         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4357         state the concern.
4358
4359         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4360
4361 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4362
4363         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4364         without getenv.
4365
4366 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4367
4368         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4369
4370         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4371         generics.
4372
4373 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4374
4375         * local-propagation.c (mono_local_cprop): Avoid local propagation
4376         across paired add/sub if the first instruction dest reg is it's
4377         source reg. For example:
4378
4379         int_add_imm R12 <- R12 [1] clobbers: 1
4380         int_sub_imm R42 <- R12 [1] clobbers: 1
4381
4382         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4383         maintain the math identify.
4384
4385         Fixes #505375.
4386
4387 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4388
4389         * Makefile.am: avoid going on the network just to get the revision,
4390         use git log instead
4391
4392 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4393
4394         Fixed estimate for short branches on amd64 (they were off mark, and
4395         enabling call prolog-epilog instrumentations caused assertions).
4396         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4397         estimate for the maximum length of this basic block.
4398         * mini-amd64.c:
4399         - mono_arch_emit_prolog: compute max_length for each basic block
4400           (instead of max_offset), and inflate size estimate also for entry bb
4401           in case of code instrumentation.
4402         - mono_arch_output_basic_block: get rid of "cpos" (the current
4403           estimated "position" in the code), and always use "offset" instead,
4404           which is accurate; at the beginning of the function quickly recompute
4405           max_offset for all the remaining blocks, starting from the current
4406           cfg->code_len (which is correct, and not estimated) and using the
4407           estimated block lengths computed previously.
4408
4409 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4410
4411         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4412         functions, it is already done in the caller.
4413
4414         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4415
4416         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4417         MONO_ARCH_GSHARED_SUPPORTED define.
4418
4419         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4420
4421         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4422         function.
4423
4424 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4425
4426         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4427         call to mono_marshal_get_rgctx_invoke ().
4428
4429         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4430         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4431         gshared use the static rgctx trampolines now.
4432         
4433         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4434         platform supports it.
4435
4436 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4437
4438         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4439
4440         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4441
4442 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4443
4444         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4445
4446         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4447         for ppc.
4448
4449 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4450
4451         Made it possible for mono_arch_instrument_epilog to preserve
4452         argument registers, otherwise instrumenting the "epilogue" before
4453         a tail call would clobber them.
4454         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4455         if like mono_arch_instrument_epilog but with an additional parameter
4456         that states if argument registers must be preserved.
4457         * mini.c: implemented mono_arch_instrument_epilog as a call to
4458         mono_arch_instrument_epilog_full without asking to preserve argument
4459         registers (this makes the existing code work as usual).
4460         * mini-amd64.c:
4461         - mono_arch_instrument_epilog: add parameter to transform it into
4462         mono_arch_instrument_epilog_full, and preserve argument registers
4463         when required.
4464         - mono_arch_output_basic_block, OP_TAILCALL case: call
4465         mono_arch_instrument_epilog_full.
4466         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4467         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4468         only transformed mono_arch_instrument_epilog into
4469         mono_arch_instrument_epilog_full.
4470
4471 2009-05-15  Geoff Norton  <gnorton@novell.com>
4472
4473         * mini-darwin.c: This works on arm now.
4474
4475 2009-05-14  Geoff Norton  <gnorton@novell.com>
4476
4477         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4478         embedding api.
4479
4480 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4481
4482         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4483         label names.
4484
4485         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4486         wrappers during full aot mode correctly.
4487
4488         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4489         methods correctly.
4490
4491         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4492         mono_metadata_type_hash ().
4493
4494 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4495
4496         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4497         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4498         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4499         Removed MONO_INST_BRLABEL from the instruction flags, and the
4500         remaining code that used it, because we do not support branches inside
4501         basic blocks (and branch target labels) anymore.
4502         * Makefile.am: As part of the above cleanup, remove reference to
4503         BURG files which don't exist anymore.
4504
4505 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4506
4507         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4508         osx.
4509
4510         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4511         to use mono_arch_throw_corlib_exception.
4512
4513         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4514         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4515
4516         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4517         domain mempool.
4518
4519         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4520
4521         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4522         for the got to make debugging easier and to avoid confusing it with the
4523         system got.
4524         
4525         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4526         method so a breakpoint can be set when using gdb.
4527
4528 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4529
4530         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4531         on mono_method_get_imt_slot ().
4532
4533         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4534         num_decodes variables.
4535
4536         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4537         change as it doesn't seem to work.
4538         
4539         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4540         wrappers.
4541
4542 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4543
4544         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4545         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4546
4547         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4548         builder when using full aot.
4549
4550         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4551         here, it is already handled.
4552         
4553         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4554         correctly for IMT.
4555
4556         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4557
4558         * mini-arm.h: Enable IMT for full aot.
4559         
4560         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4561         arch doesn't support it.
4562
4563         * mini.c (mini_init): Don't disable IMT for full aot if the
4564         architecture supports it.
4565
4566         * mini.h (MonoAotTrampoline): New enum containing the different types
4567         of 'numerous' trampolines.
4568         (MONO_AOT_FILE_VERSION): Bump this.
4569
4570         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4571         static rgctx trampolines. Add support for full-aot IMT thunks.
4572
4573         * mini-amd64.h: Enable IMT for full aot.
4574
4575         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4576         to exclude tests belonging to a category.
4577
4578         * generics.cs: Mark some tests with a !FULLAOT category.
4579
4580         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4581         generics tests.
4582
4583 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4584
4585         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4586         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4587         (emit_plt): Fix a warning.
4588
4589 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4590
4591         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4592         back into aot-compiler.c to a place where the other functions shared by
4593         the runtime and aot compiler are.
4594         
4595         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4596         as done previously, instead of in MonoAotFileInfo, since pointers might have
4597         alignment requirements.
4598
4599         * mini.h: Bump AOT file format version.
4600
4601 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4602
4603         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4604         that is used at runtime from the aot-compiler.c, this makes it
4605         work on setups that remove the AOT compiler from the output
4606         image. 
4607
4608 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4609
4610         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4611         PPC.
4612
4613         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4614
4615         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4616
4617         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4618         stuff to mono_arch_decompose_long_opts ().
4619         (mono_decompose_opcode): Remove some dead code.
4620
4621 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4622
4623         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4624         cmethod can be null for quite a some reasons.
4625
4626 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4627
4628         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4629
4630 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4631
4632         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4633
4634 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4635
4636         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4637         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4638         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4639         calls returning structures by addr on amd64.
4640
4641         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4642
4643         * iltests.il.in: Restructure the tail call tests a bit.
4644         
4645 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4646
4647         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4648         for virtual methods too.
4649
4650 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4651
4652         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4653         due to regression in verifying System.dll.
4654
4655 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4656
4657         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4658         in dynamic methods.
4659
4660         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4661         instances.
4662
4663         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4664         g_str_hash () which can change.
4665
4666         * driver.c (mini_regression): Disable optimizations not supported by
4667         the cpu. Fixes #500019.
4668
4669         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4670         build.
4671
4672 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4673
4674         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4675         to the latest LLVM code.
4676
4677 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4678
4679         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4680
4681 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4682
4683         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4684         x86/amd64.
4685
4686         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4687         no longer saving offsets, so just save the patch types along with the other
4688         info.
4689         * aot-runtime.c (load_patch_info): Update after the changes to 
4690         encode_patch_list ().
4691         (decode_got_entry): Removed, merged into load_patch_info ().
4692         (is_shared_got_patch): Removed, call the same function from
4693         aot-compiler.c.
4694
4695         * mini.h: Bump aot file format version.
4696         
4697         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4698         half-finished no-dlsym code.
4699
4700         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4701         option.
4702
4703         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4704         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4705
4706 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4707
4708         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4709         buffer length to work with AOT code.
4710
4711         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4712         ldfld/stfld opcodes.
4713
4714         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4715         as it is not used.
4716
4717         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4718
4719         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4720
4721         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4722         LLVM API.
4723
4724         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4725         if needed. Don't decompose long operations when using llvm.
4726
4727 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4728
4729         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4730         PAGESIZE constant.
4731
4732         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4733
4734 2009-05-03  Martin Baulig  <martin@ximian.com>
4735
4736         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4737         mono_debugger_insert_method_breakpoint() since the class init
4738         handler we're inserting at the top of the method already gives us
4739         a notification.
4740
4741 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4742
4743         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4744         to mono_arch_decompose_long_opts () for x86 and arm.
4745
4746 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4747
4748         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4749         TARGET_AMD64 here.
4750
4751 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4752
4753         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4754         JIT code.
4755
4756 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4757
4758         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4759         number of trampolines used in full-aot mode.
4760
4761         * aot-compiler.c: Add an ntrampolines option to set the number of 
4762         trampolines emitted in full-aot mode.
4763
4764 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4765
4766         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4767         a volatile load. Get rid of get_tempname (), llvm assigns names
4768         automatically.
4769
4770         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4771         builder function.
4772
4773         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4774         a value.
4775
4776         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4777         level 1.
4778
4779         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4780         to the same register as a fixed sreg2. Fixes #497271.
4781
4782         * iltests.il.in: Add a new test.
4783
4784 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4785
4786         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4787         stack, since pushes complicate exception handling.
4788
4789         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4790         the stack if they are passed using moves.
4791
4792         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4793
4794         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4795         when using llvm.
4796
4797         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4798         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4799         of FMOVE if it is an R4.
4800
4801 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4802
4803         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4804
4805         * mini.h (LLVMCallInfo): New structure to store calling convention 
4806         information for the LLVM back end similar to the CallInfo structures in 
4807         the back-ends.
4808
4809         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4810         call information in a format usable by LLVM.
4811         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4812
4813         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4814         mono_llvm_emit_call () when compiling using LLVM.
4815
4816         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4817         comments to all functions. Fix memory leaks. Add a public init/cleanup
4818         function.
4819
4820         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4821
4822         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4823         mono_array_new_va () jit icall.
4824         
4825 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4826
4827         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4828         multiple machine description files to be specified.
4829         * mini-ops.h: fixes for cross-compilation.
4830
4831 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4832
4833         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4834         some porting work.
4835
4836 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4837
4838         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4839         to prevent asserts in various passes. Fixes #497220.
4840
4841 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4842
4843         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4844         a racy assert.
4845
4846         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4847         table to avoid duplicates.
4848
4849         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4850         
4851         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4852         option is used.
4853
4854 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4855
4856         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4857         is for method or field access.
4858
4859 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4860
4861         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4862         a Value to stdout.
4863
4864         * mini-llvm.c (mono_llvm_emit_method): Use it.
4865         
4866         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4867         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4868         on volatile values.
4869
4870         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4871         synchronized methods.
4872
4873         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4874
4875         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4876
4877         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4878         OP_LOADI8_MEM.
4879
4880         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4881         allowing some options to be set dynamically.
4882
4883 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4884
4885         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4886         unconditional branch.
4887
4888         * mini.h (MonoTrampolineType): Add new trampoline type 
4889         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4890         compiled code.
4891
4892         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4893         function.
4894
4895         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4896         creation function.
4897
4898         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4899         is enabled. Instead, use the llvm vcall trampoline.
4900         
4901         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4902
4903         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4904         
4905         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4906         functions.
4907
4908         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4909         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4910
4911         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4912         OP_IA64_CSET opcode.
4913
4914         * mini.c: Fix a warning.
4915
4916         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4917         THROW to the appropriate llvm type.
4918
4919 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4920
4921         * mini.c (mini_method_compile): Add statistics for methods JITted
4922         with/without LLVM.
4923
4924 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4925
4926         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4927         OP_IA64_CMP_<cond>_IMM opcodes.
4928
4929 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4930
4931         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4932         corlib exceptions.
4933
4934         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4935         correctly.
4936
4937         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4938         GENERICINST.
4939
4940 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4941
4942         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4943
4944 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4945
4946         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4947         support.
4948
4949         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4950         rgctx invoke trampolines for x86.
4951
4952         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4953         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4954         (mono_arch_get_vcall_slot): Simplify this.
4955
4956 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4959         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4960
4961 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4962
4963         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4964         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4965
4966         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4967
4968         * liveness.c (visit_bb): Remove a needless assert.
4969
4970 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4973         full aot support to the arch specific code.
4974
4975         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4976
4977         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4978
4979         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4980         
4981         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4982         collect information about the delegate invoke impl trampolines.
4983
4984         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4985         to save trampolines during full-aot mode.
4986
4987         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
4988         creation function which returns a trampoline which sets the rgctx
4989         argument.
4990         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
4991         wrapper if possible.
4992         (mono_delegate_trampoline): Ditto.
4993
4994         * mini.c (mono_jit_runtime_invoke): Ditto.
4995
4996         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
4997         
4998         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
4999
5000         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5001         
5002 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5003
5004         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5005         just setting the opcode to OP_NOP.
5006
5007 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5008
5009         * mini.c (mini_method_compile): Put the last change inside an 
5010         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5011         
5012         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5013         and extend live ranges to cover the whole method when using xdb.
5014
5015         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5016         do it in the trampolines.
5017
5018         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5019         needed.
5020
5021         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5022         
5023         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5024         call code in full-aot mode since IMT is disabled there.
5025         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5026         new JIT no longer has that restriction.
5027
5028         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5029
5030         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5031         a more compact format.
5032         (mono_aot_wrapper_name): New function to return a unique name for a
5033         wrapper method, also used by the AOT runtime.
5034
5035         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5036         aot-compiler.c.
5037
5038         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5039         when a ICollection<T> etc is encountered.
5040         (add_generic_instances): Process method arguments/locals too.
5041         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5042         trampoline names.
5043
5044         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5045         
5046 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5047
5048         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5049
5050         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5051
5052         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5053         representing the result of the decomposition. Nullify instructions
5054         instead of setting them to OP_NOP since nops can't have registers
5055         set.
5056
5057 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5058
5059         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5060         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5061         info. Strip 'mapping symbols' on ARM.
5062
5063         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5064         
5065         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5066         this with the native genmdesc.
5067
5068 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5069
5070         * aot-runtime.c:  Fixing the MSVC build.
5071
5072         Code is contributed under MIT/X11 license.
5073
5074 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5075
5076         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5077         JITted code depends on it.
5078
5079 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5080
5081         * aot-compiler.c: Use new MonoGenericParam accessors.
5082
5083 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5084
5085         Reduce memory usage and improve correctness wrt MonoGenericParam
5086         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5087         handing.  Avoid allocating MonoGenericParams, but use the ones in
5088         the container itself.
5089
5090 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5091
5092         * tasklets.c: Return exceptions in the out argument.
5093
5094 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5095
5096         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5097         opcode. Use pointer types in more places instead of casting them to 
5098         integers.
5099
5100         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5101         optimizations.
5102         (mono_llvm_optimize_method): New helper function to optimize a method.
5103
5104         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5105         widening code so it could be called from more places.
5106         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5107         code paths in the call opcodes.
5108
5109 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5110
5111         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5112
5113 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5114
5115         * dwarfwriter.c: Use _ to separate class name 
5116         components as gdb can't handle '.'. Represent reference variables
5117         as 'class <NAME>&'.
5118         
5119         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5120
5121         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5122         
5123         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5124
5125         * gc-test.cs: New file with GC stack marking tests.
5126         
5127         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5128         negative numbers for vfp.
5129
5130         * basic-float.cs: Add a test.
5131         
5132 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5133
5134         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5135
5136 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5137
5138         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5139         part of tasklet/continuation support.
5140
5141 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5142
5143         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5144         amd64 opcodes inside an ifdef.
5145
5146         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5147         of complex types.
5148         
5149         * dwarfwriter.c (emit_type): Emit the class info for classes.
5150
5151 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5152
5153         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5154
5155         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5156
5157         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5158
5159         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5160
5161 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5162
5163         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5164
5165         * mini-llvm.c: Update comments.
5166
5167         * mini.h (COMPILE_LLVM): New macro.
5168
5169         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5170
5171         * ssa.c (mono_ssa_compute): Ditto.
5172         
5173         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5174         the unwind ops from a DWARF FDE.
5175
5176         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5177         methods by extracting the dwarf unwind ops from the unwind info generated
5178         by LLVM.
5179         
5180         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5181         calls.
5182
5183         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5184         addressing modes.
5185
5186 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5187
5188         * Makefile.am (llvm_sources): Enable this.
5189
5190         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5191         failing back to the JIT if something cannot be handled.
5192
5193         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5194         compiling with LLVM.
5195
5196         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5197         compiling with LLVM.
5198
5199         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5200         compiling with LLVM.
5201
5202         * mini-ops.h: Add a few opcodes needed by LLVM.
5203
5204         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5205         has no unwind info.
5206
5207         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5208         backend.
5209
5210         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5211
5212         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5213
5214 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5215
5216         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5217         ridiculously large methods.
5218
5219 2009-03-31  Martin Baulig  <martin@ximian.com>
5220
5221         * debug-debugger.c (debugger_remove_breakpoint): Call
5222         mono_debugger_remove_class_init_callback ().
5223
5224 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5225
5226         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5227         right before emitting code, not at the start.
5228
5229         * mini.c (mono_postprocess_patches): Extract this into a separate function
5230         from mono_codegen ().
5231
5232         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5233         byref types correctly.
5234
5235 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5236
5237         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5238         by the last change.
5239
5240 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5241
5242         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5243         indirect calls, this avoids problems where get_vcall_slot () would get
5244         confused by the native code for the instruction preceeding the call.
5245         (mono_arch_get_vcall_slot): Simplify this.
5246         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5247
5248         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5249         register allocator now seems to depend on them instead of the data in
5250         cpu-<ARCH>.md.
5251
5252         * mini.c (mini_method_compile): Throw the correct type of exception if
5253         mono_method_get_header () fails because of a loading error.
5254
5255 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5256
5257         * mini.c (mini_method_compile): Clear the loader error if the method
5258         header cannot be decoded.
5259
5260         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5261         interface methods on proxies correctly.
5262
5263         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5264         this argument for vtype methods. Add precise liveness info for arguments.
5265
5266         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5267         LIVERANGE_START/END opcodes.
5268
5269         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5270         for arguments and values in registers.
5271
5272 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5273
5274         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5275         return a valuetype. Fixes #487518.
5276
5277         * iltests.il: Add a test.
5278         
5279         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5280
5281         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5282         closed over a null reference correctly.
5283
5284 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5285
5286         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5287
5288 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5289
5290         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5291         allocated to the same registers as fixed sregs.
5292
5293 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5294
5295         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5296         ATOMIC_CAS_IMM ops.
5297
5298         * method-to-ir.c: Handle more cases for
5299         Interlocked.CompareExchange.
5300
5301         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5302         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5303         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5304
5305 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5306
5307         * aot-runtime.c (decode_method_ref): Fix a warning.
5308
5309         * unwind.c (mono_unwind_frame): Ditto.  
5310
5311 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5312
5313         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5314         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5315
5316         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5317         fix the handling of large values in the ALU_PC_G0_NC relocation.
5318
5319 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5320
5321         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5322
5323 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5324
5325         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5326         ops.
5327
5328 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5329
5330         * method-to-ir.c: MINI_OP3 needs a comma.
5331
5332         * method-to-ir.c, mini.h, mini.c: Remove
5333         mono_init_op_sreg_counts ().
5334
5335 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5336
5337         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5338         OP_JMP.
5339         
5340         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5341         assertion.
5342
5343         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5344
5345         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5346         code somewhat.
5347
5348 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5349
5350         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5351         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5352         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5353         operations.
5354
5355 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5356
5357         * driver.c: Change location of gc_wrapper.h.
5358
5359         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5360         inside finally clauses correctly. Fixes #485721.
5361
5362         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5363         after the change above.
5364
5365         * exceptions.cs: Add a test.
5366         
5367 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5370
5371         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5372         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5373         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5374
5375         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5376         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5377
5378 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5379
5380         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5381         Simplify logic for ensure_method_is_allowed_to_call_method. 
5382         Handle wrappers on callers.
5383
5384 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5385
5386         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5387         them don't run yet.
5388
5389         * basic-simd.cs: Fix the names of some test methods.
5390
5391 2009-03-18  Geoff Norton  <gnorton@novell.com>
5392
5393         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5394
5395 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5396
5397         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5398
5399 2009-03-17  Jb Evain  <jbevain@novell.com>
5400
5401         * driver.c: remove now uneeded call to mono_gc_base_init before
5402         mono_profiler_load.
5403
5404 2009-03-17  Jb Evain  <jbevain@novell.com>
5405
5406         * dwarfwriter.c (token_handler): handle more cases.
5407
5408 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5409
5410         * method-to-ir.c: Remove more dead code (that was required only
5411         because of method_is_safe). Fix compiler warnings.
5412
5413 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5414
5415         * method-to-ir.c: Remove unneeded/useless method_is_safe
5416         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5417
5418 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5419
5420         * mini.c (mini_method_compile): Print the method been compiled with
5421         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5422         for people not familiar with the runtime.
5423
5424 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5425
5426         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5427         a managed object which is later put into a GList. Return its class instead.
5428
5429         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5430         stack slots when using sgen.
5431
5432 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5433
5434         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5435
5436 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5439         > so it works on the first vreg as well.
5440
5441 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5442
5443         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5444         trigger randomly.
5445
5446         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5447         
5448         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5449         implement GArray.
5450
5451 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5452
5453         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5454         native->IL offset mapping.
5455
5456 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5457
5458         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5459
5460         * basic.cs: Add a test.
5461
5462 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5463
5464         * mini-x86.c (mono_arch_output_basic_block): Use different
5465         registers in case the ones we want to overwrite are used by the
5466         other operand.  Fixes regression in #480807.
5467
5468 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5469
5470         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5471
5472         * dwarfwriter.c (emit_line_number_info): The line number info for
5473         IL code was off by one. Fix that.
5474
5475         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5476         stack.
5477
5478 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5479
5480         Contributed under the terms of the MIT/X11 license by Steven
5481         Munroe <munroesj@us.ibm.com>.
5482
5483         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5484         Fixes #483462.
5485
5486 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5487
5488         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5489         as well.
5490
5491 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5492
5493         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5494         the delegate ctor handling code. Fixes #482638.
5495         
5496         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5497         #481458.
5498
5499         * iltests.il.in: Add a test.
5500         
5501         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5502         mini-posix.c.
5503
5504 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5505
5506         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5507         is shared generic code, return the trampoline, even if the method
5508         has already been compiled.  Fixes #479763.
5509
5510         * mini.c, mini.h: New function
5511         mono_jit_find_compiled_method_with_jit_info() which is the same as
5512         mono_jit_find_compiled_method() but also returns the jit info.
5513
5514 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5515
5516         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5517         for methods which actually have one.  For all other methods, make
5518         sure the this argument var is live the whole method.
5519
5520         * mini.c (mini_method_compile): Every shared method has a
5521         this/vtable/mrgctx info.  Fixes #480807.
5522
5523 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5524
5525         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5526         generic/imt thunks where some entries branch through the vtable,
5527         while other entries branch directly.
5528
5529 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5530
5531         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5532
5533         * mini-windows.c: Ditto.
5534         
5535         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5536         ctors.
5537
5538 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5539
5540         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5541         down an assert.
5542
5543 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5544
5545         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5546         #481403.
5547
5548 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5549
5550         * exceptions-x86.c: Include debug-mini.h - fixes build.
5551
5552 2009-03-04  Martin Baulig  <martin@ximian.com>
5553
5554         * debug-mini.c: Clean up the exception API and add documentation.
5555         (mono_debugger_handle_exception): New public method; this is
5556         called when throwing an exception or encountering an unhandled one.
5557         (mono_debugger_call_exception_handler): Formerly known as
5558         mono_debugger_handle_exception(); this is used to tell the
5559         debugger that we're about to invoke an exception handler.
5560
5561 2009-03-04  Martin Baulig  <martin@ximian.com>
5562
5563         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5564         ../metadata/mono-debug-debugger.c; save and reset exception state.
5565
5566 2009-03-02  Martin Baulig  <martin@ximian.com>
5567
5568         * debug-mini.c: Moved the debugger exception handling here from
5569         ../metadata/mono-debug-debugger.c.
5570
5571         * debug-mini.h
5572         (MonoDebuggerExceptionAction): New exception typedef.
5573
5574         * debug-mini.c
5575         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5576
5577         * exceptions-amd64.c
5578         (mono_amd64_throw_exception): Use the new debugger exception
5579         handling code.
5580
5581         * mini-exceptions.c
5582         (mono_handle_exception_internal): Don't call
5583         mono_debugger_unhandled_exception() here.
5584
5585 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5586
5587         * mini.c aot-compiler.c: Update after the changes to 
5588         mono_marshal_get_runtime_invoke ().
5589
5590         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5591         Virtual generic methods might not have method->slot set, work around
5592         that.
5593
5594         * generics.cs: Add a test.
5595
5596 2009-03-02  Geoff Norton  <gnorton@novell.com>
5597
5598         * mini.c:
5599         * driver.c: Allow signal chaining of SIGFPE as well.
5600
5601 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5602
5603         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5604         this since it now receives the method not its generic context in the
5605         IMT reg.
5606
5607         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5608         generic/imt thunks where some entries branch through the vtable, while
5609         other entries branch directly.
5610
5611         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5612
5613         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5614         support for interface methods as well.
5615
5616         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5617         using the normal IMT thunks.
5618
5619         generics.cs: Add new tests.
5620         
5621         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5622         the generic inst to the generic imt thunks. This fixes AOT support, 
5623         improves consistency with the normal IMT thunks, and makes it easier to
5624         add support for interface generic virtual methods later.
5625
5626         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5627         
5628 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5629
5630         * driver.c (mono_set_signal_chaining): New public API function to enable
5631         signal chaining on POSIX platforms.
5632
5633         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5634         (si@lindenlab.com) to implement signal chaining. The original patch was
5635         contributed under the MIT X/11 license:
5636         https://bugzilla.novell.com/show_bug.cgi?id=318894
5637
5638 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5639
5640         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5641         too until it can be made to run on amd64.
5642
5643 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5644
5645         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5646         to  get_generic_context_from_code () + get_call_info () if possible.
5647
5648 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5649
5650         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5651         suspend-on-sigsegv functionality.
5652
5653         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5654         to suspend when a native SIGSEGV is received. This is useful for debugging
5655         crashes which don't happen under gdb, since a live process contains more
5656         information than a core file.
5657
5658         * mini-exceptions.c (mono_print_thread_dump): Use 
5659         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5660
5661         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5662
5663         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5664         
5665         * basic-float.cs: Disable the tests which currently fail on amd64.
5666
5667         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5668         value to mono_arch_patch_callsite () to fix crashes.
5669         
5670         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5671
5672 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5673
5674         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5675         nop code by patching the call address to point to the nullified class init
5676         trampoline, as the former does not seem to be safe on SMP machines.
5677
5678 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5679
5680         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5681         they were wrong.
5682
5683 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5684
5685         * basic-float.cs basic-calls.cs: Fix warnings.
5686
5687 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5688
5689         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5690         correct frame pointer in the LMF.  Should fix #478394.
5691
5692 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5693
5694         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5695
5696         * image-writer.c: Make the binary writer less verbose.
5697
5698 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5699
5700         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5701         are called from runtime invoke wrappers.
5702
5703 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5704
5705         * cpu-ppc.md (store_memindex): Increase the size of this.
5706
5707 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5708
5709         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5710
5711         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5712
5713         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5714         OP_LCONV_TO_R_UN.
5715
5716         Last fix for of #467201.
5717
5718
5719 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5720
5721         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5722
5723         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5724         and long_conv_to_r8_2:
5725
5726         Fixed part of #467201.
5727
5728 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5729
5730         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5731
5732         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5733         conversion to 32 bits.
5734
5735         * cpu-x86.md: Increase the size of int_conv_to_r4.
5736
5737         * basic-float.cs: Add a test for this.
5738
5739         Fixed part of #467201.
5740
5741 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5742
5743         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5744
5745         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5746         conversion to 64 bits.
5747
5748         * basic-float.cs: Add a test for this.
5749
5750         Fixed part of #467201.
5751
5752 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5753
5754         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5755
5756         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5757         This behavior is compatible with MS.
5758
5759         * iltest.il.in: Add a test for this.
5760
5761         Fixed part of #467201.
5762
5763 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5764
5765         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5766
5767         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5768         change the precision of the value.
5769
5770         * cpu-x86.md: Define len for float_conv_to_r4.
5771
5772         * basic-float.cs: Add a test for this.
5773
5774         Fixed part of #467201.
5775
5776 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5777
5778         * mini.c: Adjust locking order to the new semantics where the loader lock
5779         comes first.
5780
5781 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5782
5783         * aot-runtime.c:
5784         * mini-amd64.c:
5785         * mini-arm.c:
5786         * mini-ia64.c:
5787         * mini-mips.c:
5788         * mini-ppc.c:
5789         * mini-sparc.c:
5790         * mini-trampolines.c:
5791         * mini-x86.c:
5792         * mini.c:
5793         * tramp-alpha.c:
5794         * tramp-amd64.c:
5795         * tramp-arm.c:
5796         * tramp-hppa.c:
5797         * tramp-ia64.c:
5798         * tramp-mips.c:
5799         * tramp-ppc.c:
5800         * tramp-s390.c:
5801         * tramp-s390x.c:
5802         * tramp-sparc.c:
5803         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5804
5805 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5806
5807         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5808         as it is incorrect.
5809
5810 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5811
5812         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5813         for cctors if needed.
5814
5815 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5816
5817         * mini-ppc.c: Fix build on Darwin.
5818
5819 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5820
5821         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5822         version instead of 3 as valgrind doesn't like version 3.
5823
5824         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5825
5826         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5827         usable for hashing methods.
5828         (emit_extra_methods): Use the new hash to avoid putting every method in the
5829         same hash bucket.
5830
5831         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5832
5833         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5834         whenever a method ref could match a method.
5835         
5836         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5837         test to fail.
5838         
5839         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5840         methods refs.
5841
5842         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5843
5844         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5845         the encoding buffer.
5846
5847         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5848         mono_method_get_header () on inflated methods as an optimization.
5849
5850 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5851
5852         * ssa.c (fold_ins): Fix another crash if the instruction following the
5853         switch was optimized away.
5854
5855 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5856
5857         Contributed under the terms of the MIT/X11 license by Steven
5858         Munroe <munroesj@us.ibm.com>.
5859
5860         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5861
5862 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5863
5864         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5865         around the mono_domain_alloc calls, it is now done by the functions
5866         themselves.
5867
5868         * aot-compiler.c (compile_method): Only add wrappers referenced by
5869         the method if compiling with full AOT.
5870         (mono_compile_assembly): Error out if --aot=full is specified on
5871         a platform where it is not supported.
5872
5873         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5874         on ARM too.
5875
5876         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5877         AOT support.
5878
5879         * aot-runtime.c (load_named_code): Handle 
5880         mono_arm_throw_exception_by_token.
5881
5882         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5883
5884         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5885         unaligned.
5886
5887         * Makefile.am (fullaotcheck): Exit if a test fails.
5888
5889         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5890         on ARM.
5891         (mono_compile_assembly): Handle the assembler failing.
5892
5893         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5894         accepting subsections of .bss.
5895
5896         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5897         was optimized away.
5898
5899         * aot-compiler.c: Remove some unused includes.
5900         
5901         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5902         now in MonoImageWriter.
5903
5904         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5905         code sequence which matches a non-virtual call. Fixes #472654.
5906
5907 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5908
5909         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5910         xdebug code.
5911         
5912         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5913         use the image/dwarf writers directly.
5914
5915         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5916         field.
5917
5918         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5919         MonoDwarfWriter.
5920
5921         * image-writer.h: Fix some typos.
5922
5923         * dwarfwriter.h dwarfwriter.c: New files.
5924         
5925         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5926         separate module.
5927
5928         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5929         argument to return unwind info.
5930
5931         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5932
5933         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5934         
5935         * aot-runtime.c (decode_method_ref): Add a case for 
5936         MONO_AOT_METHODREF_WRAPPER_NAME.
5937
5938         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5939         for AOT.
5940
5941         * aot-compiler.c (encode_method_ref): Use the new constants.
5942
5943         * aot-runtime.c (decode_method_ref): Ditto.
5944
5945         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5946         be compiled, not the icall itself.
5947
5948 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5949
5950         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5951         using decode_method_ref ().
5952
5953         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5954         convert it to an in32. Fixes #475859.
5955
5956         * arrays.cs: Add a test.
5957
5958 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5959
5960         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5961         OP_LCONV_TO_U2.
5962
5963         * basic-long.cs: Add a test.
5964
5965 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5966
5967         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5968         remove the frame pointer in leaf methods which don't receive any
5969         arguments, don't throw exceptions and don't do dynamic stack
5970         allocations.
5971
5972 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5973
5974         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5975         the fail_tramp changes. Hopefully fixes #475132.
5976
5977 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5978
5979         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5980         instead of mono_metadata_signature_dup_full.
5981
5982 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5983
5984         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5985         for processing jump tables. Fixes #473787.
5986
5987 2009-02-11  Mark Probst  <mark.probst@gmail.com>
5988
5989         * mini-generic-sharing.c: mini_method_get_context() just calls
5990         mono_method_get_context_general() now.
5991
5992         * mini.c, mini.h: Moved get_object_generic_inst(),
5993         construct_object_context_for_method() and
5994         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
5995
5996 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
5997
5998         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
5999         basic block fell through to its successor bblock without a branch. Fixes
6000         #474718.
6001
6002         * iltests.il.in: Add a test.
6003         
6004         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6005         (can_encode_patch): We can now handle arrays of generic parameters and
6006         array methods.
6007
6008         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6009
6010         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6011         the AOT file to avoid some #ifdefs in aot-runtime.c
6012
6013         * mini.h: Bump AOT file format version.
6014
6015 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6016
6017         * Makefile.am (fullaotcheck): Make this run the tests.
6018
6019         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6020
6021 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6022
6023         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6024         individually.  Fixes #473482.
6025
6026 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6027
6028         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6029
6030 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6031
6032         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6033         (mono_compile_assembly): Hush compile warnings about
6034         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6035         code path.
6036
6037 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6038
6039         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6040
6041         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6042
6043         * aot-compiler.c: Fix arm support.
6044
6045         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6046         img_writer_emit_unset_mode () function.
6047
6048         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6049         (mono_unwind_get_dwarf_pc_reg): Ditto.
6050
6051         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6052         Move almost all platform specific code to a set of arch_ functions, 
6053         and document them to ease porting.
6054         
6055         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6056
6057         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6058
6059         * aot-compiler.c: Extract the image writing functionality into a separate
6060         module to reduce the size of this file.
6061
6062 2009-02-09  Geoff Norton  <gnorton@novell.com>
6063
6064         * mini-s390.c: Fix the signature of emit_sig_cookie.
6065
6066 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6067
6068         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6069
6070         * aot-runtime.c (is_shared_got_patch): Ditto.
6071
6072         * aot-runtime.c (load_named_code): Cope with the fact that 
6073         decode_got_entry () won't decode the patch fully if its corresponding got
6074         entry is already filled.
6075         
6076         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6077         Initialize *ji.
6078         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6079
6080         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6081         as the moving pointer instead of 'buf' for consistency with the rest of the
6082         codebase.
6083         (mono_arch_create_monitor_exit_trampoline): Ditto.
6084
6085         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6086         generic_class_init trampolines.
6087         (add_generic_class): Extract some code from add_generic_instances () into a
6088         separate function so it can be called from other places too.
6089         (compile_method): Call add_generic_class () for the classes of inflated methods
6090         referenced by the method.
6091         (can_encode_patch): Allow references to generic parameters.
6092
6093         * aot-runtime.c: Add support the patches required by the new trampolines.
6094         
6095         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6096         support.
6097
6098         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6099         full-aot support.
6100
6101         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6102         this from get_throw_pending_exception, make the signature full aot compatible.
6103
6104         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6105
6106         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6107
6108         * exceptions.cs: Add a test.
6109
6110 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6111
6112         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6113         use the DWARF_DATA_ALIGN constant instead.
6114
6115         * exception-<ARCH>.c: Update after the above change.
6116
6117         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6118         dwarf unwinder.
6119
6120         * mini-arm.c: Enable the dwarf unwinder.
6121
6122         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6123         instead of mono_class_setup_vtable ().
6124
6125 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6126
6127         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6128         dwarf unwinder.
6129
6130         * mini-x86.h: Enable the dwarf unwinder.
6131
6132 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6133
6134         Fix mcs/tests/test-7.cs
6135         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6136         2009-02-03.
6137
6138 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6139
6140         * mini.c (print_jit_stats): Remove some unused statistics.
6141
6142 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6143
6144         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6145
6146 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6147
6148         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6149         the method we get from mono_object_get_virtual_method() because
6150         that function does it properly, now.
6151
6152 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6153
6154         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6155         opcodes. Fixes #472775.
6156
6157 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6158
6159         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6160         fact that mono_find_jit_info() sometimes returns the context
6161         corresponding to the jit info in new_ctx.  Fixes #472600.
6162
6163 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6164
6165         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6166         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6167         klass->enum_basetype directly.
6168
6169         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6170         enum subtypes.
6171
6172         * unwind.c: Avoid 0 sized arrays.
6173
6174 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6175
6176         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6177         size on systems with 64k pages. Fixes #471389.
6178
6179 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6180
6181         Contributed under the terms of the MIT/X11 license by Steven
6182         Munroe <munroesj@us.ibm.com>.
6183
6184         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6185         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6186         necessary.
6187
6188 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6189
6190         Contributed under the terms of the MIT/X11 license by Steven
6191         Munroe <munroesj@us.ibm.com>.
6192
6193         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6194         comparison fix.
6195
6196         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6197         The trampoline can be longer on PPC64.
6198
6199 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6200
6201         Contributed under the terms of the MIT/X11 license by Steven
6202         Munroe <munroesj@us.ibm.com>.
6203
6204         * mini-ppc.c: Compiler warning fixes and trivial code
6205         simplifications.
6206
6207 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6208
6209         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6210         ins->dreg which could be a hardware register, not a vreg.
6211
6212         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6213         
6214         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6215         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6216
6217         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6218         
6219         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6220         ->dreg, that is not the vreg we are looking for.
6221
6222         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6223
6224         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6225         LIVERANGE_END.
6226
6227         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6228         strange crashes.
6229
6230 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6231
6232         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6233
6234         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6235         the line diff is 0.
6236
6237         * aot-compiler.c: Add xdebug support on x86.
6238
6239         * unwind.c: Add x86 support.
6240         
6241         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6242         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6243
6244         * mini.c (mini_method_compile): Ditto.
6245         
6246         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6247         the variable index.
6248
6249         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6250         which mimic .push_section/.pop_section in GAS.
6251         
6252         * aot-compiler.c: Emit precise live range information for variables.
6253
6254         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6255
6256         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6257         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6258         them.
6259
6260         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6261         the live ranges of variables.
6262
6263         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6264         of the variable in terms of native offsets.
6265
6266 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6267
6268         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6269         
6270 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6271
6272         Contributed under the terms of the MIT/X11 license by Steven
6273         Munroe <munroesj@us.ibm.com>.
6274
6275         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6276         order (offset then base reg) for ppc_load_multiple_regs.
6277         (emit_save_saved_regs) Correct operand order for
6278         ppc_store_multiple_regs.
6279         (mono_arch_get_call_filter): Correct operand order for
6280         ppc_load_multiple_regs.
6281
6282         * mini-ppc.c (emit_memcpy): Fix operand order for
6283         ppc_load_reg_update and ppc_store_reg_update.
6284         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6285         (mono_arch_emit_epilog): Correct operand order for
6286         ppc_load_multiple_regs.
6287
6288         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6289         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6290
6291 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6292
6293         * cpu-ppc64.md: Fixed storer4_memindex length.
6294
6295 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6296
6297         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6298         line number info.
6299         
6300         * aot-compiler.c (emit_line_number_info): Optimize this.
6301
6302 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6303
6304         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6305         
6306         * aot-compiler.c: Add debug info for methods without debug info by
6307         emitting an IL file and having the line number info referencing that file.
6308
6309         * aot-compiler.c: Optimize the size of the generated line number info.
6310
6311         * aot-compiler.c: Emit line number info in xdebug mode.
6312
6313         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6314         million arguments.
6315
6316 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6317
6318         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6319
6320         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6321         is used.
6322
6323 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6324
6325         * basic-calls.cs: Test for the weird crash found on arm.
6326         
6327 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6328
6329         * cpu-arm.md: Increase the size of storer8_membase_reg and
6330         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6331
6332         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6333         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6334         reg to LR otherwise we'll be loading/storing from just the offset.
6335
6336 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6337
6338         Question: if we are storing gint32's inside the "*native_offset",
6339         should we change the signature to "gint32 *native_offset" to
6340         ensure that we do not have type definition problems?
6341         
6342         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6343         an int * as this is what the other function expects, causes
6344         problems with Freescale's compiler that defined int32_t to be a
6345         long and makes int incompatible 
6346
6347 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6348
6349         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6350         filename conflict with bjam.
6351
6352 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6353
6354         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6355         as it might use decomposed ops.
6356
6357 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6358
6359         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6360
6361         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6362         is defined.
6363
6364         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6365
6366         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6367         offsets.
6368
6369         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6370         way registers are stored in MonoContext on arm.
6371
6372         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6373         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6374
6375         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6376
6377         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6378
6379         * mini.c (mini_init): Register mono_isfinite.
6380
6381         * jit-icalls.c (mono_isfinite): New jit icall.
6382
6383         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6384         
6385         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6386         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6387         the parent frame.
6388
6389 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6390
6391         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6392         separate frame and stack pointers, so we must use FP to find the register
6393         spill area.
6394         The FP reg is retrieved from the MonoContext::regs array.
6395
6396 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6397
6398         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6399         as FPA requires it.
6400
6401 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6404         return R4 and R8 when not running under softfloat.
6405
6406         Fixes basic-calls.exe
6407
6408 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6409
6410         * mini-arm.c: Implement some overflow opcodes.
6411
6412 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6413
6414         * ssa.c: handle another alloca.h
6415
6416         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6417         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6418         MONO_ARCH_USE_SIGACTION. 
6419
6420         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6421         capability defines.
6422
6423         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6424
6425         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6426         PPC targets as sigaction does not exist on all platforms, define
6427         this on a per-platform basis.
6428
6429         Instead of erroring out if the platform is not defined, include
6430         mini-ppc-os.h, and expect that the OS specific setting provides
6431         the required information.   
6432
6433 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6434
6435         * aot-compiler.c: Fix --enable-minimal=aot.
6436
6437 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6438
6439         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6440         previous change.
6441
6442 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6443
6444         * exceptions-arm.c: Fix warnings.
6445
6446         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6447         ARM.
6448
6449         * mini-x86.c: Fix --enable-minimal=jit build.
6450
6451         * mini.c: Really fix --enable-minimal=jit build.
6452         
6453         * mini.c (construct_object_context_for_method): Move this outside
6454         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6455
6456         "Backported" of r124984 from 2.0 branch.
6457         
6458         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6459
6460         "Backport" of r124977 + r124978 from 2.0 branch.
6461         
6462         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6463         to avoid calling mono_exception_from_token () from the throw trampoline.
6464         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6465         for throwing corlib exceptions, this fixes full-aot support for corlib
6466         exceptions.
6467
6468         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6469
6470 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6471
6472         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6473         part of the changes to split the code in mini into operating
6474         system specific files.
6475
6476         This patch was done by copying mini.c to the respective files to
6477         preserve SVN history.
6478
6479 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6480
6481         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6482
6483 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6484
6485         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6486         remoting-invoke-with-check wrappers of shared methods.
6487
6488         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6489
6490 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6491
6492         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6493         optimization if the top of stack is the last instruction in the
6494         bblock.  Otherwise it might have been used after its definition.
6495         Fixes #469742.
6496
6497 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6498
6499         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6500         method as well when get_vcall_slot () fails to match a code sequence.
6501
6502         * mini-arm.c: Fix the android build, which doesn't have
6503         __aeabi_read_tp.
6504
6505 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6506
6507         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6508         the s390x build.
6509
6510 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6511
6512         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6513
6514 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6515
6516         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6517         and put its id into jinfo->used_regs. This is only used on amd64,
6518         which is currently the only platform generating unwind info.
6519
6520         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6521         the dwarf unwinder. This is required to correctly handle async exceptions
6522         like thread abort and stack overflows, which can happen while a method
6523         is in the middle of its prolog or epilog.
6524         
6525         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6526         the unwind info belonging to an AOTed method.
6527
6528         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6529         into cfg->unwind_ops.
6530         
6531         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6532
6533         * mini.c (mini_init): Call mono_unwind_init ().
6534         (mini_cleanup): Call mono_unwind_cleanup ().
6535
6536         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6537         unwind info to be shared between methods.
6538
6539         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6540         saved in the LMF.
6541
6542         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6543         get_throw_pending_exception () to avoid initialization races.
6544
6545         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6546         mono_arch_exceptions_init () function.
6547
6548         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6549
6550 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6551
6552         * mini.c (mono_get_domain_intrinsic): New helper function.
6553         (mono_get_thread_intrinsic): Ditto.
6554
6555         * mini-arm.c mini-ia64.c: Use the new helper functions.
6556         
6557         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6558         the last constrained_call change, since it is needed in the non-AOT
6559         case as well.
6560
6561         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6562         
6563         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6564         mono_get_lmf_addr () on arm eabi linux.
6565
6566 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6567
6568         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6569         code sequence which matches a non-virtual call.
6570
6571 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6572
6573         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6574         stack pointer (r1).
6575
6576 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6577
6578         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6579         runtime-invoke wrappers, since they are also shared based on signature.
6580
6581 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6582
6583         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6584         info from the (correct) context.
6585
6586 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6587
6588         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6589         
6590         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6591         using dwarf unwinding info. Not yet used.
6592
6593         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6594
6595 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6596
6597         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6598         descriptors.
6599
6600         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6601         special case and handle mono_arch_delegate_invoke_impl() returning
6602         function descriptors.
6603
6604         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6605         trampolines return function descriptors, too.
6606
6607 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6608
6609         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6610         out_of_line optimization.
6611
6612 2009-01-21  Martin Baulig  <martin@ximian.com>
6613
6614         * mini.h
6615         (MonoCompile): Added `disable_deadce_vars' to disable removing
6616         unused variables.
6617
6618         * mini.c
6619         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6620         inside the debugger.
6621
6622         * liveness.c (mono_analyze_liveness): Don't remove any unused
6623         variables if `cfg->disable_deadce_vars' is set.
6624
6625 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6626
6627         * method-to-ir.c: Only apply exception constructor optimization if
6628         the the method actually belongs to an exception class.  Fixes
6629         #467456.
6630
6631 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6632
6633         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6634         change inside a #ifdef __mono_ppc64__.
6635
6636         * aot-compiler.c (compile_method): Remove the previous limitation.
6637
6638         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6639         on type variables in AOTed code.
6640         
6641         * aot-compiler.c (compile_method): Skip generic methods having type 
6642         constraints on their generic parameters.
6643
6644         * aot-compiler.c (compile_method): Check for methods which cannot be
6645         encoded inside RGCTX_FETCH patches as well.
6646
6647         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6648         build.
6649
6650 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6651
6652         * method-to-ir.c: Force the vtable variable in shared generic code
6653         for the case that they might show up on a stack trace where they
6654         are needed.
6655
6656         * mini-exceptions.c: Save and use generic sharing info as well as
6657         IP in stack traces to resolve shared generic instantiations.
6658
6659 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6660
6661         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6662         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6663
6664 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6665
6666         * method-to-ir.c: Do generic sharing for array constructors.
6667
6668 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6669
6670         * mini-exceptions.c (mono_print_thread_dump): Add information
6671         about the thread state using wapi_current_thread_desc.
6672
6673 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6674
6675         * basic-simd.cs: Tests for the new constructors. 
6676
6677 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6678
6679         * mini-ops.h: Added OP_EXPAND_*
6680
6681         * cpu-x86.md: Same.
6682
6683         * mini-x86.c (mono_arch_output_basic_block): Same.
6684         
6685         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6686
6687 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6688
6689         * iltests.il.in: Add a test for #467385.
6690
6691 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6692
6693         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6694         thread been cleaned up is not the same currently in execution.
6695
6696         Fixes appdomain-unload crashes on windows, osx and linux variants
6697         without the __thread keyword.
6698
6699 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6700
6701         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6702         (koush@koushikdutta.com). Implement this for android.
6703
6704         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6705         begins with a digit.
6706
6707         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6708         mono_marshal_get_write_barrier ().
6709
6710 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6711
6712         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6713         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6714         that pass them on a register pair.
6715
6716         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6717         test was crashing due to that.
6718
6719 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6720
6721         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6722         trampoline code. Include ucontext.h only if available.
6723
6724 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6725
6726         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6727         and doesn't check whether it's sharable, like it was before
6728         removing the shared generics hash.  This brings IronPython
6729         performance back to what it was before that change.
6730
6731 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6732
6733         * method-to-ir.c: Handle delegate invocation optimization earlier,
6734         otherwise it would be handled (much more slowly) by the
6735         final/sealed optimization.
6736
6737 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6738
6739         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6740         domain is not set. Fixes #465864.
6741
6742 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6743
6744         * method-to-ir.c: Don't stop sharing of generic methods with catch
6745         clauses - we already handle those.
6746
6747 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6748
6749         * mini.c, mini.h: lookup_generic_method() is now
6750         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6751         making the shared_generics_hash obsolete.
6752
6753 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6754
6755         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6756         use the red zone.  Make room on the stack first and then use it,
6757         not the other way around.
6758
6759 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6760
6761         * mini.c (mini_init): Call mono_xdebug_init ().
6762
6763         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6764
6765 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6766
6767         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6768
6769         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6770         trampolines.
6771
6772         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6773         debug+unwind info for trampolines.
6774
6775         * mini.c (mono_create_unwind_op): New helper function.
6776
6777         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6778
6779 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6780
6781         * aot-compiler.c: Fix the build.
6782
6783 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6784
6785         * Makefile.am: Update dtrace-prelink.sh location.
6786
6787 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6788
6789         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6790         optimization. Fixes #464520.
6791
6792 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6793
6794         * mini-amd64.c : Adding code to save/restore non-volatile registers
6795            on Winx64.
6796
6797         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6798           registers on Winx64.
6799
6800         Contributed under MIT/X11 license.
6801
6802 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6803
6804         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6805         __GNUC_MINOR__ which can break when the major version changes.
6806
6807 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6808
6809         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6810
6811 2009-01-07  Geoff Norton  <gnorton@novell.com>
6812
6813         * helpers.c:  Allow mono -v -v -v to work on darwin.
6814
6815 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6816
6817         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6818           pattern. 
6819
6820         Contributed under MIT/X11 license.
6821
6822 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6823
6824         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6825         instead of directly accessing type->data.klass. Fixes #462016.
6826         (mono_allocate_stack_slots_full): Ditto.
6827
6828         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6829         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6830
6831         * aot-compiler.c (emit_plt): Fix ARM build.
6832
6833 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6834
6835         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6836         
6837         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6838         change.
6839
6840         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6841         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6842         #463357.
6843
6844         * iltests.il.in: Add a regression test.
6845
6846 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6847
6848         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6849
6850 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6851
6852         * basic-simd.cs: Add a regression test for #462457.
6853
6854 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6855
6856         * mini-ops.h: Add a definition of XPHI.
6857
6858         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6859
6860         * ssa.c (op_phi_to_move): Handle XPHI.
6861
6862         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6863
6864         Fixes #462457
6865
6866 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6867
6868         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6869
6870 2008-12-31  Geoff Norton  <gnorton@novell.com>
6871
6872         * mini-ppc.c: The prolog size allocated can be too small for darwin
6873         ppc32 under certain circumstances.  Also fix a small logic bug.
6874
6875 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6876
6877         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6878         while loading AOT methods.
6879
6880         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6881         since only the former is nulled out after a successful cast. This prevents
6882         crashes with rethrown exceptions when using --debug=casts.
6883
6884 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6885
6886         * mini.h: New macro for checking whether a method is final,
6887         i.e. whether the method or its class is marked final.
6888
6889         * method-to-ir.c: Use the new macro for all final-checks
6890         consistently.  Fixes the crash in the System.ServiceModel tests.
6891
6892 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6893
6894         * mini-exceptions.c (get_exception_catch_class): Corrected another
6895         overly strict assertion.
6896
6897 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6898
6899         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6900         Clobbering it is not allowed because the caller might use it as
6901         the vtable register in the interface call.
6902
6903 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6904
6905         * mini-exceptions.c (get_exception_catch_class): Corrected an
6906         overly strict assertion.
6907
6908 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6909         
6910         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6911
6912         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6913
6914         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6915
6916         * cpu-mips.md: correct lengths for certain long_ opcodes.
6917
6918         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6919
6920         * 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().
6921         
6922 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6923
6924         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6925         
6926 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6927         
6928         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6929         
6930 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6931
6932         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6933         next basic block.
6934         
6935 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6936
6937         * 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
6938
6939         * 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)
6940         
6941 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6942         
6943         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6944         
6945 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6946
6947         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6948         gshared code. Fixes #458947.
6949
6950         * generics.cs: Add a test.
6951
6952 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6953         
6954         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6955         
6956         * mini-mips.c: first pass n32 code generation.
6957
6958         * mini-mips.h: datatypes and defines for n32 support.
6959
6960         * exceptions-mips.c: first pass n32 code generation.
6961         
6962         * tramp-mips.c: first pass n32 code generation.
6963         
6964         * cpu-mips.md: add long_ opcodes.
6965         
6966 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6967
6968         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6969
6970         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6971         
6972         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6973         
6974         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6975
6976         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6977
6978         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6979
6980         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6981
6982         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6983
6984         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6985
6986 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6987
6988         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
6989
6990 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
6991
6992         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
6993
6994 2008-12-12  Mark Probst  <mark.probst@gmail.com>
6995
6996         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
6997         descriptors for helper functions directly in front of the code.
6998
6999 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7000
7001         * method-to-ir.c: Removed an unnecessary assertion.
7002
7003 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7004
7005         * method-to-ir.c: Merge SGEN changes from the old JIT.
7006
7007 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7008
7009         * driver.c (compile_all_methods_thread_main): Handle failure of
7010         mono_get_method ().
7011
7012 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7013
7014         * mini-ppc.c: Merged with mini-ppc64.c.
7015
7016         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7017
7018         * Makefile.am: Use the same sources for PPC and PPC64.
7019
7020         * mini-ppc64.c: Removed.
7021
7022 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7023
7024         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7025         code to mono_bb_is_fall_through.
7026         
7027         * branch-opts.c (mono_remove_critical_edges): Same.
7028
7029 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7030
7031         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7032         expect that an OP_BR_REG will be there.
7033
7034 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7035
7036         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7037         for the many branch ops. The original check miss OP_BR_REG.
7038
7039         Fixes #457574.
7040         
7041 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7042
7043         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7044
7045 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7046
7047         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7048         while holding the aot lock.
7049
7050 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7051
7052         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7053         
7054 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7055
7056         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7057           to release all runtime callable wrappers held by the runtime.
7058
7059         Contributed under MIT/X11 license.
7060
7061 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7062
7063         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7064           for Winx64.
7065
7066         Contributed under MIT/X11 license.
7067
7068 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7069
7070         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7071         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7072
7073 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7074
7075         * cpu-mips.md: fix ckfinite length
7076
7077         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7078         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7079         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7080         
7081 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7082
7083         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7084         
7085 2008-12-08  Geoff Norton  <gnorton@novell.com>
7086
7087         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7088         size by 8 bytes as well.
7089
7090 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7091
7092         * basic-simd.cs: Fix method names for Vector16b.
7093         
7094 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7095
7096         * basic-simd.cs: Fix method names for Vector16sb.
7097
7098 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7099
7100         * basic-simd.cs: Fix method names for Vector8us.
7101         
7102 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7103
7104         * basic-simd.cs: Fix method names for Vector8s.
7105         
7106 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7107
7108         * basic-simd.cs: Fix method names for Vector4ui.
7109
7110 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7111
7112         * basic-simd.cs: Fix method names for Vector2l.
7113
7114 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7115
7116         * basic-simd.cs: Fix method names for Vector2d.
7117
7118 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7119
7120         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7121         that are extension methods.
7122
7123 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7124
7125         * basic-simd.cs: Fix method names for Vector4f.
7126
7127 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7128
7129         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7130         as such. Fixes #456669.
7131
7132 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7133
7134         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7135         
7136 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7137
7138         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7139         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7140         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7141         (mips_adjust_stackframe): handle FP spills
7142                 
7143         * mini-ops.h: add mips_mtc1_s2
7144         
7145         * cpu-mips.md: add mips_mtc1_s2
7146         
7147 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7148
7149         * unwind.c: New file, move the unwind info encoding functions here from
7150         aot-compiler.c, so they could be used at runtime too.
7151
7152 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7153
7154         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7155         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7156         
7157 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7158
7159         * mini-mips.c: cleanup warnings
7160         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7161         (mips_adjust_stackframe): handle case of taking the address of stack locals
7162         
7163 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7164
7165         * aot-compiler.c: Implement a few functions missing from the asm writer.
7166         (emit_method_code): Only write symbols for methods when using the bin
7167         writer, since the assembler can't deal with the characters in our method
7168         names.
7169
7170         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7171
7172         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7173         call.
7174
7175         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7176         a bit to also restore %rax.
7177
7178 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7179
7180         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7181
7182 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7183
7184         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7185         arguments.
7186
7187 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7188
7189         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7190
7191         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7192         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7193
7194         * exceptions-ppc64.c: Removed.
7195
7196         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7197
7198 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7199
7200         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7201         tramp-ppc64.c.
7202
7203         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7204
7205         * tramp-ppc64.c: Removed.
7206
7207 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7208
7209         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7210         the TYPESPEC table.
7211
7212 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7213
7214         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7215
7216         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7217         mini-ppc.h instead of mini-ppc64.h.
7218
7219         * mini-ppc64.h: Removed.
7220
7221 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7222
7223         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7224         
7225         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7226         
7227 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7228
7229         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7230         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7231         code easier.
7232
7233 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7234
7235         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7236
7237 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7238
7239         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7240
7241 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7242
7243         * basic-simd.cs: Tests for operator == and != on Vector4f.
7244
7245 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7246
7247         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7248
7249         * simd-intrinsics.c: Kill useless enum.
7250
7251 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7252
7253         * cpu-mips.md: add long_conv_to_ovf_i4_2
7254         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7255
7256 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7257
7258         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7259         
7260         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7261
7262 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7263
7264         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7265         
7266 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7267
7268         * basic-simd.cs: Add tests for new methods.
7269
7270 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7271
7272         * simd-intrinsics.c: Add support for operator == and !=
7273         on Vector4(u)i.
7274
7275         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7276
7277 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7278
7279         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7280
7281 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7282
7283         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7284
7285         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7286         MONO_PATCH_INFO_ICALL_ADDR.
7287
7288         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7289
7290         * aot-compiler.c: Resurrect full-aot support.
7291
7292 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7293
7294         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7295         
7296 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7297
7298         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7299         
7300 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7301
7302         * basic-simd.cs: Fix tests to work under ppc.
7303         Remove tests for methods that will be removed.
7304
7305 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7306
7307         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7308         generic type (via a typedef or typeref) correctly.
7309
7310 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7311
7312         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7313         diagnose an assertion failure.
7314
7315 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7316
7317         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7318         Fix trampoline size.
7319
7320         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7321         conversion opcodes are implemented natively instead via emulation.
7322
7323 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7324
7325         * cpu-mips.md: remove mips_xori
7326
7327         * mini-ops.h:  remove mips_xori
7328
7329         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7330
7331         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7332         
7333         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7334         
7335 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7336
7337         * cpu-mips.md: fix instruction lengths.
7338
7339         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7340
7341         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7342
7343         * mini-ops.h: fix slti / sltiu op profiles.
7344         
7345 2008-12-02  Martin Baulig  <martin@ximian.com>
7346
7347         * method-to-ir.c (mono_method_to_ir): Disable debugging
7348         information for the init locals block to make the debugger stop
7349         after all locals have been initalized.
7350
7351 2008-12-02  Martin Baulig  <martin@ximian.com>
7352
7353         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7354         running inside the debugger.
7355
7356 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7357
7358         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7359         is enabled.
7360
7361         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7362         alu->alu imm optimization which only shows if deadce is disabled.
7363
7364         * aot-compiler.c: Rename the function names for the binary and asm writers
7365         so they can coexist in the same process. Rework the xdebug code to use the
7366         asm writer. This avoids the need to call into the runtime to dump the
7367         debugging info. Add more debugging info for types.
7368
7369         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7370
7371         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7372         cpu description tables, they can't occur in cpu-<ARCH>.md.
7373
7374         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7375         the stack in CEE_LDFLDA. Fixes #450542.
7376
7377         * generics.cs: Add a new test.
7378
7379 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7380
7381         * mini-ops.h: updated MIPS opcodes
7382         * mini-mips.c: decompose long opts
7383         * mini-mips.h: decompose long opts
7384         
7385 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7386
7387         * cpu-mips.md: fix length on int_rem_un
7388         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7389         
7390 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7391
7392         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7393
7394         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7395
7396 2008-11-29  Martin Baulig  <martin@ximian.com>
7397
7398         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7399         mono_debug_using_mono_debugger() in addition to the
7400         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7401
7402 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7403
7404         * mini-ops.h: updated more MIPS opcodes
7405         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7406         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7407         
7408 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7409
7410         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7411
7412 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7413
7414         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7415         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7416         * mini-ops.h: correct selected mips opcode entries
7417         
7418 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7419
7420         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7421         make them work.
7422
7423 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7424
7425         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7426
7427 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7428
7429         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7430         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7431         * mini-mips.h: disable IMT
7432         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7433         
7434 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7435
7436         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7437
7438 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7439
7440         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7441
7442 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7443
7444         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7445         consistency.
7446
7447 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7448
7449         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7450         for Set/GetVector aligned versions.
7451
7452 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7453
7454         * basic-simd.cs: Add tests for Get/SetVector.
7455
7456 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7457
7458         * mini.c: Removed g_slist_append_mempool().  Now in
7459         metadata/mempool.c.
7460
7461 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7462
7463         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7464         size properly and make the bounds check optional.
7465
7466         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7467         for SetVector and IsAligned.
7468
7469 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7470
7471         * mini.c: Remove unused mono_normalize_opcodes () function.
7472
7473 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7474
7475         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7476         using the new atomic add ops now.
7477
7478         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7479         add.
7480
7481 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7482
7483         * mini-ppc64.c: Several fixes.
7484
7485 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7486
7487         * cpu-mips.md: added jump_table
7488         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7489
7490 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7491
7492         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7493
7494 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7495
7496         * mini-ops.h: corrected a handful of MIPS opcodes.
7497
7498 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7499
7500         * aot-compiler.c: MIPS to use ELF writer
7501
7502 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7503
7504         * mini-codegen.c: remove MIPS specific assert.
7505
7506 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7507
7508         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7509         fixes.  PPC64 now passes most of the runtime regressions.
7510
7511 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7512
7513         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7514         volatile intervals a bit.
7515
7516 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7517
7518         * basic-long.cs: New test case.
7519
7520 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7521
7522         * mini.c (mini_method_compile): Disable globalra for large methods for 
7523         now.
7524
7525         * regalloc2.c (order_moves): Add fp support.
7526
7527         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7528         source bblock ends with an OP_BR_REG.
7529
7530         * ratests.cs: Add a new test.
7531
7532 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7533
7534         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7535         sharing.  PPC64 now passes generics.exe.
7536
7537 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7538
7539         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7540
7541 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7542
7543         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7544         memory when mono_jit_info_table_find () can't find the method in the
7545         LMF case.
7546
7547         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7548         AOTed code too.
7549         
7550         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7551         writer too.
7552
7553 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7554
7555         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7556         Several fixes.  PPC64 now runs exceptions.exe and
7557         devirtualization.exe.
7558
7559 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7560
7561         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7562         arrays.exe and basic-math.exe.
7563
7564 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7565
7566         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7567         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7568
7569 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7570
7571         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7572
7573 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7574
7575         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7576
7577         * ir-emit.h: Move macros from method-to-ir.c to here.
7578
7579 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7580
7581         * mini-ops.h: Correct the long simd ops to use LREG.
7582
7583 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7584
7585         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7586         
7587         * mini-ops.h: Correct the dreg type of a few long opcodes.
7588
7589         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7590         Add netbsd support.
7591
7592 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7593
7594         * mini-ppc.c: remove negative stack references in epilog
7595         for platforms that don't support the red zone.
7596
7597 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7598
7599         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7600         point regs.  Now PPC64 passes basic-calls.exe.
7601
7602 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7603
7604         * basic-simd.cs: Add tests for accessors of Vector2l.
7605
7606 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7607
7608         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7609
7610         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7611         
7612         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7613
7614 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7615
7616         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7617         PPC64 passes basic-long.exe.
7618
7619 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7620
7621         * decompose.c: Decompose carry and overflow add on PPC64 like on
7622         other 64 bit archs.  Don't decompose sub at all on PPC64.
7623
7624         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7625         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7626         basic-long.exe.
7627
7628 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7629
7630         * basic-simd.cs: Add tests for accessors of Vector2d.
7631
7632 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7633
7634         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7635
7636         * cpu-x86.md: Same.
7637
7638         * mini-x86.c (mono_arch_output_basic_block): Same.
7639         
7640         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7641
7642 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7643
7644         * basic-simd.cs: Add tests for accessors of Vector4f.
7645
7646 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7647
7648         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7649
7650         * cpu-x86.md: Same.
7651
7652         * mini-x86.c (mono_arch_output_basic_block): Same.
7653         
7654         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7655
7656 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7657
7658         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7659
7660 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7661
7662         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7663
7664         * cpu-x86.md: Same.
7665
7666         * mini-x86.c (mono_arch_output_basic_block): Same.
7667         
7668         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7669
7670 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7671
7672         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7673
7674 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7675
7676         * simd-intrinsics.c: Enable setters for Vector16sb.
7677
7678 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7679
7680         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7681
7682         * cpu-x86.md: Same.
7683
7684         * mini-x86.c (mono_arch_output_basic_block): Same.
7685         
7686         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7687
7688 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7689
7690         * simd-intrinsics.c: Implement setter for Vector8us.
7691
7692 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7693
7694         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7695         for dead variables.
7696
7697 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7698
7699         * mini-ppc.c: remove references to the red zone in the prolog
7700         (for systems that don't support it).
7701
7702 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7703
7704         * cpu-ppc64.md: Fixed a few instruction lengths.
7705
7706         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7707         now.
7708
7709 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7710
7711         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7712         basic.exe now.
7713
7714 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7715
7716         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7717
7718 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7719
7720         * mini-ops.h: Added OP_INSERT_I2.
7721
7722         * cpu-x86.md: Same.
7723
7724         * mini-x86.c (mono_arch_output_basic_block): Same.
7725         
7726         * simd-intrinsics.c: Implement setter for Vector8s.
7727
7728         * simd-methods.h: Add the names of get setters of Vector8s.
7729
7730 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7731
7732         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7733         
7734         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7735         parameters.
7736
7737         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7738
7739 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7740
7741         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7742         for PPC64.  An empty program runs now.
7743
7744 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7745
7746         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7747
7748         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7749         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7750         info for JITted code is emitted into a shared library, loadable into gdb.
7751
7752 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7753
7754         * Makefile.am: Changes to build PPC64.
7755
7756         * mini-arch.h: Include mini-ppc64.h on PPC64.
7757
7758 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7759
7760         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7761         in PPC code up to r119147.
7762
7763 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7764
7765         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7766         cpu-ppc64.md: Changes for PPC64.
7767
7768         Based on code submitted by andreas.faerber@web.de at
7769         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7770         X11/MIT license.
7771
7772 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7773
7774         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7775         cpu-ppc64.md: Copied from the corresponding PPC files from
7776         r118846.
7777
7778 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7779
7780         * mini-ops.h: Added OP_ROUND.
7781
7782         * cpu-x86.md: Added round.
7783
7784         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7785
7786         * basic-math.cs: Added test_0_round to test rounding.
7787
7788         Contributed under MIT/X11 license.
7789
7790 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7791
7792         * aot-compiler.c : Fix the Winx64 build.
7793
7794         Contributed under MIT/X11 license.
7795
7796 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7797
7798         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7799         in OP_EXTRACT_R8 to avoid possible stack corruption.
7800
7801 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7802
7803         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7804
7805         * cpu-x86.md: Added extract_r8.
7806
7807         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7808         
7809         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7810         a couple of OP_EXTRACT_I4.
7811
7812         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7813
7814         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7815
7816 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7817
7818         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7819         and not 4.1. 
7820
7821 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7822
7823         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7824         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7825
7826         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7827         are not needed any more.
7828
7829         * mini.h: Remove the unused INS_LIST macros.
7830
7831         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7832         longer needed.
7833
7834         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7835         ir-emit.h.
7836
7837         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7838         mono_alloc_ireg () instead.
7839
7840         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7841         macros.
7842
7843         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7844         on amd64.
7845
7846         * aot-runtime.c (load_aot_module): Disable AOT when running under
7847         CAS.
7848
7849         * mini-amd64.h: Change the monitor fastpath defines to check for
7850         !PLATFORM_WIN32 so they work on *bsd too.
7851
7852         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7853
7854         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7855
7856         * mini.h (MonoCompile): Remove new_ir flag.
7857
7858         * regalloc.h regalloc.c: Remove unused code.
7859
7860         * cpu-*.md: Remove more unused opcodes.
7861
7862         * simple-cee-ops.h simple-mini-ops.h: Removed.
7863
7864         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7865         
7866 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7867
7868         * aliasing.h: Removed.
7869
7870         * *.c: Remove references to aliasing.h and inssel.h.
7871
7872         * mini.c: Remove additional unused functions.
7873
7874         * mini-ops.h cpu-*.md: Remove unused opcodes.
7875
7876 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7877
7878         Remove the old JIT code.
7879
7880         * inssel*.brg: Removed.
7881
7882         * ssa.c abcremoval.c aliasing.c: Removed.
7883
7884         * ssa2.c: Renamed to ssa.c.
7885
7886         * abcremoval2.c: Renamed to abcremoval.c.
7887
7888         * *.c: Removed all !cfg->new_ir code.
7889
7890         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7891         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7892
7893         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7894         
7895 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7896
7897         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7898         to simplify the code and cut back on the number of global symbols in the AOT
7899         file.
7900         
7901         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7902
7903 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7904
7905         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7906         with the got/got_info tables.
7907
7908         * mini.h: Bump AOT file format version.
7909         
7910         * unwind.h: New file, contains definitions for stack unwinding.
7911
7912         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7913         to cfg->unwind_ops.
7914         
7915         * aot-compiler.c: Generalize the emitting of unwind information to use the
7916         information in cfg->unwind_ops.
7917
7918         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7919
7920         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7921         AOT method frames. Enable writing symbols for methods by default.
7922
7923 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7924
7925         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7926         and make it work with vectors of element sizes 1, 2 and 4.
7927
7928         * simd-intrinsics.c: Enable getter for all vectors with element size
7929         1, 2 or 4.
7930
7931         * simd-methods.h: Add the names of other getters.
7932
7933         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7934
7935         * cpu-x86.md: Same.
7936
7937         * mini-x86.c: Same.
7938
7939 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7940
7941         * mini-ppc.h: portability fix.
7942
7943 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7944
7945         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7946         buggy and will overwrite it.
7947
7948 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7949
7950         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7951         Use it to emit local symbols for all methods so AOTed methods show up with
7952         their full name in gdb/valgrind output.
7953
7954 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7955
7956         * mini-ppc.c: portability fixes.
7957
7958 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7959
7960         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7961         entries out of the if (!generic_shared...) code so it is always done.
7962         (mono_class_init_trampoline): Do the patching when running under valgrind
7963         too, newer versions of valgrind have no problems with it.
7964
7965 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7966
7967         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7968         further sections.
7969
7970 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7971
7972         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7973         filters.
7974
7975 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7976
7977         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7978
7979 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7980
7981         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7982
7983         * cpu-x86.md: Same.
7984
7985         * mini-x86.c: Same.
7986
7987         * simd-intrinsics.c: Same.
7988
7989 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7990
7991         * simd-intrinsics.c: Enable constructor intrinsics for all types.
7992
7993 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7994
7995         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
7996         to work with more Vector types.
7997
7998 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7999
8000         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8001         store the elemens directly instead of using and intermediate.
8002
8003 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8004
8005         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8006
8007         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8008         to preserve %eax for aot plt trampolines.
8009
8010         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8011         (encode_method_ref): Flag synchronized methods so they won't go through
8012         the AOT trampoline.
8013
8014         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8015         wrappers.
8016
8017         * cpu-ia64.md (jmp): Increase max length.
8018
8019 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8020
8021         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8022         open generic classes.
8023
8024         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8025
8026         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8027         box+brtrue optimization since it causes test failures on x86.
8028
8029 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8030
8031         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8032
8033         * cpu-x86.md: Same.
8034
8035         * mini-x86.c: Same.
8036
8037         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8038         for simd ctor values. 
8039
8040         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8041         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8042
8043 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8044
8045         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8046         LogicalRightShift.
8047
8048         * simd-instrincs.c: Same.
8049
8050         * basic-simd.cs: Same.
8051
8052 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8053
8054         * ratests.cs: Add more tests.
8055
8056         * regalloc2.c (add_spill_code): Handle more corner cases.
8057
8058 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8059
8060         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8061         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8062         both the source an destination of an instruction.
8063
8064 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8065
8066         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8067         wapihandles.c: more portability changes.
8068
8069 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8070
8071         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8072         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8073         safe to execute in a signal handler and the kernel provides better
8074         the info in /proc/self/smaps. Avoid the assert on sigaction during
8075         cleanup.
8076
8077 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8078
8079         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8080         do the bblock linking hack if it is actually needed.
8081
8082         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8083         up linking.
8084
8085         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8086         crash problem is fixed.
8087
8088         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8089         bblocks.
8090
8091         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8092         for catch clauses.
8093         (mini_method_compile): Set the starting value of next_vreg to 
8094         MAX_IREGS + MAX_FREGS when using globalra.
8095
8096         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8097         filter clauses with BB_EXCEPTION_HANDLER.
8098
8099         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8100
8101 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8102
8103         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8104         space for stdcall.  Fixes regressions on Win32.
8105
8106 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8107
8108         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8109         bblocks.
8110         (linear_scan): Remove an assert which doesn't seem to be needed.
8111
8112         * local-propagation.c (mono_local_deadce): Avoid a call to
8113         MONO_DELETE_INS which would screw up the instruction linking.
8114
8115         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8116
8117         * regalloc2.c: Upgrade to work the current JIT code.
8118
8119 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8120
8121         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8122         case.
8123
8124         * aot-runtime.c: Remove some dead code.
8125
8126         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8127         consistency.
8128         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8129
8130         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8131         trampolines using sscanf since atoi doesn't work on large unsigned values.
8132
8133         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8134         Initialize code_size.
8135
8136 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8137
8138         * method-to-ir.c (mini_emit_inst_for_method): Make
8139         Interlocked.CompareExchange work for Int arguments on 32 bit
8140         archs, as well.
8141
8142 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8143
8144         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8145
8146 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8147
8148         * main.c Fix MSVC build.
8149
8150         Contributed under MIT/X11 license.
8151
8152 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8153
8154         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8155         alignment larger than 8 bytes are aligned correctly, too.
8156
8157         * mini.c: Honor the min_align field of MonoClass when laying out
8158         the stack.
8159
8160 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8161
8162         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8163
8164         * aot-compiler.c (emit_plt): Fix a warning.
8165         
8166         * aot-compiler.c: Implement ARM support in the binary writer.
8167
8168 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8169
8170         * basic-simd.cs: Add test for getter with byref arg.
8171         Fix the naming of a few tests.
8172         Add missing checks to a test.
8173
8174 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8175
8176         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8177
8178         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8179         most of the full-aot support for monitor enter/exit trampolines.
8180
8181         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8182         enter/exit trampoline creation functions.
8183
8184         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8185         make dist.
8186
8187 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8188
8189         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8190         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8191         implement the needed functionality without adding crap to the runtime.
8192
8193 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8194
8195         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8196         non-x86 builds.
8197
8198         * mini.c (mono_build_date): New global version holding the build date in
8199         string format.
8200         
8201         * Makefile.am (buildver.c): Generate a file containing the build date.
8202
8203         * main.c: Set the build date from the generated file.
8204
8205         * mini.c (mono_get_runtime_build_info): New helper function returning build
8206         information in a string format.
8207         
8208         * driver.c (mono_main): Print the build date in --version.
8209
8210         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8211         file when the bind-to-runtime-version option is used.
8212
8213 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8214
8215         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8216
8217 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8218
8219         * simd-methods.h: Rename prefetch methods.
8220
8221         * simd-intrinsics.c: Same.      
8222
8223 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8224
8225         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8226         sizes.
8227
8228 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8229
8230         * aot-compiler.c: Use the bundled elf header files instead of depending on
8231         the system one.
8232         
8233         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8234         mempool.
8235
8236         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8237         on every call.
8238
8239 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8240
8241         * cpu-x86.md: Add store nta ops.
8242
8243         * mini-ops.h: Same.
8244
8245         * mini-x86.c: Same.
8246
8247         * mini.h: Add an enum for simd prefetch modes.
8248
8249         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8250         of store. Use the changed code to support store nta.
8251
8252         * simd-intrinsics.c: Add prefetch ops for all vector types.
8253
8254 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8255
8256         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8257         threads.
8258         
8259         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8260         names.
8261
8262         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8263         trampolines.
8264
8265 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8266
8267         * mini-x86.c: Fixed commit.
8268
8269 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8270
8271         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8272
8273 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8274
8275         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8276         and MONITOR_EXIT, for the ASM fastpaths.
8277
8278         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8279         available.
8280
8281         * mini.c, patch-info.h: Signature and patch infos for
8282         Monitor.Enter/Exit trampolines.
8283
8284         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8285
8286         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8287         Monitor.Enter/Exit ASM fastpath for Linux.
8288
8289 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8290
8291         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8292
8293         * objects.cs: Add a new test.
8294         
8295         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8296
8297         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8298         if MONO_LOG_LEVEL is set.
8299
8300         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8301
8302         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8303
8304         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8305         
8306         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8307         of file offsets. Align the sections belonging to the data segment to 
8308         PAGESIZE.
8309
8310 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8311
8312         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8313         elf.h. Port it to amd64.
8314
8315 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8316
8317         * driver.c: Enable SIMD by default.
8318
8319 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8320
8321         * cpu-x86.md: Add prefetch op.
8322
8323         * mini-ops.h: Same.
8324
8325         * mini-x86.c: Same.
8326
8327         * mini.h: Add an enum for simd prefetch modes.
8328
8329         * simd-methods.h: Add prefetch function names.
8330
8331         * simd-intrinsics.c: Add prefetch ops for all vector types.
8332
8333 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8334
8335         * aot-compiler.c (emit_bytes): Speed this up a little.
8336
8337 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8338
8339         * aot-compiler.c: Add JIT time etc. statistics.
8340         
8341         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8342
8343         * mini.h (MonoCompile): Add 'got_offset' field.
8344
8345         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8346         method_got_offsets array.
8347
8348         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8349         wrappers.
8350
8351         * aot-compiler.c (compile_method): Add generic method instances referenced
8352         by the method to the list of methods to be compiled, this is required so if
8353         A<T> references B<T>, and another assembly references A<int>, then it will
8354         also get a copy of B<int>.
8355
8356         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8357         when checking for monitor enter/exit.
8358
8359 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8360
8361         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8362         for Monitor.Enter and Monitor.Exit if enabled.
8363
8364         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8365         Solaris.
8366
8367 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8368
8369         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8370         of an OP_MOVE. Fixes #440046.
8371
8372         * basic-long.cs: Add a new test.
8373
8374 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8375
8376         * mini.h: Add synchronization note for the managed counter-part.
8377
8378         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8379         returns the simd caps of the current cpu.
8380
8381 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8382
8383         * basic-simd.cs: Remove Console.WriteLine.
8384
8385 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8386
8387         * basic-simd.cs: New tests for Vector2ul.
8388
8389 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8390
8391         * simd-intrinsics.c: Add new vector type Vector2ul.
8392
8393 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8394
8395         * basic-simd.cs: New tests for Vector2l.
8396
8397 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8398
8399         * cpu-x86.md: Add long version of most packed int ops.
8400
8401         * mini-ops.h: Same.
8402
8403         * mini-x86.h: Same.
8404
8405         * simd-intrinsics.c: Add new vector type Vector2l.
8406
8407 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8408
8409         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8410
8411         * simd-methods.h: Remove SN_op_BitwiseXor.
8412
8413 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8414
8415         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8416         alignment.
8417
8418 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8419
8420         * basic-simd.cs: Test for Vector2d.
8421
8422         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8423         value.
8424
8425 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8426
8427         * cpu-x86.md: Add double version of all packed float ops.
8428
8429         * mini-ops.h: Same.
8430
8431         * mini-x86.h: Same.
8432
8433         * simd-intrinsics.c: Add new vector type Vector2d.
8434
8435         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8436
8437         * simd-methods.h: Add Duplicate.
8438
8439 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8440
8441         * basic-simd.cs: Test for packing with signed saturation.
8442
8443 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8444
8445         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8446         found in the TYPESPEC table.
8447
8448 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8449
8450         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8451         too.
8452
8453         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8454
8455         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8456         instead of the RVA, since the RVA can be changed by tools like the cil 
8457         stripper.
8458
8459         * method-to-ir.c (mono_method_to_ir2): Ditto.
8460
8461         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8462         (deserialize_variable): Ditto.
8463
8464 2008-10-25  Martin Baulig  <martin@ximian.com>
8465
8466         * debug-mini.c (write_variable): Use
8467         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8468
8469 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8470
8471         * cpu-x86.md: Add unsigned variants of packd and packw.
8472
8473         * mini-ops.h: Same.
8474
8475         * mini-x86.h: Emit the right instruction for packd and packw.
8476         Add unsigned variants of packd and packw.
8477
8478         * simd-intrinsics.c: Packd and packw were used in place of their
8479         unsigned variants. Change that.
8480         Add intrinsics for (Signed)PackWithSignedSaturation.
8481
8482         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8483
8484 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8485
8486         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8487
8488 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8489
8490         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8491
8492         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8493
8494         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8495         sse instructions.
8496
8497         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8498
8499 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8500
8501         * method-to-ir.c, mini.c: Special casing for the synchronized
8502         wrapper for the ldtoken+GetTypeFromHandle case.
8503
8504 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8505
8506         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8507
8508         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8509         created/split bblocks.
8510
8511 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8512
8513         * mini-ops.h: Add packed signed mul high.
8514         
8515         * cpu-x86.md: Same.
8516
8517         * mini-x86.c (mono_arch_output_basic_block): Same.
8518
8519         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8520
8521         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8522
8523 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8524
8525         * basic-simd.cs: Tests for Vector16sb.
8526
8527 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8528
8529         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8530
8531 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8532
8533         * mini-ops.h: Add packed signed min, max and compare greater.
8534         
8535         * cpu-x86.md: Same.
8536
8537         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8538         saturation.
8539
8540         * simd-methods.h: Add CompareGreaterThan.
8541
8542         * simd-methods.h: Remove CompareEquals.
8543
8544         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8545
8546         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8547
8548         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8549         CompareEqual.
8550
8551 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8552
8553         * basic-simd.cs: Fix tests due to change in the API.
8554
8555 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8556
8557         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8558
8559 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8560
8561         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8562
8563         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8564         inst_offset as this has invalid values for LDADDR.
8565
8566 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8567
8568         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8569
8570         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8571
8572 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8573
8574         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8575         for accessing field->data.
8576
8577 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8578
8579         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8580
8581 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8582
8583         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8584
8585         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8586
8587 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8588
8589         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8590         from the cfg mempool.
8591
8592 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8593
8594         * basic-simd.cs: Tests for new methods in Vector8us.
8595
8596 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8597
8598         * mini-ops.h: Add multiply and store high.
8599         
8600         * cpu-x86.md: Same.
8601
8602         * mini-x86.c (mono_arch_output_basic_block): Same.
8603
8604         * simd-methods.h: Same.
8605
8606         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8607         and CompareEqual.
8608
8609 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8610
8611         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8612         mono_class_setup_vtable ().
8613
8614         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8615         mono_class_get_vtable_entry () for accessing klass->vtable.
8616
8617         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8618
8619         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8620         found.
8621
8622         * method-to-ir.c (mono_save_token_info): Don't save references made from
8623         wrappers.
8624
8625         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8626         of generic instances.
8627
8628         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8629
8630 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8631
8632         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8633         OP_JMP depends on the method signature.  Calculate it properly.
8634
8635 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8636         
8637         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8638         called directly.
8639
8640         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8641         instances.
8642         (emit_extra_methods): Add another table mapping method indexes to 
8643         offsets in the extra_method_info table.
8644
8645         * mini.h: Bump AOT file format version.
8646         
8647         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8648         and mono_aot_get_method_from_token () into one function.
8649
8650 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8651
8652         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8653         separate counter.
8654
8655 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8656
8657         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8658         methods.
8659
8660         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8661         disable_aot.
8662
8663         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8664
8665         * mini.h: Bump aot file format version.
8666
8667         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8668         AOT file can contain native code for methods which are not in the METHOD
8669         table. Generate code for non-sharable generic instances of generic methods
8670         found in the METHODSPEC table.
8671         
8672         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8673         encoding generic type handles.
8674
8675         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8676         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8677
8678         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8679         macros + MONO_ADD_INS.
8680
8681         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8682         context as well.
8683
8684         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8685
8686         * mini.h: Bump aot file format version.
8687
8688         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8689
8690 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8691
8692         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8693         platforms, with definable stack alignment value.  Set to 16 now
8694         for all platforms.
8695
8696         * mini.c, mini.h, driver.c: Command line option for disabling
8697         stack alignment.
8698
8699 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8700
8701         * basic-simd.cs: Tests for new methods in Vector4ui.
8702
8703 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8704
8705         * mini-ops.h: Add packed int shuffle.
8706         
8707         * cpu-x86.md: Same.
8708
8709         * mini-x86.c (mono_arch_output_basic_block): Same.
8710
8711         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8712         extract mask, max, min, shuffle.
8713
8714         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8715
8716 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8717
8718         * basic-simd.cs: Tests for new methods in Vector8us.
8719
8720 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8721
8722         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8723         RuntimeTypeHandle, not a TypedReference.
8724
8725 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8726
8727         * simd-intrinsics.c: remove relocations.
8728
8729 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8730
8731         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8732         optimizations from the x86 backend.
8733
8734 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8735
8736         * simd-methods.h, simd-intrinsics.c: debloat method names and
8737         prepare for no relocations.
8738
8739 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8740
8741         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8742         
8743         * cpu-x86.md: Same.
8744
8745         * mini-x86.c (mono_arch_output_basic_block): Same.
8746
8747         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8748         extract mask, max, min and sum of absolute differences.
8749
8750         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8751         method name.
8752
8753 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8754
8755         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8756         Renamed one test for consistency.
8757
8758 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8759
8760         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8761         fix to the code that deal with other blocks.
8762
8763 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8764
8765         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8766
8767 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8768
8769         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8770         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8771         able to process the source reg.
8772
8773 2008-10-16  Martin Baulig  <martin@ximian.com>
8774
8775         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8776
8777         * inssel.brg: Add `OP_HARD_NOP'.
8778
8779         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8780
8781         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8782         `OP_HARD_NOP' instruction when running inside the debugger.
8783
8784         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8785         `OP_HARD_NOP' instruction when running inside the debugger.
8786
8787 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8788
8789         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8790         now works. The issue with the regalloc tripping up no longer
8791         happens.
8792
8793         * simd-intrinsics.c (load_simd_vreg): Same.
8794
8795 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8796         
8797         * basic-simd.cs: Tests for new Vector8ui methods.
8798
8799 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8800
8801         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8802         only for type. This fixes crashes where MonoInst::klass is checked
8803         for ops of type != VTYPE or OBJ.
8804
8805         * simd-intrinsics.c (load_simd_vreg): Same.
8806
8807 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8808
8809         * mini-ops.h: Add ops for packed shuffle/max/avg and
8810         extract mask.
8811         
8812         * cpu-x86.md: Same.
8813
8814         * mini-x86.c (mono_arch_output_basic_block): Same.
8815
8816         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8817         extract mask.
8818
8819         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8820         to emit extract mask op.
8821
8822         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8823         to emit word shuffles.
8824
8825 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8826
8827         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8828         the largest alignment needed by a variable, but at least
8829         sizeof(gpointer).
8830
8831 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8832
8833         * basic-simd.cs: Tests for the fixes in the last commit.
8834
8835 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8836
8837         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8838         no longer handles STACK_PTR input.
8839
8840         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8841
8842         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8843         get_simd_vreg   but handles STACK_PTR input.
8844
8845         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8846         as the input can be an arbitrary pointer.
8847
8848         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8849         LDADDR local optimization directly otherwise use a store op.
8850
8851 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8852
8853         * basic-simd.cs: Tests for dup low and dup high.
8854
8855 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8856
8857         * mini-ops.h: Add dup low and dup high ops.
8858         
8859         * cpu-x86.md: Same.
8860
8861         * mini-x86.c (mono_arch_output_basic_block): Same.
8862
8863         * simd-intrinsics.c (vector4f_intrinsics): Same.
8864
8865 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8866
8867         * basic-simd.cs: Tests for recently added functionality.
8868
8869 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8870
8871         * mini-ops.h: Add remaining sse1 fp ops.
8872         
8873         * cpu-x86.md: Add remaining sse1 fp ops.
8874
8875         * mini-x86.c (mono_arch_output_basic_block): Same.
8876
8877         * mini.h: Add enum for simd FP compare conditions.
8878
8879         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8880
8881         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8882         so the backed can generate the appropriate op.
8883
8884 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8885         This patch squeese one more byte from the SimdIntrinsc struct.
8886
8887         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8888         a a shift amount intead of simply or'ing it.
8889
8890         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8891
8892         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8893         byte so we can have an aditional flags field without increasing struct size.
8894
8895         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8896         against the simd_supported_versions bitmask.
8897
8898         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8899
8900 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8901
8902         * mini.c: remove rawbuffer code (the only use here is unsafe because
8903         it takes locks during signal handling and the kernel now provides much
8904         better info in proc/pid/smaps these days).
8905
8906 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8907
8908         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8909         OP_X86_PUSH_OBJ. Fixes #434620.
8910
8911         * objects.cs: Add a test.
8912         
8913 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8914
8915         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8916         that the packuswb/packusdw don't work with unsigned numbers for what
8917         would be negative numbers in signed format.
8918
8919         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8920         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8921
8922         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8923
8924         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8925
8926         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8927
8928         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8929
8930         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8931         add more ops.
8932
8933         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8934         version as the enum in mini.h.
8935
8936         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8937         for sse3 ops, check the simd_version field if present. This way the code
8938         works with all versions of sse.
8939
8940 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8941
8942         * simd-intrinsics.c: Fixed intrinsic name typo.
8943
8944         * mini.h: Added missing simd exported function.
8945
8946         * basic-simd.cs: Added tests for Vector4ui.
8947         Fixed broken test for Vector16b.
8948
8949 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8950
8951         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8952         the max length to 64.
8953
8954 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8955
8956         * method-to-ir.c: Only do the fast virtual generic method call for
8957         non-wrapper methods.
8958
8959         * mini.h, mini-trampolines.c: The new generic virtual remoting
8960         trampoline handles virtual method calls via the vtable (as done by
8961         the fast virtual generic method calls) to remoting proxies.
8962
8963         * mini.c (mono_jit_create_remoting_trampoline): For generic
8964         methods reate a generic virtual remoting trampoline.
8965
8966         * mini-amd64.h: Enable fast virtual generic method calls again.
8967
8968 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8969
8970         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8971         restore registers when doing tail calls.
8972
8973 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8974
8975         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8976         Vector4ui.
8977
8978 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8979
8980         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8981
8982 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8983
8984         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8985
8986 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8987
8988         * basic-simd.cs: Retrofit for API changes.
8989
8990 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8991
8992         * mini-ppc.c: Handle integer stack arguments for tail calls.
8993
8994 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8995
8996         * optflags-def.h: Removed sse3 optimization.
8997
8998         * driver.c: Same.
8999
9000         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9001         sse3.
9002
9003         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9004
9005         * mini.h: Added enumeration with simd versions.
9006
9007         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9008         for detecting SSE3.
9009
9010         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9011
9012         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9013
9014 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9015
9016         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9017
9018         * basic-simd.cs: Fixed test naming.
9019
9020 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9021
9022         * mini-ops.h: Added ops for packed and saturated math, shifts
9023         and packing/unpacking.
9024
9025         * cpu-x86.md: Added descriptors for the above ops.
9026
9027         * mini-x86.c: Added code to emmit the above ops.
9028
9029         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9030
9031 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9032
9033         * aot-compiler.c (compile_method): Enable AOT for generic code.
9034
9035         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9036
9037 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9038
9039         * mini.c: add a workaround for a common screwup that ends up blamed
9040         to mono (other processes blocking signal delivery).
9041
9042 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9043
9044         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9045         in the LDFLD/STFLD opcodes. Fixes #432673.
9046
9047         * iltests.il.in: Add a new test.
9048
9049 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9050
9051         * mini-arm.c: attach the thread in unmanaged->managed transitions
9052         using delegates (bug #433148).
9053
9054 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9055
9056        * basic-simd.cs: Use new ShuffleSel constants.
9057
9058 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9059
9060         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9061
9062         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9063         only disable simd intrinsics if no sse2 is detected.
9064
9065         * optflags-def.h: Added sse3.
9066
9067         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9068         is disabled.
9069
9070 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9071
9072         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9073         when adding delegate-invoke wrappers.
9074
9075 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9076
9077         * Makefile.am: Reenable the simd tests.
9078
9079 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9080
9081         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9082           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9083           other vreg is allocated to that hreg.
9084
9085         Contributed under MIT/X11 license.
9086
9087 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9088
9089         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9090         yet checked in.
9091
9092 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9093
9094         * basic-simd.cs: New test suite for SIMD intrinsics.
9095
9096         * Makefile.am: Added new tests.
9097
9098 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9099
9100         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9101
9102         * mini-ops.h: Same.
9103
9104         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9105
9106         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9107         using SSE2 aware opcodes.
9108
9109         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9110         is enabled, this code path is only reachable if conversion ops are emmited after
9111         mono_method_to_ir.
9112
9113         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9114
9115         This optimization saves 6 bytes per conversion against the old version.
9116
9117 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9118
9119         * aot-compiler.c (compile_method): Don't skip methods referencing 
9120         generic methods without a corresponding entry in token_info_hash, since
9121         encode_method_ref () can handle all generic methods now.
9122
9123         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9124         generic context is set.
9125         
9126         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9127         generic sharing of LDTOKEN.
9128
9129 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9130
9131         * mini-amd64.h: Temporarily disabled fast virtual generic method
9132         calls because it breaks the System.Runtime.Remoting tests.
9133
9134 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9135
9136         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9137
9138         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9139         so inlining actually works.
9140         (check_inline_caller_method_name_limit): Ditto.
9141
9142 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9143
9144         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9145         64 bit safety (from Olaf Hering and Andreas Farber).
9146
9147 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9148         
9149         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9150         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9151         unused virtual call support code.
9152
9153         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9154         
9155         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9156         which can't use aot trampolines.
9157         (decode_patch): Don't create aot trampolines for methods which can't use
9158         them.
9159
9160         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9161         use aot trampolines.
9162
9163         * mini.h: Bump AOT image format version.
9164         
9165 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9166
9167         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9168         to save_token_info () since cmethod is inflated for constrained calls.
9169
9170         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9171
9172 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9173
9174         * Makefile.am: Add build rules for ppc64.
9175         This avoids the build failing at pedump with unresolved symbols
9176         due to lack of arch_sources. Instead it will now fail earlier
9177         due to lack of cpu-ppc64.md.
9178
9179         Contributed under MIT/X11 license.
9180
9181 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9182
9183         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9184         tail calls.
9185
9186         * iltests.il.in: Add test case for tail call with many arguments.
9187
9188 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9189
9190         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9191         to the fast virtual generic method code until the aot case is fixed.
9192
9193 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9194
9195         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9196
9197 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9198
9199         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9200         thunks.
9201
9202 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9203         
9204         * simd-intrinsics.c: Forgot to add this one.
9205
9206         * mini-codegen.c: Fix macro in case SIMD is not supported.
9207
9208 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9209         
9210         This patch land initial JIT support for simd intrinsics.
9211
9212         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9213
9214         * Makefile.am: Added simd-intrinsics.c
9215
9216         * simd-intrinsics.c: New file with simd instrinsic related
9217         code.
9218
9219         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9220
9221         * cpu-x86.md: Add simd related instructions.
9222
9223         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9224
9225         * driver.c: Added two new --regression variants.
9226
9227         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9228
9229         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9230
9231         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9232         extract some complicated logic to helper functions.
9233
9234         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9235
9236         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9237
9238         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9239         the specialized simplification pass.
9240
9241         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9242
9243         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9244
9245         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9246         table.
9247
9248         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9249         if MONO_ARCH_NEED_SIMD_BANK is defined.
9250
9251         * mini-ops.h: Added the new simd ops.
9252
9253         * mini-x86.c: Added mono_arch_xregname.
9254
9255         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9256
9257         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9258
9259         * mini-x86.h: Define simd related MONO_ARCH macros.
9260
9261         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9262
9263         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9264
9265         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9266         MONO_CLASS_IS_SIMD to deal with simd related IR.
9267
9268         * mini.h (MonoInst): Added spill_var to the backend union.
9269
9270         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9271
9272         * mini.h: Added forward declarations of the new simd fuctions.
9273
9274         * optflags-def.h: Added new optimization names SIMD.
9275
9276         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9277
9278         * regalloc.h: Added support for working with 3 register banks.
9279
9280         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9281
9282         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9283
9284 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9285
9286         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9287
9288 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9289
9290         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9291         instead of one on 64 bit systems.
9292
9293         * method-to-ir.c: Remove unused includes.
9294
9295 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9296
9297         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9298         cfg->used_int_regs, since the two are different on arm.
9299
9300 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9301
9302         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9303         mono_method_get_vtable_index() to get the vtable index.
9304
9305 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9306
9307         * method-to-ir.c (mono_method_to_ir2): Don't create native
9308         wrappers for array methods, because they're never called (and if
9309         they were called they wouldn't work).
9310
9311 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9312
9313         * method-to-ir.c (mono_method_to_ir2): Array methods are
9314         special-cased and must not be invoked indirectly via the (M)RGCTX
9315         when generic sharing is turned on.  Fixes #431413.
9316
9317 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9318
9319         * method-to-ir.c: When generic sharing is active, call
9320         non-interface virtual generic methods via the standard trampoline.
9321
9322         * mini-trampolines.c: Handle virtual generic shared methods.
9323
9324         * mini.h, mini-x86.c, mini-x86.h: New argument for
9325         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9326         method thunks and which is the trampoline to call if the lookup
9327         fails.  Enable the virtual generic method thunk for x86.
9328
9329         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9330         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9331         argument but assert that it's NULL, because these archs don't yet
9332         implement the virtual generic method thunk.  Changes in the IMT
9333         thunk data structures.
9334
9335 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9336
9337         * aot-compiler.c (emit_globals): Avoid invalid characters in
9338         the static linking symbol.
9339
9340         * objects.cs: Add a test for the range check optimization. Fix warnings.
9341
9342         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9343         optimization from the current JIT.
9344
9345         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9346         later in decompose_array_access_opts () to allow more optimizations.
9347
9348         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9349         mono_decompose_soft_float () for consistency.
9350
9351         * mini-ops.h: Fix arguments of OP_STRLEN.
9352
9353         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9354         into a separate function.
9355         (reset_cast_details): Ditto.
9356         (handle_unbox): Save cast details. Fixes #431254.
9357
9358         * method-to-ir.c: Remove some obsolete FIXMEs.
9359
9360 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9361
9362         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9363
9364 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9365
9366         * mini-codegen.c: More work on macros to make them
9367         ready for multiple regbanks.
9368
9369 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9370
9371         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9372
9373         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9374
9375 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9376
9377         * mini-codegen.c (mono_spillvar_offset): Proper support for
9378         multiple regbanks.
9379
9380 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9381
9382         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9383         the stack overflow changes.
9384
9385 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9386
9387         * mini-codegen.c: Make all bank macros depend on reg_bank.
9388
9389         * mini-codegen.c (mono_local_regalloc): Make free mask
9390         initialization regbank aware.
9391
9392 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9393
9394         * mini-codegen.c (mono_local_regalloc): Extract callee
9395         mask selection to a function and make it regbank aware.
9396
9397 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9400         code to deal with many regbanks.
9401
9402 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9403
9404         * mini-codegen.c: More fp->regbank changes.
9405
9406 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9407
9408         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9409         of a hardcoded constant.
9410
9411 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * method-to-ir.c (type_from_stack_type): Fix typo.
9414
9415 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9416
9417         * mini-ia64.c (emit_move_return_value): Convert float return values to
9418         double.
9419
9420         * objects.cs: Add a new test.
9421         
9422         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9423         VARARG methods to fix an assert later.
9424
9425         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9426         end so it at least compiles.
9427
9428 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9429
9430         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9431
9432 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9435         optimization to a new function (emit_optimized_ldloca_ir) and enable
9436         it for both ldloca and ldloca_s.
9437
9438 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9439
9440         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9441         gshared CASTCLASS code.
9442
9443         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9444         amd64, where the libc stack unwinder encounters stack frames referring to
9445         native code in unmapped memory.
9446
9447         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9448         sharing.
9449
9450         * generics.cs: Add new test.
9451
9452 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9453
9454         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9455         add a check that one of the ARM_FPU_ constants is defined.
9456
9457         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9458         
9459         * mini-exceptions.c: Fix build on non-altstack platforms.
9460
9461         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9462         sharing of vtypes.
9463
9464         * ir-emit.h: Add a comment to NEW_PCONST.
9465
9466         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9467
9468         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9469
9470         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9471         after the changes to MonoJitDomainInfo.
9472
9473 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9474
9475         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9476
9477 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9478
9479         * mini-ppc.c: Compiler warning fixes.
9480
9481 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9482
9483         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9484         for pinvokes.
9485
9486 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9487
9488         * exceptions-ppc.c, mini-ppc.h: Compile
9489         mono_arch_handle_altstack_exception() on Darwin, too.
9490
9491 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9492
9493         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9494         work on archs which don't have generic sharing implemented, only
9495         without the vtable_arg.
9496
9497 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9498
9499         * mini.c: Added comment explaining why delegate ctor icall
9500         wrappers are compiled.
9501
9502 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9503
9504         * mini.c: Don't produce trampolines to delegate ctor icall
9505         wrappers but compile them upfront.
9506
9507 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9508
9509         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9510         runtime-set function when going back to managed code. Currently this
9511         is used to set back the protection on the soft ovf pages and/or to
9512         throw the stack overflow exception that happened in unmanaged code.
9513
9514 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9515
9516         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9517         runtime-set function when going back to managed code. Currently this
9518         is used to set back the protection on the soft ovf pages and/or to
9519         throw the stack overflow exception that happened in unmanaged code.
9520
9521 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9522
9523         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9524         the support code for restoring stack protection after stack overflows
9525         that happen in unmanaged code. Don't set the exec permission on the
9526         soft overflow area.
9527
9528 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9529
9530         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9531         delegate->method_ptr is set. Fixes #428054.
9532
9533 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9534
9535         * tests.cs: Rename to ratests.cs.
9536
9537         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9538         emit_get_rgctx_... functions.
9539
9540 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9541
9542         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9543
9544 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9545
9546         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9547         before asserting that method is sharable.
9548
9549 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9550
9551         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9552         whether method needs a static RGCTX wrapper used instead of
9553         complex conditions.
9554
9555         * generic-sharing.c, mini.h: A few functions moved to
9556         metadata/generic-sharing.c.
9557
9558 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9559
9560         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9561         Generic code sharing for value types, which essentially means
9562         treating value type methods like static methods.  The RGCTX is
9563         passed in the same way.
9564
9565 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9566
9567         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9568         opcode when creating multi-dimensional arrays of open types.
9569
9570         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9571         open generic types.
9572
9573         * generics.cs: Add a test.
9574
9575         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9576
9577 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9578
9579         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9580
9581         * mini.c (mini_method_compile): Set it when running under the debugger. 
9582
9583         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9584         vreg optimization if the flag is set.
9585
9586         * driver.c (mono_main): Add --attach= option to pass options to
9587         the attach agent.
9588
9589         * mini.c (sigquit_signal_handler): Start the attach agent.
9590
9591         * ssapre.c: Disable this to save space since it is not yet ported to
9592         linear IR.
9593
9594         * regalloc2.c: Disable this to save space.
9595
9596         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9597
9598 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9599
9600         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9601         the -v option useful again.
9602
9603 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9604
9605         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9606         --break-at-bb.
9607
9608         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9609         arrays of arrays. Fixes #428406.
9610
9611         * method-to-ir.c (mini_emit_castclass): Ditto.
9612
9613         * objects.cs: Add new test.
9614         
9615 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9616
9617         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9618         was wrong at it choked against target_type_is_incompatible for byref types.
9619
9620 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9621
9622         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9623         places.
9624
9625 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9626
9627         * mini-exceptions.c: update a few more exceptions-related counters.
9628
9629 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9630
9631         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9632         new functions to allocate from persistent mempools.
9633
9634 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9635
9636         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9637         multiple register banks in the future.
9638
9639         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9640
9641 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9642
9643         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9644
9645         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9646
9647         * mini.h: Export type_to_eval_stack_type.
9648
9649         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9650         is only ins->klass of byref types.
9651
9652 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9653
9654         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9655         (mini_emit_memcpy2): Ditto.
9656
9657         * mini-amd64.c: Fix a warning.
9658
9659 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9660
9661         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9662         linking.
9663
9664 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9665
9666         * method-to-ir.c: Extract stloc micro-optimization to a
9667         function and apply it to all cases.
9668
9669 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9670
9671         * method-to-ir.c: Don't fail generic code sharing in cases we
9672         already support.
9673
9674 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9675
9676         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9677
9678 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9679
9680         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9681         implementation.
9682
9683 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9684
9685         * trace.c: make tracing more useful and correct, with per-thread
9686         id and indent info.
9687
9688 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9689
9690         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9691         doing a method call and the argument is an R4.
9692
9693 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9694
9695         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9696         generic methods.
9697
9698 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9699
9700         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9701
9702 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9703
9704         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9705         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9706
9707 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9708
9709         * driver.c: Add a --agent argument (not supported yet) to load managed
9710         agent assemblies before loading the main assembly, similarly to how the
9711         Java VM handles agents.
9712
9713 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9714
9715         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9716         function to do stack layout of local variables.
9717
9718 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9719
9720         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9721         calculation.
9722
9723 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9724
9725         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9726         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9727         JIT if DISABLE_JIT is defined.
9728
9729         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9730         defined.
9731
9732 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9733
9734         * iltests.il.in: Disable the fconv test on PPC (the result is
9735         undefined according to ECMA).
9736
9737 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9738
9739         * iltests.il.in: Enable tail call tests for PPC.
9740
9741         * mini.h: Add variable for storing incoming valuetype argument
9742         addresses for tail calls.
9743
9744         * mini-ppc.c: Implement valuetype arguments and return values for
9745         tailcalls on Linux.
9746
9747 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9748
9749         * mini-ppc.c: Partially implement tail calls (struct arguments and
9750         return values not supported).
9751
9752         * method-to-ir.c: Enable tail calls on PPC.
9753
9754 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9755
9756         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9757         runtime-invoke wrappers to work around the problem of them getting
9758         assigned to a random class.
9759
9760         * aot-runtime.c (mono_aot_get_method): Ditto.
9761         
9762 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9763
9764         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9765         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9766
9767 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9768
9769         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9770         until they're implemented properly.
9771
9772         * exceptions-ppc.c: Use arch-independent exception-handling code
9773         instead of custom one.
9774
9775         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9776         for Linear IR.
9777
9778         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9779
9780         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9781         applies when __powerpc__ is defined.
9782
9783 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9784
9785         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9786         methods to their code to avoid computing the full name of wrappers and
9787         doing a lookup in a string hash table.
9788
9789 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9790
9791         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9792         we identify bblocks before method_to_ir () is ran.
9793
9794         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9795         Also avoid optimizing branches pointing to themselves.
9796
9797         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9798
9799 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9800
9801         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9802
9803 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9804
9805         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9806         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9807         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9808         'buf'.
9809
9810         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9811         jumped to the same entry in plt_jump_table.
9812
9813 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9814
9815         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9816         dynamic images.
9817
9818 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9819
9820         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9821         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9822         #421807.
9823
9824 2008-08-29  Geoff Norton  <gnorton@novell.com>
9825
9826         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9827         segment, and doesn't properly handle .space as .text.  Fixes
9828         AOT Mach/ARM
9829
9830 2008-08-29  Geoff Norton  <gnorton@novell.com>
9831
9832         * mini.c: Disable the mach exception handler when running on 
9833         ARM
9834
9835 2008-08-29  Geoff Norton  <gnorton@novell.com>
9836
9837         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9838         globals on Darwin/ARM
9839
9840 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9841
9842         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9843         since too many things depend on it. Instead, call 
9844         mono_runtime_set_no_exec ().
9845         
9846         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9847         the new JIT.
9848
9849         * aot-compiler.c: Add an 'asm-only' AOT option.
9850
9851         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9852                 
9853         * aot-compiler.c (compile_method): Disable gshared support for now as it
9854         doesn't yet work.
9855
9856 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9857
9858         * mini-amd64.h : Fix a compiler warning.
9859
9860         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9861           Changed to use a callback function to retrieve the unwind info.
9862           This avoids problems observed when code blocks were removed by
9863           unloading an app domain.
9864
9865         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9866           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9867           to work properly.
9868
9869         Contributed under MIT/X11 license.
9870
9871 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9872
9873         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9874           case to keep the stack aligned to 8.
9875
9876         Contributed under MIT/X11 license.
9877
9878 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9879
9880         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9881         avoid repeated linear searches.
9882
9883 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9884
9885         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9886         methods it can't handle.
9887         
9888         * aot-compiler.c (add_method): Avoid adding a method twice.
9889         (add_wrappers): Add runtime invoke wrappers for all methods.
9890
9891         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9892         function to create an aot-compatible version of this trampoline.
9893
9894         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9895
9896 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9897
9898         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9899
9900         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9901         with a generic sharing failure.
9902
9903         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9904
9905         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9906         CEE_RETHROW. Fixes #419634.
9907
9908         * mini.c (mono_method_to_ir): Ditto.
9909
9910         * exceptions.cs: Add a new test.
9911         
9912         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9913         to mono_type_stack_size_internal () since some callers might not pass in
9914         an rgctx.
9915
9916         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9917         instrument_prolog. Fixes #419878.
9918
9919         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9920         doubles in soft float mode volatile.
9921
9922 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9923
9924         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9925
9926         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9927         to handle soft float correctly.
9928
9929         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9930         the fast path.
9931
9932         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9933
9934         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9935         to sp, since the generics catch code requires it.
9936
9937         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9938         copying.
9939
9940         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9941         mono_arch_emit_imt_argument ().
9942
9943         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9944
9945         * mini-arm.c tramp-arm.c: Generic sharing updates.
9946
9947 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9948
9949         * mini-arm.c: Fix the arm build.
9950
9951         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9952         handling enums, generic instances and generic sharing.
9953         (mini_type_stack_size_full): Ditto.
9954
9955         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9956         
9957         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9958
9959         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9960
9961         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9962         trampolines.
9963
9964         * mini-arm.c: Various small generic sharing changes.
9965
9966         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9967         this for x86.
9968         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9969         custom code.
9970
9971         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9972         helper function to return a generic class init trampoline.
9973
9974         * method-to-ir.c mini.c: Use it.
9975         
9976         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9977         arch-specfic function to return a generic class init trampoline.
9978
9979         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9980         the GENERIC_CLASS_INIT custom code.
9981
9982         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9983         a fatal error, not a sharing failure.
9984
9985         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9986         needed.
9987
9988         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
9989         trampoline argument from MONO_ARCH_VTABLE_REG.
9990
9991         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9992         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9993         argument, and pass the vtable in VTABLE_REG.
9994
9995         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
9996         order of the arguments to the C trampoline: pass 'slot' as the trampoline
9997         argument, and pass the vtable in VTABLE_REG.
9998         (mono_arch_create_trampoline_code_full): Remove some special casing for
9999         the rgctx fetch trampoline.
10000
10001         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10002         Fixes #419273.
10003
10004         * iltests.il: Add a test for it.
10005
10006 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10007
10008         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10009
10010         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10011         no longer needed.
10012
10013         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10014         use mono_jit_info_table_find () to avoid recursion.
10015         (mono_delegate_trampoline): Add a sync wrapper here.
10016
10017         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10018         here.
10019
10020         * mini.c (mono_method_to_ir): Ditto.
10021         
10022         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10023         add_sync_wrapper argument. Don't add a sync wrapper here.
10024         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10025
10026         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10027         
10028 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10029
10030         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10031           of nonvolatile registers back from MonoContext to CONTEXT.
10032
10033         Contributed under MIT/X11 license.
10034
10035 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10036
10037         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10038           arguments on Winx64 there are only 4 argument registers.  For this
10039           logic to work the last argument must be pulled from the stack.  
10040
10041         Contributed under MIT/X11 license.
10042
10043 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10044
10045         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10046
10047         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10048         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10049         encode/decode_method_ref ().
10050
10051         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10052
10053         * aot-runtime.c (decode_patch): Ditto.  
10054
10055         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10056         MONO_PATCH_INFO_METHOD.
10057
10058         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10059         MonoGenericJitInfo.
10060
10061         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10062         MonoGenericJitInfo.
10063
10064         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10065
10066         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10067         one from the caller.
10068
10069         * aot-runtime.c (decode_generic_inst): New function to decode and
10070         return a interned generic inst.
10071         (decode_klass_ref): Use it.
10072         (decode_method_ref): Ditto.
10073
10074         * aot-compiler.c (emit_exception_debug_info): Save 
10075         jinfo->has_generic_jit_info too.
10076
10077 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10078
10079         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10080
10081         * iltests.il.in: Add a test for fconv_to_i.
10082
10083         * liveness.c: Disable the liveness2 pass for now to save space.
10084
10085         * regalloc2.c: Include mempool-internals.h to fix warnings.
10086
10087         * aot-compiler.c (encode_method_ref): Encode the context of generic
10088         instance methods.
10089
10090         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10091         the context saved in the aot file.
10092
10093         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10094
10095         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10096
10097         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10098         volatile so they won't be optimized away.
10099
10100 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10101
10102         * ssa.c:
10103         * ssa2.c:
10104         * mini.c:
10105         * regalloc2.c:
10106         * dominators.c: Remove duplicated functions that now are in
10107         mempool-internals.h.
10108
10109 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10110
10111         * aot-compiler.c: Fix warnings.
10112
10113         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10114
10115         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10116
10117         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10118         as the patch type.
10119
10120         * mini.c (mono_resolve_patch_target): Ditto.
10121         
10122         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10123         (encode_klass_ref): Add support for encoding VARs/MVARs.
10124
10125         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10126
10127         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10128         the handling of the got entries into a separate 'decode_got_entry' function.
10129         Add support for RGCTX_FETCH.
10130
10131         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10132         clobbered by the trampoline code.
10133
10134         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10135         not clobbered by the indirect calling code.
10136
10137 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10138
10139         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10140         to fix the build.
10141
10142 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10143
10144         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10145         signature using the compilation mempool otherwise we would leak it.
10146
10147 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10148
10149         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10150         mono_emit_abs_call ().
10151
10152         * patch-info.h: Add GENERIC_CLASS_INIT.
10153
10154         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10155
10156         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10157         as their target as a near call.
10158
10159         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10160         ABS handling code.
10161         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10162
10163         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10164         call to a runtime function described by a patch.
10165
10166         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10167         mono_emit_abs_call, this has the advantage that the ABS handling code in
10168         mono_codegen () can handle them both, and can handle other stuff in the
10169         future without additional code.
10170
10171         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10172         entry.
10173         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10174         abs addresses.
10175
10176         * mini.h: Add missing bblock related prototypes.
10177
10178         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10179         reverse_inst_list_len fields.
10180
10181         * mini.c: Refactor this file a bit by moving branch optimizations to 
10182         branch-opts.c.
10183
10184         * method-to-ir.c: Merge generic sharing changes missed earlier.
10185
10186         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10187
10188         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10189         shared patches. Process METHODCONST as a shared patch.
10190
10191         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10192         as it crashes on the 2.0 mscorlib.
10193
10194         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10195         to cause crashes.
10196         
10197         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10198         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10199         by IMT.
10200
10201         * aot-compiler.c: Reorganize the got handling code to be a bit more
10202         understandable.
10203
10204 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10205
10206         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10207         mono_patch_info_equals/hash, and use it to massively simplify
10208         get_plt_index ().
10209
10210         * mini.c (mono_patch_info_hash): Simplify this and add support for
10211         more patch types.
10212
10213         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10214
10215         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10216         handling code, since an offset is not enough to identify a trampoline.
10217
10218         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10219
10220 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10221
10222         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10223
10224         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10225
10226         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10227
10228         * decompose.c: PPC decompositions for various ops.
10229
10230         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10231
10232 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10233
10234         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10235         call the generic trampoline code using a call, instead of a jump, to
10236         remove some special casing from the generic trampoline code.
10237
10238         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10239         (mono_codegen): Ditto.
10240
10241         * aot-compiler.c aot-runtime.c: Ditto.
10242
10243         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10244
10245         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10246         helper function to find the offset corresponding to a lazy fetch trampoline.
10247
10248         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10249         when doing generic sharing.
10250
10251         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10252         places.
10253         
10254         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10255         mini-trampolines.c to be with the other trampoline creation functions.
10256
10257         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10258         as it is equal to method->signature in most cases, add a 
10259         mono_emit_method_call_full variant which takes a signature and an imt
10260         argument as well.
10261
10262 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10263
10264         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10265         to this function, since it could be computed easily from the method 
10266         argument.
10267         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10268         more.
10269
10270         * method-to-ir.c mini.c: Remove references to 
10271         compile_generic_method_wo_context.
10272
10273         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10274         generic method calls.
10275         
10276         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10277         dimensional non-szarrays.
10278
10279         * mini.c (mini_init): Register mono_array_new_1.
10280
10281         * jit-icalls.c (mono_array_new_1): New jit icall.
10282
10283         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10284         pointing to the method.
10285
10286         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10287         method addresses belonging to METHOD_JUMP patches in the 
10288         jump_target_got_slot_hash.
10289         (mono_aot_load_method): Ditto.
10290
10291         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10292         METHOD_JUMP patches.
10293
10294         * mini.c (mini_create_jit_domain_info): New helper function which 
10295         initializes/frees domain->runtime_info.
10296         (mini_free_jit_domain_info): Ditto.
10297         (mini_init): Install the domain hook functions with the runtime.
10298
10299         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10300         information maintained by the JIT.
10301
10302         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10303         insertion into jump_table_hash into mono_codegen (), also implement proper
10304         locking.
10305
10306         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10307         tail calls, it is already done by the aot code.
10308         
10309         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10310         mechanism on amd64.
10311
10312         * iltests.il.in: Make the jmp test a bit more complex.
10313
10314         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10315         generic instances which doesn't have a token.
10316
10317         * aot-runtime.c (decode_method_ref): Ditto.
10318         
10319         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10320         can handle this case now.
10321         (handle_box): Ditto.
10322
10323 2008-08-15  Geoff Norton  <gnorton@novell.com>
10324
10325         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10326         debugging check.
10327
10328 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10329
10330         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10331         calling generic methods.
10332
10333         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10334
10335         * aot-runtime.c (decode_patch_info): Ditto.
10336
10337         * mini.c (mono_resolve_patch_target): Ditto.
10338         
10339         * patch-info.h: Add METHOD_RGCTX.
10340
10341         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10342
10343 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10344
10345         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10346         arguments in registers.
10347
10348         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10349         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10350
10351         * mini.c (mini_method_compile): Abort aot compilation for generic
10352         methods if generic sharing is disabled.
10353         
10354         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10355         an mrgctx.
10356
10357         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10358         requiring an mrgctx.
10359
10360         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10361         store instructions when converting a vcall to a normal call.
10362
10363         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10364         mono_arch_find_jit_info.
10365
10366 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10367
10368         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10369         avoid calling mono_method_full_name () for every method even if the
10370         env var is not set.
10371         (check_inline_caller_method_name_limit): Ditto.
10372
10373 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10374
10375         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10376         assemblies in one run.
10377
10378         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10379         skipped methods if it is not 0.
10380
10381         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10382
10383 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10384
10385         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10386           MONO_ARCH_HAVE_UNWIND_TABLE.
10387
10388         Contributed under MIT/X11 license.
10389
10390 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10391
10392         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10393           from default optimizaton list on Winx64.
10394
10395         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10396
10397         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10398           the LMF from the MonoJitTlsData structure.
10399
10400         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10401
10402         Contributed under MIT/X11 license.
10403
10404 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10405
10406         * mini.c (sigsegv_signal_handler): Fix the build.
10407
10408         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10409         assembly->aot_module.
10410
10411         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10412         hash table. This simplifies and speeds up a lot of code, and fixes support
10413         for .netmodules.
10414
10415         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10416         with the runtime.
10417
10418         * mini-exceptions.c: Ditto.
10419         
10420         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10421         'native_offset' argument, since these are computed in the 
10422         mono_find_jit_info () function.
10423
10424         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10425         is used by exceptions-ppc.c.
10426
10427         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10428         mono_arch_find_jit_info ().
10429         
10430         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10431         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10432         generic code in mini-exceptions.c.
10433
10434 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10435
10436         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10437
10438         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10439         
10440         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10441         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10442         called while holding the loader lock. Fixes #415608.
10443         (mono_aot_get_method_from_token_inner): Ditto.
10444
10445 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10446
10447         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10448         to reduce differences between this and the generic implementation in
10449         mini-exceptions.c.
10450         (ves_icall_get_frame_info): Ditto.
10451
10452         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10453
10454         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10455         longer neccesarry.
10456
10457         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10458         mono_arch_get_call_filter () and make it non-static, for consistency with the
10459         other architectures.
10460
10461 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10462
10463         * mini.c:
10464         * local-propagation.c:
10465         * mini-x86.c: Correct the name of arch defines.
10466
10467 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10468
10469         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10470         NO_EMULATE_LONG_SHIFT_OPS define.
10471
10472 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10473
10474         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10475         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10476
10477         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10478         MACH fixes. Merged from the 2.0 branch.
10479
10480         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10481
10482         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10483         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10484
10485         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10486
10487         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10488         mono_marshal_get_native_wrapper () signature changes.
10489
10490 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10491
10492         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10493         conversion bug under arm.
10494
10495 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10496
10497         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10498
10499         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10500         with overflow checking.
10501
10502 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10503
10504         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10505         to the genmdesc.pl file
10506
10507 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10508
10509         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10510         arg_array in the soft-float versions of the LOAD/STORE macros.
10511
10512         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10513         implementation.
10514
10515         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10516
10517 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10518
10519         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10520         a float HFA. Fixes #413621.
10521
10522 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10523
10524         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10525         frame_size to args_size. Fixes build.
10526
10527 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10528
10529         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10530         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10531
10532         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10533         the stack are not unaligned. Fixes #413247.
10534         
10535 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10536
10537         * mini.c: update jitted methods performance counters.
10538
10539 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10540
10541         * mini-exceptions.c: increase the exceptions thrown performance
10542         counter in mono_handle_exception ().
10543
10544 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10545
10546         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10547         can work with netmodules.
10548
10549 2008-07-28  Geoff Norton  <gnorton@novell.com>
10550
10551         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10552         regression tests.
10553
10554 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10555
10556         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10557         correct place.
10558
10559 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10560
10561         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10562           The float param registers and other param registers must be the 
10563           same index on Windows x64.
10564
10565         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10566           ArgValuetypeAddrInIReg argument case.  Setting the argument
10567           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10568
10569         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10570           variable computed above as the copy length for arguments of storage
10571           type ArgValuetypeAddrInIReg.
10572
10573         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10574           ArgValuetypeAddrInIReg argument case.  This case will rely on
10575           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10576
10577         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10578           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10579           jump and tail call instructoins as they do not follow the typical call behavior.
10580
10581         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10582           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10583           local variable and pass the local variable by reference to the called method.
10584
10585         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10586           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10587           of a struct is passed in a register it must be saved with the other
10588           volatile argument on the stack.
10589
10590         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10591           frame pointer the stack adjustment value must be saved to the unwind 
10592           info structure.
10593
10594         Contributed under MIT/X11 license.
10595
10596 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10597
10598         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10599         which got lost in the merge.
10600
10601 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10602
10603         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10604         build.
10605
10606         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10607         
10608         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10609         icalls, since they won't be patched.
10610
10611         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10612         different code sequence when running under valgrind to prevent some valgrind
10613         errors.
10614
10615         * iltests.il.in: Add new regression test.
10616
10617         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10618         end with a throw.
10619
10620         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10621         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10622
10623         * iltests.il.in: Add new test.
10624
10625         * aot-compiler.c: Fix some warnings.
10626
10627         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10628         Fixes #412494.
10629
10630 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10631
10632         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10633         (mini_usage_jitdeveloper): Add a missing --wapi option.
10634
10635 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10636
10637         * mini-codegen.c: Simplify the is_fp macros.
10638         (free_up_ireg): Remove, use free_up_reg instead.
10639         (free_up_reg): Fix the fp case.
10640
10641 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10642
10643         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10644         lowered earlier.
10645
10646         * exceptions-x86.c: Merge some changes which seemed to have got lost
10647         in the linear-ir merge.
10648
10649         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10650
10651         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10652         long vreg volatile even if the variable was already created.
10653
10654         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10655         volatile variables.
10656
10657 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10658
10659         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10660
10661         * mini.c (mono_jit_compile_method_inner): Add support for 
10662         MONO_EXCEPTION_BAD_IMAGE.
10663
10664         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10665         mini_method_get_context () returns NULL. Fixes #356531.
10666
10667         * mini.c (mono_method_to_ir): Ditto.
10668         
10669         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10670         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10671
10672 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10673
10674         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10675         in the LDFTN implementation.
10676
10677 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10678
10679         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10680         code, patch calls to icalls, too, even if they're not in the
10681         shared generic code hash.  Fixes #411962.
10682
10683 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10684
10685         * cpu-x86.md: Increase the length of the fcall opcodes.
10686
10687         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10688         calls returning floats.
10689
10690         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10691         on NEWARR.
10692         
10693         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10694         missed earlier.
10695
10696         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10697         into the domain->method_code_hash.
10698
10699         * aot-compiler.c: Fix win32 build.
10700
10701         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10702         
10703         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10704         gshared NEWARR implementation.
10705
10706         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10707
10708         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10709         can be used outside of method_to_ir.
10710
10711         * mini.h (MonoCompile): Add arg_types field.
10712
10713         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10714         
10715         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10716         the values of the local arg_array and param_types array.
10717
10718 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10719
10720         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10721         got accesses might only get generated later when NEWOBJ is decomposed.
10722         
10723         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10724         looking up the native code of the target method when a delegate is called
10725         for the first time.
10726
10727         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10728         optimization.
10729
10730         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10731
10732         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10733         AOT work on platforms without a working dlsym implementation.
10734
10735         * mini.h: Bump AOT image format version.
10736         
10737 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10738
10739         * mini-exceptions.c: Free a MonoType with
10740         mono_metadata_free_type() instead of g_free().
10741
10742         * aot-runtime.c: Free a MonoType.
10743
10744 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10745
10746         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10747         optimization.
10748
10749         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10750         fp stack on x86.
10751
10752 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10753         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10754         profiler hook.
10755
10756 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10757
10758         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10759         NEWOBJ calls on valuetypes.
10760
10761         * iltests.il.in: Add new test.
10762
10763         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10764
10765 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10766
10767         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10768         is no longer needed.
10769
10770         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10771         non register sized integer arguments.
10772         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10773         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10774         emit_memcpy2 ().
10775
10776         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10777         CEE_MONO_RETOBJ.
10778         
10779         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10780         two a binop with different sized arguments is emitted.
10781
10782         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10783         instruction in the ins==NULL case.
10784
10785 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10786
10787         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10788
10789         * mini-x86.c: Fix osx build.
10790
10791         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10792         opcodes as well.
10793
10794         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10795         instruction for non int sized variables.
10796
10797         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10798         implementation.
10799
10800 2008-07-23  Robert Jordan  <robertj@gmx.net>
10801
10802         * method-to-ir.c: Fix MSVC build.
10803
10804 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10805
10806         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10807         a non int sized type, widen it to an int since newer versions of gcc seem to
10808         generate code which needs this.
10809
10810         * ssa2.c abcremoval2.c: Fix warnings.
10811
10812         * *: Merge the Linear IR branch.
10813
10814         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10815         the ChangeLog file there describes all the changes done over the years. 
10816         Further documentation can be found at www.mono-project.com/Linear_IL.
10817
10818 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10819
10820         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10821           The float param registers and other param registers must be the 
10822           same index on Windows x64.
10823
10824         Contributed under MIT/X11 license.
10825
10826 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10827
10828         * mini.c: Make the previous fix GC safe.
10829
10830 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10831
10832         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10833
10834 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10835
10836         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10837           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10838           ArgValuetypeAddrInIReg instead.
10839
10840         Contributed under MIT/X11 license.
10841
10842 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10843
10844         * mini-codegen.c (get_register_spilling): Fix a warning.
10845
10846 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10847
10848         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10849         for types which the initialization fails. Raises the provided exception
10850         at the right stop after cleanup.
10851
10852 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10853
10854         * aot-compiler.c: Free most of the memory allocated during compilation.
10855
10856         * mini.c (mini_parse_debug_options): Fix a leak.
10857         
10858         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10859         during aot compilation.
10860
10861 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10862
10863         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10864         it has too much register pressure.
10865
10866 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10867
10868         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10869
10870 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10871
10872         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10873         on x86.
10874
10875         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10876         on amd64 similar to the way it is done on arm.
10877
10878         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10879
10880         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10881         consistency, normalize error messages, avoid loading aot-only modules in
10882         normal mode.
10883
10884         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10885         for consistency.
10886
10887         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10888
10889 2008-07-11  Martin Baulig  <martin@ximian.com>
10890
10891         * debug-debugger.h
10892         (MonoDebuggerInfo): Add `interruption_request'.
10893
10894 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10895
10896         * aot-compiler.c (emit_plt): Remove some dead code.
10897
10898         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10899
10900         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10901         return the plt info offset belonging to a given plt entry.
10902
10903         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10904         mono_aot_get_plt_info_offset.
10905         
10906         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10907         similar to the amd64 code by makeing jumps through a separate jump table 
10908         instead of embedding the jump addresses into the code.
10909
10910 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10911
10912         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10913         method.
10914
10915 2008-07-10  Martin Baulig  <martin@ximian.com>
10916
10917         * mini.c (mini_method_compile): Disable generics sharing when
10918         running in the debugger.
10919
10920 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10923
10924         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10925         the local register allocator from running out of registers on x86 when 
10926         using aot.
10927
10928 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10929
10930         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10931         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10932         C4146.
10933
10934         Contributed under MIT/X11 license.
10935
10936 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10937
10938         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10939         speed up the assembler.
10940
10941 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10942
10943         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10944         support.
10945
10946         * mini.c: Move the soft float handling macros a bit earlier, add 
10947         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10948         place.
10949
10950         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10951
10952         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10953         read-only to help catch code allocation requests.
10954         
10955         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10956         and turn it off when using --aot-only or when compiling with --aot=full.
10957
10958         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10959         jump table for switches from the normal domain mempool, not the code
10960         manager.
10961
10962         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10963         unbox trampoline which handles aot-only mode too.
10964
10965         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10966         an AOTed unbox trampoline.
10967
10968         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10969
10970 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10971
10972         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10973         ""
10974
10975         Contributed under MIT/X11 license.
10976
10977 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10978
10979         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10980           the unwind information for the method at the end of the allocated block.
10981           
10982         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10983           MonoCompileArch to hold the unwind info for SEH on Winx64
10984         
10985         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10986           frame pointer info for the method being compiled.
10987           
10988         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
10989           the call to mono_exception_from_token.
10990           
10991         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
10992           storing the method prolog information in a format that the Winx64 SEH can understand.  This
10993           information is stored a the end of the method block because it is all 32-bit offset based.
10994
10995         Contributed under MIT/X11 license.
10996
10997 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10998
10999         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11000
11001         * wapihandles.c: Fix warnings.
11002
11003         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11004         mode.
11005
11006         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11007         mono_jit_compile_method in aot-only mode since that calls the type 
11008         initializer.
11009         
11010         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11011         get_delegate_invoke_impl in aot-only mode.
11012
11013         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11014
11015 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11016
11017         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11018
11019         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11020         is on by default.
11021
11022         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11023
11024         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11025         init trampoline from the AOT file as well.
11026
11027         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11028         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11029         code.
11030
11031         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11032         mono_init.
11033
11034         * exceptions-amd64.c: Add _full variants for the remaining exception code
11035         creation functions as well, allow emission of relocatable code, remove
11036         caching since that is now done by the caller.
11037
11038         * mini-exceptions.c: Add _full variants for the remaining exception code
11039         creation functions as well, add aot-only support.
11040
11041         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11042         if we can determine a proper token for them.
11043         (add_wrappers): Add a few more wrappers.
11044         (emit_method_code): Remove some dead code.
11045         (emit_trampolines): Emit exception code too.
11046
11047         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11048
11049         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11050         mono_array_new_va which avoids varargs.
11051
11052         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11053
11054         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11055         mono_arch_create_specific_trampoline () in all places.
11056
11057         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11058         a bit so it can be used for other things as well.
11059         
11060         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11061         on demand as well.
11062
11063         * exceptions-amd64.c: Rename the caching from the exception code creation
11064         functions, it is done by the caller instead.
11065         
11066         * exceptions-amd64.c: Change the signature of the exception code creation 
11067         functions to allow the creation of relocatable code later.
11068
11069         * mini-exceptions.c: Add a set of functions to query the various 
11070         runtime-generated exception functions.
11071
11072         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11073         mono_arch_.. () functions.
11074         
11075 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11076
11077         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11078
11079         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11080
11081         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11082         (mini_get_vtable_trampoline): Ditto.
11083
11084         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11085         code in the AOT case by returning the code size and a list of relocations to
11086         the caller.
11087
11088         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11089
11090 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11091
11092         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11093           clean the stack.
11094
11095         Contributed under MIT/X11 license.
11096
11097 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11098
11099         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11100         so the buffer size can be computed correctly. Fixes #404735.
11101
11102         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11103         normally as cfg->debug_info is already freed.
11104
11105 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11106
11107         * mini-amd64.c: For calls returning vtypes in registers, don't store
11108         the return address on the stack, instead allocate a separate local for
11109         it. Fixes #404729.
11110
11111 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11112
11113         * mini-trampolines.c, mini.h: Add an argument to
11114         mono_create_jit_trampoline_in_domain() for turning off the adding
11115         of the sync wrapper.
11116
11117         * mini.c: Use the JIT trampoline without sync instead of
11118         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11119         be patched.
11120
11121 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11122
11123         * driver.c: Turn on GSHARED optimization by default.
11124
11125 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11126
11127         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11128         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11129
11130         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11131         create a variant of the generic trampoline code callable from AOTed trampolines.
11132
11133         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11134         trampoline code callable from AOTed trampolines.
11135
11136         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11137
11138 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11139
11140         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11141         pass-through manner.
11142
11143         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11144         and don't fail sharing for them anymore.
11145
11146         * mini-exceptions.c: Handle exceptions in shared generic methods.
11147
11148         * generic-sharing.c: When checking the context of a generic
11149         method, also check its class's context.  Don't treat wrappers as
11150         sharable.
11151
11152         * mini-trampolines.c: Some code factored out to
11153         metadata/generic-sharing.c.  Handle the MRGCTX case.
11154
11155         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11156         we must deal with the method being of another instantiation of the
11157         class.  Add static rgctx invoke wrappers to generic methods.
11158
11159 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11160
11161         * mini.c: Provide all jit infos of generic shared methods with a
11162         generic jit info.
11163
11164         * mini-exceptions.c: Handle the new situation that a generic info
11165         might be available, but not info about the this/vtable/mrgctx
11166         variable.
11167
11168 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11169
11170         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11171         generic methods.
11172
11173 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11174
11175         * dominators.c (check_dominance_frontier): Fix a warning.
11176
11177         * mini.h: Add some missing prototypes.
11178
11179         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11180
11181         * driver.c (mono_jit_init_version): Correct the comments since the first
11182         argument should be the name of the root domain, not a filename.
11183
11184         * aot-runtime.c (make_writable): Error out if this is called while running
11185         with --aot-only.
11186         (load_aot_module): Ditto.
11187
11188         * aot-compiler.c: Really fix the computation of method indexes.
11189
11190         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11191         optimizations as this is no longer called frequently.
11192
11193         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11194         method and the invoke impl code and pass it to the delegate trampoline instead of
11195         just the delegate class.
11196
11197 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11198
11199         * aot-compiler.c: Fixup the computation of method indexes.
11200         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11201         the method builder infrastructure.
11202
11203         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11204         has no header.
11205
11206         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11207         mode, load the method right away instead of creating a trampoline.
11208
11209         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11210
11211         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11212         some checks a bit.
11213
11214 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11215
11216         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11217         (mono_aot_load_method): Use method_index instead of method->token.
11218
11219         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11220         can handle icalls etc. properly.
11221
11222         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11223
11224         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11225
11226         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11227         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11228         JIT_ICALL_ADDR patch type.
11229
11230         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11231
11232         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11233         request flag.
11234         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11235
11236         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11237
11238 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11239
11240         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11241         domain->jit_code_hash.
11242
11243 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11244
11245         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11246
11247 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11248
11249         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11250         get_this_arg_from_call, let it compute it when needed.
11251
11252         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11253         gsctx from code only when needed.
11254
11255         * mini-trampolines.c (get_generic_context): Rename this to 
11256         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11257         it can be called by the arch backends.
11258
11259         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11260
11261 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11262
11263         * driver.c (mono_main): Add experimental --aot-only command line option.
11264
11265         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11266         set.
11267
11268 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11269
11270         * driver.c (DllMain): Remove mono_module_handle.
11271
11272         Contributed under MIT/X11 license.
11273
11274 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11275
11276         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11277         for emitting methods which are not in the source assembly. Detect and report
11278         failure of assembling+linking.
11279         
11280         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11281
11282         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11283
11284 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11285
11286         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11287
11288 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11289
11290         * mini.h: Remove some obsolete prototypes.
11291
11292         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11293
11294 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11295
11296         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11297         supported by Visual Studio, so use alloca().
11298
11299 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11300
11301         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11302         Fixes #402585.
11303
11304 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11305
11306         * mini.c: Fail sharing of a generic method if it contains an open
11307         catch clause (because we don't pass MRGCTXs yet).
11308
11309 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11310
11311         * mini.c: When compiling a method with generic sharing, insert the
11312         method instantiated with an all-Object generic context into the
11313         jit info table, instead of the context of the first instantiation
11314         of the method we happen to compile.
11315
11316 2008-06-18  Martin Baulig  <martin@ximian.com>
11317
11318         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11319         `major_version' and `minor_version'.
11320
11321 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11322
11323         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11324         mono_method_is_generic_sharable_impl() takes an additional
11325         argument specifying whether to treat type variables as reference
11326         types.
11327
11328 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11329
11330         * mini.h: Removed obsolete prototypes.
11331
11332 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11333
11334         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11335         already handle them.
11336
11337 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11338
11339         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11340         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11341         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11342         tramp-x86.c: Added a MonoGenericContext* argument to
11343         mono_arch_get_unbox_trampoline() so that it can call other
11344         functions which require it.
11345
11346 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11347
11348         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11349         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11350         mono_arch_get_this_arg_from_call() takes a
11351         MonoGenericSharingContext* as well.
11352
11353 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11354
11355         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11356         implement generic sharing of unbox.
11357
11358 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11359
11360         * mini.c: Don't compute the vtable to determine whether a field is
11361         special static, because it might not work for open types.
11362
11363 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11364
11365         * mini.c: Removed the unused token_type and token_source arguments
11366         from get_runtime_generic_context_ptr().
11367
11368 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11369
11370         * mini.c (ADD_BINOP): fix the build
11371
11372 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11373
11374         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11375         a widening op.
11376
11377 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11378
11379         * mini.h: Removed class relations enum that's not used anymore.
11380
11381 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11382
11383         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11384
11385         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11386         the lazy fetch trampoline access code.
11387
11388 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11389
11390         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11391
11392 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11393
11394         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11395
11396         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11397
11398         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11399
11400 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11403         intrinsics.
11404
11405         * mini-ops.h: Add MIN/MAX_UN opcodes.
11406
11407         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11408         intrinsics.
11409
11410         * basic-math.cs: Add more min/max tests.
11411
11412         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11413
11414 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11415
11416         * mini.c: Small fix in the prologue of emit_castclass.
11417
11418 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11419
11420         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11421
11422         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11423         do not work even for unsigned types. Fixes #400014.
11424
11425         * basic-math.cs: Add regression tests for unsigned Min/Max.
11426
11427 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11428
11429         * mini.c: Added additional context_used argument to several
11430         functions, which will be needed for sharing generic methods.  Use
11431         GET_RGCTX macro wherever appropriate.  Declare only one
11432         context_used in mono_method_to_ir().
11433
11434 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11435
11436         * mini.c, generic-sharing.c: Removed generic class relations.
11437
11438         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11439         functions due to MRGCTX changes.
11440
11441 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11442
11443         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11444         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11445         with calculated IMT.
11446
11447         * mini.c: Generic sharing of calls via generic interfaces.
11448
11449         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11450         generic method with non-constant MonoGenericContext*.  Instead,
11451         the context is taken out of the method itself.
11452
11453 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11454
11455         * mini.c: Generic sharing of ldvirtftn.
11456
11457 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11458
11459         * mini.c: Generic sharing of ldftn.
11460
11461 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11462
11463         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11464
11465 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11466
11467         * mini.c: Generic sharing of the special case of ldtoken followed
11468         by a call to GetTypeFromHandle.
11469
11470 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11471
11472         * mini.c: Generic sharing of box for nullable types.
11473
11474 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11475
11476         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11477         are passed on the stack. Fixes #324807.
11478
11479 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11480
11481         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11482         for the ArgValuetypeAddrInIReg case.
11483
11484         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11485         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11486
11487         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11488         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11489         local variable and pass the local variable by reference to the called method.
11490           
11491         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11492         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11493
11494         Contributed under MIT/X11 license.
11495
11496 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11497
11498         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11499
11500         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11501         everything.
11502
11503 2008-06-10  Martin Baulig  <martin@ximian.com>
11504
11505         * debug-mini.c
11506         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11507
11508 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11509
11510         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11511         possible error when no arguments are passed.
11512
11513         Contributed under MIT/X11 license.
11514
11515 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11516
11517         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11518         where the file name is NULL.
11519
11520 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11521
11522         * mini.c: Fix s390 build.
11523
11524 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11525
11526         * trace.c (mono_trace_parse_options): Fix warnings.
11527
11528         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11529
11530 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11531
11532         * mini.c (remove_block_if_useless): Avoid printing the method name.
11533         
11534         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11535         MONO_INST_NEW.
11536
11537         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11538         LMF. Not yet used.
11539
11540         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11541         translated code after it has been patched.
11542
11543 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11544
11545         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11546         avoid problems during code patching on SMP systems.
11547         (emit_call): Avoid adding a patch info which is already added by 
11548         emit_call_body.
11549         (mono_arch_emit_exceptions): Ditto.
11550
11551 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11552
11553         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11554         MONO_TYPE_ISSTRUCT already checks for it.
11555
11556 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11557
11558         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11559           structs with floats on Winx64 the float registers are not used.  
11560           The integer registers are always used..
11561         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11562           only one register will be used and only if the size of the struct 
11563           is 1,2,4, or 8 bytes.
11564
11565         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11566           to work for Winx64.
11567
11568         Contributed under MIT/X11 license.
11569
11570 2008-06-05  Martin Baulig  <martin@ximian.com>
11571
11572         * debug-debugger.c (debugger_lookup_class): Also call
11573         mono_class_setup_methods() here; we're only called from RTI.
11574
11575 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11576
11577         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11578         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11579         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11580         Post-process object files and add dtrace-generated object, if necessary.
11581
11582         Contributed under MIT/X11 license.
11583
11584 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11585
11586         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11587         element class.
11588
11589         * mini.c: Generic sharing for unbox.any and castclass.
11590
11591 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11592
11593         * mini.c: Ignore tailcall prefix in shared generic code and when
11594         doing calls which require a vtable/rgctx argument.
11595
11596 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11597
11598         * mini.c: Don't free the JIT info.
11599
11600         * driver.c: Changes in the JIT info table testing code.
11601
11602 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11603
11604         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11605         interruption. Fix some warnings.
11606
11607         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11608         interruption_checkpoint.
11609
11610 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11611
11612         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11613         from embedding applications.
11614
11615 2008-06-02  William Holmes  <billholmes54@gmail.com>
11616
11617         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11618           reserving 32 bytes on the stack when making calls. 
11619
11620         Contributed under MIT/X11 license.
11621
11622 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11623
11624         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11625         the linear IL branch.
11626
11627         * driver.c: Print out more information for --version on arm.
11628
11629 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11630
11631         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11632         bb_exit instead, since out of line bblocks might not actually be emitted
11633         out-of-line.
11634         
11635         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11636         maximum epilog size for out of line bblocks if tracing is enabled.
11637
11638         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11639
11640 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11641
11642         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11643
11644 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11645
11646         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11647         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11648         opcodes.
11649
11650 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11651
11652         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11653         the 'value' to store is a constant.
11654
11655         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11656
11657         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11658         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11659
11660 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11661
11662         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11663         for accessing method->generic_container.
11664
11665 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11666
11667         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11668         
11669         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11670
11671         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11672
11673         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11674         fails.
11675
11676 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11677
11678         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11679
11680         * mini.c: Handle the case when mono_class_vtable () fails.
11681
11682 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11683         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11684         the stat profiler.
11685
11686 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11687
11688         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11689         together with domain sharing.
11690
11691 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11692
11693         * mini.c: Treat callvirts to final methods like non-virtual calls
11694         when doing generic sharing, i.e. look them up in the runtime
11695         generic context.
11696
11697 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11698
11699         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11700         with computed types (for generic sharing).
11701
11702         * mini.c: Generic sharing for mkrefany and refanyval.
11703
11704 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11705
11706         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11707         possible.
11708
11709         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11710         the generic sharing code.
11711         
11712         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11713         when needed.
11714
11715 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11716
11717         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11718
11719 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11720
11721         * driver.c: updated copyright date
11722
11723 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11724
11725         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11726         needed.
11727
11728 2008-05-19  Martin Baulig  <martin@ximian.com>
11729
11730         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11731         pointing to the new `_mono_debug_using_mono_debugger' variable.
11732
11733         * driver.c
11734         (mono_main): Check mono_debug_using_mono_debugger() rather than
11735         the `MONO_INSIDE_MDB' environment variable to check whether we're
11736         inside the debugger.
11737
11738 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11739
11740         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11741         argument.
11742
11743 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11744
11745         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11746
11747         * mini.c: Added mini_assembly_can_skip_verification. This
11748         function checks if the assembly requested to skip verification. 
11749         Fixes part of #387274.
11750
11751 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11752
11753         * mini.c (mini_get_method): Disable the check for open generic classes when
11754         using generic sharing.
11755
11756         * generics.cs: Add a test for #387034.
11757
11758         * mini.c (mini_get_method): Check whenever the method class is an open generic
11759         type, and return NULL in that case, causing a verification error. Fixes
11760         #384123.
11761
11762 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11763
11764         * driver.c (mono_main): Revert r102623. The right
11765         thing to do is to enable the verifier under verifiable
11766         unless a --security flag was passed.
11767
11768         We need this non-trivial behavior for --verify-all otherwise
11769         mcs-compileall won't be able to use it. As it needs everything to
11770         be verified under validil.
11771
11772 2008-05-06  Martin Baulig  <martin@ximian.com>
11773
11774         Fix #383749.
11775
11776         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11777         (mono_debugger_thread_cleanup): Likewise.
11778         (mono_debugger_extended_notification): Likewise.
11779
11780 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11781
11782         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11783         against both inflated and non-inflated methods. We need to check against the
11784         generic definition for cases where the instantiated method is not visible.
11785         We need to check against the inflated types for cases where the instantiation
11786         changes any super type. This fixes #382986.
11787
11788         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11789         that check for visibiliy as generic params only appears as the type subject
11790         of tokens on call opcodes. Field manipulation and ldftn must always
11791         target an exact type.
11792
11793 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11794
11795         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11796         if no related --security flag is passed.
11797
11798 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11799
11800         * mini-arch.h: Prepare support for ppc64.
11801
11802         Contributed under MIT/X11 license.
11803
11804 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11805
11806         * aot-runtime.c: Prepare support for ppc64.
11807
11808         Contributed under MIT/X11 license.
11809
11810 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11811
11812         * mini-ops.h: Prepare support for ppc64.
11813
11814         Contributed under MIT/X11 license.
11815
11816 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11817
11818         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11819
11820         Contributed under MIT/X11 license.
11821
11822 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11823
11824         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11825         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11826         assemblies on windows.
11827
11828 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11829
11830         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11831         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11832         * main.c: Use UTF-8 encoded command line instead of Windows default code
11833         page on Windows to support Unicode.
11834         * driver.c (DllMain): New function for mixed-mode assembly support.
11835         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11836         export __stdcall functions without decoration.
11837
11838         Contributed under MIT/X11 license.
11839
11840 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11841
11842         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11843         saving it very early.
11844
11845 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11846
11847         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11848         deleted.  The only way to access the new RGCTX is via the
11849         trampline.
11850
11851         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11852         vtable instead of the RGCTX to static methods.
11853
11854         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11855         accessing the new RGCTX.
11856
11857         * generic-sharing.c: There is no separation between self, type
11858         arguments and other types in the RGCTX anymore.
11859
11860 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11861
11862         * mini-amd64.c (add_general): Remove previous stack adjustment.
11863         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11864         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11865         for 32 bytes of stack space reserved for all calls.
11866         
11867         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11868         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11869         adjustment.
11870         
11871         Code contributed under MIT/X11 license.
11872
11873 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11874
11875         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11876         against the root definition, peeling out method and type instantiations.
11877         Cache verify success results, code that fails verification is still
11878         checked multiple times.
11879
11880 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11881
11882         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11883
11884 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11885
11886         * mini-amd64.c (add_general): Always increment stack on Win64.
11887         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11888         on Win64.
11889         
11890         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11891         stack based argument handling on Win64.
11892         
11893         Code contributed under MIT/X11 license.
11894
11895 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11896
11897         * Makefile.am (version.h): Add support for git-svn.
11898
11899 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11900
11901         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11902         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11903         avoiding allocations and libc functions which might deadlock.
11904         
11905         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11906         'no-gdb-backtrace' option is set.
11907
11908         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11909
11910         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11911
11912 2008-04-21  Martin Baulig  <martin@ximian.com>
11913
11914         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11915         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11916
11917 2008-04-21  Martin Baulig  <martin@ximian.com>
11918
11919         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11920         `thread_vtable', `event_handler_ptr' and `event_handler'.
11921
11922 2008-04-21  Martin Baulig  <martin@ximian.com>
11923
11924         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11925         allows delayed initialization of the `executable_code_buffer' when
11926         attaching.
11927
11928 2008-04-21  Martin Baulig  <martin@ximian.com>
11929
11930         * mini.h (mono_debugger_create_notification_function): Removed.
11931         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11932
11933         * mdb-debug-info64.s
11934         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11935
11936         * mdb-debug-info32.s
11937         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11938
11939         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11940         currently only works on x86 and x86_64, so don't create it on ppc.
11941
11942 2008-04-21  Martin Baulig  <martin@ximian.com>
11943
11944         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11945
11946         * mini.c
11947         (mini_method_compile): In the fp elimination check, check
11948         `debug_options.mdb_optimizations' in addition to
11949         mono_debug_using_mono_debugger().       
11950
11951         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11952         disable some JIT optimizations which are only disabled when
11953         running inside the debugger.
11954         Added `--help-debug' option to describe the debugging options.
11955         (parse_debug_options): New static function to parse the `--debug'
11956         options, so we can easily add more stuff in future.
11957
11958 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11959
11960         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11961         the method has no body.
11962
11963 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11964
11965         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11966         assembly is not allowed in MSVC 64-bit compiler. 
11967         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11968         as we get floating point exceptions everywhere.
11969         
11970         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11971         correctly align arguments for call to throw_exception.
11972         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11973         
11974         Code contributed under MIT/X11 license.
11975
11976 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11977
11978         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11979
11980 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11981
11982         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11983
11984         * mini-amd64.c (NEW_INS): Set cil_code.
11985
11986         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11987         from mini-amd64.c so all debugger related logic is in one place.
11988
11989         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
11990         later won't have a random ip assigned to them.
11991
11992 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
11993
11994         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
11995         the arch specific function initializes code_size.
11996         (mono_create_delegate_trampoline): Ditto.
11997
11998         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
11999         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12000         platforms.
12001
12002         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12003         running under the debugger.
12004
12005         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12006         debugger.
12007
12008         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12009         debugger. Also move the disabling of optimizations here from driver.c.
12010         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12011         debugger.
12012
12013         * mini.h (MonoCompile): Add a few new flags.
12014
12015 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12016
12017         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12018         so the cil_code field of created MonoInst's is properly set.
12019         (mini_select_instructions): Ditto.
12020
12021         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12022         (MONO_INST_NEW_CALL): Ditto.
12023
12024         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12025         in many places so the ins->cil_code field is properly initialized.
12026
12027         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12028         place.
12029
12030 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12031
12032         * mini.c (mini_method_compile): Print a different message when compiling a 
12033         shared method.
12034         
12035         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12036         > 1.
12037
12038 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12039
12040         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12041         SSE2 instructions.
12042
12043         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12044         
12045 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12046
12047         * mini.c (handle_stack_args): Make this return void since its return value was
12048         never used. Also set cfg->unverifiable for invalid IL instead of calling
12049         G_BREAKPOINT ().
12050
12051 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12052
12053         * mini.c: Make sure "this" is live in catch clauses with type
12054         variables in shared generic code.
12055
12056 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12057
12058         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12059         generic_class_is_reference_type() to ensure the proper behaviour
12060         when sharing generic code and the type in question is a type
12061         argument.
12062
12063 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12064
12065         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12066         race conditions when printing thread dumps. Fixes #377738.
12067
12068 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12069         
12070         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12071         shows up when both MonoInst arguments can cause aliasig.
12072         There is likely no way in the current JIT to trigger this problem, but
12073         it showed up in the development of generics sharing, when in a new
12074         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12075         When the generics sharing code will be committed, its tests will be
12076         valid also for this bug.
12077
12078 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12079
12080         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12081         PATCH_INFO_METHOD.
12082
12083         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12084         NULL.
12085
12086 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12087
12088         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12089         use a more detailed exception message for InvalidCastException.
12090
12091         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12092
12093         * driver.c (mono_main): Add --debug=casts option to turn on better 
12094         InvalidCastException message details.
12095
12096         * mini.c (mini_get_debug_options): New helper function to return the address of
12097         the debug_options variable.
12098
12099         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12100         the jit_tls TLS variable.
12101
12102         * mini.c (mono_jit_tls): New TLS variable.
12103
12104         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12105         option is used.
12106
12107 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12108
12109         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12110
12111         * mini.c: Removed verifer related stuff, code moved to verify.c.
12112
12113         * driver.c: Using code from verify.c instead of mini.c.
12114
12115 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12116
12117         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12118         longer valid.
12119
12120 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12121
12122         * mini.c (check_for_method_verify): Enabling verification of
12123         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12124         have been fixed.
12125
12126 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12127
12128         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12129         caller saved registers as well.
12130         
12131         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12132         saved registers as well.
12133
12134 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12135
12136         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12137
12138         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12139         code.
12140
12141 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12144         to get_call_info.
12145         (get_call_info): Take a gsctx argument instead of 'cfg'.
12146
12147 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12148
12149         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12150         mono_verify_all is set.
12151
12152         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12153
12154         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12155
12156 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12157
12158         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12159         an exception.
12160
12161         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12162         verifier and the code generated by the compiler.
12163
12164 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12165
12166         * mini.c: Generic sharing of the non-nullable case of the box
12167         instruction.
12168
12169 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12170
12171         * inssel.brg: Fix the build.
12172
12173         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12174
12175 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12176
12177         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12178         Array:Address. Fixes #372410.
12179
12180         * iltests.il.in: New tests for readonly prefix.
12181
12182 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12183
12184         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12185         mini-trampolines.c.
12186
12187         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12188         mini-exceptions.c.
12189
12190         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12191         
12192         * mini.c (mono_decompose_op_imm): New helper function.
12193
12194         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12195         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12196         return value.
12197
12198         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12199         mono_arch_output_basic_block. Fix warnings.
12200
12201         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12202         for now.
12203
12204 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12205
12206         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12207         since the extra frame is now detected automatically inside the loop.
12208
12209         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12210         opts which are now in mono_peephole_ins ().
12211         
12212         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12213
12214         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12215         frames and skip duplicate managed-to-native frames. Fixes #367665.
12216
12217         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12218         opts which are now in mono_peephole_ins ().
12219         (mono_arch_peephole_pass_2): Ditto.
12220
12221         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12222
12223         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12224         arch independent peephole optimizations.
12225
12226         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12227         opts which are now in mono_peephole_ins ().
12228
12229         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12230         
12231         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12232
12233         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12234         pattern.
12235
12236         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12237         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12238         opcode. 
12239
12240 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12241
12242         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12243         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12244         return value.
12245
12246         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12247         mono_arch_output_basic_block. Fix warnings.
12248
12249 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12250
12251         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12252         conv.ovf.u.un.
12253
12254 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12255
12256         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12257         conv.ovf.u.un.
12258
12259         * iltests.il: Add new tests.
12260
12261 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12262
12263         * mini.c: Removed Windows version macros.
12264
12265 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12266
12267         * generic-sharing.c: Put reflection types in the extensible part
12268         of the runtime generic context.
12269
12270         * mini.c: Generic sharing of the GetTypeHandle special case of the
12271         ldtoken instruction.
12272
12273 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12274
12275         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12276
12277         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12278         
12279         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12280         consistency with the other version on the linear IR branch.
12281
12282         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12283
12284         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12285
12286         * iltests.il.in: Add new tests.
12287
12288 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12289
12290         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12291
12292         * iltests.il.in: Add new tests.
12293
12294 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12295
12296         * mini.c: Two variables with the same name were declared in
12297         nesting contexts and one wasn't initialized.  Fixed.
12298
12299 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12300
12301         * mini.c: Generic sharing of the initobj instruction.
12302
12303 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12304
12305         * mini.c: make the test to optimize ldtoken from typeof() more
12306         precise.
12307
12308 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12309
12310         * mini.c: Generic sharing of the initobj instruction for reference
12311         types.
12312
12313 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12314
12315         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12316         the mono_breakpoint_clean_code() code to perform bound checks.
12317
12318 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12319
12320         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12321         mono_arch_patch_callsite() to include the start of the managed method
12322         to be able to perform bound checks.
12323
12324 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12325
12326         * mini.c: Generic sharing for the isinst instruction.
12327
12328 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12329
12330         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12331         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12332         with the runtime generic context argument.
12333
12334         * mini.c: Share calls to several types of unsharable methods by
12335         putting the address of the method code in the runtime generic
12336         context and doing an indirect call.
12337
12338         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12339         to switches.
12340
12341 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12342
12343         * generic-sharing.c: Change due to a change in the runtime genric
12344         context API.
12345
12346 2008-03-15  Martin Baulig  <martin@ximian.com>
12347
12348         * tramp-x86.c
12349         (mono_arch_nullify_class_init_trampoline): Add call to
12350         mono_breakpoint_clean_code() to make things work when running
12351         inside the debugger.
12352
12353         * tramp-amd64.c
12354         (mono_arch_nullify_class_init_trampoline): Add call to
12355         mono_breakpoint_clean_code() to make things work when running
12356         inside the debugger.
12357
12358 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12359
12360         * inssel-long.brg (reg): Fix 64 bit build.
12361
12362 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12363
12364         * mini.c, mini.h: Share static generic code by passing it an
12365         implicit argument pointing to the runtime generic context.
12366
12367         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12368         inssel-long32-mips.brg: New opcodes for calling shared static,
12369         which need to be passed the runtime generic context.
12370
12371         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12372         argument on the stack in the prologue if needed.  New function for
12373         finding the runtime generic context argument from the registers
12374         saved by the trampoline.
12375
12376         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12377         runtime generic context argument.
12378
12379         * tramp-amd64.c: Also restore the register used for the runtime
12380         generic context argument.
12381
12382         * mini-trampoline.c: Resolve shared static calls by consulting the
12383         runtime generic context via the new argument.
12384
12385         * generic-sharing.c: Add an argument to sharability-checking
12386         functions that specifies whether type variables should be treated
12387         as sharable type arguments.
12388
12389         * inssel-x86.brg: Removed a superfluous, buggy rule.
12390
12391         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12392         to switches.
12393
12394 2008-03-14  Martin Baulig  <martin@ximian.com>
12395
12396         * debug-debugger.c (main_thread_handler): Call
12397         mono_runtime_run_main() without sending any notifications.
12398
12399         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12400
12401 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12402
12403         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12404
12405 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12406
12407         * tramp-x86.c: Fixed register restore offsets in the trampoline
12408         code for ECX and EDX.
12409
12410 2008-03-12  Geoff Norton  <gnorton@novell.com>
12411
12412         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12413         different ucontext_t implementations.
12414         * exceptions-arm.c: Use the above defines to get exceptions working on 
12415         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12416         * mini-arm.c: Implement iPhone icache support (based on a patch by
12417         Luke Howard lukeh@padl.com)
12418
12419 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12420
12421         * mini.c: Enable generic sharing of calls to non-static
12422         non-interface non-generic non-value-type methods.
12423
12424         * mini-trampolines.c: Resolve calls from shared generic code.
12425
12426 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12427
12428         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12429
12430         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12431
12432 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12433
12434         * mini.c: some fixes for the AOT compiler.
12435
12436 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12437
12438         * cpu-amd64.md: Add clob:1 to some float opcodes.
12439
12440 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12441
12442         * mini.h: Added MiniVerifierMode enumeration.
12443
12444         * mini.c: Added mini_verifier_set_mode to control
12445         the usage of the new verifier.
12446
12447         * mini.c (mono_method): Integrated the new verifier.
12448
12449         * driver.c: Extended --security option with validil and
12450         verifiable options to activate the new verifier.
12451
12452 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12453
12454         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12455         optimization to ctors taking 0 or 2 arguments too.
12456
12457         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12458         a bit.
12459
12460         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12461
12462         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12463
12464 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12467         non-aot case as well.
12468
12469         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12470
12471         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12472         changes.
12473
12474         * aot-compiler.c (encode_patch): Ditto.
12475
12476         * mini.h (G_MININT32): Fix the definition of this.
12477
12478 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12481
12482         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12483
12484 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12485
12486         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12487         methods returning vtypes in registers.
12488         (mono_arch_allocate_vars): Ditto.
12489
12490         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12491
12492         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12493
12494         * generics.cs: Add a test from the linear IR branch.
12495
12496         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12497
12498         * mini.c (inline_method): Cache failed inline attempts.
12499
12500 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12501
12502         * mini.c: For shared methods of generic classes put the location
12503         of "this" into the MonoGenericJitInfo.
12504
12505         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12506         register out of a MonoContext by register number.  Add the generic
12507         sharing context as an argument to mono_arch_find_this_argument().
12508
12509         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12510         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12511         for new arch function.
12512
12513         * mini-exception.c: Handle open exception clauses in shared
12514         generic code.
12515
12516         * mini-trampolines.c: Supply additional argument to
12517         mono_arch_find_this_argument().
12518
12519 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12520
12521         * Makefile.am (regtests): Run the bench.exe tests last.
12522
12523 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12524
12525         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12526         a bit.
12527
12528 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12529
12530         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12531         with MS.
12532
12533         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12534         
12535         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12536
12537         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12538         whose class has no cctor.
12539
12540         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12541
12542 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12543
12544         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12545         unverified.
12546
12547 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12548
12549         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12550         to be in sync with the code on the linear IR branch.
12551
12552         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12553
12554         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12555
12556 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12557
12558         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12559
12560         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12561
12562         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12563
12564         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12565
12566         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12567         
12568         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12569         body.
12570
12571 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12572
12573         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12574         OP_LOADR4_MEMBASE emission.
12575
12576         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12577         (mono_spillvar_offset_float): Ditto.
12578
12579         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12580
12581         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12582         emission.
12583
12584         * basic-long.cs: Add regression tests for them.
12585
12586         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12587         use.
12588         (mono_arch_allocate_vars): Fix representation of single-precision float
12589         argument.
12590         (mono_arch_output_basic_block): Ditto.
12591
12592         * inssel-mips.brg: Ditto, remove duplicate items.
12593
12594         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12595         arguments of tail calls as on other platforms.
12596         (mono_arch_output_basic_block): Handle tail calls.
12597
12598         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12599         register.
12600
12601         * objects.cs (test_5_pass_static_struct): Add test for it.
12602
12603         Contributed under MIT/X11 license.
12604
12605 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12606
12607         * Makefile.am: Use gmcs for compiling the regression tests.
12608
12609         * *.2.cs *.2.il: Rename to *.cs and *.il.
12610
12611 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12612
12613         * regalloc.h: Make the vassign array smaller.
12614
12615         * mini.c (mini_method_compile): Remove an unused field in cfg.
12616
12617         * mini-codegen.c: Add a bunch of micro optimizations.
12618
12619 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12620
12621         * regalloc.h: Remove some unused fields.
12622
12623 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12624
12625         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12626
12627         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12628
12629 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12630
12631         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12632
12633         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12634         trampoline: Fetch an entry from the runtime generic context.  If
12635         it's NULL, jump to the actual trampoline to fill the runtime
12636         generic context.  Otherwise, return it.
12637
12638         * mini.c: Call the lazy fetch trampoline to get entries out of the
12639         runtime generic context.
12640
12641         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12642         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12643         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12644
12645 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12646
12647         * mini.c: Fetch data out of the extensible part of the runtime
12648         generic context instead of calling a helper function.
12649
12650         * generic-sharing.c: Some functions moved into
12651         metadata/generic-sharing.c.  Helper function for fetching other
12652         types now checks and asserts against extensible rgctx (just for
12653         debugging purposes - the helper function isn't called anymore
12654         unless for debugging).
12655
12656 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12657
12658         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12659         for tail calls up to the point that the tests in iltests.exe run. Also add a
12660         dummy CKFINITE implementation.
12661         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12662         needed for trampoline LMF frames.
12663
12664         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12665         trampoline LMF frames.
12666
12667 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12668
12669         * mini.c (inline_method): clean any pending loader error when inlining fail.
12670         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12671
12672 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12673
12674         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12675
12676         * aot-runtime.c (decode_patch_info): Ditto.
12677
12678         * mini.c (mono_resolve_patch_target): Ditto.
12679         
12680         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12681         icall wrappers.
12682
12683         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12684         
12685         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12686         if it references an icall address.
12687
12688 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12689
12690         * cpu-s390x.md: Remove some more unused opcodes.
12691         
12692         * cpu-s390x.md: Remove some unused opcodes.
12693
12694         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12695         mono_op_imm_to_op ().
12696
12697         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12698         instead of a switch statement.
12699         
12700         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12701         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12702
12703         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12704         
12705         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12706
12707         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12708         -1.
12709
12710 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12711
12712         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12713         opened. Fixes #362607.
12714
12715         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12716
12717         * iltests.il.in: Add a test for static methods in interfaces.
12718
12719 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12720
12721         * genmdesc.c (build_table): Fix a crash on older glib versions.
12722
12723         * cpu-sparc.md: Remove some unused opcodes.
12724         
12725         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12726         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12727
12728         * cpu-amd64.md: Remove some unused opcodes.
12729
12730         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12731         like the other opcodes.
12732
12733 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12734
12735         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12736
12737         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12738
12739         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12740         variables 'cfg' instead of 'm' for consistency.
12741
12742         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12743
12744         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12745         argument holding the vtype return address, to avoid the ambigious use of
12746         cfg->ret for this purpose.
12747
12748         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12749
12750         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12751         
12752         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12753         new mono_print_ins () function which only takes one argument.
12754
12755 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12756
12757         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12758         macro arguments.
12759
12760 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12761
12762         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12763
12764         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12765
12766         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12767         opcodes and other small changes.
12768
12769         * mini-ops.h: Add some new opcodes from the linear IR branch.
12770
12771         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12772
12773         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12774         opcodes, use the REG_MEMBASE opcodes instead.
12775         
12776         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12777         opcodes, use the REG_MEMBASE opcodes instead.
12778         
12779         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12780         linear IR branch.
12781
12782         * mini.c (mono_op_imm_to_op): New helper function.
12783
12784         * mini-ops.h: Add some opcodes from linear IR branch.
12785
12786 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12789         <tsv@solvo.ru>.
12790
12791 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12792
12793         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12794         OP_ICONV_TO_R4/R8.
12795
12796         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12797
12798 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * aot-compiler.c (emit_method_code): Add an assert.
12801
12802         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12803         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12804         methods.
12805
12806 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12807
12808         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12809         some load/store opcodes so they are consistent. 
12810         (mono_arch_emit_prolog): Simplify some code.
12811
12812         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12813
12814         * objects.cs: Add tests for large argument offsets on ARM.
12815
12816         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12817         stack offsets. Fixes #359651.
12818
12819         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12820
12821         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12822
12823         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12824
12825         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12826
12827         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12828
12829         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12830         rid of CEE_CONV_R_UN.
12831
12832         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12833
12834 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12835
12836         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12837
12838         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12839
12840         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12841
12842         * cpu-amd64.md: Remove some unused opcodes.
12843
12844         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12845
12846         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12847
12848         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12849         arch specific functions for its parts. Call the peephole pass after local
12850         regalloc so the prolog can compute a more accurate max_offset.
12851         
12852         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12853         the corresponding OP_I/OP_L opcodes.
12854
12855         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12856
12857         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12858
12859 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12860
12861         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12862         as they are handled in mini.c.
12863
12864         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12865         
12866         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12867         case since it is handled in mini.c.
12868
12869         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12870
12871         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12872
12873         * *.c: Use the new opcodes in the IR and back end code.
12874
12875         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12876
12877         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12878
12879 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12880
12881         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12882         an assert because it has a race condition.
12883
12884 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12885
12886         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12887
12888         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12889
12890         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12891
12892         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12893         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12894
12895 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12896
12897         * cpu-amd64.md (move): Correct the maximum size of move.
12898
12899 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12900
12901         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12902         the generic class init trampoline to return quickly if the class
12903         is already inited.
12904
12905 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12906
12907         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12908         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12909
12910 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12911
12912         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12913         branch.
12914
12915 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12916
12917         * objects.cs: Add some soft-float tests.
12918
12919         * mini.c: Fix a couple more soft-float issues.
12920
12921         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12922
12923         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12924         avoid a REX prefix.
12925
12926 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12927
12928         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12929         exception happens while compiling a virtual method.
12930
12931 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12932
12933         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12934         
12935         * mini-sparc.c: Fix build.
12936
12937         * mini-sparc.c (get_call_info): Add support for generic sharing.
12938
12939         * mini-exceptions.c: Add a FIXME.
12940
12941 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12944         altstack handling code.
12945
12946         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12947         
12948         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12949
12950         * mini-s390.c: Add support for generic sharing.
12951
12952         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12953         Fix CAS on s390.
12954         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12955
12956         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12957
12958         * mini-s390x.c: Add support for generic sharing.
12959         
12960         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12961         Fix CAS on ia64.
12962         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12963
12964         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12965         can be used since it takes a 16 bit signed immediate.
12966
12967         * inssel-s390x.brg: Fix OP_SETRET.
12968
12969         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12970
12971         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12972
12973         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12974
12975         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12976
12977         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12978         in one place.
12979
12980         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12981         stuff.
12982
12983         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12984         of the unused mono_arch_patch_delegate_trampoline stuff.
12985
12986 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12987
12988         * basic-long.cs: Move the fp related tests to basic-float.cs.
12989
12990         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
12991
12992         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
12993
12994         * basic-calls.cs: Add a test for proper float argument passing.
12995
12996         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
12997         if the context corresponds to an exception received through a signal.
12998
12999         * exceptions.cs: Add a test for nullref handling at the start of a try
13000         clause.
13001
13002         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13003
13004         * jit-icalls.c (mono_break): New JIT icall.
13005
13006         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13007
13008         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13009
13010 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13011
13012         * cpu-*.md: Get rid of unused opcodes.
13013
13014         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13015
13016         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13017         by all platforms.
13018
13019         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13020         define.
13021
13022         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13023         the arch independent trampoline code in mini-trampolines.c.
13024
13025         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13026
13027         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13028
13029         * mini-s390.h: Remove an unused define.
13030         
13031         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13032         the arch independent trampoline code in mini-trampolines.c.
13033
13034         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13035
13036 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13037
13038         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13039
13040         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13041
13042         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13043
13044         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13045
13046         * cpu-amd64.md: Use smaller sizes for int opcodes.
13047
13048         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13049
13050         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13051         objects.cs.
13052
13053         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13054         debugging.
13055
13056         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13057         instead of though a pointer to save an indirection when accessing elements of
13058         the array.
13059
13060         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13061         some typos.
13062         (NOT_IMPLEMENTED): New helper macro.
13063         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13064         of a bb.
13065
13066         * *.c: Use the new helper macro.
13067
13068 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13069
13070         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13071
13072 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13073
13074         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13075         stack slots.
13076
13077 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13078
13079         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13080         profiling is enabled.
13081         
13082         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13083         the end.
13084         (mono_arch_emit_prolog): Add more first bblock optimizations.
13085
13086         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13087         in order if possible.
13088         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13089         bblock, since the arguments are still in their original registers.
13090
13091         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13092
13093 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13094
13095         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13096         as well.
13097
13098         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13099         offset 0.
13100
13101         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13102
13103         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13104         process async exceptions received while in unmanaged code.
13105
13106         * mini.c (mini_init): Install a callback with the runtime which will be called
13107         when a thread receives an async exception while in unmanaged code.
13108
13109         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13110
13111         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13112
13113 2008-01-16  Wade Berrier  <wberrier@novell.com>
13114
13115         * cpu-g4.md:
13116         * cpu-arm.md:
13117         * cpu-s390x.md:
13118         fix build
13119
13120 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13121
13122         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13123         compilation with sun cc.
13124
13125         * cpu-*.md: Fix the build.
13126
13127         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13128
13129         * mini-amd64.h: Add some comments to the MonoLMF structure.
13130
13131         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13132         
13133         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13134         in the LMF structure if possible. This saves two instructions in the
13135         managed->native wrappers.
13136
13137         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13138
13139 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13140
13141         * generic-sharing.c: New type argument lookup code which uses the
13142         runtime generic context template.
13143
13144 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13145
13146         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13147
13148         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13149         (mono_arch_output_basic_block): Fix localloc implementation.
13150
13151         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13152
13153         * mini-ia64.c (peephole_pass): Fix ia64 build.
13154
13155         * mini-amd64.c (peephole_pass): Fix a warning.
13156         
13157         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13158         at a constant offset from sp/fp.
13159
13160         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13161         instead of obtaining it from *lmf in the managed method case.
13162
13163 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13164
13165         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13166
13167 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13168
13169         * mini.h (MonoInstList): New type.
13170         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13171         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13172         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13173         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13174         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13175         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13176         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13177         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13178         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13179         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13180         MONO_INST_LIST_FOR_EACH_ENTRY,
13181         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13182         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13183         mono_inst_list_first, mono_inst_list_last,
13184         mono_inst_list_next, mono_inst_list_prev): New instruction
13185         list handling interfaces.
13186         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13187         list head 'ins_list'.
13188         (MonoInst): Replace next pointer with list head 'node'.
13189         (MonoCallInst): Make 'out_args' a MonoInstList.
13190         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13191         (MonoCompile): Delete reverse_inst_list and
13192         reverse_inst_list_len.
13193         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13194         mono_arch_lowering_pass, mono_arch_local_regalloc,
13195         mono_arch_output_basic_block, mono_arch_emit_prolog):
13196         Convert to new instruction lists.
13197         (insert_after_ins): Delete.
13198         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13199         instruction lists.
13200         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13201         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13202         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13203         mono_emulate_opcode, mono_emit_load_got_addr,
13204         inline_method, mono_method_to_ir, mono_print_bb_code,
13205         print_dfn, decompose_pass, nullify_basic_block,
13206         replace_out_block_in_code, remove_block_if_useless,
13207         merge_basic_blocks, move_basic_block_to_end,
13208         try_unsigned_compare, optimize_branches, mono_print_code,
13209         mini_select_instructions, remove_critical_edges): Likewise.
13210         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13211         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13212         mono_arch_output_basic_block, mono_arch_emit_prolog):
13213         Likewise.
13214         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13215         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13216         mono_arch_output_basic_block): Likewise.
13217         (inst_list_prepend, insert_after_ins): Delete.
13218         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13219         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13220         instruction lists.
13221         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13222         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13223         mono_arch_emit_prolog): Likewise.
13224         * cfold.c (mono_constant_fold): Likewise.
13225         * liveness.c (visit_bb, mono_analyze_liveness,
13226         optimize_initlocals): Likewise.
13227         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13228         * graph.c (mono_draw_code_cfg): Likewise.
13229         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13230         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13231         mono_ssa_cprop): Likewise.
13232         * abcremoval (get_relations_from_previous_bb, process_block):
13233         Likewise.
13234         * local-propagation (mono_cprop_invalidate_values,
13235         mono_local_cprop_bb): Likewise.
13236         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13237         peephole_pass, mono_arch_output_basic_block,
13238         mono_arch_emit_prolog): Likewise.
13239         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13240         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13241         mono_arch_emit_prolog): Likewise.
13242         (insert_after_ins): Delete.
13243         * aliasing.c (print_code_with_aliasing_information,
13244         mono_build_aliasing_information, mono_aliasing_deadce):
13245         Convert to new instruction lists.
13246         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13247         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13248         mono_arch_local_regalloc, mono_arch_output_basic_block):
13249         Likewise.
13250         (insert_after_ins): Delete.
13251         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13252         peephole_pass, mono_arch_output_basic_block): Convert to
13253         new instruction lists.
13254         * mini-codegen (InstList, inst_list_prepend,
13255         insert_after_ins): Delete.
13256         (insert_before_ins, get_register_force_spilling,
13257         get_register_spilling, free_up_ireg, free_up_reg,
13258         create_copy_ins, create_spilled_store, alloc_int_reg,
13259         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13260         to new instruction lists.
13261         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13262         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13263         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13264         (insert_after_ins): Delete.
13265         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13266         mono_arch_local_regalloc, mono_arch_output_basic_block,
13267         mono_arch_call_opcode): Convert to new instruction lists.
13268         (insert_after_ins): Delete.
13269         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13270         peephole_pass, mono_arch_output_basic_block,
13271         mono_arch_emit_prolog): Convert to new instruction lists.
13272
13273 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13274
13275         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13276
13277         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13278         Fixes #353182.
13279
13280         * Makefile.am (version.h): Make this work with non-bash shells.
13281
13282 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13283
13284         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13285
13286 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13287
13288         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13289         the InitializeArray optimization.
13290
13291 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13292
13293         * mini.c driver.c: Don't include os/gc_wrapper.h.
13294
13295 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13296
13297         * mini.c (print_jit_stats): Print GC statistics if available.
13298
13299 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13300
13301         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13302
13303 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13304
13305         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13306
13307 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13308
13309         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13310         
13311         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13312
13313         * driver.c (mono_main): Ditto.
13314
13315 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13318
13319         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13320         in the vtable can't be encoded.
13321         (compile_method): Ditto.
13322
13323 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13324
13325         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13326         defined.
13327
13328         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13329         lmf->rbp.
13330
13331         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13332         the top LMF entry belongs to the current method.
13333
13334         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13335
13336 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13337
13338         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13339         
13340         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13341
13342         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13343
13344         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13345
13346         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13347
13348         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13349         implementation.
13350
13351         * basic-float.cs: Add an ulong->double cast test.
13352
13353 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13354
13355         * mini.c (mono_method_to_ir): Fix a warning.
13356
13357 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13358
13359         * mini-ops.h: Add OP_SWITCH.
13360
13361         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13362         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13363
13364 2007-12-11  Geoff Norton  <gnorton@novell.com>
13365
13366         * mini-s390x.c: Minor change to the MAX() define to allow
13367         it to compile with other gcc versions.
13368
13369 2007-12-11  Geoff Norton  <gnorton@novell.com>
13370
13371         * cpu-s390x.md:
13372         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13373
13374 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13375
13376         exceptions-arm.c (mono_arch_get_restore_context): Restore
13377         the frame pointer.
13378
13379         exceptions-arm.c (throw_exception): Save the frame pointer.
13380         This is a partial fix for #323747. Only the client side is
13381         fixed.
13382
13383 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13384
13385         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13386         was using an unrelated variable to log the class which
13387         needed the cctor to be called. This was crashing on arm.
13388
13389 2007-12-09  Robert Jordan  <robertj@gmx.net>
13390
13391         * mini-x86.c (mono_arch_emit_epilog):
13392         Consider all kinds of 64-bit types. Fixes #323114.
13393
13394 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13395
13396         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13397
13398 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13399
13400         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13401
13402 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13403
13404         * mini.c: run type ctor before allocating an object, not only
13405         when running it's constructor method (fixes at least part of bug #342507).
13406
13407 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13408         
13409         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13410         
13411         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13412         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13413         function.
13414
13415         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13416         mono_generic_class_init_trampoline () the same as it is done with the other
13417         trampolines.
13418
13419         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13420         aot-runtime.c aot-compiler.c: Implement AOT support.    
13421
13422 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13423
13424         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13425         build for archs which don't have the vtable trampoline defined
13426         yet.
13427
13428 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13429
13430         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13431
13432         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13433
13434         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13435
13436         * tramp-<ARCH>.c: Use the new helper function.
13437
13438 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13439
13440         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13441         trampoline call, which takes a vtable argument.
13442
13443         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13444         OP_TRAMPCALL_VTABLEs like other calls.
13445
13446         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13447         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13448         call.  Implemented a support function which fetches the vtable
13449         from a register set.
13450
13451         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13452         Implemented a generic class init trampoline, using the
13453         OP_TRAMPCALL_VTABLE opcode.
13454
13455         * mini.c: Implemented static field access when sharing generic
13456         code.  This implies initing the class using the new
13457         OP_TRAMPCALL_VTABLE call.
13458
13459 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13460
13461         * mini.c: Don't compile methods with sharing enabled if their
13462         classes are disabled for sharing.
13463
13464 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13465
13466         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13467         opcodes. Fixes #346563.
13468
13469         * objects.cs: Add a new test.
13470
13471         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13472
13473         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13474         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13475
13476 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13477
13478         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13479
13480 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13481
13482         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13483         code stream.
13484
13485 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13486
13487         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13488
13489         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13490         optimization in the AOT case.
13491         
13492 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13493
13494         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13495         
13496         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13497
13498         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13499
13500         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13501
13502         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13503         is created by the inlined delegate ctor.
13504
13505         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13506
13507         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13508
13509 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13510
13511         * cpu-x86.md: Fix the length of ckfinite.
13512
13513 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13514
13515         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13516         
13517         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13518         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13519
13520         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13521
13522         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13523         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13524
13525 2007-11-28  Martin Baulig  <martin@ximian.com>
13526
13527         * mini-x86.c
13528         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13529         after creating the trampoline.
13530
13531 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13532
13533         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13534
13535         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13536         the same version.
13537
13538         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13539         instead of the calling method to help AOT.
13540
13541         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13542
13543 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13544
13545         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13546         is defined.
13547
13548 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13549
13550         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13551         
13552         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13553         (encode_method_ref): No need to handle generic method definitions specially.
13554
13555         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13556
13557         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13558         decode_klass_info.
13559
13560         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13561         encode_klass_info.
13562         (compile_method): Enable generic sharing.
13563
13564 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13565
13566         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13567         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13568
13569         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13570         generic code.
13571
13572         * mini-trampolines.c: Fix a warning.
13573
13574         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13575         NEW_PCONST.
13576         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13577         (generic_class_is_reference_type): Remove unused function.
13578
13579         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13580         in the generic vtable trampoline case.
13581
13582         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13583         
13584         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13585         return an AOT method based on a vtable slot.
13586
13587         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13588
13589         * mini.c (mini_get_vtable_trampoline): Export this.
13590
13591 2007-11-22  Martin Baulig  <martin@ximian.com>
13592
13593         * debug-debugger.h
13594         (MonoDebuggerInfo): Move `debugger_version' up.
13595
13596 2007-11-22  Martin Baulig  <martin@ximian.com>
13597
13598         * mini-amd64.c
13599         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13600
13601         * mini-trampolines.c
13602         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13603         after compiling the method.
13604
13605 2007-11-20  Martin Baulig  <martin@ximian.com>
13606
13607         * debug-mini.c
13608         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13609         (mono_debugger_remove_breakpoint): Likewise.
13610         (mono_debugger_check_breakpoints): Likewise.
13611
13612         * debug-debugger.c: Implement the new breakpoint interface here.
13613
13614 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13615
13616         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13617         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13618
13619         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13620
13621 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13622
13623         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13624
13625         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13626         mini.c.
13627
13628         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13629         mini.c.
13630
13631         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13632         returning a vtype in a register.
13633
13634         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13635         here from the arch specific code.
13636
13637         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13638         mini.c.
13639
13640         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13641         (mono_arch_emit_prolog): Increment maximum prolog size.
13642
13643         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13644         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13645
13646         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13647         MonoGenericSharingContext.
13648
13649         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13650         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13651
13652 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13653
13654         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13655         which extract fields out of the runtime generic context.  Full
13656         sharing of the NEWARR opcode.
13657
13658 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13659
13660         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13661         --enable-minimal=ssa.
13662
13663 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13664
13665         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13666         mono_marshal_get_delegate_invoke () signature change.
13667
13668 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13669
13670         * mini.c: Removed the shared context in favor of the generic
13671         sharing context.  Allocate the MonoJitInfo structure with room for
13672         the generic sharing context if it's needed.
13673
13674         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13675         domain-internals.h now.
13676
13677         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13678
13679         * generic-sharing.c: Several changes for working without a shared
13680         context and instead operating on open types instead.
13681
13682 2007-11-12  David S. Miller  <davem@davemloft.net>
13683
13684        * inssel-sparc.brg: Fix double instruction emit.
13685
13686 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13687
13688         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13689         Get/Set/Address methods.
13690         
13691         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13692         mono_marshal_get_delegate_invoke signature change.
13693
13694 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13695
13696         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13697         This can happens with dynamic methods. Fixes the other bug in #322722.
13698
13699 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13700
13701         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13702         BX call sequence.
13703
13704         * mini-arm.c (arm_patch): Implement patching of BX call
13705         sequence. Fixes one of the bugs in #322722.
13706
13707 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13708
13709        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13710        under Linux.  We only need to flush every 32-byte cache line.    
13711
13712 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13713
13714         * mini.c:
13715         move_basic_block_to_end: Add branches when needed, eventually creating
13716         a new BB.
13717         optimize_branches: added a parameter that tells if it's ok to create
13718         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13719         and avoid calling move_basic_block_to_end when it's not ok.
13720         Fixes bug 318677.
13721
13722 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13723
13724         * mini.c: Abort inlining call to InitializeArray if something
13725         looks wrong.  Let the icall handle it, which now has proper safety
13726         checks.
13727
13728 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13729
13730         * mini.c (mono_spill_call): add support for soft-float.
13731
13732         * mini.c (mono_method_to_ir): add support for soft-float
13733         to inlined functions that return float.
13734
13735         * mini.c (mono_method_to_ir): add support for soft-float
13736         to cee_stsfld opcode on float fields.
13737
13738 2007-11-05  Geoff Norton  <gnorton@novell.com>
13739
13740         * mini-x86.h: Fix the structure access for X86 Leopard.
13741
13742
13743 2007-11-05  Martin Baulig  <martin@ximian.com>
13744
13745         * mini-trampolines.c
13746         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13747         after compiling the method to notify the debugger.
13748
13749 2007-11-05  Martin Baulig  <martin@ximian.com>
13750
13751         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13752
13753 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13754
13755         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13756         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13757
13758 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13759
13760         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13761         native-to-managed wrappers.
13762         
13763 2007-11-01  Geoff Norton  <gnorton@novell.com>
13764
13765         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13766         members.
13767
13768 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13769
13770         * mini.c, mini-x86.c: when getting back from unmanaged code
13771         to managed via a marshaled delegate we also need to set the
13772         right domain.
13773
13774 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13775
13776         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13777         for amd64.
13778
13779 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13780
13781         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13782         let the debugger or other external agents to tell the JIT when
13783         a sw breakpoint has been inserted in the code that the JIT needs
13784         to be able to inspect.
13785
13786 2007-10-31  Martin Baulig  <martin@ximian.com>
13787
13788         * debug-debugger.h
13789         (MonoDebuggerInfo): Remove `runtime_class_init'.
13790
13791 2007-10-30  Martin Baulig  <martin@ximian.com>
13792
13793         * debug-mini.h
13794         (mono_debugger_thread_created): Added `MonoThread *' argument.
13795         (mono_debugger_extended_notification): New public method.
13796         (mono_debugger_trampoline_compiled): New public method.
13797
13798         * debug-mini.c
13799         (MonoDebuggerThreadInfo): Added `thread' and
13800         `extended_notifications' fields.
13801
13802         * debug-debugger.c
13803         (debugger_executable_code_buffer): New static variable.
13804
13805         * debug-debugger.h
13806         (MonoDebuggerInfo): Added `executable_code_buffer',
13807         `executable_code_buffer_size', `breakpoint_info_area',
13808         `breakpoint_table' and `breakpoint_table_size'.
13809
13810 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13811
13812         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13813         that IP  either is an unused value or the vtable pointer. IMT 
13814         calls use vtable + offset now. Reduced by almost half the size
13815         of IMT entries.
13816
13817 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13818
13819         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13820         defines to access param registers. Replace long usage with
13821         gsize as sizeof(long) != sizeof(void*) on Win64.
13822
13823         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13824         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13825         instead of non-existant _GetAddressOfReturnAddress.
13826
13827         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13828         param registers. Save/restore %rdi and %rsi in MonoLMF.
13829
13830         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13831         param registers. Modify (throw_exception) signature to take 
13832         %rdi and %rsi on Win64. 
13833
13834         Code is contributed under MIT/X11 license.
13835
13836 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13837
13838         * helpers.c: unlink debugging output files.
13839
13840 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13841
13842         * mini.c: Move mono_create_ftnptr () to object.c.
13843
13844 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13845
13846         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13847         optional. This function can now be used to disassemble code generated
13848         outside the JIT such as trampolines and IMT thunks.
13849
13850         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13851
13852         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13853         vtable pointer from a ldr instruction.
13854
13855         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13856         new IMT call sequence.
13857
13858         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13859         call sequence for interface invocations.
13860
13861         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13862         for imt support. This function is empty since IMT on ARM requires no
13863         special handling on the IR side.
13864
13865         * mini-arm.c (mono_arch_find_imt_method): added, required for
13866         imt support.
13867
13868         * mini-arm.c (mono_arch_find_this_argument): added, required
13869         for imt support.
13870
13871         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13872         a ldr instruction to load a value stored in the code stream.
13873
13874         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13875         for imt support.
13876
13877
13878 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13879
13880         * mini.c (mini_init): Install the jump trampoline callback.
13881
13882 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13883
13884         * mini-trampolines.c: handle synchronized methods with the common
13885         vtable trampoline (bug #335601).
13886
13887 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13888
13889         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13890
13891         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13892         64 bit platforms.
13893
13894         * mini-ia64.h mini-ia64.c: Add support for IMT.
13895
13896         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13897         prolog. Fixes #331958.
13898
13899 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13902
13903 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13904
13905         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13906         trampoline.
13907
13908 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13909
13910         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13911         trampoline.
13912
13913 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13914
13915         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13916         trampoline.
13917
13918 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13919
13920         * mini-trampolines.c: changed the magic rampoline to understand
13921         the common vtable trampoline method: the method to invoke is
13922         determined by the vtable displacement of the call.
13923
13924 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13925
13926         * mini.c, mini.h: register the common vtable trampoline if the
13927         architecture supports it.
13928
13929 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13930
13931         * cpu-amd64.md: use the correct max length for tls_get.
13932
13933 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13934
13935         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13936         CEE_STELEM_ANY. Fixes #333696.
13937
13938 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13939
13940         * exceptions-x86.c: provide more graceful handling of the case where
13941         we followed a bogus function pointer from managed code (bug #332866).
13942
13943 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13944
13945         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13946         replaces the generic_shared flag and will carry more information
13947         in the future.
13948
13949         * generic-sharing.c: Added mini_type_stack_size() which allows
13950         allows open types if given a generic sharing context.
13951         mini_get_basic_type_from_generic() takes a
13952         MonoGenericSharingContext* instead of a MonoCompile* now.
13953
13954         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13955         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13956         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13957         changes above.  Just passing arguments through to the right
13958         places.
13959
13960 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13961
13962         * mini-arm.c: unify the call emission to emit_code_seq().
13963
13964 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13965
13966         * tramp-arm.c: reduced the trampoline size.
13967
13968 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13969
13970         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13971         variable handling out of arch-specific code.
13972
13973 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13974
13975         * mini-arm.c: implemented fast delegate dispatch.
13976
13977 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13978
13979         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13980         that fp elimination is turned off if the space required by locals is too
13981         big. Fixes #331958.
13982
13983 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13984
13985         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13986         ARM to the new style trampoline.
13987
13988 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13989
13990         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
13991
13992         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
13993
13994 2007-10-09  Martin Baulig  <martin@ximian.com>
13995
13996         * debug-debugger.h
13997         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
13998         `field_info_offset_offset'.     
13999
14000 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14001
14002         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14003         removed more internal usage of the r11 register and made it available
14004         to the register allocator.
14005
14006 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14007
14008         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14009         when sharing generics and treat type variables as references.
14010
14011 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14012
14013         * mini-ppc.c: started removing the internal uses of register r11
14014         to eventually allow the register allocator to manage it as an
14015         additional available register.
14016
14017 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14018
14019         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14020
14021 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14022
14023         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14024         specific trampolines as they are not performance critical as a jump
14025         target (maybe align as before only for AOT code?). This saves about
14026         200 KB of native code on x86 for monodevelop startup.
14027
14028 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14029
14030         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14031         monodevelop startup.
14032
14033 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14034
14035         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14036
14037         * mini-sparc.h mini-sparc.c: Implement IMT support.
14038
14039         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14040         its smaller and doesn't clobber sparc_g1.
14041
14042         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14043
14044 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14045
14046         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14047
14048 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14049
14050         * mini-ppc.c: implemented fast delegate invocation.
14051
14052 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14053
14054         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14055
14056 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14057
14058         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14059         code to the new style trampoline in preparation for IMT support.
14060
14061 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14062
14063         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14064         systems already. This also reduces the specific trampiline sizes and
14065         prepares for the use of r12 as the IMT identifier register.
14066
14067 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14068
14069         * mini-mips.h: endianess fix (simplified from a patch by
14070         Thomas Kunze <thommy@tabao.de>, bug #323737).
14071
14072 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14073
14074         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14075         to access ucontext fields and enable netbsd support
14076         (partially from Magnus Henoch <mange@freemail.hu>).
14077
14078 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14079
14080         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14081         use the preprocessor from the CPP env var if it is set.
14082
14083 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14084
14085         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14086         code, before interface_offset gets used.
14087
14088 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14089
14090         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14091         mono_class_setup_vtable () before accessing klass->vtable.
14092
14093 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14094
14095         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14096         hackish.
14097
14098 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14099
14100         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14101         IMT slots (this saves hundreds of KB of memory in programs like
14102         IronPython and Monodevelop).
14103
14104 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14105
14106         * mini.c: print the delegate counter.
14107
14108 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14109
14110         * mini-x86.c: make it easier to enable the debugging code for IMT
14111         slots.
14112
14113 2007-09-28  Martin Baulig  <martin@ximian.com>
14114
14115         * debug-debugger.h
14116         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14117         `mono_method_klass_offset' and `mono_method_token_offset'.
14118
14119 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14120
14121         * mini.c: First generics sharing implementation.  Can only share
14122         in very simple cases.  If sharing doesn't work it falls back to
14123         dedicated compilation.
14124
14125         * mini.h: Flag in MonoCompile to specify whether generic
14126         compilation is shared.  Flags enum for marking which generic inst
14127         of a context is used.  Prototypes for helper functions.
14128
14129         * generic-sharing.c: Helper functions for generic method sharing.
14130
14131         * optflags-def.h: Optimization flag (gshared) for enabling generic
14132         method sharing added.
14133
14134         * Makefile.am: generic-sharing.c added.
14135
14136 2007-09-19 Daniel Nauck <dna@mono-project.de>
14137
14138         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14139
14140 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14141         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14142         fixes bug 325507.
14143
14144 2007-09-19  Martin Baulig  <martin@ximian.com>
14145
14146         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14147         mono_debug_cleanup() is now part of mono_cleanup().
14148
14149 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14150
14151         * driver.c (mono_main): Fix a warning.
14152
14153 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14154
14155         * aot-compiler.c: Optimize various parts when processing large assemblies.
14156         Fixes ##325568.
14157
14158         * mini.c (mono_patch_info_hash): Improve hash function.
14159
14160 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14161
14162         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14163         
14164         Code is contributed under MIT/X11 license.
14165
14166 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14167
14168         * mini.c (mini_init): Fix a leak.
14169
14170         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14171
14172 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14173
14174         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14175
14176 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14177
14178         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14179
14180 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14181
14182         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14183         variance tests.
14184
14185         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14186
14187         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14188
14189         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14190
14191         * aot-runtime.c (decode_patch_info): Ditto.
14192
14193 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14194
14195         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14196         static case. Cache delegates in architecture specific code, 
14197         based on number of parameters.
14198         
14199         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14200         in architecture specific code, based on number of parameters.
14201         
14202         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14203         caching happen in architecture specific code now.
14204         
14205         Code is contributed under MIT/X11 license.
14206
14207 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14208
14209         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14210         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14211         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14212
14213         Code is contributed under MIT/X11 license.
14214
14215 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14216         * mini.c: (mono_thread_abort) Fixed bug #82416.
14217
14218 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14219
14220         * mini.: hook the new managed GC allocation feature into the JIT.
14221
14222 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14223
14224         * mini.c: implementation for the new runtime tls opcode.
14225
14226 2007-09-11  Martin Baulig  <martin@ximian.com>
14227
14228         * debug-debugger.h
14229         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14230         `mono_method_inflated_offset'.
14231
14232 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14233
14234         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14235         async exceptions into a method.
14236
14237         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14238         purpose of testing whenever the unwinder works at every instruction.
14239
14240 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14241
14242         * mini.c: check accessibility of method used in ldftn (fixes
14243         bug #82635).
14244
14245 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14246
14247         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14248
14249         * inssel.brg: Fix a warning.
14250
14251 2007-09-03  Martin Baulig  <martin@ximian.com>
14252
14253         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14254         now takes the `main_method' as argument.
14255
14256 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14257
14258         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14259
14260 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14261
14262         * driver.c: include the cil-coff.h header on Windows.
14263         
14264         Code is contributed under MIT/X11 license.
14265
14266 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14267
14268         * mini.c, driver.c: don't include the cil-coff.h header.
14269
14270 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14271
14272         * mini.c: flag places that needs fixes fo soft-float support.
14273
14274 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14275
14276         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14277         endian systems (partially from Dean Jenkins, bug #81924).
14278
14279 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14280
14281         * mini.c (check_linkdemand): Remove embedded reference object in
14282         call to LinkDemandSecurityException.
14283         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14284         with an IntPtr instead of a reference object.
14285
14286 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14287
14288         * mini.c (handle_initobj): Handle alignment properly.
14289
14290         * inssel.brg (mini_emit_memset): Ditto. 
14291
14292         * inssel.brg (mini_emit_memcpy): Ditto. 
14293
14294         * inssel-sparc.brg: Ditto.              
14295
14296         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14297
14298 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14299
14300         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14301         exceptions raised in unmanaged code. Fixes part of #82594.
14302
14303 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14304
14305         * mini.c (mono_method_to_ir), declsec.c
14306         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14307
14308 2007-08-22  Martin Baulig  <martin@ximian.com>
14309
14310         * debug-mini.h
14311         (MonoDebuggerThreadInfo): New typedef.
14312         (mono_debugger_thread_table): New global variable.
14313         (mono_debugger_thread_created): New public function.
14314         (mono_debugger_thread_cleanup): New public function.
14315
14316         * debug-debugger.h
14317         (MonoDebuggerInfo):
14318         - removed `get_current_thread' and `lookup_assembly'.
14319         - removed `data_table'.
14320         - added `thread_table'.
14321
14322         * mini.c
14323         (mono_thread_start_cb): Call mono_debugger_thread_created().
14324         (mono_thread_attach_cb): Likewise.
14325         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14326         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14327         initial domain.
14328
14329         * driver.c (mono_main): Move mono_debug_init() up, before calling
14330         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14331
14332 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14333
14334         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14335         together when passing several arguments of type double (gives a small
14336         speedup and saves a few bytes of generated code).
14337
14338 2007-08-20  Jb Evain  <jbevain@novell.com>
14339
14340         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14341
14342 2007-08-20  Jb Evain  <jbevain@novell.com>
14343
14344         * mini.c (mono_method_to_ir): throw MethodAccessException
14345         and FieldAccessException instead of InvalidProgramException.
14346
14347 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14348
14349         * mini.c: CoreCLR security checks.
14350
14351         * mini.h: Removed MonoSecurityMode (moved to
14352         metadata/security-manager.h) and mono_security_mode global var
14353         (replaced by set/get functions in security-manager.h).
14354
14355         * driver.c: Added "core-clr-test" security mode for testing.  Used
14356         set-function for setting security mode.
14357
14358 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14359
14360         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14361         the new jit_info_table.
14362
14363         * driver.c: Test code for the new jit_info_table (enabled by the
14364         define MONO_JIT_INFO_TABLE_TEST).
14365
14366 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14367
14368         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14369         detection of call <REG> instruction sequence. Fixes build on freebsd.
14370
14371 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14372
14373         * mini-exceptions.c: Fix a warning.
14374
14375 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14376
14377         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14378         stack overflow handling code on amd64 too.
14379
14380         * mini-exceptions.c (mono_setup_altstack): Make this use 
14381         mono_thread_get_stack_bounds ().
14382
14383         * mini-x86.h: Disable sigaltstack on solaris x86.
14384
14385 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14386
14387         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14388
14389 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14390
14391         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14392
14393 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14394
14395         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14396
14397         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14398
14399 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14400
14401         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14402         due to alignment.
14403
14404 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14405
14406         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14407         to be emitted (bug #82281).
14408
14409 2007-08-01  Martin Baulig  <martin@ximian.com>
14410
14411         Merged the `debugger-dublin' branch.
14412
14413         * debug-debugger.h (MonoDebuggerInfo):
14414         Removed the `old_*' compatibility entries.
14415         Added `debugger_version' and `data_table'.
14416         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14417         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14418
14419         * debug-mini.c
14420         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14421         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14422         instead of a `gconstpointer'.
14423         (mono_debugger_insert_method_breakpoint): Return a
14424         `MonoDebugMethodAddressList *'.
14425
14426 2007-06-28  Martin Baulig  <martin@ximian.com>
14427
14428         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14429
14430 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14431
14432         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14433         __builtin_frame_address () since it is broken on older gcc versions.
14434
14435 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14436
14437         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14438         on the stack overflow handling and made the managed stack overflows
14439         catchable in most cases using soft guard pages.
14440         * exceptions-x86.c: added code to restore the protection in the soft
14441         guard pages at the end of exception handling.
14442
14443 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14444
14445         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14446
14447 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14448
14449         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14450         exception handling.
14451
14452 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14453
14454         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14455         signal handling support until it has been ported to the new mechanism.
14456         * mini.c: fixed stack overflow detection and use the new
14457         architecture code  to handle signals on the altstack.
14458
14459 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14460
14461         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14462         stack overflows on the alt stack.
14463
14464 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14467         stack overflows on the alt stack.
14468
14469 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14470
14471         * exceptions-ppc.c: cleanup preparing for altstack support.
14472
14473 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14474
14475         * exceptions-arm.c: cleanup preparing for altstack support.
14476
14477 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14478
14479         * mini.c (print_jit_stats): Output hazard pointer stats.
14480
14481 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14482
14483         * driver.c, mini.c: Replaced security mode flags with a single
14484         enum variable.
14485
14486 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14487
14488         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14489
14490 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14491
14492         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14493         (which doesn't do anything yet) for activating Core CLR
14494         (Silverlight) security.
14495
14496 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14497
14498         * mini-codegen.c: work around a possible gcc bug on arm.
14499
14500 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14501
14502         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14503         message for platforms that don't support AOT compilation.
14504
14505 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14506
14507         * mini.h, mini.c, driver.c: temporary smcs hack.
14508
14509 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14510
14511         * mini-arm.h, mini-arm.c: arm EABI fixes.
14512
14513 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14514
14515         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14516         case.
14517
14518         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14519         trampolines taking a method argument.
14520
14521         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14522
14523         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14524         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14525
14526         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14527         JIT compilation throws an exception. Fixes #82050.
14528
14529 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14530
14531         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14532         with the MONO_EXCEPTION_ defines.
14533
14534 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14535
14536         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14537         #82117.
14538         
14539         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14540         the cause of an assertion.
14541
14542 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14543
14544         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14545         removed.
14546
14547 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14548
14549         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14550         assert. Should fix #82103.
14551
14552 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14553
14554         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14555         here too. Fixes #82095.
14556
14557         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14558         addresses.
14559
14560         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14561
14562         * mini-amd64.h: Enable IMT for amd64.
14563         
14564         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14565
14566 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14567
14568         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14569
14570 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14571
14572         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14573         as soon as check_linkdemand sets an exception_type.
14574
14575 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14576
14577         * mini-x86.c: fixed offsets for IMT call sequence.
14578         * mini-x86.h: enable IMT again.
14579
14580 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14581
14582         * trace.c (mono_trace_enter_method): Decode MonoType too.
14583
14584         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14585
14586         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14587
14588         * mini-amd64.c: Add preliminary IMT implementation.
14589         
14590 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14591
14592         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14593         understand the new IMT-base interface invocation (thanks to
14594         Daniel Nauck for the report and the remote debugging session).
14595
14596 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14597
14598         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14599
14600 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14601
14602         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14603
14604 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14605
14606         * mini-trampolines.c: implement AOT IMT support.
14607         * mini-x86.h: enable IMT support for wider testing.
14608
14609 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14610
14611         * inssel.brg (emit_imt_argument): Add aot support here.
14612
14613         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14614
14615 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14616
14617         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14618         of the IMT implementation, partially from massi, with my
14619         implementation of the bsearch sequence. Disabled by default until
14620         the AOT code is implemented.
14621
14622 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14623
14624         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14625
14626         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14627
14628 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14629
14630         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14631         arch-independent IMT JIT code from Massimiliano
14632         Mantione (massi@ximian.com) with small cleanups from me.
14633
14634 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14635
14636         * Makefile.am: fix svn invocation to get the svn revision to be
14637         independent of the local language (build fix).
14638
14639 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14640
14641         * mini.c (inline_method): Reset cfg->exception_type if the
14642         inlining is aborted.  Fixes: 82049.
14643
14644 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14645
14646         * mini.c: remove assert from exception handling code when exception_ptr
14647         is not set.
14648
14649 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14650
14651         * mini.c (mono_codegen): Add an assert.
14652
14653         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14654         enter and leave code.
14655         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14656
14657 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14658
14659         * mini-ppc.c: fixed memory corruption for localloc(0)
14660         (bug #81852).
14661
14662 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14663         
14664         * mini.c: Fix warnings.
14665
14666 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14667
14668         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14669         to emit better double->int conversions.
14670
14671 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14672
14673         * mini.c: the provided Min/Max optimizations are valid for unisgned
14674         ints.
14675
14676 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14677
14678         * 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
14679
14680 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14681
14682         * mini.c (mono_running_on_valgrind): Add support for reporting the
14683         method and  its boundaries to valgrind.
14684
14685 2007-06-28  Martin Baulig  <martin@ximian.com>
14686
14687         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14688
14689 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14690
14691         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14692
14693         * generic.2.cs: Add new test case.
14694
14695 2007-06-25  Martin Baulig  <martin@ximian.com>
14696
14697         Merged the `debugger-dublin' branch.
14698
14699         * debug-mini.c
14700         (mono_debugger_insert_method_breakpoint): New public method.
14701         (mono_debugger_remove_method_breakpoint): Likewise.
14702         (mono_debugger_check_breakpoints): New static method.
14703         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14704
14705         * debug-debugger.h (MonoDebuggerInfo):
14706         Renamed (to keep backward compatibility in the vtable):
14707         `insert_breakpoint' -> `old_insert_breakpoint'.
14708         `remove_breakpoint' -> `old_remove_breakpoint'.
14709         `create_string' -> `old_create_string'.
14710         `lookup_class' -> `old_lookup_class'.
14711         `lookup_type' -> removed; changed into a dummy field.
14712         `lookup_assembly' -> `old_lookup_assembly'.
14713         Added (same functionality, but different signature):
14714         `create_string', `lookup_class', `lookup_assembly'
14715         Added new:
14716         `get_method_addr_or_bpt', `remove_method_breakpoint',
14717         `runtime_class_init'.
14718
14719         * debug-debugger.c: Merged the `debugger-dublin' branch.
14720
14721 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14722
14723         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14724         well.
14725         (peephole_pass): Likewise.
14726
14727 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14728
14729         * driver.c: hopefully make setaffinity work also for ancient
14730         versions of linux.
14731
14732 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14733
14734         * driver.c : win32 build fix.
14735
14736 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14737
14738         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14739         processor if it is set.
14740
14741 2007-06-21  Martin Baulig  <martin@ximian.com>
14742
14743         * debug-mini.h: New file.
14744
14745         * debug-mini.c
14746         (mono_debugger_insert_breakpoint_full): Moved here from
14747         ../metadata/mono-debug-debugger.c.
14748         (mono_debugger_remove_breakpoint): Likewise.
14749         (mono_debugger_breakpoint_callback): Likewise.
14750
14751 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14752
14753         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14754         changes in MonoGenericClass.
14755
14756 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14757
14758         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14759
14760 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14761
14762         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14763         removal of MonoGenericMethod.
14764
14765 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14766
14767         * mini-exceptions.c: hooks for the exception events profiling API.
14768
14769 2007-06-14  Randolph Chung  <tausq@debian.org>
14770
14771         * Makefile.ma: Add hppa target.
14772         * mini-arch.h: Include mini-hppa.h
14773         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14774         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14775         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14776
14777 2007-06-14  Randolph Chung  <tausq@debian.org>
14778
14779         * inssel.brg: Add rules for "chained" compare-branch operations so that
14780         a single compare op can affect multiple branches.  Adjust cost for
14781         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14782         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14783         cost for some rules so that they can more easily be overridden by
14784         per-arch rules (with fixes from lupus).
14785         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14786
14787 2007-06-13  Randolph Chung  <tausq@debian.org>
14788
14789         * mini-ops.h: Reorder branch ops so that they match the order of the
14790         corresponding CEE_* ops.  The code expects them this way.
14791         Add new ops for HPPA target.
14792         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14793
14794 2007-06-13  Randolph Chung  <tausq@debian.org>
14795
14796         * mini-exceptions.c: Handle cases where the stack grows towards
14797         larger addresses.
14798         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14799
14800 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14801
14802         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14803         counter.
14804         * driver.c: explain where a non-matching corlib is found.
14805
14806 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14807
14808         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14809
14810 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14811
14812         * mini-exceptions.c: Generate a method profile leave event during
14813         an exception to ensure that the profiler gets notified.
14814
14815 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14816
14817         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14818         branch.
14819
14820         * cpu-amd64.md: Add long_and/or/xor opcodes.
14821
14822 2007-06-06  Wade Berrier  <wberrier@novell.com>
14823
14824         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14825         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14826         length of instruction shr_imm (expected 8, got 10)
14827
14828 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14829
14830         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14831
14832 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14833
14834         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14835         MonoInternalHashTable again (fixed bug in the internal hash table
14836         code).
14837
14838 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14839
14840         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14841         Have to figure out what makes it crash the SWF regression.
14842
14843 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14844
14845         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14846
14847 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14848
14849         * mini.c: optimize out the type check when storing null in a
14850         reference array.
14851
14852 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14853
14854         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14855         MonoInternalHashTable.
14856
14857 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14858
14859         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14860         signed integer methods.
14861
14862 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14863
14864         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14865         permanently since the current approach doesn't work.
14866
14867 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14868
14869         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14870         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14871
14872 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14873
14874         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14875         the sreg2==rdx case.
14876         
14877         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14878         account if it contains a rex prefix.
14879         (peephole_pass): Handle OP_FMOVE as well.
14880
14881 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14882
14883         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14884         as it causes regressions.
14885
14886 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14887
14888         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14889         static case as well.
14890
14891         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14892
14893         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14894         (mono_arch_get_this_arg_from_call): Ditto.
14895
14896         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14897
14898         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14899         invoke_impl field.
14900
14901         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14902         (mono_arch_get_this_arg_from_call): Ditto.
14903
14904         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14905         
14906         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14907         try to create optimized invoke code and use that for further invocations. 
14908         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14909
14910         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14911
14912 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14913
14914         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14915         sealed classes or methods.
14916         *devirtualization.cs: tests for the new optimization
14917
14918 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14919
14920         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14921         by the update_volatile () function.
14922
14923 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14924
14925         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14926         require it.
14927
14928         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14929
14930 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14931
14932         * mini.c: Add configure checks for header files.
14933         * mini-x86.c: Add configure checks for header files.
14934         * trace.c: Add configure checks for header files.
14935         * aot-runtime.c: Add configure checks for header files.
14936         * aot-compiler.c: Add configure checks for header files.
14937         * driver.c: Add configure checks for header files.
14938         * mini-codegen.c: Add configure checks for header files.
14939         
14940         Code is contributed under MIT/X11 license.
14941
14942 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14943
14944         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14945         icompare_imm -128 + op_iclt. Fixes #81703.
14946
14947 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14948
14949         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14950
14951 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14952
14953         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14954         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14955         so that all isinst checks now use "interface_bitmap".
14956
14957 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14958
14959         * cpu-amd64.md (jmp): Fix a warning.
14960
14961         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14962
14963         * basic.cs: Add new regression test.
14964
14965         * basic.cs: Remove test which is now in basic-long.cs.
14966
14967         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14968
14969         * basic-long.cs: Add new test.
14970         
14971 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14972
14973         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14974
14975 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14976
14977         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14978
14979         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14980         places.
14981         
14982         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14983         throwing code a bit.
14984
14985         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14986         the exception throwing code a bit.
14987
14988         * mini-x86.c (get_call_info): Allocate result from a mempool.
14989
14990 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
14991
14992         * aot-compiler.c (find_typespec_for_class): Fix the assert.
14993
14994         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
14995
14996         * mini.h (MonoCompile): Add 'token_info_hash' field.
14997
14998         * mini.c: Save token->method associations during compilation so the AOT 
14999         compiler can use it.
15000         
15001         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15002         which reference generic classes and methods.
15003
15004 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15005
15006         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15007
15008         * aot-compiler.c (compile_method): Fix a typo in a comment.
15009
15010         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15011
15012         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15013         everything generic.
15014
15015         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15016
15017 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15018
15019         * mini.h (MonoCompile): Add 'args' field.
15020
15021         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15022         into cfg->args.
15023
15024         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15025
15026 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15027
15028         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15029
15030         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15031
15032         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15033         opcodes for some opcodes.
15034
15035         * mini.h *.brg *.c: Use the new opcodes.
15036
15037 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15038
15039         * mini.h: Bumped aot revision.
15040
15041         * inssel.brg: modified code generation of type checks for interfaces
15042         to use the new "MonoClass.interface_bitmap" instead of the old
15043         "MonoClass.interface_offsets".
15044
15045 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15046
15047         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15048
15049 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15050
15051         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15052         64 bit platforms.
15053
15054 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15055
15056         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15057
15058 2007-04-27  Wade Berrier  <wberrier@novell.com>
15059
15060         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15061         mini.h) to fix build.
15062
15063 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15064
15065         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15066         
15067         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15068         causes the corlib unit tests to fail.
15069
15070 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15071
15072         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15073
15074         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15075
15076         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15077         opcodes to the comparison relations.
15078
15079         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15080         opcodes to their types.
15081         
15082         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15083
15084         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15085         it in cfg->arch.cinfo.
15086
15087         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15088
15089         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15090         cfg->cil_offset_to_bb.
15091
15092 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15093
15094         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15095         created becase of initlocals.
15096
15097 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15098
15099         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15100         Sergey Tikhonov <tsv@solvo.ru>.
15101
15102 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15103
15104         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15105
15106 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15107
15108         * cpu-s390.md (break): Correct the length of break instruction.
15109
15110 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15111
15112         * mini.c: fix a couple of soft-float issues and comments.
15113
15114 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15115
15116         * trace.c (is_filenamechar): - is also a filename char.
15117
15118 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15119
15120         * mini-s390.c: Correct checking for enum type in return value processing.
15121
15122 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15123
15124         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15125         (version.h): Makefile is in the build directory.
15126
15127 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15128
15129         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15130
15131 2007-04-11  Martin Baulig  <martin@ximian.com>
15132
15133         * mini.c (can_access_member): Fix handling of generic classes;
15134         fixes #81259.
15135
15136 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15137
15138         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15139
15140 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15141
15142         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15143
15144 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15145
15146         * mini-codegen.c: make sure the right spill amount is
15147         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15148
15149 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15150
15151         * mini-ppc.c: fixes for the fp_branch_nan test.
15152
15153 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15154
15155         * basic.cs: Comment out new test which still fails on ia64.
15156
15157 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15158
15159         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15160
15161 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15162
15163         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15164
15165 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15166
15167         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15168         on 64 bit machines. Fixes part of #80738.
15169
15170         * basic.cs: Add regression test.
15171
15172 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15173
15174         * inssel.brg basic.cs: Revert previous change to fix build.
15175
15176         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15177         platforms.
15178         
15179         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15180
15181         * basic.cs: Add new regression test.
15182
15183 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15184
15185         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15186         many arguments.
15187
15188 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15189
15190         * cpu-s390x.md: Correct length of break instruction.
15191
15192 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15193
15194         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15195         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15196
15197 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15198
15199         * *.c: Begin WIN64 port.
15200         * mini.c:  Use correct register in profiler.
15201         * mini-amd64.c: No inline assembly on Win64.
15202         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15203         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15204         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15205         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15206         mono_arch_ip_from_context for Win64.
15207         
15208         Contributed under MIT/X11 license.
15209
15210 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15211
15212         * exceptions-amd64.c (seh_handler): Ditto.
15213
15214         * exceptions-x86.c (seh_handler): Fix a memory leak.
15215
15216 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15217
15218         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15219         mini-s390x.c: fixed peephole optimizations to deal
15220         correctly with 1 and 2 byte reload avoidance.
15221
15222 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15223
15224         * cpu-s390.md, cpu-s390x.md: update localloc length.
15225
15226 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15227
15228         * cpu-g4.md: added missing descriptions.
15229
15230 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15231
15232         *  Makefile.am: Add support so the tail tests are not executed on
15233         PowerPC as that is a known limitation of the PowerPC port.
15234
15235 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15236
15237         * runmdesc.bat:  Move to msvc directory.
15238         
15239 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15240
15241         * runmdesc.bat:  Run executable that was produced by the current
15242         target and sent via an argument.
15243         
15244 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15245
15246         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15247         #81102.
15248
15249         * generics.2.cs: Add regression test.
15250
15251 2007-03-09  Wade berrier  <wberrier@novell.com>
15252
15253         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15254
15255 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15256
15257         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15258         AOT code depends on this.
15259
15260 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15261
15262         * mini.c: more precise tracking of types in the eval stack
15263         (part of fix for bug #81044).
15264
15265 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15266
15267         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15268
15269         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15270
15271 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15272
15273         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15274
15275         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15276
15277 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15278
15279         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15280         a pointer on 64 bit systems. Fixes #80190.
15281
15282         * iltests.il: Add new regression test.
15283
15284 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15285
15286         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15287
15288 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15289
15290         * trace.c: Remove an erroneous alignemnt check when tracing.
15291           Fixes --trace on OSX86.
15292
15293 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15294
15295         * mini-$(arch).h: initialize SP in context for all the archs.
15296
15297 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15298
15299         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15300         regressions in the thread tests.
15301
15302 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15303
15304         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15305         - fixed implementation of LOCALLOC opcode
15306         - implemented non-un compare for floats
15307         - code cleanup
15308         - implementation of FDIV and CKFINITE opcodes
15309         - fixes for latest mono updates
15310         - additional arch opcodes
15311
15312 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15313
15314         * Makefile.am: simplify and merge rules for cross-compilation.
15315
15316 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15317
15318         * local-propagation.c: Actually *apply* the fix for bug 80591...
15319
15320 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15321
15322         * mini-exceptions.c: backuot part of the last change
15323         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15324
15325 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15326         * inssel.brg: Fix bug 59286.
15327
15328
15329 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15330
15331         * mini-exceptions.c: patch from Zoltan to correctly check for
15332         stack boundaries (using the stack register, not the frame register),
15333         fixes bugs #80724, #79717.
15334
15335 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15336
15337         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15338         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15339
15340         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15341         presence of frame pointer elimination.
15342
15343 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15344         
15345         * mini-x86.h: NetBSD UCONTEX_REG defines.
15346
15347 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15348
15349         * inssel-amd64.brg: Fix amd64 build.
15350
15351 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15352
15353         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15354         on amd64.
15355
15356 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15357
15358         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15359         ends.
15360
15361         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15362
15363 2007-01-30 Mark Mason <mason@broadcom.com>
15364
15365            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15366            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15367            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15368            beginning support for CEE_JMP [not quite working yet]
15369            * tramp-mips.c: LMF handling now works
15370         
15371 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15372
15373         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15374
15375         * mini.h (NULLIFY_INS): New macro.
15376
15377 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15378
15379         * mini.c: statistical profiler fix for windows, patch
15380         from Tor Lillqvist (tml@novell.com).
15381
15382 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15383         * local-propagation.c: Fix bug 80591.
15384
15385 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15386
15387         * Makefile.am: put back the --export-dynamic option as with
15388         the previous gmodule flags (thanks to Robert Jordan).
15389
15390 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15391
15392         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15393
15394         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15395         simplify and speed up the local register allocator. Also rename some fields
15396         like iassign->vassign.
15397         
15398         * regalloc.c: Remove some functions which are no longer used since their
15399         inlined version is in mini-codegen.c.
15400         
15401         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15402
15403         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15404
15405 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15406
15407         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15408         narrowing. Fixes #80622.
15409
15410         * iltests.il: Add new regresssion test. 
15411
15412 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15413
15414         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15415         debug-debugger.c, debug-debugger.h: warning fixes.
15416         * driver.c: updated copyright year and made it fit in one line.
15417
15418 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15419
15420         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15421
15422 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15423
15424         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15425
15426         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15427
15428         * iltests.il: Add new test for bug #80507.
15429
15430 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15431
15432         * mini-arm.h: use soft-float also on vfp for now.
15433
15434 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15435
15436         * mini.c: fix some more soft-float issues.
15437
15438 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15439
15440         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15441
15442 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15443         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15444         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15445         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15446
15447 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15448
15449         * mini-arm.c: typo fix.
15450
15451 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15452
15453         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15454
15455 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15456
15457         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15458         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15459
15460         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15461
15462         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15463
15464         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15465         
15466         * inssel.brg: Fix a warning.
15467
15468         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15469
15470         * abcremoval.c ssa.c ssapre.c: Update after this change.
15471         
15472         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15473
15474         * dominators.c (df_set): Use mono_bitset_union_fast.    
15475
15476 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15477
15478         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15479         mini-codegen.c: reduce relocations and memory usage for the cpu
15480         description.
15481
15482 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15483
15484         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15485
15486         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15487         to reduce their size.
15488
15489 2007-01-19 Mark Mason <mason@broadcom.com>
15490
15491         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15492         * mini-mips.c: more configuration macros, support long conditional branches, additional
15493         asserts, fix epilog instrumentation.
15494         * mini-mips.h: use standard stack walk
15495         * cpu-mips.md: increase size of div, rem and conditional branches
15496         
15497 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15498
15499         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15500         to cpu spec data.
15501
15502 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15503
15504         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15505         (compile_method): Ditto.
15506
15507         * aot-runtime.c (decode_klass_info): Ditto.
15508
15509         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15510         needed by the code generated by inssel.brg. Also fix a warning.
15511
15512 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15513
15514         * mini.c: deal with enums that become genericinsts by
15515         being nested in a generic class (bug #79956).
15516
15517 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15518
15519         * mini.c: match the generic definition to check for
15520         private access with generic types (bug #78431).
15521
15522 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15523
15524         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15525         to make life easier for people cross-compiling that insist on not
15526         using scratchbox.
15527
15528 2007-01-17 Mark Mason <mason@broadcom.com>
15529
15530         * inssel-long.brg: patch to deal with mips missing flags
15531         * inssel-long32-mips.brg: implement overflow checks
15532         * insset-mips.brg: implement overflow checks
15533         * mini-mips.h: implement conditional exception handling
15534         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15535           Remove unused code, minor cleanups.
15536         * exceptions-mips.c: minor cleanups
15537         * mini-ops.h: add mips conditional exception ops
15538         * cpu-mips.md: add mips conditional exception ops
15539
15540         
15541 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15542
15543         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15544         to deal with mips missing of flags.
15545
15546 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15547
15548         * exceptions-ppc.c: execute fault handlers.
15549
15550 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15551
15552         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15553
15554 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15555
15556         * mini.c: handle also floating point values in initialize_array.
15557
15558 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15559
15560         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15561         array initialization and make it conditional on the intrins option.
15562
15563 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15564
15565         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15566         relocations and put the patch info names close to the enum definition.
15567
15568 2007-01-15 Mark Mason <mason@broadcom.com>
15569
15570         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15571
15572 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15573
15574         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15575
15576 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15577
15578         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15579
15580 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15581
15582         * Makefile.am: distribute the mips sources.
15583
15584 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15585
15586         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15587         directly.
15588
15589 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15590
15591         * cpu-x86.md: back out for now as this triggers other regressions.
15592
15593 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15594
15595         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15596         to eax:edx, so ecx can't get allocated to them (bug #80489).
15597
15598 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15599
15600         * mini.c, mini-exceptions.c: enabled running fault handlers
15601         (bug #80469).
15602
15603 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15604
15605         * driver.c: If nothing fail, do not use the string "failed",
15606         because it makes it very annoying to view test result logs on the
15607         web. 
15608
15609 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15610
15611         * debug-debugger.c (mono_debugger_main): Rename "main" to
15612         "main_method" to prevent a warning.
15613
15614         Remove a warning for unused field.
15615
15616 2006-12-28  Martin Baulig  <martin@ximian.com>
15617
15618         * debug-debugger.c
15619         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15620
15621 2006-12-22  Martin Baulig  <martin@ximian.com>
15622
15623         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15624         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15625         seperate `.mdb_debug_info' section, so we can access it from the
15626         debugger even if the binary is stripped.
15627
15628         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15629         from the `.mdb_debug_info' here to prevent the linker from
15630         removing that section.
15631
15632         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15633         mdb-debug-info64.s.
15634
15635 2006-12-19  Robert Jordan  <robertj@gmx.net>
15636
15637         * mini-x86: enable the code to return small structures in
15638         registers for FreeBSD as well. Fixes bug #80278.
15639         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15640
15641 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15642
15643         * mini-x86.c: align the stack when calling the profiler
15644         function instrumenting the prolog (on OSX).
15645
15646 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15647
15648         * mini.c: emit a break opcode where Debugger.Break () is called.
15649
15650 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15651
15652         * mini.c (mono_method_to_ir): Provide useful information on this
15653         assert, to prevent others from debugging like I did.
15654
15655 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15656
15657         * mini.c: enable code which was incorrectly commented
15658         (bug #80235).
15659
15660 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15661
15662         * mini-x86.c: enable on OSX, too, the code to return small
15663         structures in registers.
15664
15665 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15666
15667         * mini-x86.c: remove the use of the dynamic code manager here, too.
15668
15669 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15670
15671         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15672         mono_debugger_create_notification_function() to use
15673         mono_global_codeman_reserve () instead of a dynamic code manager.
15674
15675 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15676
15677         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15678         ves_array_element_address() jit icall and use a generated
15679         managed method instead (which is about 4 times faster for a rank 3
15680         array access).
15681
15682 2006-11-29  Mark Mason  <mason@broadcom.com>
15683
15684         * basic-calls.cs: additional tests for passing
15685         structures as function arguments.
15686
15687 2006-11-29  Mark Mason  <mason@broadcom.com>
15688
15689         * mini-mips.h: disable custom exception handling
15690         * mini-mips.c: throw/rethrow should use jalr to call
15691         exception stubs.  Fixed bug with passing structures
15692         by value. More support for tracing floating point
15693         functions.
15694
15695 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15696
15697         * mini.c: fixed typo in the soft-float ldind.r4 handling
15698         (bug #80086).
15699
15700 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15701
15702         * mini.c, mini.h, driver.c: added --runtime command line
15703         option to select a different runtime than the autodetected one.
15704         * jit.h: added API for embedders to initialize with a specific
15705         runtime version.
15706
15707 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15708
15709         * mini.c: handle also boxing of r4 values (bug #80024).
15710
15711 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15712
15713         * mini-ppc.c: force indirect calls until we reserve
15714         enough address space for all the generated code.
15715
15716 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15717
15718         * exceptions-arm.c: workaround bugs in the libc definition
15719         of struct ucontext.
15720
15721 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15722
15723         * inssel.brg: fixes from me and Mark Mason.
15724
15725 2006-11-23  Dick Porter  <dick@ximian.com>
15726
15727         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15728         semaphore display now we've fixed the initial value
15729
15730 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15731
15732         * inssel.brg: partially revert the last change to fix the build.
15733
15734 2006-11-21  Mark Mason  <mason@broadcom.com>
15735
15736         * inssel.brg: Add and use compare-and-branch macros to support
15737         architectures that do not have condition code registers (ie. MIPS).
15738         * *-mips.{c,brg,md}: Fix copyright statements
15739
15740 2006-11-20  Mark Mason  <mason@broadcom.com>
15741
15742         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15743         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15744         * mini.h: Added declaration for mono_print_ins()
15745         * mini-codegen.c: added ins_spec initializer for MIPS
15746         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15747         vreg to be virtual and hreg to be non-virtual.
15748         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15749         is not yet working/implemented correctly.
15750         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15751         non-static, fixup calls to print_ins() from other parts in the file.
15752
15753 2006-11-20  Mark Mason  <mason@broadcom.com>
15754
15755         * basic-calls.cs: added tests for passing structures as arguments
15756         to calls.
15757
15758 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15759
15760         * inssel-long32.brg: optimize signed division by power of two.
15761
15762 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15763
15764         * mini-arm.c: added support for interworking with thumb code
15765         (mono must be still be built using the ARM instruction encoding).
15766
15767 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15768
15769         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15770         verifier has different rules for it.   Fixes a few verifier issues
15771         in the test suite.
15772
15773         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15774         at the end, so people know what happened.
15775
15776 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15777
15778         * brach-opts.c: in optimize_exception_target() make sure we
15779         are in a catch clause (fixes bug #79871).
15780
15781 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15782
15783         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15784         more soft-float support fixes.
15785
15786 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15787
15788         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15789         that are passed half on the stack and half in registers.
15790
15791 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15792
15793         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15794         more mips integration work from Mark E Mason 
15795         <mark.e.mason@broadcom.com>.
15796
15797 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15798
15799         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15800         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15801         tramp-mips.c: added sources for the mips port, not
15802         integrated in the build yet. Contributed by
15803         Mark E Mason <mark.e.mason@broadcom.com>.
15804
15805 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15806
15807         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15808
15809 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15810
15811         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15812         put the soft-float rules in its own file since it seems to
15813         break s390 compilation.
15814
15815 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15816
15817         * mini-arm.c: fixed wrnings.
15818
15819 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15820
15821         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15822         inssel-arm.brg: ARM support for soft-float.
15823
15824 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15825
15826         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15827         loads and stores of 32 bit fp values.
15828
15829 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15830
15831         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15832
15833         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15834         works. Fixes #79852 and #79463.
15835
15836 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15837
15838         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15839         more soft-float support WIP and fixes.
15840
15841 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15842
15843         * mini-arm.c: some VFP updates.
15844
15845 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15846
15847         * mini-exceptions.c: 0 is a valid local var offset in some
15848         architectures, don't assert (bug #78508).
15849
15850 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15851
15852         * exceptions-arm.c: fixed off by one error in stack walk code.
15853
15854 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15855
15856         * mini.h, mini.c: more precise tracking of type load exceptions.
15857
15858 2006-11-03  Robert Jordan  <robertj@gmx.net>
15859
15860         * Makefile.am: [WIN32] Add monow.exe target.
15861         * driver.c: [WIN32] Don't detach the console when debugging.
15862         Fixes bug #79797.
15863         
15864 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15865
15866         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15867
15868 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15869
15870         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15871
15872         * driver.c (mini_regression): Fix --regression with AOT.
15873
15874         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15875
15876 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15877
15878         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15879
15880         * mini-sparc.h: Don't use sigaction on sparc/linux.
15881
15882         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15883
15884         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15885
15886         * mini-exceptions.c: Add proper include files for getpid ().
15887
15888 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15889
15890         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15891         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15892         method.
15893
15894         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15895         name cache to reduce its size.
15896
15897         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15898
15899 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15900
15901         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15902         the mono_lmf TLS variable.
15903
15904         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15905         trampoline lmf frames.  
15906
15907         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15908
15909 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15910
15911         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15912         the mono_lmf TLS variable.
15913
15914         * mini-exceptions.c: Access the LMF structure through accessors.
15915
15916         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15917         variable instead of in jit_tls->lmf.
15918
15919         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15920         
15921         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15922         trampoline lmf frames.
15923
15924         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15925
15926 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15927
15928        * mini.c trace.c mini-x86.c: Revert these too.
15929         
15930        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15931        signature change.
15932
15933 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15934
15935         * genmdesc.c: removed now dead code.
15936
15937 2006-10-09  Robert Jordan <robertj@gmx.net>
15938
15939         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15940
15941 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15942
15943         * mini.h: do not leave gaps in the opcode values.
15944
15945 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15946
15947         * jit-icalls.h: flag functions as internal here, too.
15948
15949 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15950
15951         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15952         functions with the internal attribute.
15953
15954 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15955
15956         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15957
15958 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15959
15960         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15961         for soft-float.
15962
15963 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15964
15965         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15966         tail calls as on other platforms.
15967
15968         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15969
15970         * iltests.il: Add a few tailcall tests.
15971
15972 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15973
15974         * driver.c: fix loop for old compilers (bug #79521).
15975
15976 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15977
15978         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15979
15980         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15981
15982         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15983         metadata without any code.
15984
15985         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15986         more precise debugging information using gdb.
15987
15988 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
15989
15990         * inssel-ia64.brg: Make the helper methods static.
15991
15992 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
15993
15994         * inssel-x86.brg: make the helper methods static.
15995
15996 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
15997
15998         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
15999
16000 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16001
16002         * mini.c: updates for monoburg changes.
16003         * inssel.brg: make a few helper functions static as they should.
16004
16005 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16006
16007         * Makefile.am: Move mini-codegen.c to common_sources.
16008
16009 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16010
16011         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16012         instructions.
16013         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16014         mini-ppc.h: port to use the common local register allocator.
16015
16016 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16017
16018         * mini.h: Remove the comment too then.
16019
16020 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16021
16022         * mini.h: put back backend.data which is to be used shortly and
16023         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16024         pointers on 4 byte boundaries it'd have much bigger issues running
16025         and you can ifdef it out anyway.
16026
16027 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16028
16029         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16030         MonoInst size by 4 bytes on 64 bit machines.
16031
16032 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16033
16034         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16035         replacement with more meaningful field names. Arch maintainers, please
16036         check the assigned names are good enough for your arch.
16037
16038 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16039
16040         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16041         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16042
16043 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16044
16045         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16046         relocations and memory requirements, put the optimization flags
16047         definitions in their own file.
16048
16049 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16050
16051         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16052
16053         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16054
16055 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16056
16057         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16058
16059 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16060
16061         * inssel.brg: use the correct function to get the size of an item
16062         in an array, given an element class.
16063         * aot-compiler.c: do not access class->class_size directly.
16064
16065 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16066
16067         * mini.h, debug-mini.c: added a debugging function to print
16068         info about local variables and arguments in a jitted method.
16069
16070 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16071
16072         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16073
16074         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16075
16076 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16077
16078         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16079         inner and outer loops when passing vtypes.
16080
16081 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16082
16083         * mini-ppc.c: take into account the cpu errata for cache flushing
16084         which caused some random errors (bug #79381).
16085
16086 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16087
16088         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16089         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16090
16091 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16092
16093         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16094         loaded.
16095
16096         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16097         freebsd ports tree.
16098
16099         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16100         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16101
16102         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16103         displacement.
16104
16105 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16106
16107         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16108
16109 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16110
16111         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16112         macro does not have to be changed during debugging.
16113
16114         * 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>.
16115
16116         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16117
16118         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16119         
16120         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16121         MONO_ARCH_NO_EMULATE_MUL is defined.
16122
16123         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16124
16125         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16126
16127         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16128
16129         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16130         
16131 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16132
16133         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16134         stuff to mini-exceptions.c where it is used.
16135
16136         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16137         setup code, the real one is in mini-exceptions.c.
16138
16139         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16140         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16141         some changes from the freebsd ports tree.
16142
16143         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16144         constants.
16145         
16146         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16147
16148 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16149
16150         * mini.c: on Linux, check for /proc to be mounted
16151         (bug# 79351, novell bug#201204).
16152
16153 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16154
16155         * mini.c: handle cases where pthread_attr_getstack() behaves
16156         incorrectly (bug #78096).
16157
16158 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16159
16160         * mini-arm.c: support larger stack frames (bug #79272).
16161
16162 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16163
16164         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16165
16166         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16167         tokens.
16168
16169         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16170         mono_class_from_name () to find a class from its name.
16171
16172         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16173
16174 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16175
16176         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16177
16178 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16179
16180         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16181
16182 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16183
16184         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16185         callinfo->trampoline.
16186
16187         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16188         fixes #79271.
16189         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16190         future.
16191
16192 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16193
16194         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16195
16196 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16197
16198         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16199         stats.method_trampolines, it is already done by the generic trampoline code.
16200
16201         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16202         
16203 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16204
16205         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16206
16207         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16208
16209         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16210
16211         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16212         
16213         * mini.c (print_jit_stats): Print new stats.
16214
16215         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16216
16217 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16218
16219         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16220         Address on two dimensional arrays. Fixes #78729.
16221
16222         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16223
16224         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16225         a method.
16226
16227         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16228
16229         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16230         #79130.
16231         
16232         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16233         a race condition.
16234         (mini_get_ldelema_ins): Ditto.
16235
16236 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16237
16238         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16239         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16240         Fixes #79213.
16241
16242 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16243
16244         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16245         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16246
16247         * exceptions-s390x.c: Cosmetic change.
16248
16249         * tramp-s390.c: Fix warning.
16250
16251         * cpu-s390.md: Correct length of mul_imm.
16252
16253 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16254
16255         * aot-compiler.c: added binary writer with ELF backend
16256         implementation (only on Linux/x86 for now).
16257
16258 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16259
16260         * Makefile.am: Don't run net 2.0 AOT tests.
16261
16262         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16263         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16264
16265         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16266
16267 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16268
16269         * aot-compiler.c: simplified and refactored the asm-writing code
16270         to allow different backends.
16271
16272 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16273
16274         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16275
16276         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16277         little. Share patches of type TYPE_FROM_HANDLE as well.
16278
16279         * mini.c (mono_patch_info_equal): New helper function.
16280         (mono_patch_info_hash): Ditto.
16281
16282         * aot-compiler.c (emit_method_code): Fix s390 build.
16283
16284         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16285         is not handled because it is stored as a flag and not as a type ctor. Fixes
16286         #79016.
16287
16288 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16289
16290         * aot-compiler.c: Fix computation of GOT slot statistics.
16291         
16292         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16293         Also remove support for not PIC AOT.
16294
16295         * mini.h: Bump AOT file format version.
16296
16297         * objects.cs: Add a test for #78990.
16298
16299         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16300         (peter.dettman@iinet.net.au). Fixes #79087.
16301
16302         * basic-long.cs: Add a test for the above.
16303
16304 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16305
16306         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16307         
16308         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16309         code somewhat.
16310
16311 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16312
16313         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16314         exceptions.
16315
16316 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16317
16318         * mini.c: Don't verify COM proxy invoke calls
16319         
16320
16321 2006-08-10  Dick Porter  <dick@ximian.com>
16322
16323         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16324         which process is holding semaphores locked.
16325
16326 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16327
16328         * mini-ia64.c mini-amd64.c: Fix #79027.
16329
16330         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16331
16332         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16333
16334         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16335         implicit arguments in a vararg call. Fixes #79027.
16336
16337 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16338
16339         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16340         (mono_get_array_new_va_signature): Ditto.
16341
16342 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16343
16344         * aot-runtime.c: Call init_plt lazily.
16345
16346         * inssel-long.brg: Fix unsigned long->int conversion.
16347
16348         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16349
16350         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16351         that most data is now in the .rss/.data section.
16352
16353 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16354
16355         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16356
16357         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16358
16359         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16360
16361         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16362
16363         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16364         virtual call. Fixes #79010.
16365
16366         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16367         and use the result as the this argument in the real call.
16368
16369         * generics.2.cs: Add a new test for #79010.
16370         
16371 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16372
16373         * mini-x86.c: Fix a warning.
16374
16375         * aot-compiler.c: Add a bunch of statistics.
16376
16377         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16378
16379 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16380
16381         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16382
16383 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16384
16385         * 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>.
16386
16387 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16388
16389         * mini.c (mono_method_to_ir): Obtain the original method in the
16390         CIL stream and use this to perform validation.
16391
16392         Fixed: #78816
16393
16394 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16395
16396         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16397         (mono_arch_call_opcode): Ditto.
16398
16399         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16400         #78826.
16401
16402         * mini.c (mono_patch_info_dup_mp): New helper function.
16403         
16404         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16405         compilation. Fixes #78827.
16406
16407 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16408
16409         * declsec.c: Use original security informations for
16410           MONO_WRAPPER_MANAGED_TO_MANAGED.
16411
16412 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16413
16414         * mini.c: Allow Com Interop methods/classes and
16415         don't verify COM wrapper calls
16416         
16417
16418 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16419
16420         * inssel-long32.brg: Fix long->i4 checked conversion.
16421
16422         * exceptions.cs: Add a test for the above.
16423
16424 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16425
16426         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16427
16428         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16429         leaks.
16430
16431         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16432         #78775.
16433
16434 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16435
16436         * mini.c: Fix solaris/x86 exception handling.
16437
16438         * Makefile.am: Get rid of $(ICU_LIBS).
16439
16440 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16441
16442         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16443         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16444         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16445
16446         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16447
16448         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16449         this function causes a SIGSEGV.
16450
16451 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16452
16453         * mini.c: Remove unused solaris/x86 includes.
16454
16455 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16456
16457         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16458
16459 2006-06-20  Jb Evain  <jbevain@gmail.com>
16460
16461         * cpu-g4.md: fix max length of start_handler instruction.
16462
16463 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16464         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16465
16466 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16467         * ssa.c: Fixed bug 78653 for SSA based deadce.
16468         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16469         MonoInst.flags, used in SSA based deadce.
16470         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16471         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16472
16473 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16474
16475         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16476         it can end up using non executable memory on ppc64 systems
16477         running ppc32 userspace (fix from Johannes Berg).
16478
16479 2006-06-14  Dick Porter  <dick@ximian.com>
16480
16481         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16482         4.1.1
16483
16484 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16485         * mini.c: Made so that inline is locally disabled if it would
16486         trigger a .cctor, because too many apps depend on this behavior
16487         (which seems to be also the one of the MS CLR).
16488
16489 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16490
16491         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16492         No idea why this worked before.
16493
16494         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16495         which branch to outer exception clauses since they could skip the
16496         inner finally clauses. Fixes #78633.
16497
16498         * exceptions.cs: Add a test for the above.
16499
16500         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16501         Fixes #78629.
16502
16503         * iltests.il: Add a test for the above.
16504
16505 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16506
16507         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16508         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16509
16510         * iltests.il: Add a test for the above.
16511
16512 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16513
16514         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16515         
16516         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16517         methods as instrinsics.
16518
16519 2006-06-09  Wade Berrier <wberrier@novell.com>
16520
16521         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16522         (simple-cee-ops.h ssapre-mini-ops.h)
16523
16524 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16525
16526         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16527         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16528         instruction).
16529         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16530         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16531
16532 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16533
16534         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16535
16536 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16537
16538         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16539         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16540         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16541         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16542         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16543         of opcodes, so that bug 78549 should not happen again.
16544         * ssapre.c: Updated to use the renamed files.
16545
16546 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16547
16548         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16549         in OP_ATOMIC_EXCHANGE_I4.
16550
16551 2006-06-07  Wade Berrier <wberrier@novell.com>
16552
16553         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16554         in mono_debugger_create_notification_function)
16555
16556 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16557
16558         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16559         
16560         * mini.c (type_from_stack_type): Disable some changes which do not
16561         seem to work.
16562
16563         * driver.c: Reenable opts.
16564
16565         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16566         of the evaluation stack.
16567         
16568         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16569         evaluation stack trace at entry to the bblock.
16570
16571         * mini.c (merge_stacks): New function to perform verification of stack merges.
16572         Turned off by default.
16573
16574         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16575         STACK_MP.
16576         
16577 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16578
16579         * local-propagation.c: Fixed bug 78549.
16580
16581 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16582
16583         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16584
16585 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16586
16587         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16588         tramp-arm.c, tramp-ia64.c
16589         (mono_debugger_create_notification_function): Update signature to
16590         new signature and use new protocol for creating the notification
16591         function.  
16592
16593         Should fix the build.
16594
16595 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16596
16597         * exceptions-ppc.c (mono_jit_walk_stack)
16598         (ves_icall_get_frame_info): Fix the build
16599
16600 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16601
16602         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16603
16604 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16605
16606         * il2tests.2.il: New file for generics CIL tests.  Add test for
16607         #78019.
16608         * Makefile.am: Update.
16609
16610         Fix #78019
16611         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16612         to nullable types.
16613
16614 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16615
16616         * aliasing.c: Fixed bug 78311.
16617
16618 2006-05-29  Martin Baulig  <martin@ximian.com>
16619
16620         * mini-exceptions.c (mono_find_jit_info): When computing the
16621         native offset, check whether we're actually inside the method's
16622         code; call mono_debug_print_stack_frame() to format the frame.
16623         (ves_icall_System_Exception_get_trace): Call
16624         mono_debug_print_stack_frame() to format the stack frame.
16625         (ves_icall_get_trace): Update to the new debugging API.
16626         (mono_jit_walk_stack_from_ctx): Likewise.
16627         (ves_icall_get_frame_info): Likewise.
16628
16629         * mini.c (get_method_from_ip): Use the new debugging API.
16630         (mono_print_method_from_ip): Likewise.
16631
16632         * exceptions-ppc.c
16633         (mono_jit_walk_stack): Use the new debugging API.
16634         (ves_icall_get_frame_info): Likewise.   
16635
16636 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16637
16638         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16639
16640 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16641
16642         * mini.c: Added "limitator" to inline for debugging.
16643
16644 2006-05-24  Martin Baulig  <martin@ximian.com>
16645
16646         * debug-debugger.c (mono_debugger_init): Create a private,
16647         malloc()-based code manager for the notification function and
16648         intentionally leak it on exit.  This fixes the crash-on-exit race
16649         condition.
16650
16651         * tramp-amd64.c
16652         (mono_debugger_create_notification_function): Added
16653         `MonoCodeManager *' argument.
16654
16655         * tramp-x86.c
16656         (mono_debugger_create_notification_function): Added
16657         `MonoCodeManager *' argument.
16658
16659 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16660
16661         * aliasing.c: Fixed 64 bit issue.
16662         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16663         default since all known bugs are fixed (one more time!).
16664
16665 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16666
16667         * mini.c: write barrier support.
16668
16669 2006-05-23  Martin Baulig  <martin@ximian.com>
16670
16671         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16672         check at the top of the file.
16673
16674 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16675
16676         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16677         reverting changes without reason and without changelog entries.
16678
16679 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16680
16681         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16682         to a few opcodes. Fixes #78439.
16683
16684         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16685         consistency with other archs.
16686
16687         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16688
16689 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16690
16691         * debug-debugger.c: fix the build.
16692
16693 2006-05-17  Martin Baulig  <martin@ximian.com>
16694
16695         * debug-debugger.c
16696         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16697         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16698         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16699         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16700
16701 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16702
16703         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16704
16705 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16706
16707         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16708         MONO_TYPE_GENERICINST.
16709         
16710         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16711         MONO_TYPE_GENERICINST.
16712
16713 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16714
16715         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16716         #78325.
16717
16718 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16719
16720         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16721         mempool.
16722         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16723
16724 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16725
16726         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16727         mono_trace_cleanup ().
16728
16729         * iltests.il: Fix problem with the newly added test.
16730
16731         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16732         due to register constraints, free up the previous hreg. Fixes #78314.
16733
16734         * iltests.il: Add new test for #78314.  
16735
16736         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16737         Interlocked.Add. Fixes #78312.
16738
16739         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16740         
16741 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16742
16743         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16744
16745 2006-05-05  Martin Baulig  <martin@ximian.com>
16746
16747         * debug-mini.c (mono_debug_open_block): New method.
16748
16749         * mini-amd64.c
16750         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16751         the beginning of each basic block.
16752
16753         * mini-x86.c
16754         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16755         the beginning of each basic block.
16756
16757 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16758
16759         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16760         default until I understand why they break the build on amd64.
16761
16762 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16763
16764         * mini.c (mini_cleanup): Call mono_cleanup ().
16765
16766         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16767         errors.
16768
16769 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16770
16771         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16772         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16773         default since all known bugs are fixed, and I cannot reproduce bug
16774         77944... I'm asking Matt Hargett to test again after this commit.
16775
16776 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16777
16778         * mini-codegen.c: Fixed typo that thrashed inline.
16779
16780 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16781
16782         * dominators.c (compute_dominators): Avoid using a worklist since
16783         it is not correct in some cases. Instead, iterate over all bblocks as
16784         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16785
16786 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16787
16788         * mini.c (mono_jit_compile_method_inner): Use
16789         mono_prepare_exception_from_error that resets the value
16790         internally.
16791
16792 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16793
16794         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16795         
16796 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16797
16798         * aliasing.c: Fixed bug 78210.
16799
16800 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16801
16802         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16803         default until all their problems (or the ones they trigger) are fixed.
16804
16805 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16806
16807         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16808         
16809         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16810         as loaded only after resolving patches since that could invoke the same method.
16811
16812         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16813
16814         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16815         functions.
16816
16817         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16818         AOT loader.
16819
16820         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16821         stack.
16822
16823         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16824         made from AOT code through the PLT table.
16825
16826         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16827         holding the plt offset when a call is made to the aot plt trampoline.
16828         
16829 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16830
16831         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16832         amd64 AOT support.
16833
16834         * Makefile.am (common_sources): Fix build breakage.
16835
16836         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16837         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16838         intra-assembly calls if possible.
16839         
16840         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16841
16842         * mini-trampolines.c: Handle PLT entries.
16843
16844         * mini.c: Avoid creating a GOT var for calls.
16845
16846         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16847         from mscorlib code.
16848
16849         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16850         from mscorlib code.
16851
16852         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16853         AOT code.       
16854
16855         * mini.h: Bump AOT file format version.
16856         
16857         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16858         covers more cases.
16859
16860 2006-04-25  Martin Baulig  <martin@ximian.com>
16861
16862         * driver.c: Disable copyprop, consprop and inline when running
16863         inside the debugger.
16864
16865 2006-04-25  Martin Baulig  <martin@ximian.com>
16866
16867         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16868         with `get_current_thread' and added `detach'.
16869         (MonoDebuggerMetadataInfo): Added `thread_size',
16870         `thread_tid_offset', `thread_stack_ptr_offset' and
16871         `thread_end_stack_offset'.
16872
16873 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16874
16875         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16876         aot-runtime.c.
16877
16878         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16879         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16880
16881         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16882
16883         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16884
16885         * aot.c: Add support for ADJUSTED_IID.  
16886
16887 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16888
16889         * aot.c (emit_method_order): Don't align method_order_end.
16890
16891         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16892         the interface ID changes.
16893
16894 2006-04-21  Dick Porter  <dick@ximian.com>
16895
16896         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16897         cleaning up a thread.  Fixes the new part of bug 77470.
16898
16899 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16900
16901         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16902         to managed wrapper.
16903                      
16904 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16905
16906         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16907         
16908         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16909         SIGSEGV. Fixes #78072.
16910
16911         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16912         unregister our SIGABRT handler.
16913
16914 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16915
16916         * mini.c: Disabled inline where it can alter the call stack in a
16917         way visible from managed code.
16918         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16919         default.
16920
16921 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16922
16923         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16924         on other platforms. Fixes #78089.
16925
16926 2006-04-13  Martin Baulig  <martin@ximian.com>
16927
16928         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16929         determine whether we're inside the debugger.
16930
16931         * debug-debugger.h
16932         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16933
16934 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16935
16936         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16937         handler clauses. Fixes #78024.
16938
16939         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16940         in the CALL_MEMBASE opcodes. Fixes #78088.
16941         (mono_arch_get_vcall_slot_addr): Ditto.
16942
16943 2006-04-10  Martin Baulig  <martin@ximian.com>
16944
16945         * debug-debugger.c: The thread handling code has now been moved
16946         into ../metadata/threads.c.
16947
16948 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16949
16950         * driver.c (mono_main): Fix --with-gc=none build.
16951
16952         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16953         (mono_spillvar_offset_float): Ditto.
16954         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16955         hreg, not when its !global, since on ia64, there is a third category: stacked
16956         registers.      
16957
16958 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16959
16960         * mini.c: set MonoInst->klass for load field address and a few other
16961         places.
16962
16963 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16964
16965         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16966
16967 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16968
16969         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16970         the branch opt changes.
16971
16972 2006-04-06  Dick Porter  <dick@ximian.com>
16973
16974         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16975         
16976         * wapihandles.c (mini_wapi_seminfo): 
16977         * driver.c (mono_main): Add semaphore info option
16978
16979 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16980
16981         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16982         branch optimization changes. Fixes #78009.
16983
16984 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16985
16986         * mini.c: ignore accessibility of methods in managed->native wrappers.
16987
16988 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
16989
16990         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
16991         
16992         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
16993
16994 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
16995
16996         * mini.c: Modify the branch optimizations to preserve the invariant that
16997         the entries inside the in_bb and out_bb arrays are unique.
16998         (mono_unlink_bblock): Avoid creation of new arrays.
16999
17000 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17001
17002         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17003         change (#77992).
17004
17005 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17006
17007         * mini.c (optimize_branches): Remove the "optimizations" in
17008         the cbranch1/cbranch2 -> branch cases which were causing several
17009         problems in the past. Fixes #77986.
17010
17011 2006-03-31  Chris Toshok  <toshok@ximian.com>
17012
17013         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17014         default optimizations :(
17015
17016 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17017
17018         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17019         branch.
17020
17021 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17022
17023         * local-propagation.c: Added comments to structs and removed
17024         "Mono" prefixes from local tree mover types.
17025
17026 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17027
17028         * Makefile.am (arch_sources): Define this for each architecture so 
17029         libmono_la_SOURCES is defined in one place.
17030
17031 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17032
17033         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17034         from handles/.
17035
17036 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17037
17038         * driver.c: print the GC name supplied by configure.
17039
17040 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17041
17042         * local-propagation.c: Added tree mover, and moved here all the
17043         local propagation code from mini.c
17044         * mini.c: Added support for treeprop, and moved all the local
17045         propagation code to local-propagation.c
17046         * mini.h: Added support for treeprop
17047         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17048         treeprop, inline and deadce by default
17049         * Makefile.am: Added local-propagation.c
17050
17051 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17052
17053         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17054
17055 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17056
17057         * debug-debugger.c: make it compile without the Boehm GC.
17058
17059 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17060
17061         * mini.c: fixed issue with mismatch when an icall is registered
17062         with multiple names but same address.
17063
17064 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17065
17066         * declsec.c, mini-exceptions.c: use write barrier to set reference
17067         fields of managed objects.
17068
17069 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17070
17071         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17072         (can_access_internals): Fix a warning.
17073
17074         * mini.c (print_method_from_ip): Rename this to 
17075         mono_print_method_from_ip so it gets exported.
17076
17077         * trace.c: Deal with strings inside StringBuilder's containing garbage
17078         and fix memory leaks. Fixes #77848.
17079
17080 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17081
17082         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17083         fixes #77787.
17084
17085 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17086         
17087         * mini-s390.c: Remove OP_X86_TEST_NULL.
17088
17089 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17090
17091         * mini.c: use the correct GetHashCode() for the moving collector.
17092
17093 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17094
17095         * liveness.c: Regalloc spill cost tuning.
17096
17097 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17098         
17099         * mini-s390x.h: Correct S390_LONG macro.
17100
17101         * mini-s390x.c: Cleanup unused code.
17102
17103 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17104
17105         * jit-icalls.h: New file.
17106
17107         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17108         icalls and include that instead of including jit-icalls.c.
17109
17110         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17111         OP_X86 opcodes.
17112
17113 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17114
17115         * mini.c: when checking for member accessibility, also check for
17116         friend assemblies and for explicit interface implementations.
17117
17118 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17119
17120         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17121
17122         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17123
17124         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17125         common cases are done first.    
17126
17127         * mini-ops.h: Only define platform specific opcodes on the given platform.
17128
17129         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17130         branch.
17131         
17132 2006-03-14  Martin Baulig  <martin@ximian.com>
17133
17134         Revert Paolo's change from r57348:
17135
17136         * mini.h: don't use gboolean for bitfields.
17137         * mini.c: verifier changes for fields and methods accessibility.
17138
17139 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17140
17141         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17142
17143         * mini-s390x.c: Fix conv_r_un.
17144
17145         * cpu-s390, cpu-s390x.md: Fix lengths.
17146
17147 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17148
17149         * mini.c: nested types have access to all the nesting
17150         levels, not just the enclosing types.
17151
17152 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17153
17154         * mini.c: added a few more verification checks.
17155
17156 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17157
17158         * liveness.c: Merge optimizations from the linear-il branch.
17159
17160 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17161
17162         * mini-ia64.c (emit_call): Add a comment.
17163
17164         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17165
17166         * tramp-ia64.c: Fix some warnings.
17167
17168 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17169
17170         * mini.h: don't use gboolean for bitfields.
17171         * mini.c: verifier changes for fields and methods accessibility.
17172
17173 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17174
17175         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17176         lazy icall wrapper changes.
17177
17178         * dominators.c: Replace all the dominator algorithms with faster
17179         ones from the linear-il branch.
17180
17181         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17182         the mempool.
17183
17184         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17185         common cases are done first.
17186
17187         * mini-amd64.c: Fix some warnings.
17188
17189         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17190         from the mempool.
17191
17192         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17193         added code.
17194
17195         * mini.h: Add a missing prototype.
17196
17197 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17198
17199         * mini.c: Compile icall wrappers lazily.
17200
17201         * mini-codegen.c: Use printf instead of g_print since its much faster.
17202
17203         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17204         function.
17205
17206         * mini.c (optimize_branches): Cache the negative result from 
17207         remove_block_if_useless ().
17208
17209         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17210         Also fix some bblock linking issues.
17211
17212         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17213         assembly files.
17214
17215         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17216
17217         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17218         accessed fields first, for better cache behavior.
17219         
17220 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17221
17222         * mini.c: speedup IList<T> array accesses.
17223
17224 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17225
17226         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17227         inline_costs counter. Fixes #77190.
17228
17229 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17230
17231         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17232         trace messages. Fixes #77706.
17233
17234 2006-03-04  Martin Baulig  <martin@ximian.com>
17235
17236         * tramp-amd64.c, tramp-x86.c
17237         (mono_debugger_create_notification_function): Use
17238         mono_global_codeman_reserve() to allocate a buffer at runtime and
17239         return it.
17240
17241         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17242
17243         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17244         notification function at runtime and then call `initialize' in the
17245         `MONO_DEBUGGER__debugger_info' vtable.
17246
17247 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17248
17249         * iltests.il: Fix a visibility problem.
17250
17251 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17252
17253         * driver.c, mini.c: add hooks for the counters API.
17254
17255 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17256
17257         * driver.c: show disabled options.
17258
17259 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17260
17261         * linear-scan.c: always use cost-driven selection.
17262
17263 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17264
17265         * jit-icalls.c (helper_compile_generic_method): Revert change from
17266         2006-02-24.
17267
17268 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17269
17270         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17271
17272 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17273
17274         * inssel.brg: style fixes, mostly to force the updated monoburg
17275         to run for people using svn.
17276
17277 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17278
17279         * mini.c: match monoburg changes.
17280
17281 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17282
17283         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17284         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17285         declaration in the header file.
17286
17287 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17288
17289         * helpers.c: reduce relocations and mem usage.
17290
17291 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17292
17293         * mini.h, mini-codegen.c: disable logging features if
17294         requested by configure.
17295
17296 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17297
17298         * mini.c: tiny verifier changes.
17299
17300 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17301
17302         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17303         cpu-pentium.md: stack alignment changes for osx/x86,
17304         partially from Geoff Norton <gnorton@customerdna.com>.
17305
17306 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17307
17308         * jit-icalls.c (helper_compile_generic_method): Update to changes
17309         in metadata/class.c.
17310
17311 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17312         
17313         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17314         
17315         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17316         interface calls with large offsets.
17317
17318 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17319
17320         * jit-icalls.c (helper_compile_generic_method): Document the
17321         special-case we depend on so that we can inflate the method twice
17322         with the same context with no bad side-effects.
17323
17324 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17325
17326         * mini-x86.c, mini-amd64.c: fix for case when xen support
17327         is disabled.
17328
17329 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17330
17331         * mini-x86.c, mini-amd64.c: generate code to access tls items
17332         in a faster way for Xen systems.
17333
17334 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17335
17336         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17337         updates and compilation fixes for the OSX/x86 port, mostly from
17338         Geoff Norton <gnorton@customerdna.com>.
17339
17340 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17341
17342         * inssel.brg: faster interface call implementation
17343         to sync with the interface_offsets MonoVTable changes.
17344
17345 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17346
17347         * mini.c: more verification checks.
17348
17349 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17350
17351         * mini.c: added a few more verification checks.
17352
17353 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17354
17355         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17356         facility on the processor and use it if available.
17357
17358 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17359
17360         * driver.c, aot.c, mini.c: throw exception if the IL code is
17361         invalid or unverifiable.
17362
17363 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17364
17365         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17366         m.StructField.
17367
17368 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17369
17370         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17371
17372 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17373
17374         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17375         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17376         handling of instantiated generic valuetypes.
17377
17378 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17379
17380         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17381         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17382         instead.
17383
17384         * generics.2.cs: Revert the nullable reftypes tests.
17385
17386 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17387
17388         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17389         using __builtin_frame_address (1) as it doesn't work in the presence
17390         of optimizations. Hopefully fixes #77273.
17391
17392         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17393         -> generics.cs change as it doesn't work with some automake versions.
17394
17395 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17396
17397         * mini.c: handle systems that sue a different way to
17398         retrieve the stack address of the current thread.
17399
17400 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17401
17402         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17403         it specially in the makefile.
17404
17405         * generics.2.cs: Add tests for nullable reference types.
17406
17407 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17408
17409         * mini.c: always handle the case when mono_jit_init()
17410         is called in a thread different from the main thread,
17411         confusing libgc (bug #77309).
17412
17413 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17414
17415         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17416
17417 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17418
17419         * mini.c: change optimize_branches () to use a single loop
17420         and introduce a new optimization to simplify some range checks.
17421
17422 2006-02-03  Martin Baulig  <martin@ximian.com>
17423
17424         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17425         and merged with debugger_thread_manager_add_thread().
17426         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17427         inform the debugger about the main thread.
17428
17429 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17430
17431         * basic.cs: Add test for div.un/rem.un constant folding.
17432
17433 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17434
17435         * cpu-s390x.md: correct int_xor_imm length
17436
17437 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17438
17439         * generics.2.cs: New test for #77442.
17440
17441         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17442         #77442.
17443
17444 2006-02-02  Martin Baulig  <martin@ximian.com>
17445
17446         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17447         <mono/metadata/mono-debug-debugger.h>   
17448
17449         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17450
17451 2006-02-02  Martin Baulig  <martin@ximian.com>
17452
17453         * debug-debugger.h: New header file for debug-debugger.c.
17454
17455         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17456         function is a separate thread anymore; add support for attaching.
17457
17458 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17459
17460         * tramp-x86.c: Fix a warning.
17461
17462 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17463
17464         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17465         on very large methods.
17466
17467         * aot.c (load_patch_info): Fix a warning.
17468
17469 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17470
17471         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17472         mini-ops.h: alu membase optimizations.
17473
17474 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17475
17476         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17477         to speedup StringBuilder.
17478
17479 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17480
17481         * dominators.c (mono_compute_natural_loops): Fix detection of
17482         loop body start blocks.
17483
17484         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17485
17486 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17487
17488         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17489         #75145.
17490
17491 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17492
17493         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17494
17495 2006-01-25  Martin Baulig  <martin@ximian.com>
17496
17497         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17498         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17499         started to cleanup this file a little bit.
17500
17501 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17502
17503         * mini.c: optimize a codepath frequently happening in generics code.
17504
17505 2006-01-23  Martin Baulig  <martin@ximian.com>
17506
17507         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17508
17509         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17510         functions directly.
17511
17512         * driver.c: debug-debugger.c is only available if
17513         `MONO_DEBUGGER_SUPPORTED' is defined.   
17514
17515 2006-01-23  Martin Baulig  <martin@ximian.com>
17516
17517         * debug-debugger.c: Only enable this on platforms where the Mono
17518         Debugger is working (x86 and x86_64).
17519
17520 2006-01-21  Martin Baulig  <martin@ximian.com>
17521
17522         The Mono Debugger is now using the normal `mono' instead of the
17523         `mono-debugger-mini-wrapper' when executing managed code.
17524
17525         * debug-debugger.c: New file; previously known as
17526         debugger/wrapper/wrapper.c.
17527
17528         * debug-mini.c (mono_init_debugger): Removed.
17529
17530         * driver.c (mono_main): Added new `--inside-mdb' command line
17531         argument which is used when running inside the debugger.
17532
17533 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17534
17535         * liveness.c (mono_analyze_liveness): Remove some unused data
17536         structures.
17537
17538 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17539
17540         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17541
17542 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17543
17544         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17545         depends on implementation details of monobitset.
17546
17547         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17548         Fixes #77271.
17549
17550 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17551
17552         * liveness.c: Update after monobitset changes.
17553
17554 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17555
17556         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17557
17558 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17559
17560         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17561
17562         * mini-s390x.c: Remove warning messages.
17563
17564 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17565
17566         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17567
17568 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17569
17570         * generics.2.cs: Add ldelem/stelem_any test.
17571
17572 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17573
17574         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17575
17576 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17577
17578         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17579         
17580 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17581
17582         * generics.2.cs: Reenable vtype tests.
17583
17584         * inssel-x86.brg: Remove an icorrect valuetype rule.
17585
17586 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17587
17588         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17589         initial support for OP_ABS.
17590
17591 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17592
17593         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17594
17595 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17596
17597         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17598         conversion and implement LADD/LSUB.
17599
17600         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17601         architectures.
17602
17603 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17604
17605         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17606
17607         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17608         architectures.
17609
17610 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17611
17612         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17613         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17614         (stack walk problem).
17615
17616 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17617
17618         * aot.c (mono_aot_load_method): Fix a warning.
17619
17620 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17621
17622         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17623
17624 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17625
17626         * iltests.il: Add test for #77148.
17627
17628         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17629         #77148.
17630
17631 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17632
17633         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17634
17635 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17636
17637         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17638         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17639
17640         * basic-long.cs: Add lconv-to-r4/r8 tests.
17641
17642 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17643
17644         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17645
17646         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17647         here as on other archs.
17648
17649 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17650
17651         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17652
17653 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17654
17655         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17656         
17657         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17658
17659         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17660         instrument_prolog; Add memory_barrier instruction.
17661
17662 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17663
17664         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17665
17666 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17667
17668         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17669
17670         * aliasing.c inssel.brg: Fix warnings.
17671
17672         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17673         could skip initialization of some parts of memory.
17674
17675         * mini.c mini-ia64.c: Fix warnings.
17676
17677         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17678
17679 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17680
17681         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17682         a crash seen on sparc.
17683
17684         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17685         
17686         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17687
17688 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17689
17690         * mini-ops.h: Add s390_backchain instruction
17691
17692         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17693
17694         * cpu-s390.md: Add s390_backchain instruction
17695
17696         * mini-s390.c: Significant ABI changes
17697
17698         * mini-s390.h: Cater for zero length structures
17699
17700 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17701
17702         * mini-s390.c: ABI fixes
17703
17704         * inssel-s390.brg: Remove debug statements
17705
17706         * cpu-s390.md: Fix length of ATOMIC_xx operations
17707
17708 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17709
17710         * basic-float.cs: Add float<->long conversion tests.
17711
17712 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17713
17714         * mini-s390.c: Fix LOCALLOC processing.
17715
17716         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17717
17718 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17719
17720         * iltests.il: Add tests for some opcodes not covered by the other
17721         tests.
17722
17723 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17724
17725         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17726         register loading for Tail processing; Correct trace output.
17727
17728         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17729
17730         * cpu-s390.md: Correct size of jmp instruction. 
17731
17732 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17733
17734         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17735
17736 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17737
17738         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17739           Bring s390 up to current level.
17740
17741 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17742
17743         * generics.2.cs: Disable the newly added tests as they do not work yet.
17744         
17745         * generics.2.cs: Add valuetype tests.
17746
17747 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17748
17749         * basic-long.cs: Add i4->u8 test.
17750
17751         * objects.cs: Add tests for JIT intrinsic.
17752
17753         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17754         optimizations lost by a mistake.
17755
17756 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17757
17758         * basic-long.cs: Remove a test moved to objects.cs.
17759
17760         * arrays.cs: Add more array tests.
17761
17762 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17763
17764         * arrays.cs: Add new tests for multi-dimensional arrays.
17765
17766 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17767
17768         * Makefile.am (test_sources2): Add generics.2.cs.
17769         (EXTRA_DIST): Add test_sources2.
17770
17771 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17772
17773         Support for boxing and unboxing nullable types as well as the
17774         isinst operation on nullables, per the CLI ammendment.
17775
17776         * inssel.brg (CEE_ISINST): Special case for nullable
17777
17778         * mini.c (handle_unbox_nullable): new method
17779         (handle_box): Special case for nullable types
17780         (mono_method_to_ir): Call handle_unbox_nullable in correct
17781         places.
17782
17783         * generics.2.cs: New test suite
17784
17785         * Makefile.am: Support for regression tests with generics.
17786
17787 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17788
17789         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17790         allocated to registers. Fixes #76800.
17791
17792 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17793
17794         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17795
17796 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17797
17798         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17799         of platforms.
17800
17801 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17802
17803         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17804         objects.cs.
17805
17806         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17807         
17808         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17809 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17810
17811         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17812         single precision before storing to a single precision location.
17813
17814 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17815
17816         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17817
17818 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17819
17820         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17821         correct files.
17822
17823         * basic.cs: Remove test_0_byte_compares test which was moved to
17824         objects.cs a long time ago.
17825
17826 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17827
17828         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17829
17830 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17831
17832         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17833         handlers are called.
17834
17835         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17836         throwing code.
17837
17838          * mini-ia64.c: Add support for the throw->branch exception 
17839         optimization.   
17840
17841         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17842
17843 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17844
17845         * mini.c: Enabled "fastpath" deadce :-)
17846         
17847 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17848
17849         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17850         alias analysis pass to support it.
17851         * mini.h: Likewise.
17852         * ssa.c: Likewise.
17853         * liveness.c: Likewise (liveness computation can use aliasing
17854         information to be more accurate).
17855         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17856         moreover made so that "--compile-all" uses the given optimization
17857         flags and not the default ones.
17858         * aliasing.c: Alias analysis (new file).
17859         * aliasing.h: Likewise.
17860         * Makefile.am: added "aliasing.c" and "aliasing.h".
17861         
17862 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17863
17864         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17865         OP_L opcodes.
17866
17867 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17868
17869         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17870         fp >= end_of_stack exit condition, as it is not needed, and it might
17871         become true for fp eliminated frames.
17872
17873 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17874
17875         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17876         coded offsets.
17877
17878 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17879
17880         * mini-arm.c: fixed alignment of doubles/longs to match
17881         the C ABI (bug #76635).
17882
17883 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17884
17885         * aot.c: fix compilation with --enable-minimal=aot.
17886
17887 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17888
17889         * mini-arm.c: fixed compatibility with the new
17890         floating point emulator package for compares.
17891
17892 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17893
17894         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17895
17896 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17897
17898         * mini-exceptions.c (print_stack_frame): Output to stderr.
17899         (mono_handle_native_sigsegv): Ditto.
17900
17901 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17902
17903         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17904         OP_LCONV_TO_OVF_I implementation.
17905
17906         * mini-amd64.c: Add support for the throw->branch exception 
17907         optimization.
17908
17909         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17910         when the catch clause catches a more general exception, i.e. Object.
17911
17912 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17913
17914         * cpu-ia64.md: Remove unused opcodes.
17915
17916         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17917         specific defines for architectures defining USE_SIGACTION.
17918
17919         * mini-ia64.c: Fix some warnings.
17920
17921         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17922         version seemed to skip a frame.
17923
17924 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17925
17926         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17927         only calls which are made to native code use this flag.
17928
17929 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17930
17931         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17932         varargs methods as well.
17933         
17934         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17935         which have save_lmf set. Reorganize methods prologs a bit.
17936
17937         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17938         debugger to the proper place.
17939
17940 2005-10-29  Martin Baulig  <martin@ximian.com>
17941
17942         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17943         when running inside the debugger until the debugger has support
17944         for it.
17945
17946 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17947
17948         * mini.h: Fix a warning.
17949
17950 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17951
17952         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17953         we expose publicly, this returns the string.
17954
17955 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17956
17957         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17958         with fp elimination.
17959
17960 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17961
17962         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17963         native stacktrace using the glibc 'backtrace' function if available.
17964
17965 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17966
17967         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17968
17969         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17970         handle SIGSEGVs received while in native code.
17971
17972         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17973         code, call mono_handle_native_sigsegv which will abort the runtime
17974         after printing some diagnostics, instead of converting it into a
17975         confusing NullReferenceException.
17976
17977 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17978
17979         * cpu-pentium.md: Remove unused opcodes.
17980
17981 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17982
17983         * mini-amd64.h (MonoLMF): Add rsp field.
17984
17985         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17986         the lmf too.
17987
17988 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
17989
17990         * mini-codegen.c (get_register_spilling): Fix some warnings.
17991
17992 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
17993
17994         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
17995         elimination during exception handling. Enable fp elimination by
17996         default.
17997
17998         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
17999         elimination.
18000
18001 2005-10-16  Martin Baulig  <martin@ximian.com>
18002
18003         * mini-exceptions.c
18004         (mono_debugger_run_finally): New public method for the debugger.
18005
18006 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18007
18008         * debug-mini.c (mono_debug_init_method): Fix warning.
18009
18010         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18011         the 'exname' parameter const to fix some warnings.
18012
18013 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18014
18015         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18016         introduced by the previous patch.
18017
18018 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18019
18020         * basic-float.cs: Add test for precision of float arithmetic.
18021
18022         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18023         when loading/storing single values from/to memory.
18024
18025         * mini.c (mono_jit_compile_method_with_opt): Create the function
18026         pointers in the correct domain.
18027
18028 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18029
18030         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18031         introduced by previous patch.
18032         
18033         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18034         when out_filter_idx is NULL.
18035
18036         * mini-exceptions.c: Don't run filter clauses twice during exception
18037         handling. Fixes #75755.
18038
18039 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18040
18041         * aot.c: Add support for ldflda wrappers.
18042
18043         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18044         #75902.
18045
18046 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18047
18048         * mini.c, mini.h: do not consider exception handlers blocks when
18049         setting up interface variables.
18050
18051 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18052
18053         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18054
18055 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18056
18057         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18058         causes a regression.
18059
18060         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18061
18062 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18063
18064         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18065         of the OP_P definitions.
18066
18067         * TODO: Add a proposal for dealing with the CEE/OP mess.
18068
18069         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18070         optimizations from the x86 port.
18071
18072         * cpu-amd64.md: Ditto.
18073
18074         * basic.cs basic-long.cs: Add tests.
18075
18076 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18077
18078         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18079         Patrik Torstensson's implementation of my exception-handling
18080         optimization idea, when the exception object is not used
18081         (bug #62150).
18082
18083 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18084
18085         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18086         of the mul_imm optimizations from the old jit.
18087
18088 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18089
18090         * mini.c, liveness.c: patch by Patrik Torstensson and
18091         Zoltan Varga to improve performance in methods with
18092         exception clauses.
18093
18094 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18095
18096         * driver.c: Remove 'Globalization' entry from --version.
18097
18098 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18099
18100         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18101         there is a profiler interested in JIT events.
18102
18103         * aot.c: Load profile files produced by the AOT profiling module, and
18104         reorder methods based on the profiling info. Add a 'method_order' table
18105         to the AOT file to make mono_aot_find_jit_info work with the reordered
18106         methods.
18107
18108         * mini.h: Bump AOT file version info.
18109
18110 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18111
18112         * mini-arm.h: work around what looks like a gcc bug when optimizations
18113         are enabled.
18114
18115 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18116
18117         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18118         conditionals.  Use ...
18119         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18120
18121 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18122
18123         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18124         to determine the amount of memory to copy when passing valuetypes.
18125
18126         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18127         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18128
18129 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18130
18131         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18132         information about aot.
18133
18134 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18135
18136         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18137         macros. This will allow a deadlock debugger to easily be plugged
18138         in.
18139
18140 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18141
18142         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18143
18144 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18145
18146         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18147         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18148         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18149         ($(arch_built)) [CROSS_COMPILING]: Error out.
18150
18151 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18152
18153         * aot.c: Add support for the no_special_static flag for classes.
18154
18155 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18156
18157         * Reapply reverted patches.
18158
18159         * *: Revert r50174 as well.
18160
18161         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18162
18163 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18164
18165         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18166
18167 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18168
18169         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18170         part of the SIG_HANDLER_SIGNATURE.  
18171
18172 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18173
18174         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18175         statistics.
18176
18177         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18178         introduced by previous patch.
18179
18180 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18181
18182         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18183         saved registers too.
18184
18185         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18186         upon the information returned by get_call_info ().
18187         
18188         * mini-x86.c (add_float): Fix stack size calculation.
18189         (mono_arch_call_opcode): Rewrite this so it works based up the
18190         information returned by get_call_info ().
18191         (mono_arch_get_this_vret_args): Ditto.
18192
18193 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18194
18195         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18196         in cinfo to determine the registers which need to be used.
18197
18198 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18199
18200         * driver.c (mono_main): Add --server and --desktop flags. 
18201
18202 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18203
18204         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18205         registers as global registers.
18206
18207         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18208         longer needed with the new register allocator.
18209
18210         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18211
18212         * cpu-ia64.md: Remove unused opcodes.
18213         
18214         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18215         
18216 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18217
18218         * cpu-amd64.md: Remove unused opcodes.
18219
18220         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18221         needed with the new register allocator.
18222
18223         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18224         reg-reg moves.
18225
18226 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18227
18228         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18229
18230 2005-09-16  Martin Baulig  <martin@ximian.com>
18231
18232         * exceptions-amd64.c
18233         (throw_exception): Don't call mono_debugger_throw_exception() if
18234         we're a rethrow - see the FIXME in the code.
18235
18236 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18237
18238         * mini.c (mono_init_exceptions): This only works on some architectures.
18239         
18240 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18241
18242         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18243         on ia64.
18244
18245         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18246
18247         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18248         now in mini-exceptions.c.
18249
18250 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18251
18252         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18253         now in mini-exceptions.c.
18254
18255 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18256
18257         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18258         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18259
18260         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18261         code into mini-exceptions.c. Add some assertions to it.
18262
18263 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18264
18265         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18266         (<software@solmersa.com>). Fix as errors on windows.
18267
18268 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18269
18270         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18271         method info into the LMF.
18272
18273 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18274         
18275         * mini-ia64.c: Add proper unwind info for method epilogs.
18276
18277         * exceptions-ia64.c: Add some code to help debugging.
18278         
18279         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18280
18281         * mini-exceptions.c: Fix warning.
18282
18283 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18284
18285         * mini.c: Really fix build.
18286
18287         * mini-x86.c mini-amd64.c: Fix build.
18288
18289 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18290
18291         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18292
18293         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18294         some Interlocked methods as intrinsics.
18295
18296         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18297         for Thread methods as well.
18298
18299         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18300
18301         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18302
18303         * mini-ia64.c mini-x86.c mini-amd64.c 
18304         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18305         OP_MEMORY_BARRIER.
18306         
18307         * mini.c (mono_init_exceptions): Fix build breakage.
18308
18309 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18310
18311         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18312         of instructions. Use the new ia64_unw_op macros for emitting unwind
18313         info.
18314
18315         * mini.c (mono_init_exceptions): Initialize exception handling
18316         related trampolines at startup.
18317
18318 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18319
18320         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18321
18322 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18323
18324         * mini.c: Handle type loading errors gracefully during compilation and
18325         throw the appropriate exception.
18326
18327 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18328
18329         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18330         for the mono binary.
18331
18332 2005-09-09  Martin Baulig  <martin@ximian.com>
18333
18334         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18335         the release.
18336
18337 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18338
18339         * mini-arm.h: use emulation for conv.r.un for the release.
18340
18341 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18342
18343         * mini-arm.c, objects.cs: more fixes and tests for them.
18344
18345 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18346
18347         * mini-arm.c: align structures to at least 4 bytes to be able
18348         to keep our current optimized memcpy.
18349
18350 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18351
18352         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18353
18354 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18355
18356         * mini.c: ignore SIGPIPE.
18357
18358 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18359
18360         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18361
18362         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18363
18364 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18365
18366         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18367
18368 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18369
18370         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18371         exception handling support.
18372         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18373         patch by Brian Koropoff <briank@marakicorp.com>).
18374
18375 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18376
18377         * mini.c: revert another 'optimization' which breaks when
18378         items on the eval stack need to be saved at a basic block end
18379         (bug #75940).
18380
18381 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18382
18383         * jit-icalls.c: for arrays, ensure we always provide
18384         lower bounds.
18385
18386 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18387
18388         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18389         
18390         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18391
18392 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18393
18394         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18395         arguments in their original register.
18396
18397 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18398
18399         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18400         memset/memcpy.
18401
18402         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18403         when ssapre is enabled.
18404
18405         * inssel-long.brg: Fix bug in previous patch.
18406
18407         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18408         multiplication by a constant.
18409
18410 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18411
18412         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18413         icc.
18414
18415         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18416         saving registers.
18417
18418 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18419
18420         * inssel-arm.brg: apply changes tested by Brian Koropoff
18421         <briank@marakicorp.com>.
18422
18423 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18424
18425         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18426         
18427 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18428
18429         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18430         to the same register if dreg is just a base register.
18431         (print_ins): Improve printing of membase opcodes.
18432
18433         * inssel-x86.brg: Add optimized ldind(reg) rules.
18434
18435         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18436
18437 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18438
18439         * mini.c: when running under valgrind, set the stack bottom for
18440         the GC at the actual approximate stack for the app (fixes running
18441         mono with valgrind).
18442
18443 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18444
18445         * mini.c: do no break at the first valuetype to init found
18446         (fixes bug #75791).
18447
18448 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18449
18450         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18451
18452 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18453
18454         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18455
18456 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18457
18458         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18459
18460 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18461
18462         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18463
18464         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18465         code.
18466
18467         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18468         code.
18469
18470         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18471         methods.
18472
18473 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18474
18475         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18476
18477 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18478
18479         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18480         in the tail recursion optimization.
18481
18482         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18483         debug info into the assembly file.
18484
18485         * iltests.il: Add test for filter regions.
18486
18487         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18488         initial stack of filter regions. Fixes #75755.
18489
18490 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18491
18492         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18493         stack requirements.
18494
18495 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18496
18497         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18498         the check for an already compiled method on non-ia64 platforms.
18499         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18500         proper domain.
18501
18502         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18503
18504         * inssel-x86.brg: Add some optimized call rules.
18505
18506 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18507
18508         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18509         method here.
18510
18511         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18512         mono_arch_patch_delegate_trampoline.
18513
18514         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18515
18516         * mini-trampolines.c: Fix build.
18517
18518         * mini-amd64.h: Add delegate trampolines.
18519
18520         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18521
18522         * inssel-amd64.brg: Add optimized call rules.
18523         
18524         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18525
18526         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18527
18528 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18529
18530         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18531         change.
18532
18533         * mini-ia64.c: Remove LMF fixmes.
18534
18535         * mini-ia64.h: Remove most fields from LMF.
18536
18537         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18538
18539         * mini-trampolines.c: Add support for IA64 function descriptors.
18540
18541         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18542         for IA64 function descriptors.
18543
18544 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18545
18546         * tramp-arm.c: patch the vtable for virtual calls. Added
18547         support code to register/unregister the LMF.
18548         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18549         more LMF work.
18550
18551 2005-08-19  Dick Porter  <dick@ximian.com>
18552
18553         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18554         bit value if needed.
18555
18556 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18557
18558         * mini.c (mini_get_method): Move handling of wrapper data here.
18559
18560         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18561
18562         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18563         virtual.
18564
18565         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18566         bblock->code does not remain empty.
18567
18568 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18569
18570         * arrays.cs: Add regression test for #75832.
18571
18572         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18573         rules. Fixes #75832.
18574
18575         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18576         instruction scheduling.
18577
18578 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18579
18580         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18581
18582 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18583
18584         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18585
18586         * mini-codegen.c: Fix VC build.
18587
18588         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18589
18590 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18591
18592         * mini.h: fix signature for mono_register_opcode_emulation.
18593
18594 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18595
18596         * mini.c: Get rid of most of the helper_sig_... constants using
18597         mono_create_icall_signature ().
18598
18599 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18600
18601         * jit-icalls.c (helper_ldstr): New helper function.
18602
18603         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18604
18605         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18606         throw, load the string using a helper call instead of creating a string object.
18607
18608         * aot.c: Update after LDSTR changes.
18609
18610         * mini.h: Bump AOT file version.
18611         
18612         * aot.c: Save class size info into the AOT file. Print more statistics during
18613         compilation.
18614
18615         * mini.h: Bump AOT file version.
18616
18617         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18618         ordering of disasm cases. Fixes #74957.
18619
18620 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18621
18622         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18623         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18624         the generic code needed for the ARM port.
18625
18626 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18627
18628         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18629         inssel-arm.brg: more ARM features and fixes.
18630
18631 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18632
18633         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18634         ARM port work in progress.
18635
18636 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18637
18638         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18639
18640         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18641
18642         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18643
18644         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18645
18646         * *-ia64.*: Ongoing IA64 work.
18647         
18648         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18649
18650 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18651
18652         * TODO: Remove out-of-data todo stuff.
18653
18654         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18655         dead code.
18656
18657         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18658
18659         * mini.h: Bump corlib version.
18660
18661 2005-07-27  Martin Baulig  <martin@ximian.com>
18662
18663         * mini-codegen.c
18664         (create_copy_ins): Added `const unsigned char *ip' argument; set
18665         `copy->cil_code' from it.
18666
18667 2005-07-27  Martin Baulig  <martin@ximian.com>
18668
18669         * mini-exceptions.c (mono_handle_exception): Don't call
18670         mono_debugger_handle_exception() for filters.
18671
18672 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18673
18674         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18675         as well.
18676
18677 2005-07-26  Martin Baulig  <martin@ximian.com>
18678
18679         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18680
18681         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18682         helper_compile_generic_method() if the method is actually virtual
18683         and non-final.
18684
18685 2005-07-26  Martin Baulig  <martin@ximian.com>
18686
18687         * mini.c
18688         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18689         public; this is now accessed directly by the debugger.
18690         (mono_generic_trampoline_code): Removed.
18691
18692         * debug-mini.c
18693         (mono_debug_init_method): Also add interncalls and wrappers.
18694
18695 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18696
18697         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18698
18699 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18700
18701         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18702
18703 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18704
18705         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18706
18707 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18708
18709         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18710         getting TLS offsets on AMD64 too.
18711
18712 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18713
18714         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18715
18716 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18717
18718         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18719         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18720
18721 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18722
18723         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18724
18725         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18726         to mini.c.
18727
18728         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18729         mono_sparc_is_virtual_call ().
18730         
18731         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18732
18733         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18734         trampoline parameters.
18735
18736         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18737         
18738         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18739         to mono_arch_get_vcall_slot_addr.
18740
18741         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18742         trampoline code.
18743
18744         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18745
18746 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18747
18748         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18749
18750 2005-07-19  Martin Baulig  <martin@ximian.com>
18751
18752         * exceptions-amd64.c (throw_exception): Call
18753         mono_debugger_throw_exception() here like we're doing it on i386.
18754
18755 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18756
18757         * mini-ia64.c: Add optimized TLS access support.
18758
18759 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18760
18761         * mini-exceptions.c: Ongoing IA64 work.
18762
18763         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18764
18765         * mini.c: Use the default optimization set when embedding. Fixes
18766         #75194.
18767
18768 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18769
18770         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18771         of trampolines to a separate file.
18772
18773         * mini-trampolines.c: New file.
18774
18775         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18776         separate file.
18777         
18778         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18779         amd64/ia64 code.
18780
18781         * mini-codegen.c: Fix cygwin build.
18782
18783 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18784
18785         * mini.c: Add some minor changes needed by the IA64 port.
18786
18787         * *-ia64.*: Ongoing IA64 work.
18788
18789 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18790
18791         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18792         trampolines into arch-independent and arch-dependent parts.
18793
18794         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18795
18796 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18797
18798         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18799
18800         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18801         the xp-regalloc-branch for amd64.
18802
18803         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18804         xp-regalloc-branch for x86.
18805
18806 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18807
18808         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18809
18810 2005-07-06  Martin Baulig  <martin@ximian.com>
18811
18812         * mini.c
18813         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18814         (mono_jit_runtime_invoke): Likewise.
18815
18816 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18817
18818         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18819         on x86 too.
18820         
18821         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18822         without loading their metadata. Reorganize the file format so exception handling+
18823         debug info is kept separate from normal method info. Create MonoJitInfo 
18824         structures for methods lazily.
18825
18826         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18827         loading metadata.
18828         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18829
18830         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18831
18832         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18833         in AOT code.
18834
18835         * mini.h: Bump AOT file version.
18836
18837 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18838
18839         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18840
18841 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18842
18843         * Makefile.am (check-local): Call semdel-wrapper.
18844
18845 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18846
18847         * mini-x86.c: Revert the last change as it seems to break the build..
18848
18849 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18850
18851         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18852         
18853         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18854
18855 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18856
18857         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18858         outside of the macro, so strange stuff doesn't happen with gcc4
18859         (NEW_AOTCONST_TOKEN): Likewise.
18860
18861 2005-06-28  Martin Baulig  <martin@ximian.com>
18862
18863         * mini.c (mini_class_is_system_array): New static method; use this
18864         instead of `klass->parent == mono_defaults.array_class' everywhere
18865         since this also works for the new generic array class.
18866
18867 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18868
18869         * inssel.brg: Remove warnings.
18870
18871 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18872
18873         * mini-ia64.c: Ongoing IA64 work.
18874
18875         * basic-float.cs: Add float->i1 conversion test.
18876
18877         * iltests.il: Add conv.u4 test.
18878
18879 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18880
18881         * inssel-long.brg: Fix bug caused by last change.
18882
18883 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18884
18885         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18886         BSDs.  Allows the x86 JIT to work on OSX86
18887
18888 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18889
18890         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18891         u4->i8 conversion.
18892
18893         * mini-ia64.c: Ongoing IA64 work.
18894
18895 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18896
18897         * mini-ia64.c: Ongoing IA64 work.
18898
18899         * driver.c: Clean up jit_code_hash as well when using --regression.
18900
18901         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18902
18903         * basic-long.cs: Add tests for long->u4 conversion.
18904
18905 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18906
18907         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18908         that we do not depend on undefined C behavior: the order stuff
18909         gets evaluated within an expression. Fixes mono when compiled on
18910         GCC 4.
18911
18912 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18913
18914         * *-ia64.*: Ongoing IA64 work.
18915
18916         * aot.c: Lower memory usage while loading AOT methods.
18917
18918         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18919
18920         * mini.h: Bump AOT file format version.
18921
18922 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18923
18924         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18925
18926 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18927
18928         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18929         not on callee assembly). Fixed some comments.
18930
18931 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18932
18933         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18934         it gets proper disassembly.
18935         (emit_method_info): Remove some dead code.
18936
18937         * mini.c (mini_method_compile): Allways allocate the GOT var in
18938         mono_method_to_ir for emulating opcodes.
18939
18940 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18941
18942         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18943         before freeing the code memory. Fixes #74990.
18944
18945         * objects.cs: Add regression test for #74992.
18946
18947         * liveness.c: Extend live ranges of arguments to the beginning of the
18948         method. Fixes #74992.
18949
18950         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18951         so it points into the faulting instruction.
18952
18953 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18954
18955         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18956
18957         * *-ia64.*: Ongoing IA64 work.
18958
18959         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18960
18961 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18962
18963         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18964
18965         * *-ia64.*: Ongoing IA64 work.
18966
18967 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18968
18969         * basic-long.cs: Add tests for add/sub.ovf.
18970
18971         * basic.cs: Add tests for sub.ovf.
18972
18973         * *-ia64.*: Ongoing IA64 work.
18974
18975 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18976
18977         * *-ia64.*: Ongoing IA64 work.
18978
18979         * basic.cs: Add conv.ovf.i4.un test.
18980
18981 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18982
18983         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18984         
18985 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18986
18987         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
18988
18989 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
18990
18991         * *-ia64.*: Ongoing IA64 work.
18992
18993 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18994
18995         * trace.[ch]:
18996         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
18997
18998 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
18999
19000         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19001
19002 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19003
19004         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19005
19006         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19007         of a call is callable by a near call.
19008
19009 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19010
19011         * mini-ia64.c: Ongoing IA64 work.
19012
19013 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19014
19015         * genmdesc.c: Make the generated array non-static.
19016
19017         * inssel-long.brg: Fix LSHR_IMM rule.
19018
19019         * *-ia64.*: Ongoing IA64 work.
19020
19021         * *-ia64.*: Ongoing IA64 work.
19022
19023 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19024
19025         * *-ia64.*: Ongoing IA64 work.
19026
19027         * *-ia64.*: Ongoing IA64 work.
19028         
19029         * mini-ia64.c: Ongoing IA64 work.
19030
19031         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19032
19033 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19034
19035         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19036         
19037         * objects.cs basic-long.cs: Move some tests to objects.cs.
19038
19039 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19040
19041         * *-ia64.*: Ongoing IA64 work.
19042
19043         * iltests.il: Add a new test.
19044
19045         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19046         newobj. Fixes #75042.
19047
19048 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19049
19050         * *-ia64.*: Ongoing IA64 work.
19051         
19052         * *-ia64.*: Ongoing IA64 work.
19053         
19054         * *-ia64.*: Ongoing IA64 work.
19055
19056         * basic.cs objects.cs: Move tests accessing static variables as well.
19057
19058         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19059
19060 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19061
19062         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19063
19064         * driver.c: Always print failed tests.
19065
19066         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19067         frame pointer.
19068
19069         * *ia64*: Ongoing IA64 work.
19070
19071 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19072
19073         * basic.cs: Add tests for add.ovf. Fix warnings.
19074
19075 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19076
19077         * driver.c (mono_main): Avoid crash if no argument is passed to
19078         --break;  Do not use g_error, but f_printf.   And fix all other
19079         ocurrences of the same crash.
19080
19081 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19082
19083         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19084         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19085         Fixes #74742.
19086
19087 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19088
19089         * *-ia64.*: Add beginnings of IA64 backend.
19090
19091         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19092
19093 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19094
19095         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19096         Fixes #74925.
19097
19098         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19099
19100         * mini-amd64.c: Fix a warning.
19101
19102 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19103
19104         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19105         in float_neg. Fixes #74897.
19106
19107         * mini-amd64.c (emit_call): Fix another near call bug.
19108
19109 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19110
19111         * declsec.c: Keep the appdomain information in the structure. Added a 
19112         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19113         value gets overwritten).
19114         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19115         an MonoAppDomain member to MonoSecurityFrame.
19116         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19117         used in the stack walk. Now use a MonoArray which grow (double) when
19118         it gets full.
19119
19120 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19121
19122         * mini.c: Re-enabled runtime cleanup, since running threads should
19123         now properly stop when exiting.
19124
19125 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19126
19127         * mini-codegen.c: New file contaning the arch-independent local
19128         register allocator. Not used by any architectures yet.
19129
19130         * mini.h linear-scan.c: Merge some changes from the 
19131         mini-xp-local-regalloc branch.
19132
19133 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19134
19135         * mini-amd64.c (emit_call): Fix calls to native functions when the
19136         runtime is compiled as a shared library. Fixes #74756.
19137
19138         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19139         on a literal field. Fixes #74751.
19140
19141 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19142
19143         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19144
19145 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19146
19147         * objects.cs: Add missing null casting test.
19148
19149 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19150
19151         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19152         in wrapper methods. Also rename 'address' variable to 'offset'.
19153
19154 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19155
19156         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19157         warnings.
19158         
19159         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19160
19161         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19162         work on windows.
19163
19164 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19165
19166         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19167
19168 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19169
19170         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19171         just the last bytes.
19172
19173 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19174
19175         * aot.c (mono_compile_assembly): Fix warning.
19176
19177         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19178         by the _MSC_VER stuff.
19179
19180 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * inssel-long.brg: Fix #74588.
19183
19184         * cpu-amd64.md: Fix #74591.
19185
19186         * iltests.il: Add new regression tests.
19187
19188 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19189
19190         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19191         valuetype.
19192
19193 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19194
19195         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19196
19197         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19198         from Bill Middleton <flashdict@gmail.com>.
19199
19200 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * arrays.cs: Add new regression test. Fix warnings.
19203
19204 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19205
19206         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19207         and leakage in CKFINITE.
19208
19209         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19210         this to a null op since it is called on amd64 too.
19211
19212         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19213
19214         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19215         body since this is not used on amd64.
19216         
19217         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19218
19219         * mini-amd64.c: Remove obsolete fixmes.
19220
19221         * mini.c (print_method_from_ip): Fix debugging support.
19222
19223 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19224
19225         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19226         so that expressions that don't give much gain are not reduced.
19227         * ssapre.h: Likewise.
19228
19229 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19230
19231         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19232
19233         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19234
19235         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19236
19237 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19238
19239         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19240
19241         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19242
19243 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19244
19245         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19246         stack touching.
19247
19248         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19249
19250         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19251
19252         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19253
19254         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19255         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19256
19257         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19258
19259         * mini-x86.c: Fix up stack overflow handling.   
19260
19261         * exceptions.cs: Add new regression test.
19262
19263 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19264
19265         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19266         mono_jit_thread_attach.
19267
19268         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19269
19270 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19271
19272         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19273         avoid calling constructors using callvirt.
19274
19275         * inssel.brg: Fix #74073.
19276
19277 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19278
19279         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19280         compilation with non-GCC compilers.
19281         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19282         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19283
19284 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19285
19286         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19287         klass->interface_offsets (will likely fix bug#74073).
19288
19289 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19290
19291         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19292
19293 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19294
19295         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19296         to amd64_div_reg_size ().
19297         
19298         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19299
19300 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19301
19302         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19303
19304 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19305
19306         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19307
19308 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19309
19310         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19311         
19312         * mini.c (mono_precompile_assembly): Load and precompile referenced
19313         assemblies as well. Fixes #74015.
19314
19315 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19318
19319 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19320
19321         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19322         a lot of checks and (anyway) permissions cannot work until corlib is 
19323         loaded.
19324
19325 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19326
19327         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19328
19329 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19330
19331         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19332         calls (fixes bug#72824).
19333
19334 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19335
19336         * mini.c: fix tail recursion elimination (see test in bug#73936).
19337
19338 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19339
19340         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19341         some fp functions in sse2 mode.
19342
19343 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19344
19345         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19346
19347 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19348
19349         * mini.h mini.c: Add mono_get_jit_tls_key ().
19350
19351         * mini-x86.c: Enable fast TLS support on windows.
19352
19353 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19354
19355         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19356         * mini.c: Check for p/invoke method when generating code. If a
19357         p/invoke method, or it's class, isn't decorated with [Suppress
19358         UnmanagedCodeSecurity] then generate code to call System.Security.
19359         UnmanagedDemand (only if the security manager is active).
19360
19361 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19362
19363         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19364         last change as it seems to cause strange crashes.
19365         
19366 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19367
19368         * *.c: handle unsafe function pointers where needed.
19369
19370 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19371
19372         * mini.c (mono_jit_free_method): Remove the fixme too.
19373
19374 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19375
19376         * mini.c: As discussed, make the code actually free the delegate
19377         thunk now, to enable the debugging of delegate problems, use
19378         MONO_DEBUG=1 when running Mono. 
19379
19380         This takes also care of parts of the leaks as seen by Joe.
19381
19382 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19383
19384         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19385         thread_tls_offset calculation.
19386
19387 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19388
19389         * declsec.c: Reworked linkdemand checks for icall. The previous code
19390         was using the declaration code (untrusted) and didn't work as expected
19391         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19392         specific case.
19393
19394 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19395
19396         * iltests.il: Add new localloc test.
19397
19398         * mini-amd64.c: Handle large stack allocations the same way as on
19399         windows if stack overflow handling is working.
19400         
19401         * mini-amd64.c: Allocate the signal stack using mmap.
19402
19403         * mini.c (sigsegv_signal_handler): Fix reading of context.
19404
19405         * mini-exceptions.c: Fix up stack overflow handling.
19406
19407         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19408
19409         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19410
19411         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19412
19413         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19414
19415         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19416         tramp_init functions as they are no longer needed.
19417
19418 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19419
19420         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19421         
19422         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19423
19424         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19425         
19426         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19427         support that now.
19428
19429         * mini-ops.h: Add OP_LMUL_IMM.
19430
19431         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19432         long mul/div opcodes as intrinsic.
19433
19434         * mini-amd64.c (emit_call): Handle the case when the callee might be
19435         an AOT method.
19436
19437 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19438
19439         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19440         extra safe.
19441         
19442         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19443
19444         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19445
19446 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19447
19448         * mini.c (mono_codegen): Don't leak here, to help people running
19449         monogrind.
19450
19451 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19452
19453         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19454         conversions in sse2 mode.
19455
19456         * basic-float.cs: Add regression test.
19457         
19458         * mini-amd64.c: Reenable sse2.
19459
19460 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19461
19462         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19463
19464 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19465
19466         * driver.c: Copyright text should include 2005.
19467         
19468 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19469
19470         * cpu-amd64.md (load_membase): Fix more max lengths.
19471
19472 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19473
19474         * cpu-amd64.md (load_membase): Fix max length.
19475
19476         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19477
19478         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19479
19480         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19481         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19482
19483         * basic-float.cs: Add rounding regression test.
19484
19485         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19486
19487 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19488
19489         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19490         structures in registers for pinvoke wrappers.
19491
19492 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19493
19494         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19495
19496 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19497
19498         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19499         wrapper to mono_jit_thread_attach.
19500
19501         * mini.c (mini_jit_thread_attach): New jit icall.
19502
19503         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19504         native->managed wrappers.
19505
19506         * exceptions.cs: Add new regression test.
19507
19508         * mini.c (optimize_branches): Check regions in the cbranch to throw
19509         block case as well. Fixes #73242.
19510
19511 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19512
19513         * mini.c: thread safety fixes.
19514
19515 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19516
19517         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19518         patching stuff, since delegates use jump trampolines so there is
19519         no caller.
19520
19521         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19522         jump trampolines.
19523         
19524         * tramp-amd64.c: Fix build.
19525
19526         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19527         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19528
19529         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19530         Rename this to mono_arch....
19531         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19532
19533         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19534
19535         * mini-amd64.c (emit_call): If both the caller and the callee is
19536         guaranteed to have 32 bit addresses, emit a normal call.
19537
19538         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19539
19540         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19541         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19542         method_ptr inside delegates.
19543
19544 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19545
19546         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19547         invalidated. Fixes #73001.
19548
19549         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19550
19551         * mini-x86.c: Only use stdcall for pinvokes on windows.
19552
19553 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19554
19555         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19556         * mini-x86.c: remove unreliable __thread var offset detection,
19557         use the correct accessors and enable by default.
19558
19559 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19560
19561         * mini.c (mono_jit_free_method): Fix memory leak.
19562
19563 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19564
19565         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19566
19567 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19568
19569         * cpu-amd64.md: Fix lengths of atomic opcodes.
19570
19571 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19572
19573         * driver.c: try to not imply using ICU is any good.
19574
19575 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19578         functions as inline ops.
19579
19580         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19581         some Interlocked functions as inline ops.
19582
19583         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19584
19585         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19586
19587         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19588
19589         * mini.c: Add support for OP_NOT_TAKEN.
19590
19591         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19592         structures in registers for pinvoke wrappers.
19593
19594         * mini-amd64.c: Fix warnings.
19595
19596 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19597
19598         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19599
19600         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19601
19602         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19603         address instead of loading the address from it.
19604
19605         * mini-x86.c: Add support for returning small structs in registers
19606         on Win32. Fixes part of #70864.
19607         
19608 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * trace.c (get_token): Improve error checking.
19611
19612 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19613
19614         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19615
19616 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19617  
19618         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19619         it can be reused for MonoClass.
19620         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19621         _LINKDEMAND.
19622
19623 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19624
19625         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19626         instead of a MonoReflectionMethod. The method information wasn't used
19627         when displaying SecurityException details (but will be now).
19628
19629 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19630
19631         * Makefile.am : windows build fix.
19632
19633 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19634
19635         * iltests.il: Add new regression test.
19636
19637         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19638         #72522.
19639
19640 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19641  
19642         * mini.c: Moved linkdemand check into helper function check_linkdemand
19643         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19644         LDFTN, LDVIRTFTN).
19645
19646 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19647
19648         * declsec.c: Added statistics counter for different kinds of 
19649         LinkDemands.
19650         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19651         (and commented) declaration.
19652         * mini.c: Added statistics counter for security Demand code 
19653         generation. Added display of security statistics.
19654
19655 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19656
19657         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19658         Fix compilation errors under gcc-2.95.
19659
19660 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19661
19662         * mini.c, driver.c: Use the new jit trampoline hashtable
19663
19664 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19665
19666         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19667
19668 2005-02-11  Martin Baulig  <martin@ximian.com>
19669
19670         * debug-mini.c (mono_debug_close_method): Free the line number array.
19671
19672 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19673
19674         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19675         icalls.
19676
19677         * mini.h: Bump AOT file format version. 
19678
19679 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19680
19681         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19682         APTC and P/Invoke.
19683         * declsec.h: Added macros to get/set lazyly initialized security 
19684         informations about assemblies. Added new enum for different type of
19685         possible LinkDemand violation. Added function to check LinkDemands.
19686         * mini.h: Added a field to MonoCompile to hold any security violation
19687         detected when JITting a method (so it can be thrown later).
19688         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19689         and CEE_CALLVIRT. Added code to throw exception at the end of
19690         mini_method_compile (note: the exception is unhandled right now).
19691
19692 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19693
19694         * mini.c, jit-icalls.c: use the managed implementation of
19695         memset for initobj and memset, to avoid managed <-> unmanaged
19696         transitions.
19697
19698 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19701         optimization if it would need a GOT var.
19702
19703         * basic.cs: Add tests for constant propagation and switch statements.
19704
19705         * ssa.c: Fix out-of-range constant propagation and switch statements.
19706
19707 2005-02-09    <vargaz@freemail.hu>
19708
19709         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19710
19711 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19712
19713         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19714
19715 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19716
19717         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19718
19719 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19720
19721         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19722         arithmetic operations.
19723
19724 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19725
19726         * mini-ppc.c: add a workaround for broken user code that
19727         DllImports vararg functions with non-vararg signatures.
19728
19729 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19730
19731         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19732         meaningfull error message for assemblies written in Managed C++.
19733
19734         * tramp-amd64.c mini-amd64.h: Add support for 
19735         create_trampoline_from_token ().
19736
19737         * aot.c mini-x86.c abcremoval.c: Applied patch from
19738         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19739
19740 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19741
19742         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19743         which takes a MonoImage/token as parameter instead of a MonoMethod.
19744
19745         * aot.c: Use the new trampoline for initializing vtables.
19746
19747         * aot.c: Add support for ldfld/stfld_remote wrappers.
19748
19749         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19750         rules for compare <MEM>, IMM.
19751
19752         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19753
19754         * aot.c: Handle inherited finalizers correctly.
19755
19756 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19757
19758         * inssel.brg (stmt): Add a missing _setup_... ().
19759
19760         * aot.c: Save some parts of the class state to the AOT file and use it
19761         to recompute that state when a class is initialized.
19762
19763         * mini.c: Install AOT hooks into the runtime.
19764
19765         * mini.h: Bump AOT file format version.
19766         
19767         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19768         Fixes #72148.
19769
19770         * iltests.il: Add new test.
19771
19772 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19773
19774         * mini.c: fix typo.
19775
19776 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19777
19778         * mini.c: setup the statistical profiler in the thread attach
19779         callback to cope with the new single thread code.
19780
19781 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19782
19783         * mini-ppc.c: ensure we have enough room for the profiler
19784         calls (fixed bug#72084).
19785
19786 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19787
19788         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19789         it.
19790
19791 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19792
19793         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19794
19795 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19796
19797         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19798         to succesfully execute parrotbench).
19799         * ssapre.h: Likewise.
19800
19801 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19802
19803         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19804         variable for stores to method arguments (fixes a SSAPRE issue).
19805
19806 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19807
19808         * mini.c: handle value types in dup, fixes gen-112.cs.
19809
19810 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19811
19812         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19813         sequence for calls in dynamic methods to avoid thunks.
19814
19815 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19816
19817         * mini.c: correctly remove dynamic methods from the hashtable.
19818
19819 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19820
19821         * driver.c: Disabled SSAPRE until fix the bug that appears
19822         in IronPython's parrotbench.
19823
19824 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19825
19826         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19827
19828         * mini.c (mono_method_to_ir): Revert the previous change.
19829         
19830         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19831         when AOT compiling.
19832
19833         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19834         mono_jit_info_table_find () etc. when running under valgrind.
19835
19836         * inssel.brg: Fix warnings.
19837
19838         * mini-exceptions.c: Fix warnings.
19839
19840 2005-01-31  Martin Baulig  <martin@ximian.com>
19841
19842         * driver.c (compile_all_methods_thread_main): Don't try to compile
19843         generic methods or anything which has type parameters.
19844
19845 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19846
19847         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19848
19849         * TestDriver.cs: Add --verbose flags.
19850
19851         * graph.c ssa.c: Fix 64 bit warnings.
19852         
19853         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19854         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19855         Fix 64 bit warnings.
19856
19857         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19858         variable not spotted by gcc.
19859         
19860         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19861         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19862         X86_COMPARE_MEMBASE opcodes.
19863
19864         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19865
19866 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19867
19868         * *: MonoMethod->signature might be NULL now. You *MUST* use
19869         mono_method_signature.
19870
19871 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * driver.c (compile_all_methods_thread_main): Compile the methods
19874         without invoking cctors.
19875
19876 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19877
19878         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19879         * basic-calls.cs: test for the above.
19880
19881 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19882
19883         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19884         MonoJitInfo changes.
19885
19886 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19887
19888         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19889         eagerly if it contains dynamic methods.
19890         
19891         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19892
19893         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19894         trace, it is now computed by an icall from trace_ips.
19895         
19896         * mini-exceptions.c: Fix a warning.
19897
19898 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19899
19900         * mini-exceptions.c: don't bother getting stack trace info if
19901         it's not going to be used.
19902
19903 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19904
19905         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19906         ssapre-mini-ops.h.
19907
19908 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19909
19910         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19911
19912         * aot.c: Avoid calling mono_method_get_header () if not needed.
19913
19914         * mini.h: Bump AOT file format version.
19915         
19916         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19917
19918         * mini.c (mono_print_tree): Print more info for calls.
19919
19920 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19921
19922         * declsec.h: Remove warning by adding missing include for marshal.h
19923
19924 2005-01-26  Martin Baulig  <martin@ximian.com>
19925
19926         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19927         `ip' twice.
19928
19929 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19930
19931         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19932         flags.
19933
19934         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19935
19936         * aot.c (mono_compile_assembly): Fix a warning.
19937
19938 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19939
19940         * declsec.c: Look for security attributes on the original MonoMethod 
19941         (and not the wrapped one). This fix permissions on icalls.
19942
19943 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19944
19945         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19946
19947         * mini.c (mono_allocate_stack_slots): Add a fixme.
19948
19949         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19950
19951 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19952
19953         * inssel.brg: optimize casts of sealed types (more
19954         optimizations waiting for fixes in remoting).
19955
19956 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19957
19958         * inssel.brg (stmt): Add another dummy rule.
19959
19960         * driver.c: Fix warnings.
19961
19962         * driver.c (mono_main): If running under valgrind, instruct glib to use
19963         the system allocation functions so valgrind can track the memory
19964         allocated by the g_... functions.
19965
19966         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19967
19968         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19969
19970         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19971
19972         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19973         variables in try regions.
19974
19975         * mini.c (mini_method_compile): Don't disable optimizations on large
19976         methods when AOT compiling.
19977
19978         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19979         allocate stack slots. Not yet used.
19980
19981 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19982
19983         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19984
19985 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19986
19987         * mini-ppc.c: make the branch info relative as the code
19988         buffer can be reallocated.
19989
19990 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
19991
19992         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
19993         * driver.c: Removed the AOT/security restriction. Now initialize the
19994         security manager (in metadata) if --security is used.
19995         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
19996         rather than the pointer to declarative security, when AOT is used.
19997
19998 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
19999
20000         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20001         basic blocks, reduced intrinsic exception throwing code size.
20002
20003 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20004
20005         * driver.c (mini_usage): Reorder the usage screen.
20006
20007 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20008
20009         * mini.c (mono_resolve_patch_target): Fix warning.
20010
20011 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20012
20013         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20014         previous patch.
20015
20016         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20017
20018         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20019         breaks the amd64 build.
20020
20021         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20022         register allocation. Fixes #71454.
20023
20024         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20025
20026         * arrays.cs: Add new regression test.   
20027
20028 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20029
20030         * ssapre.c: Turned usage of snprintf to GString.
20031         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20032         (I left it on by mistake in my previous commit).
20033
20034 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20035
20036         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20037         on cond branch optimization (fixes bug# 71515).
20038
20039 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20040
20041         * abcremoval.c: Fixed bug 71062.
20042         * abcremoval.h: Likewise.
20043
20044 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20045
20046         * mini.c: Added a new functionality to optimize_branches, the removal
20047         of useless basic blocks, and fixed some problem in the removal of
20048         critical edges; some utility functions added for both purposes.
20049         * ssapre.c: Added complex expression support, and fixed bug 70637.
20050         * ssapre.h: Likewise.
20051         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20052         enabled in SSAPRE.
20053         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20054         * driver.c: Re-enabled SSAPRE.
20055
20056 2005-01-19  Martin Baulig  <martin@ximian.com>
20057
20058         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20059         the result of mono_get_method_constrained().
20060
20061 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20062
20063         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20064         manager.
20065
20066 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20067
20068         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20069         be detected.  Fixes #59296.
20070
20071 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20072
20073         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20074         which can happen. Fixes #71361.
20075
20076 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20077
20078         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20079         manager.
20080
20081 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20082
20083         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20084         appdomain-unload.exe to fail.
20085         
20086         * mini.c: Fix some memory leaks.
20087
20088 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20089
20090         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20091         Fixed bug and sped up some codepaths.
20092
20093 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20094
20095         * mini.c: Fix some memory leaks.
20096
20097         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20098         conversion.
20099
20100         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20101
20102         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20103         #71320.
20104
20105         * iltests.il: Add regression test for #71320.
20106
20107 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20108
20109         * mini.c (mono_codegen): Fix installation of profiler hooks.
20110
20111         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20112
20113 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20114
20115         * mini.h, mini.c, cfold.c: optimize access to enum
20116         readonly fields, too. Eval conditional branches if possible
20117         to perform unreachable code removal in more cases.
20118
20119 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20120
20121         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20122
20123         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20124         code manager.
20125
20126         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20127         WinXP DEP. Fixes #71244.
20128
20129 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20130
20131         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20132
20133 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20134
20135         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20136
20137 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20138
20139         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20140         changes.
20141
20142         * mini.h: Bump AOT version.
20143
20144         * mini.h (MonoCompile): Change exvar to a hash table.
20145
20146         * mini.c: Allocate a separate exvar for each handler block.
20147
20148         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20149
20150         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20151         ex var with the pending exception and only throw if the two are equal.
20152         Fixes #68552.
20153         
20154         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20155
20156         * mini-x86.c: Fix warnings.
20157
20158         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20159         used by all the ports now.
20160
20161         * aot.c: Add write-symbols and save-temps options.
20162
20163 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20164
20165         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20166
20167 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20168
20169         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20170         operations.
20171
20172         * tramp-s390.c: Check vtable slot belongs to the domain.
20173
20174         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20175         as per other platforms.
20176
20177         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20178
20179 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20180
20181         * driver.c: we don't run the Main() code in a subthread anymore.
20182
20183 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20184
20185         * mini.c: added experimental rtc support in the statistical
20186         profiler: if the user has the permission, more accurate statistics
20187         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20188         The MONO_RTC value must be restricted to what the linux rtc allows:
20189         power of two from 64 to 8192 Hz.
20190
20191 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20192
20193         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20194
20195 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20196
20197         * mini-ppc.c: better icache flush for smp.
20198
20199 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20200
20201         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20202
20203         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20204         amd64 port, not yet used.
20205
20206 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20207
20208         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20209         a struct type.
20210
20211 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20212
20213         * driver.c: Added --security option to activate the security manager.
20214         Right now this will allow code generation for declarative demands and
20215         is disabled when AOT is specified.
20216         * mini.c: Add code generation for declarative security demands.
20217         * mini.h: Add mono_use_security_manager as an extern gboolean.
20218
20219 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20220
20221         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20222         emitting more dense assembly code.
20223
20224         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20225         exception throwing stuff.
20226
20227 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20228
20229         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20230         dead code.
20231
20232         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20233         left in by mistake.
20234
20235         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20236         fixed.
20237
20238         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20239
20240         * tramp-*.c: Only patch vtable slots if the object is in the current
20241         domain. Fixes appdomain-unload.exe.
20242
20243         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20244         
20245         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20246         x86 branch.
20247
20248 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20249
20250         * mini.c (reverse_branch_op): New helper function.
20251
20252         * mini.c (optimize_branches): Run the new optimization only on 
20253         platforms which support it. Also reverse all kinds of branches.
20254
20255         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20256
20257         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20258         a throw statement.
20259
20260         * mini.c (optimize_branches): Reverse not-equals branches if the false
20261         bblock is a throw. This happens a lot of time with argument checking in
20262         corlib.
20263
20264         * mini.c (mono_codegen): Add support for placing basic blocks after
20265         the function epilogue.
20266
20267         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20268         function epilogue.
20269         
20270 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20271
20272         * mini.c (setup_stat_profiler): Only set this up if the platform
20273         supports ITIMER_PROF.
20274
20275 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20276
20277         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20278         previous patch.
20279
20280         * inssel.brg: Fix a warning.
20281
20282 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20283
20284         * mini.c: added support for statistical profiler 
20285         (run with: --profile=default:stat).
20286
20287 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20288
20289         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20290
20291         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20292
20293         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20294         related to global registers from the amd64 port.
20295
20296 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20297
20298         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20299
20300         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20301         with global registers.
20302         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20303
20304         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20305
20306 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20307
20308         * debug-mini.c (encode_value): Fix off-by-one.
20309
20310         * aot.c (encode_value): Likewise.
20311
20312         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20313
20314 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20315
20316         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20317         AOT.
20318
20319         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20320         
20321         * aot.c (emit_method_info): Increase size of temp buffer.
20322
20323         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20324         the AOT case.
20325
20326 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20327
20328         * aot.c (emit_method_info): Fix build.
20329         
20330         * aot.c: Further rework of the AOT file format to reduce the size of
20331         the method info data.
20332
20333         * mini.h: Bump AOT file format version.
20334
20335 2004-12-27  Martin Baulig  <martin@ximian.com>
20336
20337         * mini.c (mini_get_method): New static method; call
20338         mono_get_method_full() and mono_get_inflated_method().
20339         (mono_method_to_ir): Use mini_get_method() instead of
20340         mono_get_method_full(). 
20341
20342 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20343
20344         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20345
20346 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20347
20348         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20349
20350         * inssel-amd64.brg: Add some optimization rules.
20351
20352 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20353
20354         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20355         standard not GC'd stuff is fine.
20356
20357 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20358
20359         * aot.c: Rework the AOT file format to get rid of most of the global
20360         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20361
20362         * mini.h: Bump AOT file format version.
20363         
20364 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20365
20366         * mini.h: Bump AOT file format version.
20367
20368         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20369         address is inside a GOT.
20370
20371         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20372
20373         * cpu-pentium.md: Increase the maximum size of some instructions which
20374         might involve a got access.
20375         
20376         * mini.c (get_method_from_ip): Another debug helper function.
20377
20378         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20379         when got var accesses are created during the decompose phase.
20380
20381         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20382
20383         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20384         argument mini_compile_method and to MonoCompile, and use this to
20385         determine whenever a given method is compiled for AOT. This allows the
20386         other methods compiled during AOT compilation to be free of AOT stuff,
20387         so the backends does not need to add special support for them by
20388         creating a fake GOT etc.
20389
20390         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20391         longer needed.
20392
20393 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20394
20395         * mini.c (mono_method_to_ir): It turns out that some of the
20396         x-appdomain wrappers are lax with types, so just ignore this for
20397         all wrappers.
20398
20399         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20400         at the vtable->klass. If it is non-shared code we can just use the
20401         vtable.
20402
20403 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20404
20405         * mini-ppc.c: access MonoDomain from tls, too.
20406
20407 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20408
20409         * declsec.c: Removed unused variable (and related warning ;-)
20410
20411 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20412
20413         * iltests.il: New test for LDELEMA on an array of ref types.
20414
20415         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20416         all ldelema's on reftypes.
20417         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20418         it was the wrong place to put it.
20419
20420         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20421         register to pop to make this cleaner, at the request of Paolo.
20422
20423 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20424
20425         * mini-ops.h (OP_GETHASHCODE): New op.
20426
20427         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20428
20429         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20430         operation.
20431
20432         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20433         by 25%.
20434         
20435         * mini-x86.c (mono_arch_output_basic_block): Rather than
20436
20437         add ebp, 4
20438
20439         Emit
20440
20441         pop edx
20442
20443         The first is 3 bytes while the second is 1. This saves 36 kb on
20444         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20445         see a small boost because of icache locality.
20446
20447         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20448
20449 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20450
20451         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20452         started code sharing with the generic code.
20453
20454 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20455
20456         * mini-ppc.c, cpu-g4.md: added code for direct access to
20457         tls data slots.
20458
20459 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20460
20461         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20462          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20463         to OP_TLS_GET.
20464
20465 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20466
20467         * declsec.c|h: Added functions to cache the declarative stack modifiers
20468         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20469         structure.
20470         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20471         created. Register internal calls for System.Security.SecurityFrame::
20472         _GetSecurityFrame and _GetSecurityStack.
20473         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20474         the definitions for the new stack walk/callback mechanism.
20475         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20476         first security frame for LinkDemands and InheritanceDemands) and
20477         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20478         from lupus.
20479         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20480         walk initialization (lupus).
20481
20482 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20483
20484         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20485         idiom.
20486         (handle_loaded_temps): Do not create a temporary variable for
20487         things that we know are temps. They will never be modified.
20488         (mono_spill_call): Set MONO_INST_IS_TEMP
20489         (mono_emulate_opcode): ditto
20490         (emit_tree): ditto
20491         (mono_method_to_ir.CEE_DUP): ditto
20492
20493 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20494
20495         * mini.c (type_to_eval_stack_type): Make this handle the void type
20496         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20497         (emit_tree): use ip_in_bb to special case some common idioms
20498         Update all callers to pass in the IP.
20499         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20500
20501         This gives us a nice 2% speedup in mcs bootstrap.
20502
20503         * mini-x86.c (peephole_pass): Peephole pass to make
20504         mov  [foo], eax
20505         push [foo]
20506
20507         into
20508
20509         mov [foo], eax
20510         push eax
20511
20512         * mini.c (ip_in_bb): new method.
20513         (mono_method_to_ir): use this method rather than doing the hash
20514         lookup ourselves.
20515
20516         * linear-scan.c (mono_linear_scan): When expiring actives, you
20517         don't need to keep around variables that expire on this
20518         instruction. This makes it so that:
20519              a = b + 1
20520         will turn into:
20521              store (ebx add (ebx, 1))
20522         which will become
20523              add ebx, 1
20524
20525 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20526
20527         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20528         combination to avoid doing two copies. Fix up problems with previous
20529         patch.
20530
20531         * mini.c: Fix 64 bit warnings.
20532
20533         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20534
20535 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20536
20537         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20538         changes from the x86 code.
20539
20540         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20541
20542 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20543
20544         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20545         throwing code to reduce its size, unify the AOT and non-aot code and 
20546         get rid of relocations in the AOT case.
20547
20548         * mini-x86.h mini.c exceptions-x86.c 
20549         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20550         raise corlib exceptions which doesn't require relocations in the 
20551         caller.
20552
20553         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20554
20555 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20556
20557         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20558         needed.
20559
20560         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20561         in the AOT case.
20562
20563 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20564
20565         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20566         with add function when used from Inc/dec atomic 
20567         functions. Re-enabled optimization on x86.
20568         * mini-ops.h: renamed atomic_add functions to
20569         allow _add to match the Interlocked::Add and
20570         _add_next to match Interlocked::Inc/Dec.
20571
20572 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20573
20574         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20575         linking of BBs to the end BB, and enabled SSAPRE also with
20576         consprop and copyprop (which was prevented by that bug).
20577
20578 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20579
20580         * mini-x86.c: disabling the Interlocked optimizing code. 
20581
20582 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20583
20584         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20585         file version check.
20586         
20587 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20588
20589         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20590         interlocked optimization due lack of support on x86, rewrote 
20591         exchange to take into account that base may be in eax.
20592         
20593         xsp works again; activated Interlocked optimizing code.
20594         
20595 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20596
20597         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20598
20599 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20600
20601         * mini-ops.h: Add new opcodes.
20602
20603         * mini.h: Add new patch types. Add got_var to MonoCompile.
20604
20605         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20606         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20607         make it work with all kinds of patchable code.
20608
20609         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20610         address of the GOT, and referencing entries in the GOT.
20611
20612         * mini.c: Add code to load the GOT address if needed by an opcode.
20613
20614         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20615         independent AOT code on the x86 using an elf-style Global Offset Table.
20616
20617 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20618
20619         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20620
20621 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20622
20623         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20624         when running xsp.
20625
20626 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20627
20628         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20629         of Interlocked:Increment/Decrement/Add as inline ops.
20630         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20631
20632 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20633
20634         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20635         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20636
20637 2004-12-12  Duncan Mak  <duncan@ximian.com>
20638
20639         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20640         again. `patch_info->table_size' is no longer valid after Zoltan's
20641         commit #37636.
20642
20643 2004-12-12  Martin Baulig  <martin@ximian.com>
20644
20645         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20646         if we are the "real" method, ie. not an inlined method inside it.
20647
20648 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20649
20650         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20651         before we look in the special fields table. This fixes
20652         ../tests/thread-static-init.cs.
20653
20654 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20655
20656         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20657         for Array get_Rank and get_Length. Fixes bug #70465.
20658
20659 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20660
20661         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20662         separate structure to reduce the size of MonoJumpInfo.
20663
20664 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20665
20666         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20667
20668 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20669
20670         * mini.c (mini_get_inst_for_method): Changed to allow ports
20671         to return a MonoInst instead of opcode 
20672         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20673         
20674         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20675         Allow ports to return a created MonoInst instead of op-code, will enable
20676         new optimizations.
20677         (renamed mini_get_opcode_for_method to better reflected the functionality)
20678
20679 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20680
20681         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20682
20683 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20684
20685         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20686         Fixes #69985.
20687
20688 2004-12-08  Martin Baulig  <martin@ximian.com>
20689
20690         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20691         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20692
20693 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20694
20695         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20696         correctly.
20697
20698         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20699         arithmetic.
20700
20701 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20702
20703         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20704
20705 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20706
20707         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20708         bug introduced by the previous patch.
20709
20710 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20711
20712         * mini-ppc.c, objectc.cs: handle large structs passed by value
20713         (fixes bug #69972).
20714
20715 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20716
20717         * mini-ppc.c: OP_ARGLIST implementation from
20718         Geoff Norton  <gnorton@customerdna.com>.
20719
20720 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20721
20722         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20723         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20724
20725 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20726
20727         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20728
20729 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20730
20731         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20732         support.
20733
20734 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20735
20736         * mini-sparc.c: Zero out localled-ed memory.
20737
20738         * iltests.il: Add tests for zeroing out localloc-ed memory.
20739
20740 2004-12-04  Martin Baulig  <martin@ximian.com>
20741
20742         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20743         mono_method_get_signature_full().       
20744
20745 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20746
20747         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20748         and some utility functions (always for SSAPRE), integrated SSAPRE.
20749         * mini.h: Likewise.
20750         * driver.c: Added ssapre option.
20751         * ssa.c: Small fix on OP_ARG handling.
20752         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20753         * Makefile.am: Likewise.
20754
20755 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20756
20757         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20758         now in the xp code.
20759
20760         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20761         icall.
20762
20763 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20764
20765         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20766         
20767         * cpu-s390.md : Increase instruction length of oparglist.
20768
20769         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20770
20771 2004-11-30  Martin Baulig  <martin@ximian.com>
20772
20773         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20774         virtual generic methods.  We call a special helper_compile_generic_method()
20775         icall to retrieve the method from the vtable, inflate and compile
20776         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20777
20778         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20779
20780 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20781
20782         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20783
20784 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20785
20786         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20787         Fixes #69929.
20788
20789 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20790
20791         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20792         platforms with PIC aot.
20793
20794 2004-11-28  Martin Baulig  <martin@ximian.com>
20795
20796         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20797         Fixes gen-112.cs.
20798
20799 2004-11-28  Martin Baulig  <martin@ximian.com>
20800
20801         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20802         the result of mono_type_get_underlying_type() to check whether
20803         we're byref.
20804
20805 2004-11-26  Martin Baulig  <martin@ximian.com>
20806
20807         * mini.c
20808         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20809         in the g_assert().
20810
20811 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20812
20813         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20814         the same way as the other arguments so they won't get clobbered.
20815
20816         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20817         calls through R11 since it is clobbered by the trampoline code.
20818
20819 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20820
20821         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20822         pick up in-tree mscorlib.dll.
20823
20824 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20825
20826         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20827
20828         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20829         runtime data/code are now stored in a table similar to the GOT in ELF. 
20830         This allows the code itself to be position independent.
20831
20832         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20833         loading changes.
20834
20835         * aot.c: Attach ELF type (object/function) directives to all global
20836         symbols.
20837
20838         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20839
20840         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20841
20842         * mini-amd64.h: Turn on PIC AOT code.
20843
20844         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20845         returning the offset within an OP_AOTCONST instruction where the GOT
20846         offset needs to be added.
20847
20848         * mini.h: Bump AOT file format version.
20849
20850 2004-11-25  Martin Baulig  <martin@ximian.com>
20851
20852         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20853         uninflated generic methods.
20854
20855 2004-11-25  Martin Baulig  <martin@ximian.com>
20856
20857         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20858
20859 2004-11-24  Martin Baulig  <martin@ximian.com>
20860
20861         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20862         original klass (this only applies for generic instances).
20863
20864 2004-11-24  Martin Baulig  <martin@ximian.com>
20865
20866         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20867         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20868         that array).
20869
20870 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20871
20872         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20873         localloc. Fixes #69678.
20874
20875         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20876         
20877 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20878
20879         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20880         used SSE registers on pinvoke calls. Fixes #69774.
20881
20882 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20883
20884         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20885         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20886
20887 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20888
20889         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20890         Refer directly to the mcs/ tree.
20891
20892 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20893
20894         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20895         Check if a trampoline for a synchronized method is required. 
20896
20897 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20898
20899         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20900         with localloc if needed. Throe arithmetric exception in
20901         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20902         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20903
20904 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20905
20906         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20907         types before switching on type.  Fixes #69622.
20908
20909 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20910
20911         * Makefile.am (check-local): New.  Integrate into 'make check'.
20912         (MCS,RUNTIME): Define using in-tree mono and mcs.
20913         (ILASM): New.
20914         (%.exe): Use $(ILASM).
20915
20916 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20917
20918         * mini-ppc.c: adjust initial prolog size (bug #69691).
20919
20920 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20921
20922         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20923         #69664.
20924
20925 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20926
20927         * Makefile.am (clean-local): Rename from 'clean'.
20928
20929 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20930
20931         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20932         to mono_arch_is_int_overflow. 
20933         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20934         SIGFPE events.
20935
20936 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20937
20938         * declsec.c|h: New files to support declarative security attributes.
20939         Added function to check if a method has (applicable) security.
20940         * mini.c|h: Add check for declarative security attributes in
20941         mono_method_check_inlining.
20942         * Makefile.am: Added declsec.c and declsec.h to the build.
20943
20944 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20945
20946         * mini.c, mini.h: update to keep dynamic code info per-domain.
20947
20948 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20949
20950         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20951         (mini_init): Get rid of it from here too.
20952
20953 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20954
20955         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20956         implemented OP_RETHROW (patch by Geoff Norton
20957         <gnorton@customerdna.com>).
20958
20959 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20960
20961         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20962         between appdomains.  Fixes appdomain-unload on PPC.
20963
20964 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20965
20966         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20967         mini-exceptions.c: handle the new wrapper types.
20968         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20969         token value as a MonoClass* when compiling a wrapper.
20970         mono_jit_create_remoting_trampoline now takes an additional
20971         MonoRemotingTarget parameter.
20972         
20973 2004-11-10  Martin Baulig  <martin@localhost>
20974
20975         * mini.c (mono_method_to_ir): Use `generic_container->context'
20976         rather than creating a new one.
20977
20978 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20979
20980         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20981
20982         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20983
20984 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20985
20986         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20987         the experimental aot cache stuff.
20988
20989 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
20990
20991         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20992         mini-exceptions.c: update to exception clause structure changes.
20993
20994 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
20995
20996         * exceptions-x86.c (throw_exception): Fix warnings.
20997
20998         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
20999         for OP_RETHROW.
21000
21001 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21002
21003         * exceptions-sparc.c (get_throw_exception): Really fix this.
21004
21005 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21006
21007         * tramp-*.c: we no longer support icalls without wrappers, so
21008         a bit of code can be removed here
21009
21010 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21011
21012         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21013         patch.
21014
21015         * cpu-sparc.md: Add op_rethrow.
21016
21017         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21018
21019         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21020
21021         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21022         * mini-ops.h: Add OP_RETHROW.
21023
21024         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21025
21026         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21027
21028 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21029         
21030         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21031         Makes the output much easier to read
21032
21033 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21034
21035         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21036         prevents another huge leak when compiling with ssa. Secondly, the
21037         performance of doing this rather than freeing the lists is much
21038         better. GList does a lock every time you allocate a list link,
21039         so that it can use a memory pool. So, it is better to just use
21040         a memory pool of our own.
21041         
21042         * ssa.c, linear-scan.c: replace g_list_remove_link with
21043         g_list_delete.  The remove one does not free the GList, so we were
21044         leaking memory. On -O=all --compile-all with corlib, this cut down
21045         3 MB of allocations.
21046
21047 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21048
21049         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21050
21051         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21052
21053         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21054         into a new function mono_create_jit_trampoline ().
21055
21056 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21057
21058         * trace.c (get_spec): Allow tracing of classes without a namespace.
21059
21060 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21061
21062         * mini.c: Fix pointer overwrite in mini_method_compile.
21063
21064 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21065
21066         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21067         The darwin ABI needs some special handling for 1 and 2 byte structs
21068         Lets use lbz/lhz instead of lwz everywhere.
21069         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21070         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21071         Use stb/sth for the former, and put the latter always on stack instead of in
21072         argument registers.
21073
21074 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21075
21076         * trace.c (is_filenamechar): Add '_'.
21077
21078 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21079
21080         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21081
21082         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21083
21084 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21085
21086         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21087         depends on libmonogc. Fixes #68805.
21088
21089 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21090
21091         * mini.c (mono_jit_free_method): Provide extra information for
21092         this error.  Currently this leaks, but will be turned into a
21093         developer option in the future.
21094
21095 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21096
21097         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21098
21099 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21100
21101         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21102         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21103         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21104
21105 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21106
21107         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21108         trampolines for AOT code.
21109
21110 2004-10-22    <vargaz@freemail.hu>
21111
21112         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21113         constructed types. Fixes #68136.
21114
21115 2004-10-21  Martin Baulig  <martin@ximian.com>
21116
21117         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21118         if it returns true, unwind the stack to the call instruction.
21119
21120 2004-10-21    <vargaz@freemail.hu>
21121
21122         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21123
21124         * mini.h: Bump AOT version number.
21125
21126         * objects.cs: Add another test for unbox trampolines.
21127
21128         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21129         valuetype methods.
21130
21131 2004-10-20    <vargaz@freemail.hu>
21132
21133         * driver.c: Add SHARED to the set of optimizations tested.
21134
21135         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21136
21137         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21138         used by CEE_NEWARR.
21139
21140         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21141
21142 2004-10-20  Martin Baulig  <martin@ximian.com>
21143
21144         * mini-exceptions.c (mono_handle_exception): Call
21145         mono_debugger_handle_exception() to tell the debugger about
21146         catch/finally clauses.
21147
21148 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21149
21150         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21151
21152         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21153         #68447.
21154
21155 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21156
21157         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21158         methods as their native size, fixed bug #57543, #57545.
21159         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21160         This saves a temporary register and mullw call down into 1 (minor perf
21161         increase for cases like sum = sum * 5;  This use to translate into:
21162             li r11,5
21163             mullw r28,r28,r11
21164         It now translates to
21165             mulli r28,r28,5
21166
21167 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21168
21169         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21170         #68388.
21171
21172 2004-10-11  Martin Baulig  <martin@ximian.com>
21173
21174         * mini.c (mono_method_to_ir): If we're a generic method, get the
21175         MonoGenericContainer from our MonoMethodNormal and create a
21176         MonoGenericContext from it.
21177
21178 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21179
21180         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21181
21182         * basic-long.cs: Add test for checked i8->i2 cast.
21183
21184 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21185
21186         * inssel-ppc.brg: added a couple of speedup rules.
21187
21188 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21189
21190         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21191         to speed up rebuilds.
21192
21193 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21194
21195         * mini-s390.c: Minor fix to OP_OR_IMM.
21196
21197 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21198
21199         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21200         better. Fixes appdomain-unload.exe on sparc.
21201
21202 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21203
21204         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21205         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21206         see bug 67324.
21207
21208 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21209
21210         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21211
21212 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21213
21214         * mini.c: Always generate a field read/write wrapper for members
21215         of the class MarshalByRefObject since the actual instance could
21216         be a CBO.
21217
21218 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21219
21220         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21221
21222 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21223
21224         * driver.c mini.h trace.c: Move the setting of the main assembly into
21225         a separate function called mono_trace_set_assembly () and call it after
21226         actually loading the main assembly. Fixes #66872.
21227
21228 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21229
21230         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21231         using the code manager.
21232
21233 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21234
21235         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21236
21237 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21238
21239         * cpu-amd64.md: Fix bug in previous patch.
21240         
21241         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21242         #66650.
21243
21244 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21245
21246         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21247         mini-exceptions.c: updates for changed stack walk interface.
21248
21249 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21250
21251         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21252
21253 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21254
21255         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21256
21257 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21258
21259         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21260         since assemblies can't be unloaded.
21261         
21262 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21263
21264         * cpu-amd64.md: Fix more instruction lengths.
21265
21266         * cpu-amd64.md: Fix lengths of some instructions.
21267
21268 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21269
21270         * inssel.brg: Make the array ldelema check aot friendly.
21271
21272 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21273
21274         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21275
21276         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21277
21278 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21279
21280         * mini-x86.c: Fix build.
21281
21282         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21283         mono_type_get_underlying_type () helper function to simplify code.
21284         
21285 2004-09-09  Martin Baulig  <martin@ximian.com>
21286
21287         * mini-amd64.c: Don't access `type->data.klass' directly, call
21288         mono_class_from_mono_type() instead since the type may be a
21289         generic instance.
21290
21291 2004-09-09  Martin Baulig  <martin@ximian.com>
21292
21293         * mini-amd64.c (get_call_info): Fix support for generic instances.
21294         (add_valuetype): Use mono_class_from_mono_type() to get the class
21295         since we can be a generic instance.
21296
21297 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21298
21299         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21300
21301 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21302
21303         * liveness.c: reset spill costs on each scan: bug 62107
21304
21305 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21306
21307         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21308         unnecessary line that doesn't compile
21309
21310 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21311
21312         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21313         trampolines, make them call an error function so people can fix their
21314         code.
21315
21316 2004-09-06  Martin Baulig  <martin@ximian.com>
21317
21318         * mini.c (mono_method_to_ir): When initializing locals, handle a
21319         generic instances like a valuetype if it's a valuetype and like a
21320         class if it's a class.
21321
21322 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21323
21324         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21325         stack. Fixes #64674.
21326
21327         * exceptions.cs: Add test for unwinding of call arguments.
21328
21329 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21330
21331         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21332         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21333         set the carry/borrow flag). The sparc and s390 implementations
21334         can now use optimized versions (and simplify the code). ppc bugfixes.
21335
21336 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21337
21338         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21339
21340 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21341
21342         * inssel-amd64.brg: Remove leftover 32 bit rule.
21343
21344         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21345
21346 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21347
21348         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21349         mono_arch_find_jit_info functions into a new function. Fix a memory
21350         leak.
21351
21352         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21353         refactored code.
21354         
21355 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21356
21357         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21358         as well.
21359         
21360         * exceptions.cs: Add array size tests.
21361
21362         * mini.c: Allocate a separate icall wrapper for each arity of 
21363         mono_array_new_va. Fixes #59509.
21364
21365         * exceptions.cs: Add testcase for 64578.
21366
21367         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21368
21369         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21370         
21371 2004-09-02  Martin Baulig  <martin@ximian.com>
21372
21373         * mini.c (mono_method_to_ir): When initializing the locals, call
21374         handle_initobj() on the generic instance itself, not its
21375         underlying type.
21376
21377 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21378
21379         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21380         MonoJitInfo for dynamic methods.
21381
21382         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21383
21384         * mini.c: Add support for freeing JIT data for dynamic methods.
21385         
21386 2004-09-01  Martin Baulig  <martin@ximian.com>
21387
21388         * mini-x86.c (is_regsize_var): Added support for generic
21389         instances.
21390         (mono_arch_emit_prolog): Make this compile again, use
21391         `x86_push_imm_template (code)'.
21392
21393 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21394
21395         * mini-x86.c: make all push_imm instructions that get
21396         patched always emit the long form
21397
21398 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21399
21400         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21401         in a per-domain hash.
21402
21403         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21404         types.
21405
21406 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21407
21408         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21409         work.
21410         
21411         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21412         work.
21413
21414         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21415         Beginnings of SSE2 support.
21416
21417         * exceptions.cs: Add more tests for checked int<->uint casts.
21418
21419 2004-08-28  Martin Baulig  <martin@ximian.com>
21420
21421         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21422         generic instances.
21423
21424         * mini.c
21425         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21426         Handle generic instances recursively.
21427
21428 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21429
21430         * iltests.il: test for conv.u8 on a constant
21431
21432 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21433
21434         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21435         LCONV_x4 (shrun_32 (membase)).
21436
21437 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21438
21439         * inssel-x86.brg: c&p rules for push/setret of long
21440
21441 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21442
21443         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21444         compare (regvar, base)
21445
21446         * inssel-x86.brg: more burg love
21447
21448         * inssel.brg: more cleanup
21449
21450         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21451
21452 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21453
21454         * basic-long.cs, basic-calls.cs: new tests for optimization.
21455
21456 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21457
21458         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21459         patch.
21460
21461 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21462
21463         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21464         
21465 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21466
21467         * inssel.brg (mini_emit_memcpy): use 
21468         NO_UNALIGNED_ACCESS to disable memcpy optimization
21469
21470 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21471
21472         * mini-amd64.c: Handle generic types in various places.
21473
21474         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21475
21476 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21477
21478         * mini.c (handle_box): Fix warning.
21479
21480         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21481
21482         * mini-amd64.h: Enable the emit_state optimization.
21483
21484         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21485
21486         * mini-amd64.c: Add some new 64 bit peephole opts.
21487
21488         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21489
21490         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21491
21492         * mini-amd64.c: Register allocator fixes.
21493
21494         * mini.c: Add an optimization to emit_state to avoid allocation of new
21495         registers on some platforms.
21496
21497 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21498
21499         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21500
21501         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21502         allocation. Fixes #63085.
21503
21504         * basic-long.cs: Add new regression test.
21505
21506         * mini-amd64.c: Register allocator improvements.
21507
21508 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21509
21510         * mini-amd64.c (read_tls_offset_from_method): Add another code
21511         sequence.
21512
21513         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21514         instruction sequence for nullifying class init trampolines.
21515
21516         * objects.cs: Add new regalloc test.
21517
21518         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21519
21520 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21521
21522         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21523         
21524         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21525         arguments.
21526
21527         * driver.c: Fix profiling after TLS changes.
21528         
21529         * driver.c (mono_main): Set mono_stats.enabled if needed.
21530
21531         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21532         CEE_BOX.
21533
21534 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21535
21536         * mini-x86.c: use a 1 op rather than a 2 op tls access
21537         instruction -> faster.
21538
21539 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21540
21541         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21542         x86 backend.
21543
21544 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21545
21546         * exceptions-sparc.c (throw_exception): fix typo
21547
21548 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21549
21550         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21551         set tree->dreg correctly with tls. Allow any
21552         register to be used.
21553
21554         * mini-x86.c (read_tls_offset_from_method): add new code
21555         generation pattern seen with GCC.
21556
21557
21558 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21559
21560         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21561         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21562         exceptions-sparc.c: fix some performance issues in exception
21563         handling and setting of the stack trace for exceptions that were
21564         already thrown.
21565
21566 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21567
21568         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21569         x86 backend.
21570         
21571         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21572         registers.
21573
21574 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21575
21576         This patch inlines tls access, when possible.
21577         
21578         * mini.h: new arch functions for TLS intrinsics.
21579         All platforms updated with a stub.
21580
21581         * mini.c: use the new intrinsics
21582
21583         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21584         arch specific intrinsic for tls variables
21585
21586 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21587
21588         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21589         under windows.
21590
21591 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21592
21593         * mini.c: thread local allocation
21594
21595 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21596
21597         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21598
21599         * Makefile.am: Link against the static version of libmonogc.
21600         
21601         * Makefile.am: Link the static versions of the convenience libraries
21602         into the mono executable.
21603
21604         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21605
21606 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21607
21608         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21609         on integer overflow.
21610
21611         * mini-amd64.c: Reorganize function call code.
21612
21613         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21614
21615 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21616
21617         * inssel-x86.brg: use xor eax,eax.
21618         
21619         * basic.cs: new tests
21620
21621 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21622
21623         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21624         in exception throwing code.
21625         
21626 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21627
21628         * inssel-x86.brg: use xor esi,esi.
21629
21630 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21631
21632         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21633         can trace methods compiled during mini_init () too.
21634
21635         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21636         CEE_CONV_U4.
21637
21638 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21639
21640         * Makefile.am: static link on x86 (r=zoltan)
21641
21642 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21643
21644         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21645         code since it causes some programs to fail.
21646
21647 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21648
21649         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21650
21651 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21652
21653         * mini.c: ovfops_op_map - add STACK_OBJ case for
21654         CONV_I 
21655         * basic.cs: add test_0_pin_string as test
21656         case for above.
21657
21658 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21659
21660         * Makefile.am: build C# if srcdir != builddir
21661
21662 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21663
21664         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21665         fall-through blocks.
21666
21667 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21668
21669         * driver.c: enable loop by default again and include abcrem in -O=all.
21670
21671 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21672
21673         * iltests.il: Add some localloc tests.
21674
21675         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21676
21677         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21678         Fixes #62574.
21679
21680         * inssel-amd64.brg: Add some optimizations.
21681
21682         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21683         for gcc-3.4.
21684
21685         * Makefile.am: Statically link mono against libmono on AMD64.
21686         
21687         * mini-amd64.c inssel-amd64.brg: Optimizations.
21688
21689 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21690
21691         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21692
21693         * tramp-amd64.c: Patch calling code in trampolines.
21694
21695 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21696
21697         * mini-amd64.c: pinvoke struct passing fixes.
21698
21699 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21700
21701         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21702         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21703
21704 2004-08-05  Duncan Mak  <duncan@ximian.com>
21705
21706         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21707         CEE_LDELEM_ANY.
21708
21709 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21710
21711         * mini-amd64.c (emit_move_return_value): Move return value for normal
21712         calls too.
21713
21714 2004-08-05  Martin Baulig  <martin@ximian.com>
21715
21716         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21717         `type->type'; just modify `type' itself when dealing with enums
21718         and generic instances.
21719         (check_call_signature): Make `simple_type' a `MonoType *'.
21720
21721 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * mini.c: Use OP_PADD to add offsets to addresses.
21724
21725         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21726
21727 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21728
21729         * mini-sparc.c (mono_arch_emit_epilog): fix check
21730         for folding last op into restore instruction
21731
21732 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21733
21734         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21735         helper methods using the code manager.
21736         
21737         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21738
21739         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21740
21741 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21742         
21743         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21744           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21745
21746         * mini-s390.c: fix tail processing
21747
21748 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21749
21750         * mini-ppc.c: mul.ovf.un exception name fix.
21751
21752 2004-08-03  Martin Baulig  <martin@ximian.com>
21753
21754         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21755         instances; before jumping to `handle_enum', also modify `ptype'.
21756
21757 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21758
21759         * cpu-sparc.md: fcall maximal length too small.
21760
21761 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21762
21763         * mini-amd64.c mini.h: Add initial support for passing/returning 
21764         structures to/from pinvoked methods.
21765
21766 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21767
21768         * mini-ppc.c: reg allocator fix.
21769
21770 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21771
21772         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21773
21774         * inssel.brg: Optimize memset on 64 bit machines.
21775
21776         * mini-amd64.c: Fix some vararg cases.
21777
21778 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21779
21780         * mini-s390.c: Corrected macro in emit_float_to_int
21781
21782         * s390-abi.cs: Tests to exercise the s390 ABI
21783
21784 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21785
21786         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21787         caller saved regs.
21788
21789         * basic.cs: Add a test for add.ovf.un.
21790
21791 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21792
21793         * mini-sparc.c: add case for OP_IDIV_UN
21794
21795 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21796
21797         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21798         
21799         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21800
21801 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21802
21803         * basic.cs: regression tests.
21804
21805         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21806         regressions.
21807
21808 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21809
21810         * basic.cs: Add a new test.
21811
21812         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21813         and AOT. Various fixes and optimizations.
21814
21815         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21816
21817 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21818
21819         * mini-ppc.c: make sure temp regs are not used for global reg
21820         allocation.
21821
21822 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21823
21824         * cpu-sparc.md: conv_i8 fix for 64bits
21825
21826         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21827
21828 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21829         
21830         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21831         add opcode for cmp BYTE PTR [eax], imm.
21832
21833         * inssel.brg: Make memcpy and memset takes bases.
21834
21835 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21836
21837         * *-amd64.*: More AMD64 work.
21838         
21839 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21840
21841         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21842         add a compare-not-equal opcode.
21843         
21844 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21845
21846         * mini.c: Use mono_init_from_assembly instead of mono_init.
21847         
21848 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21849
21850         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21851
21852         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21853
21854         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21855
21856         * inssel.brg: 64 bit fixes.
21857
21858         * mini.h (MonoCallInst): Add some AMD64 specific data.
21859
21860         * mini.h: Add some OP_P opcodes.
21861
21862 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21863
21864         * basic.cs: tests for 61797 and 61740
21865
21866 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21867
21868         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21869         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21870
21871 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21872
21873         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21874
21875         * *-amd64*.*: Ongoing AMD64 work.
21876
21877 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21878
21879         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21880
21881         * *-amd64*: Ongoing AMD64 work.
21882
21883         * mini-arch.h: Add AMD64 support.
21884
21885         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21886
21887         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21888
21889         * mini-ops.h: Add new opcodes.
21890
21891         * Makefile.am: Add AMD64 support.
21892
21893         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21894         rules into the inssel-long*.brg files.
21895
21896         * *-amd64.*: Add beginnings of AMD64 backend.
21897
21898 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21899
21900         * mini.c (print_dfn): commenting out the code that prints
21901         the cil. With -O=deadce, this makes -v -v crash.
21902         
21903         * cpu-pentium.md: make checkthis have a length of 2
21904
21905 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21906
21907         * mini-sparc.h: fix implementations of __builtin
21908         functions for Sun compiler for V9.
21909
21910 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21911
21912         * mini.c: use the new stelem.ref wrapper
21913         * exceptions.cs, arrays.cs: new stelem.ref tests
21914
21915 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21916
21917         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21918         new XSP should work with these changes).
21919
21920 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21921         
21922         * inssel-{long32,x86,}.brg: trivial optimizations.
21923         
21924 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21925
21926         * mini.c: load value when emitting box operation in
21927         constrained calls.
21928
21929 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21930
21931         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21932         is one byte shorter than cmp DWORD PTR [eax], 0.
21933
21934 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21935
21936         * inssel-ppc.brg: arguments on the stack are always
21937         relative to the stack pointer (spotted by Neale Ferguson).
21938
21939 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21940
21941         * exceptions-x86.c: delay appending the method name to the trace until
21942         after mono_jit_info_table_find is called, as this gets the real
21943         MonoMethod.
21944
21945 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21946
21947         * aot.c: register roots
21948
21949 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21950
21951         * aot.c : I could just use PLATFORM_WIN32 flag.
21952
21953 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21954
21955         * aot.c : Reverting the previous fix. This time it broke linux build.
21956
21957 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21958
21959         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21960
21961 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21962
21963         * mini.c (handle_stack_args): Remove some more debugging code.
21964         
21965         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21966
21967         * driver.c mini.h aot.c: Allow additional options to be specified with
21968         --aot and pass them to mono_compile_assembly.
21969
21970         * aot.c: Add experimental code to AOT compile all loaded assemblies
21971         on demand and save the code into a cache in the filesystem.
21972
21973         * aot.c: Add support for more wrapper methods.
21974         
21975         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21976         58863.
21977
21978         * cpu-*.md: Remove removed opcodes.
21979
21980         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21981         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21982         related icalls to marshal.c.
21983
21984 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21985
21986         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21987
21988         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
21989
21990         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
21991
21992 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
21993         * liveness.c: If liveness is recomputated we need to reset the information
21994         for each variable. This way, if the liveness range has been narrowed
21995         by optimizations that happened after the last computation, we can return
21996         a smaller range.
21997         
21998         For example, if you have
21999         
22000         {
22001                 int i = 0;
22002                 
22003                 // Tons of code that does not affect i
22004                 
22005                 i = foo ();
22006                 ...
22007         }
22008         
22009         i = 0 is dead code and will be removed by SSA. However, when
22010         linear scan gets to the code, i will still appear to be live
22011         throughout the entire block. This prevents good register allocation.
22012
22013 2004-07-06  Martin Baulig  <martin@ximian.com>
22014
22015         * debug-mini.c (mono_debug_init_method): Allow
22016         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22017         (mono_debug_add_icall_wrapper): New method.
22018
22019         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22020
22021 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22022
22023         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22024         optimization.
22025
22026 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22027
22028         * aot.c (mono_aot_load_method): Fix loading of debug info.
22029
22030 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22031
22032         * aot.c: Add logging support.
22033
22034 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22035
22036         * mini.h: Add prototype for mono_print_method_from_ip.
22037
22038         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22039
22040         * inssel.brg: 64 bit fixes.
22041
22042         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22043         inssel-long32.brg.
22044
22045         * Makefile.am: Add SPARC64 support.
22046
22047 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22048
22049         * aot.c: Fix alignment problems on 32 bit platforms.
22050
22051 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22052
22053         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22054         SPARC64.
22055
22056         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22057         problems.
22058
22059         * mini.h: Bump AOT file version. Some 64 bit fixes.
22060
22061 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22062
22063         * inssel-sparc.brg: Add new rule to avoid register moves.
22064
22065         * inssel.brg: Add ldind_to_load_membase helper function.
22066
22067 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22068
22069         * mini.c: OffsetToStringData intrinsic.
22070         
22071 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22072
22073         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22074
22075         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22076         regression tests.
22077
22078         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22079 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22080
22081         * mini.c: reinstated mono_compile_get_interface_var()
22082         on x86, too, since the change breaks the Gtk# build there as well.
22083
22084 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22085
22086         * driver.c: remove loop from the default optimizations: it seems to
22087         interact badly with some of the other options (see bug #60613).
22088
22089 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22090
22091         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22092         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22093
22094 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22095
22096         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22097         vararg-using methods.
22098
22099 2004-06-21  Martin Baulig  <martin@ximian.com>
22100
22101         * mini/mini-exceptions.c
22102         (mono_handle_exception): Added `gpointer original_ip' argument.
22103         After calling mono_unhandled_exception(), call
22104         mono_debugger_unhandled_exception() and if that returns true,
22105         restore the context and return.
22106
22107 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22108
22109         * mini-ppc.c: prefer the use of relative branches so
22110         they won't need to be patched in aot code (patch from Patrick Beard).
22111
22112 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22113
22114         * aot.c: patch from Patrick Beard to make the output assembly
22115         more correct for the MacOSX assembler. Small tweak to
22116         generate sane images on Linux/PPC, too.
22117
22118 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22119
22120         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22121         case until bug #59509 is fixed (shows up in #60332).
22122
22123 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22124
22125         * mini.c: make sure the needed wrappers are compiled, too, with
22126         precomp.
22127
22128 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22129
22130         * driver.c: remove NPTL reference in --version output.
22131
22132 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22133
22134         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22135         generate valid assembly for the Mach-O assembler.
22136
22137 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22138
22139         * driver.c: don't include abcrem in the all optimization specifier
22140         since it slows down jit compilation too much for now.
22141
22142 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22143
22144         * mini.c: use BIGMUL only if both operands have the same signage.
22145         * iltests.il: Test for bug 60056. (errors related to signage in
22146         BIGMUL).
22147
22148         r=lupus.
22149
22150 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22151
22152         * mini.c, aot.c: memory leak fixes.
22153
22154 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22155
22156         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22157
22158 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22159
22160         * Makefile.am: remove the -static hack completely, it links in
22161         statically glib as well.
22162
22163 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22164
22165         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22166         * exceptions.cs: make it compile with new mcs/csc.
22167
22168 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22169         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22170         and added relevant test case.
22171
22172 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22173
22174         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22175         regressions in gtk-sharp.
22176
22177 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22178
22179         * exceptions.cs: New regression tests.
22180
22181         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22182
22183 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22184
22185         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22186
22187 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22188
22189         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22190
22191         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22192
22193 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22194
22195         * mini.c (mono_jit_runtime_invoke): Init class in this
22196         method instead of trusting mono_jit_compile_method to
22197         do the work (because wrappers can be in object class)
22198
22199 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22200
22201         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22202
22203         * basic-long.cs: New regression test.
22204
22205 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22206
22207         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22208         and div/rem checks.
22209
22210 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22211
22212         * Makefile.am: fix miguel's change to build mono statically against
22213         libmono (track build dependencies).
22214
22215 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22216
22217         * cfold.c: Some glib versions do not have G_MININT32.
22218
22219 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22220
22221         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22222         with precision of tan, atan, sin and cos, and implemented related
22223         regressions tests (fixes bug 54467, but one new problem appeared and
22224         is not fixed yet).
22225
22226 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22227
22228         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22229
22230         * exceptions.cs: Add test for constant folding && division by zero.
22231
22232         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22233         since driver.c is in libmono too, so the optimization was useless.
22234
22235         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22236         variable to driver.c so the compiler can emit more efficient code to
22237         access them.
22238
22239 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22240
22241         * Makefile.am: don't distribute generated inssel.[ch] files.
22242
22243 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22244
22245         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22246         into the default appdomain. Fixes #58707.
22247
22248         * jit-icalls.c: Remove the broken approximation for truncl, doing
22249         no conversion is better.
22250
22251         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22252         Fixes #58863.
22253
22254 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22255
22256         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22257         of the mcrxr instruction which is not available on some processors
22258         even if it's documented to be. Implement add and sub overflow correctly
22259         (still not complete for long unsigned). Speed up icalls a bit.
22260
22261 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22262
22263         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22264         we run .cctor in the current domain instead of target_domain.
22265         
22266         Fixes bug #58558, .cctor not being called in -O=shared.
22267
22268 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22269
22270         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22271
22272 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22273
22274         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22275         which can be done with an imm8, do it that way.
22276         (mono_arch_output_basic_block): ditto for a jmp
22277         (mono_arch_emit_prolog): Computate maximum offset of a label.
22278
22279 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22280
22281         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22282         now tries to allocate prefered physical reg's for virtual
22283         regs. This reduces the number of emited spills/loads with
22284         20-30% on our core assemblies.
22285
22286 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22287
22288         * jit-icalls.c: truncl() is not needed and trunc() is
22289         the correct thing to do anyway (bug #58287).
22290
22291 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22292
22293         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22294         if available.
22295
22296 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22297
22298         * driver.c: enable loop optimizations by default.
22299
22300 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22301
22302         * mini-x86.c: fix calc of max loop size when aligning loops start.
22303
22304 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22305
22306         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22307         the stack.
22308
22309 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22310
22311         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22312         should set carry.
22313
22314         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22315
22316         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22317         
22318         * mini.c (inline_method): Allways inline some wrappers even if the cost
22319         is too large. Fixes #58785.
22320
22321         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22322         
22323 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22324
22325         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22326         (crichton@gimp.org). Beginning of support for sparc/linux.
22327
22328         * mini-sparc.c: Optimize retrieval of LMF address.
22329
22330 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22331
22332         * exceptions-ppc.c:  handle alloca in methods with clauses.
22333
22334 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22335
22336         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22337
22338 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22339
22340         * mini.c: Delegate most of the abort signal work to 
22341           mono_thread_request_interruption, which also handles Stop and Suspend
22342           states.
22343
22344 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22345
22346         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22347         supports the save/restore lmf opcodes.
22348
22349 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22350
22351         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22352         by gcc-3.4 as well.
22353
22354         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22355
22356 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22357
22358         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22359         methods which contain array accesses.
22360
22361         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22362         boundaries. Fixes #58537.
22363
22364         * iltests.il: Add regression test for #58537.
22365
22366 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22367
22368         * mini-x86.c (mono_arch_local_regalloc): Last part of
22369         fix for bug #58633 (releasing register to early).
22370
22371 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22372
22373         * basic-long.cs: Add new regression test.
22374
22375 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22376
22377         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22378         register too early on the chain.
22379
22380 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22381
22382         * mini.c (create_helper_signature): Use a helper function to reduce
22383         the code which needs to be written. Also set the calling convention of
22384         icalls on windows. Fixes #57840.
22385
22386 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22387
22388         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22389         exceptions-ppc.c: added helper function to get the instruction address
22390         from a signal handler context.
22391
22392 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22393
22394         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22395         from gonzalo.
22396
22397 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22398
22399         * helpers.c: Add new env variable to pass args to objdump.
22400         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22401
22402 2004-05-17  Radek Doulik  <rodo@ximian.com>
22403
22404         * Makefile.am (common_sources): added abcremoval.h so it get
22405         disted and daily mono packages on go-mono.com will build again
22406
22407 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22408
22409         * abcremoval.c: Fixed coding style, added copyright header.
22410
22411         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22412
22413         * mini.h: Added prototype for abc removal main function.
22414
22415         * build_relations_propagation_table.pl: Added copyright header.
22416
22417 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22418
22419         * basic-long.cs: reg test for complex ceq_long bug.
22420
22421 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22422
22423         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22424         reg in long and clob case (bug #58343). Fixed/added comments.
22425
22426 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22427
22428         * mini.c (mono_jit_runtime_invoke): Follow new convention
22429         of calling the invoke method with an function pointer.
22430
22431 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22432
22433         * ChangeLog: Fix author of memory leak patch.
22434
22435 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22436
22437         * Makefile.am: fix make dist as well...
22438
22439
22440 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22441
22442         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22443         on archs where pointers are 4 bytes long.
22444
22445         * Makefile.am: Added abcremoval.c source file.
22446
22447         * abcremoval.c: Added abcremoval.c.
22448
22449         * abcremoval.h: Added abcremoval.h.
22450
22451         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22452
22453         * inssel.brg: Enabled bounds check removal.
22454
22455         * mini.c: Added support for abcrem optimization.
22456
22457         * mini.h: Added abcrem optimization label.
22458
22459         * driver.c: Added support for abcrem optimization.
22460
22461         * propagated_relations_table.def: Added propagated_relations_table.def.
22462
22463 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22464
22465         * mini.c, cfold.c: fix style.
22466
22467 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22468
22469         * mini.c: handle issue with the low-level implementation of
22470         some long opcodes (bug #54209).
22471
22472 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22473
22474         * basic.cs: test for my new cmov stuff.
22475
22476 2004-05-13      Patrik Torstensson
22477
22478         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22479         opt and added peephole documentation.
22480
22481 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22482
22483         * tramp-ppc.c: rewrote the generic trampoline code.
22484
22485 2004-05-11      Patrik Torstensson
22486
22487         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22488
22489 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22490
22491         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22492
22493         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22494         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22495
22496         * mini.c: Add new icalls for AsAny marshalling.
22497
22498 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22499
22500         * tramp-ppc.c, mini-ppc.c: more cleanups.
22501
22502 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22503
22504         * mini.c: no warnings.
22505
22506 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22507
22508         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22509
22510 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22511
22512         * mini.c: In the thread abort signal handler, if the thread is in the
22513         process of being stoped, don't throw the Abort exception, just stop the
22514         thread.
22515
22516 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22517
22518         * tramp-ppc.c: removed old code.
22519
22520 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22521
22522         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22523         do some simple speed optimizations on ppc.
22524
22525 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22526
22527         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22528         and large offsets in load/store.
22529
22530 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22531
22532         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22533         it causes regressions.
22534
22535 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22536
22537         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22538         support.
22539
22540 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22541
22542         * jit-icalls.c: remove warnings.
22543         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22544         speedups for unsafe code.
22545
22546 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22547
22548         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22549
22550 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22551
22552         * basic-calls.cs: Add new regression test.
22553
22554         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22555         more portable.
22556
22557         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22558
22559         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22560         is no longer used.
22561
22562 2004-05-06      Patrik Torstensson
22563
22564         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22565         long reg allocation in any reg (not only eax:edx) and implemented 
22566         long shl/shr ops in asm instead of helpers.
22567
22568 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22569
22570         * mini-sparc.h: Fix warnings.
22571
22572         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22573         stack.
22574
22575         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22576         separate statement for clarity.
22577
22578         * mini-sparc.c: Update status.
22579
22580 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22581
22582         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22583         here.
22584
22585 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22586
22587         * inssel-ppc.brg: another small pre-release workaround:
22588         we don't do overflow detection for long_sub_un.
22589
22590 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22591
22592         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22593         (also works around a weird ppc bug: 57957).
22594
22595 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22596
22597         * tramp-ppc.c: trampoline fixes.
22598
22599 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22600
22601         * mini-ppc.c: fixed typos.
22602
22603 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22604
22605         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22606         at the top of the stack. Fixed typos. Use a frame registers
22607         for all the methods with exception clauses.
22608
22609 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22610
22611         * exceptions-ppc.c: restore fp registers.
22612
22613 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22614
22615         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22616         order from the stack top (moved the stack room to save the
22617         return value for trace after the param area). Fixed corruption
22618         in restoring registers on unwind.
22619
22620 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22621
22622         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22623
22624 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22625
22626         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22627         and prolog/epilog for methods that use it. Allow
22628         enough param area room for varargs methods. Fix miguel's
22629         breakage in exception handling.
22630
22631 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22632
22633         * Makefile.am: run genmdesc only on current arch.
22634
22635 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22636
22637         * exceptions-x86.c:
22638         * mini-x86.h: fix the build on windows.
22639
22640 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22641
22642         * 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.
22643
22644         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22645
22646         * mini-exceptions.c: New file.
22647         
22648         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22649         Move some parts of the x86 exception handling code to an 
22650         arch-independent file so it can be shared with other ports.
22651
22652 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22653
22654         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22655
22656 2004-04-26  David Waite  <mass@akuma.org>
22657
22658         * driver.c: remove comma from end of enumeration declaration
22659
22660 2004-04-26  Jackson Harper  <jackson@ximian.com>
22661
22662         * driver.c: parse config file before loading first assembly. This
22663         allows the user gac to be enabled/disabled. 
22664         
22665 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22666
22667         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22668         simpler mechanism: we do not care what is encoded initially
22669         (branch absolute or relative), we care about the code and its
22670         target.  I kept the old code for reference for now.
22671
22672         The new code tries first to determine if the jump is anywhere in
22673         the -/+32 absolute meg range, if it succeeds, it encodes using the
22674         absolute branch;  If not, it tried to find something in the
22675         relative range, if not, it uses the handle_thunk code. 
22676
22677 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22678
22679         * exceptions-ppc.c: use the correct ip register on macosx.
22680
22681 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22682
22683         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22684
22685 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22686
22687         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22688         Raise exception on integer divide by zero by hand since the hw
22689         doesn't support it. Handle NaNs in FP compares.
22690
22691 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22692
22693         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22694         code reducing duplication between the platforms and enabled
22695         signal exception handling (on linux for now).
22696
22697 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22698
22699         * exceptions-ppc.c: more macosx support.
22700
22701 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22702
22703         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22704
22705 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22706
22707         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22708
22709 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22710
22711         * iltests.il: more tests.
22712
22713 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22714
22715         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22716         vars as well.
22717
22718 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22719
22720         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22721
22722 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22723
22724         * liveness.c: Mark variables as volatile in all basic blocks reachable
22725         from exception clauses.
22726
22727 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22728
22729         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22730         inlining.
22731
22732 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22733
22734         * iltests.il, basic.cs: more tests for regalloc.
22735
22736 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22737
22738         * iltests.il: Some tests for register allocation modifications
22739         I have locally.
22740
22741 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22742
22743         * exceptions.cs: Add regression test for bug #56782.
22744
22745         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22746         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22747         the beauty of fixing the same thing in 5 different files...
22748
22749 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22750
22751         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22752         methods.
22753
22754 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22755
22756         * mini.c: Add support for STRWLPARRAY marshalling convention.
22757
22758 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22759
22760         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22761         to init the context to setup the regs pointer).
22762
22763 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22764
22765         * exceptions-ppc.c: more exceptions work.
22766
22767 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22768
22769         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22770         not allowed.
22771
22772 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22773
22774         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22775         can use the memory directly.
22776
22777         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22778
22779         add x86_add_membase, x86_sub_membase, x86_mul_membase
22780
22781 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22782
22783         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22784         GENERAL_REGS they were also hardcoded for all PPC ports.
22785
22786         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22787
22788         Remove hard-coded limit for floating point registers, use
22789         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22790
22791         Notice that in MacOS X calling conventions you can fit a lot more
22792         floating point values in registers, so I should update the PInvoke
22793         test to excercise the passing of floating point values on the
22794         stack (currently broken).
22795         
22796 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22797
22798         * tramp-ppc.c (create_trampoline_code): Added
22799         JUMP_TRAMPOLINE_SIZE. 
22800         (ppc_magic_trampoline): Follow the pattern from
22801         x86_magic_trampoline: if code is set to zero, return. 
22802         (create_trampoline_code): Always pass MonoMethod to the jump
22803         trampoline, before it was passing a null.
22804         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22805         share the code with mono_arch_create_jit_trampoline. 
22806
22807         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22808         implemented.
22809         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22810         implemented.  
22811
22812         * cpu-g4.md: Added length for jmp instruction, the worst case
22813         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22814         for save_lmf).
22815
22816 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22817
22818         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22819
22820 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22821
22822         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22823         before each IL instruction.
22824
22825         * mini.c (CEE_BOX): Fix warnings.
22826
22827 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22828
22829         * mini.c: removed a few unused vars and extra whitespace.
22830
22831 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22832
22833         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22834         checks.
22835         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22836         index.
22837         (OP_GETCHR): use the above
22838         (CEE_LDELEMA): use the above.
22839
22840         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22841         version of the generic impl.
22842         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22843         (CEE_LDELEMA): use the above.
22844
22845 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22846
22847         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22848         Fixes #56317.
22849
22850         * iltests.il: Added new regression test for #56317.
22851
22852 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22853
22854         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22855         under NetBSD. Fixes #56450.
22856
22857         * liveness.c (update_gen_kill_set): Fix previous patch.
22858
22859 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22860
22861         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22862
22863 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22864
22865         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22866         ldsfld and ldsflda.
22867
22868         * inssel-sparc.brg: Add more optimizations.
22869
22870         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22871
22872 2004-04-01  Martin Baulig  <martin@ximian.com>
22873
22874         * mini.c (handle_box): New static function; moved the
22875         implementation of CEE_BOX here.
22876         (mono_method_to_ir): Added `constrained_call' variable.
22877         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22878         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22879         mono_method_get_constrained() to get the method.
22880
22881 2004-04-01  Martin Baulig  <martin@ximian.com>
22882
22883         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22884         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22885         (mono_method_to_ir): We don't need these macros anymore since
22886         mono_class_get_full() already takes care of it. 
22887
22888 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22889
22890         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22891         use @function (as doesn't accept #function here) and check the return
22892         value of system and stop if fails.
22893
22894 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22895
22896         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22897
22898 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22899
22900         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22901
22902         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22903
22904         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22905         #56223.
22906
22907         * basic-long.cs: Add test for negation of Int64.MinValue.
22908
22909 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22910
22911         * mini-sparc.c: Update status.
22912
22913         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22914
22915         * exceptions-sparc.c: Fix return value in filters.
22916
22917         * inssel-sparc.brg: Fix register allocation in some rules.
22918
22919 2004-03-28  Martin Baulig  <martin@ximian.com>
22920
22921         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22922         if neccessary.  
22923
22924 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22925
22926         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22927         
22928         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22929         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22930         remove unused conv_u4 opcode.
22931
22932         * mini-x86.c: Remove valgrind workaround since it slows down things
22933         even when mono is not run under valgrind.
22934
22935 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22936
22937         * mini-sparc.c: Update status.
22938
22939         * inssel-sparc.brg: Add some optimizations.
22940
22941         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22942         future delay slot filling. Add support for varargs, tail calls and JMP.
22943
22944         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22945         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22946
22947         * inssel.brg: Fix register allocation in OP_ARGLIST.
22948
22949         * inssel.brg: Fix warnings.
22950
22951 2004-03-25  Martin Baulig  <martin@ximian.com>
22952
22953         * mini.c (inflate_generic_field): Removed.
22954         (mini_get_method): Removed, use mono_get_method_full(),
22955         (mini_get_class): Removed, use mono_class_get_full().
22956         (mono_method_to_ir): Pass our generic context to
22957         mono_field_from_token().        
22958
22959 2004-03-25  Martin Baulig  <martin@ximian.com>
22960
22961         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22962         of a `MonoMethod *'.
22963         (mini_get_method): Take a `MonoGenericContext *' instead
22964         of a `MonoMethod *'.
22965         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22966         a new local variable called `generic_context' which holds the
22967         current `MonoGenericContext *'; use it to lookup things.
22968
22969 2004-03-24  Martin Baulig  <martin@ximian.com>
22970
22971         * mini.c (mini_get_class): New static method; if we're inside a
22972         generic instance, inflate the class if neccessary.
22973         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22974
22975 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22976
22977         * iltests.il: New regression test for #55976.
22978
22979         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22980         #55976.
22981
22982 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22983
22984         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22985         output.
22986
22987 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22988
22989         * liveness.c: Consider SSA stores as well as loads when making vars
22990         volatile.
22991
22992         * exceptions.cs: New regression tests for register allocation.
22993         
22994 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
22995
22996         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
22997         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
22998           domain lock only to protect puntual access to data structures.
22999           Added access lock for sighash, jit_icall_hash_name, 
23000           jit_icall_hash_addr and domain->code_mp.
23001
23002 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23003
23004         * driver.c: Print SIGSEGV handling method.
23005
23006         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23007
23008         * mini.c (setup_jit_tls_data): Handle case when this is called
23009         multiple times for a thread.
23010
23011         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23012         is different from fbxx_un. Fixes #54303. Also use constants instead of
23013         magic numbers in a lot of places.
23014
23015 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23016
23017         * exceptions.cs: Fix cctor test when --regression is used.
23018
23019 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23020
23021         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23022         for Linux/ppc.
23023
23024 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23025
23026         * inssel-ppc.brg: fixed register assignments for some rules.
23027
23028 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23029
23030         * exceptions.cs: Add test for exceptions in static constructors.
23031
23032         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23033         static constructors outside the domain lock. Fixes #55720.
23034
23035 2004-03-17  Martin Baulig  <martin@ximian.com>
23036
23037         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23038         (inflate_generic_field): Take the `MonoMethod *' instead of the
23039         `MonoClass *' and added support for generic method.
23040         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23041         have a `field->parent->gen_params', only inflate the field if it's
23042         an open constructed type.
23043
23044 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23045
23046         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23047         exception object instead of the preconstructed ones.
23048
23049 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23050
23051         * mini.c: reverted changed to sigsegv_signal_handler commited
23052         accidentally in the previous patch.
23053
23054 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23055
23056         * mini.c:
23057         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23058         running --aot with an old assembly.
23059
23060 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23061
23062         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23063         point values.
23064
23065         * mini-sparc.c: Add support for v9 branches with prediction.
23066
23067 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23068
23069         * mini.c (mini_init): #warning is GNUC only
23070
23071         * mini-sparc.h: implement __builtin_frame_address
23072         and __builtin_return_address for Sun C compiler
23073
23074 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23075
23076         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23077
23078 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23079
23080         * basic-calls.cs: Add test for unaligned byref long argument passing.
23081
23082         * mini-ops.h: Add sparcv9 compare and branch instructions.
23083
23084         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23085         v9 instructions if we have a v9 cpu.
23086
23087         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23088         registers for global allocation.
23089
23090         * exceptions-sparc.c: Fixes.
23091         
23092 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23093
23094         * liveness.c (mono_analyze_liveness): Optimized version.
23095
23096         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23097
23098         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23099         sparc work.
23100
23101         * basic-float.cs basic-calls.cs: New regression tests.
23102
23103 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23104
23105         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23106         sigaltstack implementation.
23107
23108         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23109         
23110         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23111         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23112
23113 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23114
23115         * mini.c: Fix warnings.
23116         
23117         * mini.c (mono_resolve_patch_target): New function which contains the
23118         arch independent part of the patching process.
23119
23120         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23121         patching code to a separate function.
23122
23123 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23124
23125         * mini.c (add_signal_handler): ifdef out on Windows
23126
23127 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23128
23129         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23130         cpu-sparc.md: Add exception handling support + other fixes.
23131
23132         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23133         typed GC detection in --version.
23134
23135         * basic.cs exceptions.cs: New regression tests.
23136
23137         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23138         the arch specific code can store data during a compilation.
23139
23140         * mini-ops.h: Add OP_SETFRET.
23141
23142         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23143         function, register a separate icall for each arity, so the icalls can
23144         get a wrapper.
23145         
23146         * mini.c (mono_print_tree): Print negative offsets in a more readable
23147         form.
23148         
23149         * mini.c: Make signal handling work on sparc.
23150         
23151         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23152
23153         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23154
23155         * jit-icalls.c: Emulate truncl by aintl on solaris.
23156
23157         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23158
23159 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23160
23161         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23162
23163 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23164
23165         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23166         a MarshalByRef type, inline a method that performs the check, taking into
23167         account that the object can be a proxy. Also implemented tow new opcodes:
23168         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23169         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23170         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23171
23172 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23173
23174         * mini-ppc.c: if a relative branch displacement is too big
23175         but it points to and area reachable with an absolute branch, 
23176         avoid the thunks.
23177
23178 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23179
23180         * mini.c: optimize small copies in cpblk.
23181
23182 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23183
23184         * basic-calls.cs basic-float.cs: New regression tests.
23185
23186         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23187         negative offsets from %fp. Implement localloc. Fix local register 
23188         allocation. Fix the case when the this argument needs to be saved to
23189         the stack. Implement some missing opcodes.
23190
23191 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23192
23193         * mini.c (mini_method_compile): Reenable global regalloc in methods
23194         with exception handlers.
23195
23196         * linear-scan.c (mono_varlist_sort): Fix warning.
23197
23198         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23199
23200         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23201         regalloc costs.
23202
23203         * liveness.c: Make all variables uses in exception clauses volatile, to
23204         prevent them from being allocated to registers. Fixes #42136.
23205
23206 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23207
23208         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23209         causes regressions.
23210
23211         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23212         argument to mono_arch_regalloc_cost.
23213
23214         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23215         precisely.
23216
23217 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23218
23219         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23220         Make the cost of allocating a variable to a register arch dependent.
23221
23222         * basic-calls.cs: Fix compilation of tests.
23223         
23224         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23225         helper function to cut back on the number of #ifdefs needed.
23226
23227         * mini-ppc.c: Fix compilation.
23228
23229         * basic-calls.cs: New regression tests.
23230
23231         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23232
23233         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23234         of l0 since that is callee saved.
23235
23236         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23237         to virtual calls.
23238
23239         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23240         of delay instruction.
23241
23242         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23243
23244         * mini.h (MonoCallInst): Add 'virtual' flag.
23245
23246         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23247
23248 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23249
23250         * *.cs: New regression tests.
23251
23252         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23253         work.
23254
23255         * mini.c (mono_runtime_install_handlers): Fix build.
23256
23257         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23258         'signal_stack_size' members.
23259
23260         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23261         alternate signal stack.
23262
23263         * exceptions-x86.c: Add stack overflow handling.
23264
23265         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23266         functions to arch independent code.
23267
23268         * mini.c (mono_print_tree): Print more detailed info for load_membase
23269         opcodes.
23270         
23271 2004-02-23  Martin Baulig  <martin@ximian.com>
23272
23273         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23274
23275 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23276
23277         * mini-x86.c: fixed reg allocation for div/rem.
23278
23279 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23280
23281         * driver.c (mono_main): Report some configuratio options on --version.
23282
23283 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23284
23285         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23286         low in the address space. Correctly flush memory in thunks where we
23287         output native code.
23288
23289 2004-02-20  Martin Baulig  <martin@ximian.com>
23290
23291         * mini.c (mini_get_method): New static method; inflate all generic
23292         methods and methods in open generic instances.
23293         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23294         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23295
23296 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23297
23298         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23299
23300         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23301
23302 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23303
23304         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23305
23306         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23307         it compile using Sun's compiler.
23308
23309 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23310
23311         * 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.
23312
23313         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23314
23315 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23316
23317         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23318         code.
23319         * mini-ppc.c: handle calls outside of the allowed range with thunks
23320         allocated using the code manager.
23321         * tramp-ppc.c: use the code manager to hold generated native code.
23322         Fixed the magic trampoline to just patch vtable entries.
23323
23324 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23325
23326         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23327         independent file.
23328
23329 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23330
23331         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23332         PPC.
23333
23334         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23335         if we have a working __thread implementation.
23336
23337         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23338         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23339
23340 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23341
23342         * mini-x86.c: Fix compilation under gcc 2.
23343         
23344 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23345
23346         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23347         contains a call to the wrapped function.
23348
23349         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23350         OP_<CALL>_IMM opcodes, and use them under X86.
23351         
23352         * mini.c (mono_jit_find_compiled_method): Fix warning.
23353
23354         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23355
23356         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23357
23358         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23359         functionality to mini.c.
23360
23361         * mini.c (mono_create_jump_trampoline): New function to create a jump
23362         trampoline. Return a compiled method instead of a trampoline if it
23363         exists. Add a cache for jump trampolines.
23364
23365         * mini.c (mono_jit_find_compiled_method): New function to return a
23366         compiled method if it exists.
23367
23368         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23369         mono_arch_create_jit_trampoline.
23370
23371         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23372         a jump trampoline. Fixes #52092.
23373         
23374 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23375
23376         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23377         which is not up-to-date. Add check_corlib_version () instead.
23378
23379         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23380         have to call it.
23381         
23382         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23383         since newer valgrind versions do not need it.
23384
23385         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23386         compile a method with a given set of optimizations.
23387
23388         * mini.c: Compile icall wrappers on-demand instead of at startup.
23389
23390         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23391         wrapper for an icall.
23392
23393 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23394
23395         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23396         #54063.
23397
23398         * iltests.il: Add test for non-empty stack before switch instruction.
23399
23400 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23401
23402         * mini.c: Add support for new stringbuilder marshalling conventions.
23403
23404         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23405
23406 2004-02-01  Martin Baulig  <martin@ximian.com>
23407
23408         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23409         in `ginst->mtype_argv'.
23410
23411 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23412
23413         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23414         facilitate grepping.
23415
23416 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23417
23418         * mini.c: fixed buglet in initobj generic implementation for references.
23419
23420 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23421
23422         * Makefile.am: make the version script conditional.
23423         * jit-icalls.c: handle missing truncl().
23424
23425 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23426
23427         * exceptions.cs: Add more tests for double->int conversion.
23428
23429         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23430         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23431
23432 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23433
23434         * driver.c: make --verbose --version emit an error
23435         if the loaded corlib doesn't match the runtime version.
23436
23437 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23438
23439         * mini-ppc.h: export ppc_patch().
23440         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23441         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23442         on par or better than on MacOSX.
23443
23444 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23445
23446         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23447         mono_lookup_pinvoke_call.
23448
23449         * mini-x86.c: Under windows, the default pinvoke calling convention is
23450         stdcall. Fixes #52834.
23451
23452         * mini.c (optimize_branches): Add an upper bound to the number of
23453         iterations to prevent infinite loops on strange loops. Fixes #53003.
23454
23455 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23456
23457         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23458         and ISINST. Fixes #52093.
23459
23460         * objects.cs (test_0_vector_array_cast): New tests.
23461         
23462 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23463
23464         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23465         checking in Array.Set ().
23466
23467         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23468         #52590.
23469
23470         * object.cs (test_0_multi_array_cast): New regression test.
23471
23472 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23473
23474         * exceptions-ppc.c: fix build on Linux/PPC.
23475
23476 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23477
23478         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23479         running under valgrind.
23480         (x86_magic_trampoline): Fix build bustage.
23481
23482         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23483         negative values as well. This is needed for the encoding of the line number
23484         info, since sometimes the line numbers are not in increasing order.
23485
23486 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23487
23488         * cpu-pentium.md (localloc): Increase the size of the localloc 
23489         instruction since it is a loop under Win32.
23490
23491         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23492         allocation.
23493
23494 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23495
23496         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23497         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23498         Max Horn (max@quendi.de). Fix file names in comments.
23499
23500 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23501
23502         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23503         avoid stack overflow.
23504         (replace_usage): Avoid uninitialized variable warnings.
23505
23506         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23507         and taking the address of valuetype variables.
23508
23509 2004-01-03  Patrik Torstensson
23510
23511         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23512         for other purposes than FP later on.
23513
23514 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23515
23516         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23517         of tail calls.
23518
23519 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23520
23521         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23522
23523 2003-12-30  Patrik Torstensson <p@rxc.se>
23524
23525         * mini-x86.h: Decreased number of availiable fp regs.
23526         Solves corner cases with FP spilling.
23527
23528 2003-12-23  Patrik Torstensson <p@rxc.se>
23529
23530         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23531         for floating point stack tracking / spilling on x86. 
23532         Fixes bug #49012.
23533         
23534         * basic-float.cs: added float mul overflow test.
23535
23536 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23537
23538         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23539
23540 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23541
23542         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23543         supports for cond branches that overflow the immediate
23544         overflow offset. mcs can compile simple programs.
23545
23546 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23547
23548         * exceptions-ppc.c: exception handling support wip:
23549         finally handlers get run on exception.
23550
23551 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23552
23553         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23554         profiling.
23555
23556 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23557
23558         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23559         initial support for stack walking and unwinding.
23560
23561 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23562
23563         * driver.c (mono_main): Make corlib-out-of-sync message more 
23564         descriptive. Also remove verify_corlib call.
23565
23566 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23567
23568         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23569         not overlap with other call's arguments, too.
23570
23571 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23572
23573         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23574         move to arch-specific code the choice of arch-specific
23575         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23576         * mini.c: ensure emulation calls will not interleave
23577         with other calls.
23578
23579 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23580
23581         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23582         the magic trampoline stack frame is dropped before executing
23583         the new method.
23584
23585 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23586
23587         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23588         and integer to fp conversions. Added support for overflowing
23589         arguments on the stack. Reserve a couple more registers as temps.
23590         Added support for aot compilation (as output still needs to be
23591         tweaked, though).
23592
23593 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23594
23595         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23596         Don't overwrite return register in some corner cases.
23597
23598 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23599
23600         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23601         static constructors when AOT compiling.
23602
23603         * driver.c (mono_main): Call mono_check_corlib_version.
23604
23605 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23606
23607         * cpu-g4.md, basic.cs: fixed div target register.
23608
23609 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23610
23611         * mini-ppc.c, basic.cs: shl_imm fix with test.
23612
23613 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23614
23615         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23616         structures by value. Misc fixes.
23617         * objects.cs: more tests.
23618
23619 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23620
23621         * mini-ppc.c: lconv.ovf.i implemented.
23622
23623 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23624
23625         * mini.c:
23626         (mini_init): don't error out if someone already called g_thread_init.
23627
23628 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23629
23630         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23631         to be any type per the spec. Fix abnormal memory usage when
23632         the same object is repeatedly thrown.
23633
23634 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23635
23636         * mini.c: check for overruns in IL code.
23637
23638 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23639
23640         * TODO: Add/remove some todo entries.
23641
23642 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23643
23644         * driver.c (mono_main): Call mono_verify_corlib.
23645
23646 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23647
23648         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23649         This has been moved to mini.c
23650         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23651         type being casted is marshalbyref it could be a proxy, so instead of
23652         emitting the type check code, emit a call to a runtime method that will
23653         perform the check by calling CanCastTo if needed.
23654
23655 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23656
23657         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23658         methods with large stack frames under Win32.
23659
23660 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23661
23662         * Makefile.am: Distribute regression tests.
23663
23664         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23665         at the end instead of inserting each variable into the sorted list.
23666
23667         * linear-scan.c (mono_varlist_sort): New helper function.
23668         
23669 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23670
23671         * mini.c: ensure arguments and locals are within bounds.
23672
23673 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23674
23675         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23676         related fixes.
23677
23678 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23679
23680         * mini.c (mono_cprop_copy_values): Fix crash.
23681
23682         * aot.c: Set verbosity back to 0.
23683         
23684 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23685
23686         * regalloc.c: complete memory leak fix by Laurent Morichetti
23687         (l_m@pacbell.net).
23688
23689 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23690
23691         * driver.c (main_thread_handler): Revert the previous patch.
23692
23693         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23694         under valgrind.
23695
23696         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23697         memory from the memory pool.
23698
23699         * driver.c (main_thread_handler): Turn on all optimizations when
23700         --aot is used.
23701
23702         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23703         an array for better performance.
23704
23705         * regalloc.c (mono_regstate_assign): Fix memory leak.
23706
23707         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23708         serialize the debug info.
23709
23710         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23711         debug info from the serialized representation.
23712
23713         * aot.c: Save debug info into the generated file and load it when 
23714         loading a method.
23715
23716         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23717
23718 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23719
23720         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23721         More FP-related fixes.
23722
23723 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23724
23725         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23726         and register allocation buglet. Hello world now runs.
23727
23728 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23729
23730         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23731         * tramp-ppc.c: fixed class init trampoline.
23732         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23733
23734 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23735
23736         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23737         mini.c: more ppc changes/fixes.
23738
23739 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23740
23741         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23742         Also optimize the case when the arguments are the same in the caller 
23743         and in the callee.
23744
23745         * iltests.il: Add tests for tail calls with valuetype arguments.
23746
23747 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23748
23749         * mini-ppc.c: fixes for struct return type.
23750
23751 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23752
23753         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23754         mono_spillvar_offset() to arch-specific code.
23755
23756 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23757
23758         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23759
23760 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23761
23762         * exceptions-x86.c: Fix stack space leaks.
23763         
23764         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23765         registers from the lmf if the method has save_lmf set.
23766
23767 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23768
23769         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23770         of icall wrappers into InvokeInDomain, since these are now per-domain.
23771
23772 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23773
23774         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23775         make some opcode emulation and intrinsic ops enabled/disabled 
23776         according to the architecture. More fixes.
23777
23778 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23779
23780         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23781
23782 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23783
23784         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23785         arch-specific handling for 'this' and struct return type to
23786         arch-specific code.
23787
23788 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23789
23790         * aot.c: prevent divide by zero error when reporting (it happened with
23791         Accessibility.dll).
23792
23793 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23794
23795         * mini.h (inst_switch): Remove unused macro.
23796
23797 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23798
23799         * aot.c:
23800         (load_aot_module): free 'info->methods' and 'info' properly. No more
23801         "free(): invalid pointer blah" messages when you have an old aot
23802         compiled assembly.
23803
23804 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23805
23806         * jit-icalls.c, mini.c: Added support for context static fields.
23807
23808 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23809
23810         * mini.c (mono_method_blittable): Methods which set LastError are not 
23811         blittable either. Fixes #51108.
23812         
23813 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23814
23815         * mini.c: flush icache.
23816         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23817
23818 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23819
23820         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23821
23822 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23823
23824         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23825         safe on IA32.
23826
23827         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23828         vararg calls.
23829
23830         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23831
23832 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23833
23834         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23835         instruction when the result is discarded.
23836
23837         * iltests.il (test_0_div_regalloc): New regression test.
23838
23839         * arrays.cs: Fix compilation error.
23840
23841 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23842
23843         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23844         float rules to inssel-x86.brg: sane architectures with FP registers
23845         don't need to implement these rules.
23846
23847 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23848
23849         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23850
23851 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23852
23853         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23854         implementation of 32 bit systems.
23855
23856 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23857
23858         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23859         (Jeroen Zwartepoorte).
23860
23861 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23862
23863         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23864         the caller and the callee matches.
23865         
23866         * mini.c (mono_method_to_ir): Add comment.
23867
23868         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23869         signbit is missing on some platforms.
23870
23871 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23872
23873         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23874
23875         * mini.c (setup_jit_tls_data): Call the new function.
23876         
23877         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23878
23879         * mini-x86.c: Add experimental support for fast access to the lmf
23880         structure under NPTL/Linux 2.6.x.
23881
23882 2003-11-06  Martin Baulig  <martin@ximian.com>
23883
23884         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23885         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23886         the debugger.
23887
23888 2003-11-02  Martin Baulig  <martin@ximian.com>
23889
23890         * mini.c (inflate_generic_field): New static method.
23891         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23892         generic instance and the field is declared in a generic type, call
23893         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23894
23895 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23896
23897         * mini.h mini.c (mono_method_same_domain): New function to return
23898         whenever the caller and the callee are in the same domain.
23899
23900         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23901
23902 2003-10-30  Martin Baulig  <martin@ximian.com>
23903
23904         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23905         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23906         method parameters.
23907         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23908         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23909
23910 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23911
23912         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23913         propagation.
23914
23915         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23916         object here, so it is in the correct appdomain etc.
23917
23918 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23919
23920         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23921         already done.
23922         (mono_method_to_ir): Avoid freeing the type created returned from
23923         mono_type_create_from_typespec, since it is put into an internal cache
23924         by the function. Fixes pointer.exe.
23925
23926         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23927         trampolines for icalls and pinvokes as well. Fixes #33569.
23928
23929 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23930
23931         * mini.c: Update after appdomain changes.
23932
23933         * mini.c (mono_jit_compile_method_inner): Allways compile native
23934         method wrappers in the root domain, since there can only be one
23935         instance of them, whose address is stored in method->info.
23936
23937 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23938
23939         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23940         environment variable. Instead detect automatically whenever running
23941         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23942         valgrind.h.
23943
23944 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23945
23946         * trace.c, trace.h: New files that implement the new trace option
23947         parsing. 
23948
23949         * driver.c: Document new --trace options.
23950
23951         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23952         mini-x86.c: Apply:
23953
23954         -       if (mono_jit_trace_calls)
23955         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23956
23957         * mini.h: prototypes.
23958         
23959 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23960
23961         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23962
23963         * mini.c inssel.brg: Implement typedefbyref opcodes.
23964
23965         * mini.c (mono_jit_compile_method): Remove unused local variable.
23966
23967         * mini.c (mono_jit_compile_method_inner): Ditto.
23968         
23969 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23970
23971         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23972         
23973         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23974
23975 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23976
23977         * mini.c (mono_no_aot): Remove unused global variable.
23978
23979         * mini.c: Thread safety fixes.
23980
23981 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23982
23983         * mini.c (mono_create_class_init_trampoline): Add a lock around
23984         class_init_hash_addr.
23985
23986         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23987         #30073.
23988
23989         * mini.c: Decompose the NEWARR instruction before decomposing its
23990         arguments. Fixes #30073.
23991
23992 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
23993
23994         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
23995         convention.
23996
23997 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
23998
23999         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24000
24001         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24002
24003         * driver.c: Add support for compiling icall wrappers to --compile.
24004
24005 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24006
24007         * inssel.brg: The empty value in class->interface_offsets is -1, not
24008         0. Fixes #49287.
24009
24010 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24011
24012         * objects.cs: New test for 'is' operator on an array of interfaces.
24013
24014 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24015
24016         * tramp-ppc.c: update trampoline code to support jumps
24017         and class initialization.
24018
24019 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24020
24021         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24022
24023         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24024
24025         * inssel.brg (OP_UNBOX): Remove unused rule.
24026
24027         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24028         region instead of one for each method. Fixes #47813.
24029
24030 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24031
24032         * exceptions.cs (test_0_nested_finally): New regression test for
24033         nested exception handlers.
24034
24035         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24036
24037         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24038
24039         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24040         inlining.
24041
24042         * mini.c (mono_method_check_inlining): Make the inlining limit 
24043         configurable by an environment variable.
24044         
24045         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24046
24047         * mini.h: Bump AOT file version.
24048
24049         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24050         token, store the image along with the token, since the token might not 
24051         refer to the same image as the method containing the relocation, 
24052         because of inlining.
24053
24054 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24055
24056         * mini.c (mono_precompile_assemblies): New function to compile
24057         all methods in all loaded assemblies.
24058
24059         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24060
24061         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24062         iassign and fassign to int*, since they can contain large negative
24063         values if the register is spilled. Also added some comments. Fixes
24064         #45817.
24065
24066         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24067         under Win32. Fixes #42964.
24068
24069 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24070
24071         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24072
24073         * aot.c: Added support for AOT compiling methods which contain calls
24074         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24075         handled.
24076         
24077         * driver.c (compile_all_methods): Run the compilation in a thread
24078         managed by mono. Fixes #44023.
24079
24080         * mini.c (mono_codegen): Print full method name in verbose output.
24081
24082         * mini-x86.c (mono_arch_patch_code): Fix warning.
24083         
24084         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24085         jumps, since the method we are jumping to might be domain-specific.
24086
24087         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24088
24089 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24090
24091         * inssel.brg: string chars are unsigned.
24092
24093 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24094
24095         * TODO: New todo item.
24096
24097         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24098         which calls mono_runtime_class_init and patches the call site to
24099         avoid further calls.
24100         (mono_arch_create_class_init_trampoline): New arch specific function 
24101         to create a class init trampoline.
24102         (create_trampoline_code): Generalized so it can create
24103         class init trampolines as well.
24104
24105         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24106         (mono_create_class_init_trampoline): New function to create and cache
24107         class init trampolines.
24108         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24109         vtable given the address of a class init trampoline. Used by the
24110         patching process.
24111         (mono_codegen): Generate a call to a trampoline instead of
24112         mono_runtime_class_init in LDSFLD[A].
24113         (mono_codegen): Add relocations for the new trampoline.
24114         
24115         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24116         MONO_PATCH_INFO_CLASS_INIT.
24117
24118         * mini.h: Bump AOT version number.
24119
24120         * aot.c: Create a copy of the loaded code instead of using the original
24121         so methods which call each other will be close in memory, improving
24122         cache behaviour.
24123         
24124         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24125         patch since it breaks the regression tests.
24126         
24127         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24128         for the register saving instruction sequence since the 
24129         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24130
24131 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24132
24133         * TODO: Fix todo item && remove another.
24134
24135 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24136
24137         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24138         previous checkin.
24139
24140         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24141         function of the module.
24142
24143         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24144         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24145         --no-aot command line option.
24146
24147 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24148
24149         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24150         by Bernie Solomon (bernard@ugsolutions.com).
24151
24152         * inssel.brg: Refactor the interface offset table related code into
24153         its separate functions and add support for the AOT case.
24154
24155 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24156
24157         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24158         
24159         * aot.c: Added mono_aot_verbose variable and made all debugging
24160         output depend on the value of this variable.
24161
24162         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24163         method_label and info_label.
24164
24165         * mini.h mini-x86.c aot.c: Added a new relocation type 
24166         MONO_PATCH_INFO_IID for klass->interface_id.
24167
24168         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24169         the MonoJitInfo structure.
24170
24171         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24172         a non-root appdomain in shared mode.
24173
24174 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24175
24176         * aot.c: make aot loader less verbose. Remove free of unused variable.
24177
24178 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24179
24180         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24181
24182         * .cvsignore: Added *.dll.
24183
24184         * mini.c (mono_print_tree_nl): New function callable while debugging.
24185
24186         * mini.c (mono_print_code): Export this.
24187
24188         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24189         patched code.
24190
24191 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24192
24193         * mini.h (MonoCompile): Added 'jit_info' field.
24194
24195         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24196         the cfg structure, since it is needed by the AOT compiler.
24197
24198         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24199
24200         * aot.c: A major rewrite. Changes include:
24201         - save exception tables for methods which have them.
24202         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24203         to g_module_symbol.
24204         - reworked the file format so it is now much smaller and needs
24205         fewer relocation entries.
24206         
24207 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24208
24209         * aot.c (load_aot_module): Fix build bustage on platforms without
24210         Boehm GC.
24211
24212 2003-09-04  Martin Baulig  <martin@ximian.com>
24213
24214         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24215
24216 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24217
24218         * TODO: Some new optimization ideas.
24219
24220         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24221
24222         * aot.c: Save the optimization flags used to compile the code into
24223         the AOT module.
24224
24225         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24226         support emitting domain specific code.
24227         
24228         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24229         no longer domain neutral. It can be made domain neutral by compiling 
24230         with --optimize=shared.
24231
24232         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24233         between appdomains.
24234
24235         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24236         loading of AOT code.
24237
24238         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24239         
24240         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24241         if there is no domain neutrality information.
24242
24243 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24244
24245         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24246         format version into the generated library.
24247
24248         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24249         callee method into the caller since one of them could be shared.
24250
24251         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24252         system exceptions from AOT code now works.
24253
24254         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24255         method if it is domain neutral and the callee is not.
24256
24257         * graph.c (cfg_emit_one_loop_level): Fix warning.
24258
24259 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24260
24261         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24262         last checkin.
24263
24264 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24265
24266         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24267         is needed  by code which is executed before mono_runtime_init ().
24268         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24269         
24270         * mini.c (mono_thread_abort): Fix warning.
24271         (mono_jit_compile_method): Call static constructor in the AOT case too.
24272
24273         * aot.c (mono_compile_assembly): Fix warning.
24274
24275 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24276
24277         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24278
24279 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24280
24281         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24282
24283         * cpu-pentium.md: Fix the length of call opcodes so they include the
24284         ESP restoring instruction. Fixes #47968.
24285
24286 2003-08-28  Martin Baulig  <martin@ximian.com>
24287
24288         * mini-x86.c (mono_arch_call_opcode): Added support for
24289         MONO_TYPE_GENERICINST.
24290
24291         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24292
24293 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24294
24295         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24296         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24297
24298         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24299         metadata_section.
24300
24301 2003-08-26  Martin Baulig  <martin@ximian.com>
24302
24303         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24304         when reporting an error, set this to the actual error location.
24305         (mono_method_to_ir): Report the correct error location if
24306         get_basic_blocks() returned an error.
24307
24308 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24309
24310         * mini.c (mono_type_blittable): OBJECT is not blittable.
24311         (mono_method_blittable): Methods which have marshalling descriptors
24312         are not blittable either. Fixes #47842.
24313
24314 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24315
24316         * driver.c mini.c: Use an environment variable instead of a global 
24317         variable. Also fix the build.
24318
24319         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24320         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24321         reporting this. 
24322
24323         * driver.c mini.c: Added --with-valgrind option to turn off some
24324         code which prevents mono from running under valgrind.
24325
24326         * mini.c (mono_emit_call_args): Fixed warning.
24327
24328         * mini.c (mono_emulate_opcode): Fixed warning.
24329
24330 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24331
24332         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24333         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24334         regalloc.c, regalloc.h: specify available registers in arch-specific
24335         code and support floats in the regallocator (patch by Laurent Morichetti 
24336         <l_m@pacbell.net>)
24337
24338 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24339
24340         * mini.c: mono_thread_current() can be called only after
24341         mono_runtime_init(): rearrange code to not call it early on.
24342
24343 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24344
24345         * mini.c: allocate jump tables in the code mempools.
24346
24347 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24348
24349         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24350         freed.
24351
24352 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24353
24354         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24355         12 to 16.  This fixes bug #47453.
24356
24357
24358 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24359
24360         * mini-ppc.c: fixed indexed load and unsigned compares.
24361
24362 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24363
24364         * mini.c: reenabled installation of handler for
24365           thread abort signal.
24366
24367 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24368
24369         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24370         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24371         until it's fixed and actually useful.
24372
24373 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24374
24375         * inssel-long32.brg: couple more opcodes implemented.
24376
24377 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24378         
24379         * mini-sparc.c: Even more opcodes implemeted.
24380
24381 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24382
24383         * mini-sparc.c: More opcodes implemented.
24384
24385 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24386
24387         * mini-sparc.c: More opcodes implemented.
24388
24389 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24390
24391         * inssel-sparc.brg: Add some needed rules.  Direct
24392         copy from PPC.
24393         * Makefile.am: Use inssel-sparc.brg
24394         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24395         an assert happy for now.
24396
24397 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24398
24399         * mini-sparc.c: Fixed compile errors.
24400         * exceptions-sparc.c: Same.  We now produce a mono binary 
24401         on sparc-linux.  Yea.
24402
24403 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24404
24405         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24406         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24407         They compile, but do not work.
24408
24409 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24410
24411         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24412         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24413         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24414         (ct@gentoo.org).
24415
24416 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24417
24418         * mini.c: more opcodes implemented and better support for generics.
24419
24420 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24421
24422         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24423         * mini.c, mini.h: first cut at generics support: some new instructions 
24424         added and changed the behaviour of some of the existing ones.
24425
24426 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24427
24428         * mini.c: Removed definition of metadata_shared mutex here.
24429
24430 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24431
24432         * mini-x86.c: make vararg calls work for instance methods.
24433
24434 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24435
24436         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24437         returns the arguments in a separte list, now.
24438
24439 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24440
24441         * aot.c, mini.c: updates for array type representation changes.
24442
24443 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24444
24445         * mini.c: register function to perform jit shutdown.
24446
24447 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24448
24449         * mini.c: use a faster allocator if possible.
24450
24451 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24452
24453         * aot.c: some cleanups and portability changes.
24454
24455 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24456
24457         * mini.c: use faster allocation for CEE_BOX if possible.
24458
24459 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24460
24461         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24462         Moved inlined mempcy code to its own function so that is can be
24463         reused. Added an inline memset function as well (optimized initobj).
24464         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24465
24466 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24467
24468         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24469
24470 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24471
24472         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24473         arch code can setup the cpu for CLR execution, if needed.
24474         We use it on x86 to set the precision of FP operations.
24475
24476 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24477
24478         * mini.c: disable some optimizations if we can guess they'll cost too
24479         much for a given method.
24480
24481 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24482
24483         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24484         
24485 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24486         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24487         info collection support.
24488
24489 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24490
24491         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24492         is now implemented in the profiling API. Get rid of a couple of
24493         unnecessary global variables.
24494
24495 2003-06-15  Nick Drochak <ndrochak@gol.com>
24496
24497         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24498         * cpu-g4.md: add op_bigmul and op_bigmul_un
24499         * cpu_pentium.md: add op_bigmul_un
24500         * inssel-long32.brg: add rule for unsigned bigmul
24501         * mini-ops.h: define OP_BIGMUL_UN
24502         * mini-x86.c: THE BUG: handle (un)signed properly
24503         * mini.c: choose unsigned opcode if needed.
24504         This set of patches fixes bug #44291
24505
24506 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24507
24508         * mini.c (optimize_branches): improved to handle all kinds of
24509         conditional branches.
24510
24511 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24512
24513         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24514         don't raise exceptions.
24515
24516 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24517
24518         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24519         to arch-specific files.
24520
24521 2003-06-09  Martin Baulig  <martin@ximian.com>
24522
24523         * Makefile.am (libs): Added $(LIBGC_LIBS).
24524
24525 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24526
24527         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24528         and OP_ATAN (fixes bug#44293).
24529
24530 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24531
24532         * Makefile.am, mini-x86.c: rename cpu description array to
24533         pentium_desc, since some compilers define the 'pentium' preprocessor
24534         symbol.
24535
24536 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24537
24538         * mini.c (mini_select_instructions): add explicit branch if the
24539         following block is not the false target of a conditional branch -
24540         we need this with any optimization that reorder or remove bblocks
24541
24542         * mini.c (optimize_branches): bug fixes
24543
24544 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24545
24546         * mini.c (mono_method_to_ir): inline static readonly fields
24547
24548         * ssa.c (fold_tree): start cfold support for long (very simple
24549         cases only)
24550
24551         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24552
24553 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24554
24555         * inssel.brg: fixed memcpy (bug #44219).
24556
24557 2003-06-05  Dick Porter  <dick@ximian.com>
24558
24559         * driver.c: Set the glib log levels to not abort if g_message
24560         recurses.
24561
24562         g_set_prgname() has to happen before mini_init() so that the
24563         process handle gets the info.
24564         
24565 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24566
24567         * driver.c: add intrins to the default optimizations to get wider
24568         exposure.
24569
24570 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24571
24572         * mini.h: some large basic blocks will overflow a 16-bit
24573         integers for symbolic registers.
24574
24575 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24576
24577         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24578         (mono_arch_output_basic_block): fix bug 43499 
24579
24580 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24581
24582         * mini.c: kill duplicated definition of mono_debug_format.
24583
24584 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24585
24586         * mini-x86.c, arrays.cs: fixed register allocation bug.
24587
24588 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24589
24590         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24591
24592         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24593
24594 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24595
24596         * mini.c:
24597         (print_method_from_ip): also print source location information if
24598         available.
24599
24600 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24601
24602         * mini.c (mono_find_block_region): bug fix in region code
24603         (mini_method_compile): enable removing unreachable code again, but
24604         only in methods without exception clauses.
24605
24606 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24607
24608         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24609         Implemented arglist opcode and handling of TypedReference type.
24610         Fixed x86 call convention when a structure is returned.
24611         Minimal support for calling static vararg methods.
24612
24613 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24614
24615         * mini.c (mini_method_compile):  always remove unreachable code,
24616         because the code in them may be inconsistent  (access to dead
24617         variables for example).
24618
24619 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24620
24621         * driver.c, debug-mini.c: warning fixes.
24622
24623 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24624
24625         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24626
24627 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24628
24629         * mini.c: thread-static fields are registered in mono_class_vtable(),
24630         so ensure the function is called before checking for them.
24631
24632 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24633
24634         * mini.c (optimize_branches): fix for bug 43586
24635
24636         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24637         overflow (fixes Bug #43639)
24638
24639 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24640
24641         * mini.c, objects.cs: allow the use of stobj for primitive types.
24642
24643 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24644
24645         * mini.c: be less strict about argument checking until we support
24646         running the verifier.
24647
24648 2003-05-27  Nick Drochak <ndrochak@gol.com>
24649
24650         * basic-long.cs: tests for (ulong)int * (ulong)int also
24651         * mini.c: use the same trick for (ulong)int * (ulong)int
24652
24653 2003-05-27  Nick Drochak <ndrochak@gol.com>
24654
24655         * basic-long.cs: add regression test for (long)int * (long)int
24656         * cpu-pentium.md: add op_bigmul specification
24657         * inssel-long32.brg: add OP_BIGMUL rule
24658         * mini-ops.h: add OP_BIGMUL
24659         * mini-x86.c: register allocator: handle case where src1 needs to be
24660         in EAX.
24661         * mini.c: substitute special BIGMUL opcode in the tree for 
24662         (long)int * (long)int
24663
24664 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24665
24666         * jit-icalls.c: call the type ctor on field access if needed.
24667
24668 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24669
24670         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24671         to a method (including results of ldelema, bug#43207).
24672
24673 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24674
24675         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24676         colors to show exception handler blocks.
24677
24678         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24679         (fix for pinvoke7.cs).
24680
24681 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24682
24683         * mini.h, mini.c: ensure correct initialization order for types that
24684         require it. Prepare for lazy compilation of jit icall wrappers.
24685         Provide a name for opcode emulation to reduce unneeded mallocing.
24686
24687 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24688
24689         * mini-x86.c: better register restoring code and profiling
24690         support for tail calls.
24691
24692 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24693
24694         * mini.h, driver.c: prepare for leaf methods optimization.
24695
24696 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24697
24698         * mini.c: get targets of branches before converting a method.
24699
24700 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24701
24702         * mini.c (optimize_branches): added some experimental code (disbaled) 
24703
24704 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24705
24706         * mini.c (optimize_branches): fix branch to branch optimization 
24707
24708         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24709
24710         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24711
24712         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24713
24714         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24715         if needed.
24716
24717 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24718
24719         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24720         enable use of interface variables again.
24721
24722         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24723         I1 to registers because there is no simply way to sign extend 8bit
24724         quantities in caller saved registers on x86.
24725
24726         * inssel-float.brg: set costs of some rules to 2 so
24727         that monobure always select the arch. specific ones if supplied,
24728         regardless of the order we pass the files to monoburg.
24729
24730 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24731
24732         * mini.c, mini-x86.c: since the magic trampoline for jumps
24733         can't patch the code directly, we do it as soon as the
24734         method gets compiled.
24735
24736 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24737
24738         * mini-x86.c, mini.h: introduce a new patching method
24739         to support CEE_JMP and tail calls.
24740         * mini.c: obey tail.call. Don't precompile methods target
24741         of CEE_JMP.
24742         * tramp-x86.c: new trampoline code to handle methods
24743         reached through a jump.
24744
24745 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24746
24747         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24748         bit values to registers
24749
24750 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24751
24752         * mini.c (mono_compile_get_interface_var): share interface
24753         variables if possible.
24754
24755 2003-05-16  Martin Baulig  <martin@ximian.com>
24756
24757         * debug-mini.c (mono_init_debugger): New function to initialize
24758         the debugger.  This is not in the debugger since it needs to
24759         access some of mini's internals.
24760
24761 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24762
24763         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24764
24765 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24766
24767         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24768         for value type handling.
24769
24770 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24771
24772         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24773         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24774
24775 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24776
24777         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24778           the constructor through a proxy.
24779
24780 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24781
24782         * jit-icalls.c, inssel.brg: fixes to array element address
24783         calculations.
24784
24785 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24786
24787         * mini-x86.c (is_regsize_var): allocate pointer to registers
24788
24789 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24790
24791         * driver.c: fixed typo, added intrins to the set of optimizations
24792         tested with regressions.
24793
24794 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24795
24796         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24797         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24798         test case.
24799
24800 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24801
24802         * inssel.brg: remove some common pop instructions without side effects
24803
24804 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24805
24806         * inssel-x86.brg: fixed thinko in int to double conversions.
24807
24808 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24809
24810         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24811
24812 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24813
24814         * inssel-long32.brg: two more missing instructions.
24815
24816 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24817
24818         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24819         if not already set.
24820
24821 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24822
24823         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24824         correctly.
24825
24826         * basic-float.cs: Added tests for negative zero.
24827
24828 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24829
24830         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24831         a couple of missing operations for long casts, with test cases.
24832
24833 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24834
24835         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24836
24837 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24838
24839         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24840         code size estimation.
24841
24842 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24843
24844         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24845         abstract methods (fix bug 42542)
24846
24847         * aot.c: add ability to handle array types
24848         
24849 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24850
24851         * mini.c: Call the _specific versions of the object allocation
24852         functions if possible.
24853
24854 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24855
24856         * driver.c: call setlocale ().
24857
24858 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24859
24860         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24861         windows build.
24862
24863 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24864
24865         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24866
24867         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24868         wrappers (fix bug 42122)
24869
24870 2003-05-04  Martin Baulig  <martin@ximian.com>
24871
24872         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24873
24874         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24875         s/mini_set_defaults/mono_set_defaults/g.
24876
24877 2003-05-04  Martin Baulig  <martin@ximian.com>
24878
24879         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24880
24881 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24882
24883         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24884         (reported by Don Roberts).
24885
24886 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24887
24888         * mini.c: temporarily work around two bugs for this release.
24889
24890 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24891
24892         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24893         that contains -export-dynamic and it makes using the ld script
24894         useless.
24895         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24896
24897 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24898
24899         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24900         specific cpu.
24901
24902 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24903
24904         * mini.c: make sure leave calls all the needed finally blocks,
24905         even when the target jumps out of multiple exception clauses.
24906
24907 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24908
24909         * ldscript, Makefile.am: add linker script to reduce the number of
24910         exported symbols (should also fix the issues with libwine defining
24911         some of the same symbols in io-layer).
24912
24913 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24914
24915         * driver.c (mini_main): Avoid assertion when no file name is given on 
24916         the command line.
24917
24918 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24919
24920         * driver.c: added --version/-V command line option.
24921         Added the inline optimization in the regression tests.
24922
24923 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24924
24925         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24926         to the type in the method signature (fixes bug#42134).
24927
24928 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24929
24930         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24931
24932 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24933
24934         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24935
24936 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24937
24938         * driver.c: fixed bug #42100.
24939
24940 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24941
24942         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24943
24944 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24945
24946         * mini.c: moved most of the code required to do inlining to its own
24947         function so it can be reused. Inline also ctors if appropriate.
24948
24949 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24950
24951         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24952         the runtime can call mono API functions.
24953
24954 2003-04-27  Martin Baulig  <martin@ximian.com>
24955
24956         * debug-mini.c (mono_debug_init_method): Added
24957         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24958         send a notification to the debugger.
24959
24960         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24961         running in the Mono Debugger, just pass the breakpoint number to
24962         mono_debug_init_method().
24963
24964         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24965
24966 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24967
24968         * mini.c: allow some more unsafe compares.
24969
24970 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24971
24972         * mini-x86.c, Makefile.am: make distcheck works (partially from
24973         a patch by Richard Lee <r.h.lee@attbi.com>).
24974         * regset.c, regset.h: removed, they are unused.
24975
24976 2003-04-25  Dick Porter  <dick@ximian.com>
24977
24978         * driver.c: Usage reports the name as 'mono' not 'mini'
24979         * exceptions-x86.c: Build and run on freebsd
24980
24981 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24982
24983         * Makefile.am: install the program with the 'mono' name and
24984         the library as libmono instead of mini and libmini.
24985
24986 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24987
24988         * driver.c: provide the APIs for the embedding interface of the old jit.
24989
24990 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
24991
24992         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
24993
24994 2003-04-23  Martin Baulig  <martin@ximian.com>
24995
24996         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
24997
24998         * driver.c: Added `--debug' command line argument to enable
24999         debugging support.
25000
25001 2003-04-23  Martin Baulig  <martin@ximian.com>
25002
25003         * debug.[ch]: Removed.  The code is now in
25004         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25005
25006         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25007         last six months.
25008
25009 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25010
25011         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25012
25013 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25014
25015         * mini.c:
25016         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25017         mono_domain_finalize.
25018         (mini_method_compile): use mono_method_profile* if the the option is
25019         enabled.
25020
25021 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25022
25023         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25024         methods with their wrapper.
25025
25026         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25027         methods with their wrapper.
25028
25029         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25030         their wrapper.
25031
25032         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25033         wrapper.
25034
25035         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25036         methods.
25037
25038 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25039
25040         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25041
25042 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25043
25044         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25045         of the mempool. This is slightly faster and uses less memory
25046
25047 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25048
25049         * mini.c: avoid O(n) allocation for variables.
25050
25051 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25052
25053         * mini.c: handle items on the stack after inlining methods.
25054
25055 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25056
25057         * mini.c: make the method->opcode optimization dependent
25058         on MONO_OPT_INSTRINS and do it lazily.
25059
25060 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25061
25062         * driver.c: print overall results at the end of regression run.
25063
25064 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25065
25066         * inssel.brg: don't overwrite symbolic registers.
25067
25068 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25069
25070         * inssel-x86.brg: fix conversion from long to float.
25071
25072 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25073
25074         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25075
25076 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25077
25078         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25079
25080         * driver.c: Added --print-vtable option as in the old JIT.
25081
25082 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25083
25084         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25085
25086 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25087
25088         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25089
25090 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25091
25092         * mini.c regalloc.c regalloc.h: Fix memory leak.
25093
25094 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25095
25096         * aot.c (mono_aot_get_method): register all used strings
25097
25098 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25099
25100         * mini.c: always intern strings references with ldstr at compile time.
25101
25102 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25103
25104         * Makefile.am: add BUILT_SOURCES.
25105
25106 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25107
25108         * driver.c: give a better error message when the assembly to execute
25109         doesn't have an entry point.
25110
25111 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25112
25113         * Makefile.am: added hack for automake
25114
25115         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25116         correct sematics.
25117
25118         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25119
25120 22003-04-07  Martin Baulig  <martin@ximian.com>
25121
25122         * Makefile.am: Added Makefile.am.
25123
25124         * debugger-main.c: Removed, this is now in the debugger where it
25125         belongs.
25126
25127         * mini.pc.in: Call this package `mini' for the moment.
25128
25129
25130
25131
25132
25133
25134
25135
25136
25137
25138
25139
25140
25141
25142