2010-05-12 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
2
3         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
4         UCONTEXT_REG_ constants are available on linux as well.
5         (mono_arch_monoctx_to_sigctx): Ditto.
6         (mono_arch_ip_from_context): Ditto.
7
8 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
9
10         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
11         other domains.
12
13 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
14
15         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
16         no longer needed.
17
18 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
19
20         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
21         if a breakpoint cannot be inserted.
22
23 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
24
25         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
26
27 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
28
29         * debugger-agent.c (frame_commands): Return an error instead of asserting if
30         no JIT info is found for the method.
31
32 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
33
34         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
35         in debug printf.
36
37 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
38
39         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
40         a list of arch specific trampolines.
41
42         * aot-compiler.c (emit_trampolines): Use it.
43
44 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
45
46         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
47         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
48         get rid of the _full from their name.
49
50 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
51
52         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
53         get_nullified_class_init_trampoline to remove some code duplication.
54
55 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
56
57         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
58         attach.
59
60 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
61
62         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
63
64         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
65
66         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
67         there is no need to jump through the first plt entry.
68
69         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
70
71         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
72         arch-specific function.
73         (mono_aot_get_plt_info_offset): Ditto.
74
75         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
76         mono_arch_init () to register jit icalls called from full-aot trampolines.
77         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
78         to mini-<ARCH>.c.
79
80         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
81         the specialized throw corlib exception trampoline, use a variant of the normal
82         trampoline along with a new C function which does the call to
83         mono_exception_from_token (), just like on x86.
84
85 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
86
87         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
88         Reorganize the full aot trampoline creation functions, instead of taking a bunch
89         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
90         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
91         creation functions on architectures which have the full-aot ones.
92
93 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
94
95         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
96
97 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
98
99         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
100         explicitly, this seems to be required by some gcc versions at -O2.
101
102         * mini-arm.c: Ditto.
103
104 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
105
106         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
107         has_target delegate invokes.
108
109 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
110
111         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
112         info fields.
113
114         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
115         add patches/unwind info arguments, move to mini.c.
116
117         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
118
119 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
120
121         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
122         command which returns full path names.
123
124 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
125
126         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
127         code_size output variable.
128
129         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
130         mono_get_lmf_addr.
131         
132 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
133
134         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
135         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
136         (mono_arch_cpu_enumerate_simd_versions): Ditto.
137
138 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
139
140         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
141         apple assembler.
142
143 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
144
145         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
146
147 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
148
149         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
150
151 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
152
153         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
154
155 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
156
157         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
158         line number support works with eglib.
159
160 2010-04-27  Miguel de Icaza  <miguel@novell.com>
161
162         * driver.c, mini.c: Since linking with LLVM makes the default Mono
163         dirty an extra 70kb pages on startup we are now going to choose a
164         different strategy: ship mono and mono-llvm binaries, with the
165         second being the one that links with LLVM and defaults to LLVM
166         being enabled.
167
168 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
169
170         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
171         Implement full-aot support on x86.
172
173         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
174         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
175         the first register returned by get_global_int_regs ().
176
177         * cpu-x86.md: Fix the length of insertx_u1_slow.
178
179         * iltests.il.in: Disable tail call tests when running with full-aot.
180
181 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
182
183         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
184
185 2010-04-24  Mark Probst  <mark.probst@gmail.com>
186
187         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
188         in the initializer, because it's non-constant.
189
190 2010-04-23  Miguel de Icaza  <miguel@novell.com>
191
192         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
193         of LLVM on by default.   Used for buildbots and other setups.
194
195 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
196
197         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
198
199 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
200
201         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
202         initonly static fields when using moving GC.
203
204         Contributed under MIT/X11 license.
205
206 2010-04-23  Geoff Norton  <gnorton@novell.com>
207
208         * mini-amd64.h: Darwin x86_64 support.
209
210 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
211
212         * exceptions-arm.c: Remove platform checks in favor of configure checks.
213
214 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
215
216         * exceptions-arm.c: Add Android support for sigcontext structure.
217
218 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
219
220         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
221         wrappers correctly now that their wrapper info is NULL.
222
223 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
224
225         * mini.c (mono_jit_compile_method_inner): Avoid calling
226         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
227
228 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
229
230         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
231         so the latter can be #ifndef DISABLE_JIT-ed.
232
233         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
234
235 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
236
237         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
238
239 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
240
241         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
242         stack.
243
244 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
245
246         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
247         calling mono_class_num_methods (). Fixes #592244.
248
249 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
250
251         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
252
253         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
254
255 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
256
257         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
258         version.
259         * (handle_alloc): Ditto.
260         (mono_method_to_ir): Remove the constrained call restriction added by a previous
261         change, its not needed anymore.
262
263 2010-04-12 Rodrigo Kumpera  <rkumpera@novell.com>
264
265         * mini-posix.c (sigusr1_signal_handler): Fix build on
266         non x86/amd64 systems.
267
268 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
269
270         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
271         calls where the constrained class needs a context. Fixes #595863.
272
273         * iltests.il.in: Add a test.
274
275 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
276
277         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
278         2.6/SVN seems to have broken support for them.
279
280 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
281
282         * mini-llvm.c: Fix support for LLVM 2.6.
283
284 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
285
286         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
287         MonoInternalThread belonging to the thread.
288
289 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
290
291         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
292         unsafe optimization that will remove bound checks.
293
294 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
295
296         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
297         CompareExchange not to be inlined for I8.
298
299         Contributed under MIT/X11 license.
300
301 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
302
303         * array.cs: Add tests for cast between primitive array types.
304
305 2010-04-07 Andreia Gaita  <avidigal@novell.com>
306
307         * Makefile.am: create a convenience library for moon to link with
308
309 2010-04-07 Paolo Molaro <lupus@ximian.com>
310
311         * method-to-ir.c: optimize array accesses from generic interfaces.
312
313 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
314
315         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
316
317 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
318
319         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
320         of marshalbyref classes.
321
322         Fixes #515884.
323
324 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
325
326         * aot-compiler.c (emit_exception_debug_info): Encode try holes
327         information.
328
329         * aot-runtime.c (decode_exception_debug_info): Decode try holes
330         information.
331
332         * mini.h: Increase AOT version.
333
334 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
335
336         * mini-x86.h: Only enable soft debugger when using sigaction or on
337         Windows. Fixes build on Haiku (lacks siginfo_t).
338
339         Code is contributed under MIT/X11 license.
340
341 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
342
343         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
344         BeOS-style signal handlers.
345
346         Code is contributed under MIT/X11 license.
347         
348 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
349
350         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
351
352 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
353
354         * mini-exceptions.c: Fix win32 build.
355
356 2010-04-01  Mark Probst  <mark.probst@gmail.com>
357
358         * mini.c, driver.c: Call mono_gc_base_init() before
359         mono_debug_init().
360
361 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
362
363         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
364         call_method]): Delegate the actual work in security-core-clr.c
365         to ease code sharing.
366
367 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
368
369         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
370         float conv.ovf.un opcodes are encountered, instead of asserting later.
371         Fixes #566296.
372
373 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
374
375         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
376
377         * iltests.il.in: Add a test.
378
379 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
380
381         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
382         large. Fixes #567040.
383
384         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
385
386 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
387
388         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
389         #592711.
390
391 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
392
393         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
394         mono_create_handler_block_trampoline with the proper #ifdef so that it
395         compiles on amd64.
396
397 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
398
399         * mini-exceptions.c: Introduce mono_walk_stack_full, which
400         allows to select if it's new or old context that is passed to 
401         the callback.
402
403         * mini-exceptions.c (mono_handle_exception_internal): Handle the
404         case when executing a guarded handler from the EH machinery.
405
406         * mini-exceptions.c (mono_install_handler_block_guard): New function
407         responsible for checking for handler blocks, installing the guard and
408         clearing abort state.
409
410         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
411         to check for handler blocks and skip interruption logic if one was found.
412
413         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
414         by the handler block guard trampoline. Resumes interruption by raising the
415         pending ThreadAbortException.
416
417         * mini.c (create_jit_info): Calculate the end address of a finally block.
418
419         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
420         of a finally block to a specified address and return the old one.
421
422         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
423         trampoline patches the original return address and calls the trampoline function.
424
425 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
426
427         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
428
429         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
430         does the patching if the callee is in the same domain.
431
432         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
433         of mono_arch_patch_plt_entry ().
434
435 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
436
437         * mini.c (create_jit_info): Fix try block hole length encoding.
438
439 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
440
441         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
442         duplicate information and print offsets instead of absolute addresses.
443
444 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
445
446         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
447         event is sent. Fixes #591733.
448
449 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
450
451         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
452         OpenBSD.
453
454 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
455
456         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
457         thread_to_tls hash table.
458
459         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
460         section. Fixes #591000.
461
462 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
463
464         * Makefile.am (version.h): Check for pure .git directory only,
465         fixes SVN revision when using git without git-svn.
466
467         Contributed under MIT/X11 license.
468
469 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
470
471         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
472
473 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
474
475         * basic-simd.cs: Test for vector x scalar binary operators.
476
477 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
478
479         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
480         intrinsics with expanded scalar arguments.
481
482 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
483
484         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
485         don't have an exception class, so don't decode it. This would crash
486         with filter clauses.
487
488 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
489
490         Make sure that trunk builds with DISABLE_JIT, an update to the
491         PlayStation 3 port.
492         
493         * mini.c (mini_get_shared_method): this code seems to be necessary
494         regardless of whether DISABLE_JIT has been defined.
495
496         (mono_jit_compile_method_inner): it seems that this method is
497         required even in full AOT mode, so ifdef out only the pieces that
498         try to genrate code (the body of code that applies patches to the
499         code).  
500
501         (mini_method_compile): do not compile when using DISABLE_JIT.
502
503         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
504         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
505         compile when DISABLE_JIT is set.
506
507 2010-03-24  Mark Probst  <mark.probst@gmail.com>
508
509         * mini.c (mono_create_tls_get): Only create a TLS operation if the
510         arch really supports it.
511
512 2010-03-24  Mark Probst  <mark.probst@gmail.com>
513
514         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
515
516 2010-03-23  Neale Ferguson <neale@sinenomine.net>
517
518         * exceptions-s390x.c: Add support for
519         mono_arch_get_throw_corlib_exception and fix throw by name.
520
521         * mini-s390x.c: Add IMT support; Fix stack parameter passing
522         logic (especially for varargs); Correct localloc sizing; Add
523         mono_arch_get_this_arg_from_call and
524         mono_arch_get_this_arg_from_call.
525
526         * mini-s390x.h: Add support for facility list extraction;
527         Correct/update MONO_ARCH_xxx settings.
528
529         * mini-s390.c: Minor corrections to instruction output for
530         varargs. No IMT implementation - I think it's time to deprecate
531         s390 and just leave s390x.
532
533         * tramp-s390x.c: Correct creation of trampoline instruction
534
535
536         * cpu-s390x.md: Update some instruction lengths
537
538 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
539
540         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
541         can be hit with partial sharing.
542
543         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
544         in non-shared classes correctly.
545         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
546         Turn on partial sharing.
547
548 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
549
550         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
551         by mistake.
552
553 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
554
555         * method-to-ir.c (mono_method_to_ir): Handle the failure of
556         mono_method_signature ().
557
558         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
559
560         * mini.c (mini_method_compile): Get the signature of cfg->method early with
561         error checking, so later calls do not need error checking.
562
563 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
564
565         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
566
567         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
568
569 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
570
571         * mini-exceptions.c (mono_handle_exception_internal): Don't
572         check try_end for archs different than s390. 
573
574         * mini.c (create_jit_info): Don't crash if the finallt block is the
575         last one.
576
577 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
578
579         * driver.c (mono_main): Don't free global codeman under linux since
580         glic now peeks at code on stack for more archs than just amd64.
581
582 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
583
584         * mini.c, method-to-ir.c: changes to support compressed interface
585         bitmaps.
586
587 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
588
589         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
590         Use sigaction on OpenBSD too.
591
592 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
593
594         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
595
596 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
597
598         * debugger-agent.c: #include sys/select.h for fd_set.
599
600         Code is contributed under MIT/X11 license.
601
602 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
603
604         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
605         (openbsd+amd64 ?).
606
607 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
608
609         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
610         some large methods with lots of exception handlers. Fixes #440924.
611
612 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
613
614         * method-to-ir.c: remove code duplication for interface checks.
615
616 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
617
618         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
619         (assembly_unload): Clear all event requests referencing the to-be unloaded
620         assembly.
621
622
623 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
624
625         * mini.h, mini-exceptions.c: restore the state of the stack
626         guard page permissions.
627
628 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
629
630         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
631         call site patching code, it doesn't appear to be needed.
632
633 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
634
635         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
636         sharing generic methods whose type arguments are a mix of reference and
637         non-reference types. Not yet turned on.
638
639         * mini.c (mini_get_shared_method): New helper function to return
640         the method which will be compiled/registered in the JIT tables when doing
641         generic sharing.
642         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
643         use mini_get_shared_method ().
644
645         * mini.c (mini_method_compile): Register the same method which is compiled when
646         doing generic sharing.
647
648         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
649
650         * generics.cs: Add partial sharing tests.
651
652 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
653
654         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
655                    Add an enum value that or's all possable values together. Add an enum value
656                    that marks the end of the used bit indexes.
657
658         * mini-amd64.c : Make changes to match the changes in mini.h 
659
660         * mini-x86.c : Make changes to match the changes in mini.h
661
662         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
663                    simd_version to support more simd versions. Changed the name of
664                    simd_version to simd_version_flags to make it more intuitive that
665                    it now contains bit flags. Reordered the *_intrinsics arrays to
666                    match the changes above. Changed emit_intrinsics() to use the new
667                    setup mentioned above.
668
669         Code is contributed under MIT/X11 license.
670
671 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
672
673         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
674         remaining archs. Alpha and hppa maintainers, please stand up.
675
676 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
677
678         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
679         is needed even when fail_tramp!=NULL.
680
681 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
682
683         * debugger-agent.c (insert_breakpoint): Write a log message.
684
685 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
686
687         * iltests.il.in: Add a few tests for LEAVE going over multiple
688         finally clauses.
689
690 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
691
692          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
693
694 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
695
696         * mini.h (MonoBasicBlock): Add native_length field.
697         * mini.h (MonoCompile): Add try_block_holes field.
698         * mini.h (MonoInst): Add exception_clause pointer to
699         the data union.
700
701         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
702         * mini.c (mono_cfg_add_try_hole): New function to register possible
703         holes in try blocks.
704         * mini.c (create_jit_info): Fill in the holes information.
705
706         * mini-exceptions.c: Verify for holes when checking if an IP is covered
707         by a try block.
708
709         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
710
711 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
712
713         * jit-icalls.c: adjusted for the array API changes.
714
715 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
716
717         * iltests.il.in: Disable the fconv_to_i test on sparc too.
718
719 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
720
721         * debugger-agent.c: Simplify the way breakpoints are processed by removing
722         the 'pending' flag. This fixes support for appdomains too.
723
724
725 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
726
727         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
728
729 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
730
731         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
732         when using LLVM, LLVM generates it itself when needed.
733
734         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
735
736         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
737         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
738         OP_ANDNPS/OP_ANDNPD.
739
740 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
741
742         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
743         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
744         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
745
746 2010-03-11  Martin Baulig  <martin@ximian.com>
747
748         * debugger-agent.c (type_commands): Add NULL check to
749         `CMD_TYPE_GET_SOURCE_FILES'.
750
751 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
752
753         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
754
755 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
756
757         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
758         #586664.
759
760         * iltests.il.in: Add a test.
761
762 2010-03-05  Martin Baulig  <martin@ximian.com>
763
764         Add support for aborting invocations.
765
766         * debugger-agent.c
767         (InvokeData): Added `InvokeData *last_invoke'.
768         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
769         added a new `invoke' field to keep the `InvokeData *' throughout
770         the invocation.
771         (ErrorCode): Added `ERR_NO_INVOCATION'.
772         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
773         (mono_debugger_agent_handle_exception): Don't report any exception
774         if an abort was requested.
775         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
776         a thread abort if necessary.
777         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
778
779 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
780
781         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
782         so we can release the whole list and not just the first one. Free
783         it in more places as well.
784
785 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
786
787         * method-to-ir.c: Revert r153222 as it doesn't belong here.
788
789 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
790
791         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
792
793 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
794
795         * driver.c: report also other misc build options.
796
797 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
798
799         * method-to-ir.c: Generate better code for the NewObject
800         intrinsic.
801         
802 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
803
804         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
805         is disabled. Fixes #582322.
806
807         * iltests.il.in: Add a test.
808
809 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
810
811         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
812         the handling of obj->synchronization == null and owner != current thread to
813         mono_monitor_exit ().
814
815         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
816
817
818 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
819
820         * mini.c: change the way emulated opcode info is stored and save about
821         4 KB of runtime memory.
822
823 2010-03-04  David S. Miller  <davem@davemloft.net>
824
825        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
826        that don't provide the siginfo in the second signal handler argument
827        are buggy, and this has been fixed for years.
828        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
829        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
830
831 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
832
833         * aot-runtime.c (find_symbol): Fix a leak.
834         (decode_patch): Ditto.
835
836 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
837
838         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
839
840 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
841
842         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
843
844 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
845
846         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
847
848 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
849
850         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
851         to check for errors, it's enough to create the metadata open.
852
853         Fixes #562150
854
855 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
856
857         * trace.c|h:
858         * mini-exceptions.c: Add support for printing stack traces when handling
859         exceptions, and when printing exceptions thrown while tracing also print
860         the exception message.
861
862 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
863
864         * trace.c: We need to parse exclude tokens ('-') before string tokens,
865         since the exclude token is a valid string character.
866
867 2010-03-02  Levi Bard  <levi@unity3d.com>
868
869         * debugger-agent.c: Invalidate thread stacks on domain unload.
870
871 2010-03-02  Mark Probst  <mark.probst@gmail.com>
872
873         * method-to-ir.c: Emit dummy_use for stored reference after write
874         barriers to make sure the object is pinned if the GC interrupts
875         before the write barrier is done.
876
877 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
878
879         * cpu-<ARCH>.md: dummy_use was missing src1:i.
880
881 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
882
883         * debugger-agent.c: Add a log message printing the protocol version.
884
885 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
886
887         * debugger-agent.c: Add a new command to communicate the protocol version used
888         by the client. This could be used to allow newer runtimes to communicate with
889         older clients.
890
891 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
892
893         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
894
895 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
896
897         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
898         type.
899
900 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
901
902         * mini-arm.c: make the arm cpu arch configurable with the
903         MONO_CPU_ARCH env var (for example: "armv4 thumb").
904         Bug #584198.
905
906 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
907
908         * mini.c, mini.h, driver.c: added the --jitmap option to enable
909         support for the perf tool on Linux.
910
911 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
912
913         * method-to-ir.c: make string.InsertenalSetChar() specialization
914         effective.
915
916 2010-03-01  Robert Jordan  <robertj@gmx.net>
917
918         * Makefile.am: fix the non-static build.
919
920 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
921
922         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
923         here.
924
925 2010-02-26  Robert Jordan  <robertj@gmx.net>
926
927         * tasklets.c (continuation_store): Return from an error condition
928         immediately.
929
930 2010-02-26  Martin Baulig  <martin@ximian.com>
931
932         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
933
934         * debug-mini.c
935         (MonoDebuggerThreadInfo): Added `internal_flags'.
936         (MonoDebuggerInternalThreadFlags): New enum.
937         (_mono_debugger_throw_exception): Don't signal the debugger if a
938         type abort was requested.
939         (_mono_debugger_unhandled_exception): Likewise.
940         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
941         (mono_debugger_runtime_invoke): If the debugger requested a thread
942         abort during the invocation, reset it here.
943
944 2010-02-26  Martin Baulig  <martin@ximian.com>
945
946         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
947         instead of `MonoThread *'.
948
949 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
950
951         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
952         code offsets table, as it is mostly sorted.
953
954 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
955
956         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
957         Fixes #582991.
958
959 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
960
961         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
962
963 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
964
965         * Makefile.am: build the new ABI version of the libmono library.
966         * debugger-agent.c, mini.c: fix warnings with the new API.
967         * jit.h: don't depend on glib.h being included.
968
969 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
970
971         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
972
973 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
974
975         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
976         ThreadStatic variables.
977
978 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
979
980         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
981         data is not freed yet. Fixes #582460.
982
983 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
984
985         * debugger-agent.c: Add support for the caught/uncaught flags on exception
986         event requests. Bump protocol minor version.
987
988 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
989
990         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
991
992 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
993
994         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
995         #581950.
996
997         * iltests.il.in: Add a test.
998
999 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1000
1001         * mini.c (inline_method): Check for loader errors.
1002
1003 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1004
1005         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1006         instead of mono_method_get_header as it doesn't decode locals
1007         so the called method can have unresolved dependencies that will only
1008         be satisfied after the current method is JIT'd.
1009
1010         Fixes #550968.
1011
1012 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1013
1014         * basic.cs (test_0_div_opt): Speed this up a bit.
1015
1016 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1017
1018         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1019
1020         * mini.c (mono_jit_create_remoting_trampoline): Call
1021         mono_create_specific_trampoline () instead of
1022         mono_arch_create_specific_trampoline ().
1023
1024         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1025
1026 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1029         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1030
1031         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1032
1033         * mini-amd64.c: Fix DISABLE_JIT support.
1034
1035 2010-02-20  Geoff Norton  <gnorton@novell.com>
1036
1037         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1038
1039 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1040
1041         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1042         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1043         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1044         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1045         handle_exception.
1046
1047 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1048
1049         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1050         edx/ecx too. This is needed to support OP_SEQ_POINT.
1051
1052 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1053
1054         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1055
1056         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1057
1058 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1059
1060         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1061         LLVM+AOT+exceptions, not enabled yet.
1062
1063 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1064
1065         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1066
1067 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1068
1069         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1070         xdebug info for these.
1071
1072         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1073         in a few places.
1074
1075         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1076         not used yet.
1077
1078 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1079
1080         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1081
1082 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1083
1084         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1085         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1086
1087         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1088         for mtouch.
1089
1090 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1091
1092         * debugger-agent.c: handle incomplete reads and EINTR in
1093         recv()/send(). This could have been causing random
1094         disconnections.
1095
1096 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1099         points.
1100
1101         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1102         so they have small offsets. Fixes #566311.
1103
1104 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1105
1106         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1107
1108 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1109
1110         * mini-amd64.c: Remove the special casing of byref in a few places now that
1111         mini_type_get_underlying_type () handles it.
1112
1113         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1114         by returning native int. Fixes #577984.
1115
1116 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1117
1118         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1119         a macro.
1120
1121         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1122         of putting the clause itself.
1123
1124         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1125
1126 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1127
1128         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1129         might be unaligned.
1130
1131 2010-02-10  Geoff Norton  <gnorton@novell.com>
1132
1133         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1134
1135 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1136
1137         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1138         llvm methods too.
1139
1140         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1141         it is not an LLVM generated symbol.
1142
1143         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1144
1145         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1146         implementation in gshared mode because it causes regressions.
1147
1148         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1149
1150         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1151         should be done by the caller.
1152
1153         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1154
1155         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1156
1157         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1158         since mono_jit_info_table_find () doesn't do it anymore.
1159
1160         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1161         instead of mono_jit_info_table_find ().
1162
1163 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1164
1165         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1166
1167         * aot-compiler.c (encode_method_ref): Update after the removal of
1168         mono_gc_get_managed_allocator_type ().
1169
1170         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1171         Fixes #564538.
1172
1173 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1174
1175         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1176         generic params as well.
1177         (handle_isinst): Ditto.
1178
1179         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1180         instead of always calling an icall.
1181
1182         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1183         computing the size of the got.
1184
1185         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1186         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1187         the assembly directive '.set' so it points to the first LLVM emitted method.
1188
1189 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1190
1191         * mini.c (mini_method_verify): Report the method which failed to verify.
1192
1193 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1194
1195         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1196         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1197         runtime MS verifier.
1198
1199 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1200
1201         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1202         #561962.
1203
1204 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1205
1206         * mini-llvm.c: Init the jit module only when first JITting.
1207
1208         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1209
1210         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1211
1212         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1213         replaced with the real got.
1214
1215         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1216
1217         * image-writer.c: Reduce the amount of #ifdefs a bit.
1218
1219         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1220         llvm on darwin/arm.
1221
1222         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1223
1224         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1225         global.
1226
1227 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1228
1229         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1230         (mono_llvm_emit_method): Fix unaligned stores too.
1231
1232         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1233         so async stack walks don't crash.
1234
1235 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1236
1237         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1238         was not patched if the callee needed an rgctx trampoline.
1239
1240 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1241
1242         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1243         vtable address in AOT code.
1244
1245 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1246
1247         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1248         MonoInst's.
1249
1250 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1251
1252         * genmdesc.pl: remove dependency on external cpp.
1253
1254 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1257         using LLVM, its not needed, and abcrem can't handle it.
1258
1259 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1260
1261         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1262         it easier to group instructions and reduce duplication.
1263
1264 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1265
1266         * decompose.c: Move the array/soft float decompose routines here from
1267         method-to-ir.c.
1268
1269         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1270
1271 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1272
1273         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1274         to tell LLVM that the got is constant, not used yet.
1275
1276         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1277
1278 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1279
1280         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1281         managed wrappers.
1282
1283 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1284
1285         * aot-compiler.c (add_wrappers): Commit the hack which generates
1286         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1287         custom attribute.
1288
1289 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1290
1291         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1292         a fault, only used by the LLVM backend.
1293
1294         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1295         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1296
1297         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1298         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1299
1300         * mini-llvm.c: Only generate volatile loads from load instructions which have
1301         the MONO_INST_FAULT flag set.
1302
1303 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1306         64 bit platforms.
1307
1308 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1309
1310         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1311         sequence points. Fixes #571236.
1312
1313 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1314
1315         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1316         end of the appdomain unload process, after assemblies have been unloaded.
1317         Fixes #574842.
1318
1319 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1320
1321         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1322         works.
1323
1324         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1325         Fixes #573988.
1326
1327 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1328
1329         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1330
1331 2010-01-26  Geoff Norton  <gnorton@novell.com>
1332
1333         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1334         with struct marshalability.
1335
1336 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1337
1338         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1339         it supports class names as well.
1340
1341         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1342         needed by the GC map code.
1343
1344         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1345         flags if needed.
1346
1347         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1348         if cfg->init_ref_vars is set.
1349
1350         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1351         cfg->disable_initlocals_op_refs is set.
1352
1353         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1354         using liveness info if cfg->compute_precise_live_ranges is set.
1355
1356         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1357         volatile variables correctly. Add comments about the live ranges. Not enabled
1358         yet.
1359
1360 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1361
1362         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1363         0x2a into them in method prologs.
1364
1365         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1366
1367 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1368
1369         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1370         classes, since llvm is compiled with -fno-rtti.
1371
1372         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1373
1374         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1375         llvm does not require it.
1376
1377         * aot-runtime.c (load_method): Print the full name of the last aot method.
1378
1379 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1380
1381         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1382         thread has not fully started yet.
1383
1384 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1385
1386         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1387
1388 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1389
1390         * driver.c: Do not abort if LLVM is not supported, print a
1391         warning and add the information to the Mono JIT information.
1392
1393 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1394
1395         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1396         using explicit null checks.
1397
1398 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1399
1400         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1401         related code.
1402
1403         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1404         () in one place.
1405         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1406         its no longer needed.
1407
1408         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1409
1410         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1411         define for platforms still using it (s390). Get rid of the
1412         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1413
1414         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1415         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1416
1417         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1418         the caller pushed the arguments.
1419
1420         * mini-llvm.c: Enable throwing exceptions on x86.
1421
1422         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1423         "Thread (nil) may have been prematurely finalized" messages if this is called
1424         on a thread not registered with the runtime.
1425
1426         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1427
1428 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1429
1430         * jit-icalls.c (mono_array_new_3): New jit icall.
1431
1432         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1433
1434         * arrays.cs: Add a test for 3 dimensional arrays.
1435
1436 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1437
1438         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1439         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1440         used.
1441
1442         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1443         thrown on x86.
1444
1445         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1446
1447         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1448
1449         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1450
1451 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1452
1453         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1454           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1455
1456         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1457
1458         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1459
1460         Code is contributed under MIT/X11 license.
1461
1462 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1463
1464         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1465
1466         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1467
1468         * mini.c (mini_method_compile): Set the new flag when running under the
1469         debugger.
1470
1471 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1472
1473         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1474         a ref/noref value + a global pin flag, so parts of stack frames can still be
1475         precisely marked even if they include stuff which needs pinning. Improve logging.
1476         Fix many bugs. Not enabled yet.
1477
1478         * gc-test.cs: Add a few tests.
1479
1480         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1481         the normal -v options. Avoid propagating liveness information through bblocks
1482         which end with a NOT_REACHED opcode.
1483
1484         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1485         after cfg has been freed.
1486
1487 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1488
1489         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1490         if a clause is skipped because it uses the exception object, since it could
1491         have caught the exception.
1492
1493         * exceptions.cs: Add a test.
1494
1495 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1496
1497        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1498
1499         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1500         ICollection<T> wrappers.
1501
1502 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1503
1504         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1505
1506 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1507
1508         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1509         NOMAP32BIT or optimize_for_xen is set.
1510
1511 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1512
1513         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1514         mono_metadata_str_hash () instead.
1515
1516 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1519         sizeof (void*).
1520
1521         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1522
1523 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1524
1525         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1526         flag is set.
1527
1528         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1529         throwing code correctly.
1530
1531         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1532
1533 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1534
1535         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1536         ftnptrs created by us, handle RGCTX_FETCH correctly.
1537         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1538
1539         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1540         ftnptr added by mono_aot_get_named_code ().
1541
1542 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1543
1544         * mini-arm.c: Fix a few LLVM problems.
1545
1546         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1547
1548 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1549
1550         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1551         AOT compiling.
1552
1553 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1554
1555         * jit.h, method-to-ir.c: added ability to set the policy for
1556         inserting breakpoints from the break IL instruction or the
1557         Debugger.Break () API call.
1558
1559 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1560
1561         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1562         assemblies need to be eagerly loaded.
1563
1564 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1565
1566         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1567
1568 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1569
1570         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1571         an argument which matches any exception.
1572
1573 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1576         optimization if the called method is gshared and marshalbyref, since gshared
1577         methods can' have wrappers. Fixes #569390.
1578
1579         * generics.cs: Add a test.
1580
1581 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1582
1583         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1584         callable from gdb.
1585
1586 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1587
1588         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1589
1590 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1591
1592         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1593         since it is not supported in win2000.
1594
1595 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1598         error if loading an assembly fails.
1599         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1600
1601         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1602         if exists.
1603
1604         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1605         compiled methods.
1606
1607         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1608
1609         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1610         is not supported yet.
1611
1612         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1613
1614 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1615
1616         * method-to-ir.c: All types with variant arguments must fallback to the
1617         slow path. This makes cast of variant delegates work.
1618
1619         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1620         argument that is set to TRUE is the returned vtable slot is for a variant
1621         interface. Changed a g_print + g_assert_not_reached to a g_error.
1622
1623         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1624         a similar fashion of generic virtual methods.
1625
1626 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1627
1628         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1629         when cfg is null.
1630
1631         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1632         method using a variance aware function.
1633
1634         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1635
1636 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1637
1638         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1639         do an icall for now.
1640
1641 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1642
1643         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1644         If LLVM decides to set the code model to Large, reset it to Default.
1645
1646 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1647
1648         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1649         stripped binaries as well.
1650
1651 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1652
1653         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1654         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1655
1656         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1657         reg.
1658
1659 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1660
1661         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1662         separate function.
1663
1664         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1665         as the type info to llvm.eh.selector.
1666         (exception_cb): Use the type info for filling out some fields of
1667         MonoJitExceptionInfo like the flags and the exception class. This is needed
1668         because the LLVM produced exception handling clauses might not match the original
1669         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1670
1671         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1672         separate function. Add an extra argument which returns the type infos
1673         corresponding to the exception clauses.
1674
1675         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1676         exception handling clauses.
1677
1678 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1679
1680         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1681         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1682         to fix an AOT case.
1683
1684 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1685
1686         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1687         internal assembly.
1688
1689 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1690
1691         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1692         llvm code.
1693
1694 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1695
1696         * mini.c (mini_method_compile): Verify the method before calling
1697         mono_compile_create_vars as this might crash since it uses method
1698         information.
1699
1700         Fixes #560196.
1701
1702 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1703
1704         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1705         one case if AOTing, since the class might not be a concrete class.
1706
1707 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1708
1709         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1710         functions which are now defined in mempool-internals.h.
1711
1712         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1713
1714         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1715
1716 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1717
1718         * mini.c:
1719         * method-to.ir.c:
1720         * mini-*.c: Properly handle generic enums.
1721
1722         Fixes #566294
1723
1724 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1725
1726         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1727         in a few more places.
1728
1729 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1730
1731         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1732         nullable parameters. Fixes #567351.
1733
1734 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1735
1736         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1737
1738 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1741         mono_get_generic_context_from_code () call.
1742
1743         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1744
1745 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1746
1747         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1748         needed.
1749
1750 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1751
1752         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1753         mono_method_get_signature returns NULL. Fix #567084
1754
1755 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1756
1757         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1758         instead of once for each module.
1759
1760 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1761
1762         * debugger-agent.c (ss_start): Implement step over for the last sequence
1763         point in methods.
1764
1765         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1766         have the STEP_LOC flag set.
1767
1768         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1769         fails. Fixes #566689.
1770
1771 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1772
1773         * mini.c (mono_add_seq_point): New helper function.
1774         (mono_save_seq_point_info): New function to save sequence point info, extracted
1775         from mini_method_compile ().
1776
1777         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1778
1779         * mini.h (MonoSeqPointInfo): New structure containing information about
1780         the sequence points of a JITted method.
1781         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1782         'bucket' field.
1783
1784         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1785         point information is stored, use a MonoSeqPointInfo structure instead of a
1786         GPtrArray. For each seq point, compute a list of successor seq points.
1787
1788         * debugger-agent.c: Use the successor list to implement step-over more
1789         efficiently: instead of single stepping until a different line/IL offset is
1790         reached, place breakpoints into all successor seq points.
1791
1792         * mini.h: Bump AOT file format version.
1793
1794 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1795
1796         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1797
1798         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1799
1800 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1801
1802         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1803         build.
1804
1805 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1806
1807         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1808         alloca as g_malloc is not signal safe.
1809
1810 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1811
1812         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1813         VALGRIND_DISCARD_TRANSLATIONS.
1814
1815         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1816         checks, they are no longer needed.
1817
1818         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1819         a function into a sigctx which can handle function pointers.
1820
1821         * mini-ppc.c: Implement soft debugger support on ppc64.
1822
1823         * mini-ppc.c: Implement soft debugger support.
1824
1825 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1826
1827         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1828
1829 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1830
1831         * mini.c (mono_get_runtime_build_info): include Mono version in
1832         the returned value.
1833
1834         * driver.c (mono_main): VERSION is now included in the string
1835         returned from mono_get_runtime_build_info()
1836
1837 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1838
1839         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1840         signatures. Fixes #565143.
1841
1842         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1843
1844 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1845
1846         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1847
1848 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1849
1850         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1851         making max stack 10x smaller.
1852
1853 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1854
1855         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1856
1857 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1858
1859         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1860
1861 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1862
1863         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1864         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1865
1866         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1867
1868         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1869
1870         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1871
1872         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1873         the compilation.
1874
1875 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1876
1877         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1878         raise an invalid program exception.   
1879
1880         For other opcodes that we might not handle use a g_warning and
1881         raise the exception.   Beats termination.
1882
1883         Fixes #561724
1884
1885 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1886
1887         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1888
1889         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1890         by merging the LLVM and !MAP_32BIT cases.
1891
1892 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1893
1894         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1895         sigctx being passed in, as we have no CONTEXT available in the APC.
1896
1897         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1898         for now.
1899
1900         Code contributed under MIT/X11 license.
1901
1902 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1903
1904         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1905         in the LLVM backend on AMD64.
1906
1907         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1908         FDE.
1909
1910         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1911
1912         * mini-llvm.c: Export mono_personality for AOT.
1913
1914         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1915
1916         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1917         implicit exception can occur.
1918
1919         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1920         OP_IMPLICIT_EXCEPTION instruction.
1921
1922         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1923
1924         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1925
1926         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1927         inside a protected block.
1928
1929         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1930         trampolines doesn't include the argument.
1931
1932         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1933         trampolines on amd64.
1934
1935         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1936         of RDI.
1937
1938         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1939         disabled for methods with clauses.
1940
1941         * mini-llvm.c: Enable support for catch clauses.
1942
1943         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1944         end of an LLVM compiled finally clause.
1945         (mono_handle_exception_internal): Save the exception handling state in TLS
1946         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1947         resume unwinding from that point.
1948
1949         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1950         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1951         to obtain the addresses of the exception handling regions.
1952
1953         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1954         finally clauses are supported.
1955
1956         * mini.c (mini_method_compile): Add support for LLVM code with exception
1957         handlers.
1958
1959 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1960
1961         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1962         proper size.
1963
1964 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1965
1966         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1967         as a primitive type.
1968
1969 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1970
1971         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1972         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1973         #564000.
1974
1975 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1976
1977         * method-to-ir.c (mini_redirect_call): do not redirect the
1978         InternalAllocateStr internal call if string profiling is enabled.
1979
1980 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1981
1982         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1983         generic methods.
1984
1985         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
1986         unwind.h header file.
1987
1988         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
1989         newer valgrind versions seems to handle this fine.
1990
1991 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
1992
1993         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
1994         on the debugger thread.
1995
1996 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
1997
1998         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
1999
2000         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2001
2002         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2003
2004         * cpu-<ARCH>.md: Make call_handler clob:c.
2005
2006         * mini.c: Reenable SSA for methods with clauses.
2007
2008         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2009         as it causes failures on x86.
2010
2011 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2012
2013         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2014         returns NULL (e.g. a bad assembly).
2015
2016 2009-12-08  Geoff Norton  <gnorton@novell.com>
2017
2018         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2019         stepping out into native code.  There were issues with nested invokes
2020         like .cctors.
2021
2022 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2023
2024         * mini.c (mini_method_compile): Do the disable_llvm checks early
2025         and avoid the LLVM compile pass if the checks fail.
2026
2027         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2028
2029         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2030         LLVM optimizations don't try to remove them.
2031
2032         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2033         different file so the original remains.
2034
2035 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2036
2037         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2038
2039         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2040
2041         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2042         support for non-inline unwind descriptors.
2043
2044 2009-12-07  Geoff Norton  <gnorton@novell.com>
2045
2046         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2047         the interrupt_count slightly differently.  Native threads were never
2048         marked as resumed.
2049
2050 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2051
2052         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2053         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2054         yet generate this info.
2055
2056         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2057
2058         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2059         client can distinguish between intptrs and longs.
2060
2061 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2062
2063         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2064         blob.
2065
2066         * aot-runtime.c (load_function): Update after the change above.
2067
2068         * mini.h: Bump AOT file format version.
2069
2070         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2071         if the delegate class is dynamic.
2072
2073         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2074         in gshared code too using the new rgctx info type
2075         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2076
2077 2009-12-04  Geoff Norton  <gnorton@novell.com>
2078
2079         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2080         we need to track the original suspend count so the thread properly
2081         wakes up in resume_thread.
2082
2083 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2084
2085         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2086         code.
2087
2088         * generics.cs: Add a test.
2089
2090         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2091         is 0. Simplify a lot of code using this.
2092
2093         * mini-trampolines.c (mono_delegate_trampoline): Call
2094         mono_create_static_rgctx_trampoline () before saving the final address in
2095         delegate->method_code, to avoid calling it each time a delegate is first called.
2096
2097         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2098         which need static rgctx trampolines.
2099
2100         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2101         keyed on the method+addr pair, since addr could be either the method addr or
2102         an unbox trampoline in the AOT case. Fixes #560246.
2103
2104 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2105
2106         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2107         place it was called before too.
2108
2109 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2110
2111         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2112         if no security manager is present, to speed up the AOT case. Call
2113         mono_class_vtable () full with raise_on_error == TRUE instead.
2114
2115 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2116
2117         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2118         the local optimization passes can take its result into account. Fixes
2119         #559876.
2120
2121         * exceptions.cs: Add a test.
2122
2123 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2124
2125         This patch is contributed under the terms of the MIT/X11 license
2126
2127         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2128
2129 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2130
2131         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2132
2133         * debugger-agent.c: Rework the handling of stack traces of running threads to
2134         avoid crashes if compute_frames () tries to walk the stack of running thread.
2135
2136         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2137
2138         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2139
2140         * mini.h (StackFrameInfo): Add an 'lmf' field.
2141
2142 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2143
2144         * debugger-agent.c (suspend_current): Always set really_suspended.
2145
2146         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2147
2148         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2149
2150 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2151
2152         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2153         really suspended.
2154
2155 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2156
2157         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2158
2159 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2160
2161         * mini-trampolines.c: Fix MSVC build.
2162
2163 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2164
2165         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2166
2167 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2168
2169         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2170         the instruction following an OP_FCOMPARE is optimized away.
2171
2172 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2173
2174         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2175         emit_autoreg () into this arch-specific function.
2176
2177         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2178         code, it is no longer needed.
2179
2180         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2181
2182         * mini.h: Bump AOT file format version.
2183
2184         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2185         using the sorted_code_offsets array, instead of reading it from the
2186         exception debug info.
2187         (load_method): Call mono_aot_find_jit_info instead of
2188         decode_exception_debug_info ().
2189
2190         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2191         LLVM compiled as a flag.
2192
2193 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2194
2195         * debugger-agent.c (resume_thread): Fix a warning.
2196
2197         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2198         generated.
2199
2200 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2201
2202         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2203         contents to MonoAotFileInfo.
2204
2205 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2206
2207         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2208         Put all binary data into a giant blob, similarly to the way .net assemblies
2209         store binary data. Emit offset tables in a compact form to reduce their size.
2210
2211         * mini.h: Bump AOT file format version.
2212
2213         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2214         places.
2215
2216         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2217         avoid linear searches at runtime.
2218
2219         * aot-runtime.c (find_symbol): Update this to use the hash.
2220
2221         * mini.h: Bump AOT file format version.
2222
2223 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2224
2225         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2226         container.
2227
2228         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2229         too.
2230
2231         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2232         the distribution of got slot types.
2233
2234         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2235
2236         * method-to-ir.c: Add support for generating explicit null checks.
2237
2238 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2239
2240         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2241         on a random thread if possible.
2242
2243         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2244         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2245         correctly.
2246
2247         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2248         regs. Pass the real size of the regs array to mono_unwind_frame ().
2249
2250         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2251         ones instead.
2252
2253 2009-11-24  Geoff Norton  <gnorton@novell.com>
2254
2255         * mini-darwin.c: Work around apple bug rdar://7209349  See
2256         http://openradar.appspot.com/7209349 for details.  Synopsis,
2257         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2258         never been initialized before.
2259
2260 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2261
2262         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2263
2264         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2265
2266 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2267
2268         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2269         OP_SHL_IMM is not 32 bit.
2270
2271 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2272
2273         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2274
2275 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2276
2277         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2278         encountered.
2279
2280         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2281         > 0 since some threads can resume if their resume_count is > 0.
2282         (invoke_method): Avoid reading freed memory.
2283
2284         * debugger-agent.c (process_suspend): Extract the suspend code from
2285         process_single_step_inner () to a separate function. Rework the code to prevent
2286         races between this function and thread interrupts.
2287
2288         * debugger-agent.c (suspend_current): Check the resume_count field instead
2289         of resume_one so suspends+resumes during single threaded invokes work
2290         correctly.
2291
2292 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2293
2294         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2295         to make the generated code smaller.
2296
2297         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2298         sequence generated by recent LLVM versions.
2299
2300         * mini-llvm.c: Add support for a few simple cases which weren't supported
2301         before.
2302
2303         * mini-trampolines.c (mono_magic_trampoline): Don't call
2304         mono_arch_get_vcall_slot () when llvm is enabled.
2305
2306         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2307
2308         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2309         into a new function called common_call_trampoline () which is used by the
2310         llvm vcall trampoline as well.
2311
2312         * debugger-agent.c: Implement single threaded invokes.
2313
2314         * debugger-agent.c: Revert change which broke the agent on linux.
2315
2316         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2317         #557606.
2318
2319         * generics.cs: Add a test.
2320
2321 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2322
2323         * debugger-agent.c: Fix the cygwin build.
2324
2325 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2326
2327         * cprop.c: Remove this unused file.
2328
2329 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2330
2331         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2332         #557262.
2333
2334         * basic.cs: Add a test.
2335
2336 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2337
2338         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2339         in one more place.
2340
2341 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2342
2343         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2344         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2345         it. Use this flag to control llvm related code paths instead of #ifdef
2346         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2347         AOT code.
2348
2349         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2350
2351         * mini.h: Bump AOT file format version.
2352
2353         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2354         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2355
2356         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2357         was used as an assembly filter.
2358
2359 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2360
2361         * unwind.c: Fix support for ppc.
2362
2363         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2364         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2365
2366 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2367
2368         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2369         port.
2370         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2371         added by the ps3 changes.
2372
2373 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * mini-gc.c: Resurrect this, so at least it compiles.
2376
2377         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2378
2379 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2380
2381         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2382         create_event_list () so assembly filters can be used.
2383
2384         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2385         from the LMF.
2386
2387 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2390         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2391         is disabled.
2392
2393         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2394         classes for char/bool too.
2395
2396         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2397
2398         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2399         used.
2400
2401         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2402         Fix warnings.
2403
2404 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2405
2406         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2407         
2408         Code contributed under MIT/X11 license.
2409
2410 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2411
2412         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2413         threads in native code work.
2414
2415         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2416         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2417         version.
2418
2419 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2420
2421         * debugger-agent.c: Implementation for Windows platform.
2422
2423         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2424         primitives. Use SEH to implement breakpoints and single stepping.
2425
2426         * mini-x86.h: Enable soft debugger on Windows.
2427
2428         Code contributed under MIT/X11 license.
2429
2430 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2431
2432         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2433         under XEN. Fixes #522894.
2434
2435         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2436
2437         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2438         interface calls in LLVM AOT code.
2439
2440         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2441         is found.
2442
2443         * mini-llvm.c: Add support for OP_VPHI.
2444
2445         * objects.cs: Add a test.
2446
2447 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2448
2449         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2450         this is called on the debugger thread.
2451
2452 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2453
2454         * mini-llvm.c: Add soft-float support.
2455
2456         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2457         FCALL which returns an R4.
2458
2459         * driver.c (mono_main): Add a missing '\n'.
2460
2461         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2462         platforms which doesn't support the LLVM IMT trampoline.
2463
2464 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2465
2466         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2467
2468         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2469
2470         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2471         virtual calls.
2472
2473         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2474
2475 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2476
2477         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2478         Instead of emitting a method_order table, sort the contents of the code_offsets
2479         table and do a binary search in the sorted table. The previous approach doesn't
2480         work with LLVM which emits methods in a arbitrary order.
2481
2482         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2483         in the .eh_frame section in ELF files.
2484
2485         * mini.h: Bump corlib file format version.
2486
2487         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2488
2489         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2490         LDMIA->LDM macro name change.
2491
2492 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2493
2494         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2495         x86.
2496
2497         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2498         SVN.
2499
2500         * aot-compiler.c: Ditto.
2501
2502         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2503         &align to mini_type_stack_size_full ().
2504
2505         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2506
2507         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2508
2509 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2510
2511         * mini-arm.c: Compute the stack space used by arguments using
2512         mini_type_stack_size_full ().
2513
2514 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2515
2516         * optflags-def.h: Remove dead TREEPROP optimization.
2517
2518 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2519
2520         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2521
2522         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2523
2524 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2525
2526         * driver.c (mono_jit_parse_options): New public API function to parse options
2527         as done by the runtime executable.
2528
2529         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2530         when handling named arguments.
2531
2532 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2533
2534         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2535         for passing small vtypes in registers, make the CallInfo structures more
2536         similar to the code on the other platforms.
2537
2538         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2539         the code in the prolog requires it.
2540
2541 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2542
2543         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2544         (koush@koushikdutta.com).
2545
2546         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2547         where the thunk memory should be allocated from. Fixes appdomain unloading
2548         on arm.
2549
2550 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2551
2552         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2553         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2554
2555 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2556
2557         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2558         AOT, as it is not implemented yet.
2559
2560         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2561
2562 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2563
2564         * debugger-agent.c: Fix windows build.
2565
2566 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2567
2568         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2569         after the client connects/disconnects.
2570
2571         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2572         when an exception of a given type is thrown.
2573
2574         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2575         only on an uncaught exception.
2576
2577         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2578
2579         * debugger-agent.c: Add a 'launch' option.
2580
2581 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2582
2583         * debugger-agent.c: Add a 'timeout' option.
2584
2585 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2586
2587         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2588         the JDWP agent.
2589
2590 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2591
2592         * debugger-agent.c (set_breakpoint): Emit a log message.
2593
2594 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2595
2596         * mini-arm.c: Fix the arm build.
2597
2598 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2599
2600         * aot-compiler.c: don't leak the value returned from
2601         mono_type_full_name().
2602
2603 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2604
2605         * debugger-agent.c: defer including mono-mutex.h until we know the
2606         agent is supported.
2607
2608 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2609
2610         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2611         of pthreads directly.
2612
2613         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2614         exception handlers. Pass info argument.
2615
2616         * mini.h: Adjust signatures of soft debugger functions to pass void*
2617         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2618
2619         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2620         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2621         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2622         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2623
2624         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2625
2626         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2627         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2628         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2629         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2630
2631         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2632
2633         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2634
2635         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2636
2637         * mono-semaphore.h: Skeleton implementation for Windows.
2638
2639         Code contributed under MIT/X11 license.
2640
2641 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2642
2643         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2644
2645         Code contributed under MIT/X11 license.
2646
2647 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2648
2649         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2650
2651         Code contributed under MIT/X11 license.
2652
2653 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2654
2655         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2656         debug info to 100 because 10 still slows down gdb too much.
2657
2658         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2659         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2660         them in the wrappers.
2661
2662 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2663
2664         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2665
2666         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2667
2668         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2669         function mono_aot_get_array_helper_from_wrapper ().
2670
2671         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2672         array helper methods.
2673
2674 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2675
2676         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2677         the value was loaded from memory.
2678
2679         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2680         the value was loader from there.
2681
2682         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2683         without constant swizzle.
2684
2685 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2686
2687         * mini-amd64.c: Put soft debugger functions behind a
2688         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2689
2690         * mini-amd64.h: disable the soft debugger in windows.
2691
2692         Code contributed under MIT/X11 license.
2693
2694 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2695
2696         * mini-x86.c: Put soft debugger functions behind a
2697         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2698
2699         Code contributed under MIT/X11 license.
2700
2701 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2702
2703         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2704         to mono_arch_find_jit_info_ext.
2705
2706         Code contributed under MIT/X11 license.
2707
2708 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2709
2710         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2711
2712         * debugger-agent.c: Add support for filtering events by assemblies.
2713
2714         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2715         the agent is not enabled.
2716
2717 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2718
2719         * exceptions-x86.c: hopefully last change to fix the windows build.
2720         This one courtesy of Jonathan Chambers.
2721
2722 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2723
2724         * debugger-agent.c: remove unused function.
2725
2726 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2727
2728         * debugger-agent.c: add #ifdefs for a few header files.
2729         * mini-x86.h: disable the soft debugger in windows.
2730         Step 1 of 2 to make this compile on windows with gcc.
2731
2732 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2733
2734         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2735         as it breaks the build.
2736
2737 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2738
2739         Merge the soft debugger branch.
2740
2741         * debugger-agent.h debugger-agent.c: New files containing the soft
2742         mode debugger module.
2743
2744         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2745         at the appropriate locations.
2746
2747         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2748         opcode.
2749
2750         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2751         enable/disable single stepping.
2752
2753         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2754         which returns all information in a StackFrameInfo structure, and can handle the
2755         LMF frames added by the debugger.
2756
2757         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2758         about an LMF frame.
2759
2760         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2761         walker function which works on a specific thread and passes a StackFrameInfo
2762         structure to its callback.
2763
2764         * mini.c (mini_init): Initialize the debugger agent.
2765
2766         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2767
2768         * mini-ops.h: Add OP_SEQ_POINT opcode.
2769
2770         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2771         arguments to the debugger agent.
2772
2773 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2774
2775         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2776         speed things up.
2777
2778         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2779
2780         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2781
2782         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2783
2784         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2785         if needed.
2786         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2787         sets the IMT argument and makes a virtual call.
2788
2789         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2790
2791 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2792
2793         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2794         the windows build.
2795
2796 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2797
2798         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2799         runtime. Fixes #551228.
2800
2801 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2802
2803         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2804
2805         * basic.cs: Add a test.
2806
2807         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2808         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2809         CONSTRAINED. Fixes #550964.
2810
2811         * generics.cs: Add a test.
2812
2813 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2814
2815         * mini-posix.c (add_signal_handler): Use
2816         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2817
2818 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2819
2820         Contributed under the terms of the MIT/X11 license by
2821         Jerry Maine <crashfourit@gail.com>.
2822
2823         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2824         sse4a for simd intrinsics.
2825
2826         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2827         sse4a for simd intrinsics.
2828
2829 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2830
2831         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2832         instead of inst_p1 which is not the same on ILP32 platforms.
2833
2834 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2835
2836         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2837         not the mscorlib one before calling mono_get_lmf_addr.
2838
2839         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2840         of the ip to the LMF.
2841
2842         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2843         immediate in the op->op_imm optimization.
2844
2845         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2846         understand. VTypes now work, but are not abi compliant, as they are
2847         split into 4 byte parts instead of 8.
2848         (emit_memcpy): Fix the unrolled case to work on the PS3.
2849
2850         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2851
2852         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2853         the default when static linking.
2854
2855         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2856
2857         * aot-compiler.c: Add an autoreg option to automatically register
2858         statically linked aot modules using ELF .ctors.
2859
2860         * genmdesc.pl: Add __ppc64__ to allowed defines.
2861
2862 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2863
2864         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2865         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2866
2867 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2868
2869         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2870
2871 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2872
2873         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2874         which will contain the domain where the method was found.
2875
2876         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2877         mini_jit_info_table_find ().
2878
2879         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2880
2881         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2882
2883 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2884
2885         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2886         set, its not supported yet.
2887
2888 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2889
2890         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2891         iface wrapper is not found.
2892         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2893
2894 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2895
2896         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2897         which have a different name.
2898
2899         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2900         wrappers and Array.GetGenericValueImpl ().
2901
2902         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2903         because of the change above.
2904
2905         * generics.cs: Add a test for full aot + generic array ifaces.
2906
2907 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2908
2909         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2910         that hides the previous one.
2911
2912 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2913
2914         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2915         marshalled. Fixes #541623.
2916
2917 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2918
2919         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2920
2921 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2922
2923         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2924
2925 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2926
2927         * mini-posix.c (sigprof_signal_handler):
2928         Implemented support for building stat call chans in different ways.
2929
2930 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2931
2932         * mini-exceptions.c (mono_find_jit_info):
2933         Also check that a jit info has been found (fixes a profiler crash).
2934
2935 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2936
2937         * mini.c (mono_codegen):
2938         Call mono_profiler_code_buffer_new with correct code address.
2939
2940 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2941
2942         * driver.c (mono_main): Change the date in the copyright.
2943
2944 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2945
2946         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2947         allocator in shared generic code for open classes, because we
2948         can't get those classes' vtables.  We need to make managed
2949         allocators not depend on the vtable at compile-time to solve this.
2950
2951 2009-10-13  Martin Baulig  <martin@ximian.com>
2952
2953         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2954         `const guint8 *trampoline' argument; send both the old and the new
2955         notification.
2956
2957 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2958
2959         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2960         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2961         (can_marshal_struct): Skip structures with auto layout.
2962
2963         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2964
2965 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2966
2967         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2968         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2969         a variable to hold the stack slot used by the int<->float conversion opcodes.
2970
2971         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2972
2973 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2974
2975         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2976         when using full-aot.
2977
2978 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2979
2980         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2981         each instance of Comparer<T>.
2982
2983         * generics.cs: Add a new test.
2984
2985 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
2986
2987         * driver.c (parse_debug_options): Add a 'gdb' option.
2988
2989         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
2990
2991         * image-writer.c: Add support for emitting the image into a memory buffer.
2992
2993         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
2994
2995         * aot-compiler.c: Add support for registering debug info with GDB using the
2996         new JIT debugging interface in GDB 7.0. It can be turned on by setting
2997         MONO_XDEBUG to 'gdb'.
2998
2999 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3000
3001         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3002         gdb mode.
3003
3004 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3005
3006         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3007         can be used to set breakpoints in gdb.
3008
3009         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3010         segment to an absolute address.
3011
3012 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3013
3014         * method-to-ir.c: Use the managed array allocator method if
3015         available.
3016
3017 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3018
3019         * aot-compiler.c : Fix the MSVC builds
3020
3021         Code is contributed under MIT/X11 license.
3022
3023 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3024
3025         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3026         avoid registering 1 symbol file per method with gdb.
3027
3028 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3029
3030         * mini-sparc.c: Fix the handling of enums with base type long.
3031
3032         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3033
3034         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3035         instead of using type->data.klass as the later doesn't work with generics.
3036
3037 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3038
3039         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3040         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3041         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3042         works differently now and we don't handle it in the JIT anymore.
3043
3044         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3045         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3046         the Thread class split.
3047
3048 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3049
3050         * driver.c: Don't run tests with the obsolete treeprop optimization.
3051
3052         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3053         variable volatile. Fixes #541577.
3054
3055         * basic-calls.cs: Add a new test.
3056
3057         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3058
3059 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3060
3061         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3062         work/required with recent iphone sdk versions.
3063
3064         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3065         structures.
3066
3067         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3068         in the VCALL decomposition code.
3069
3070 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3071
3072         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3073
3074         * basic.cs: Add a test.
3075
3076         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3077         generic invokes.
3078
3079         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3080         searches all the domains of the current thread.
3081
3082         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3083
3084 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3085
3086         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3087         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3088
3089         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3090         for non-jit trampolines.
3091
3092         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3093
3094         * aot-compiler.c (add_wrappers): Ditto.
3095
3096         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3097         the size of the param area used by dyn_call to 6 which covers the majority of
3098         methods.
3099
3100         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3101
3102         * mini-arm.c: Implement support for passing/receiving
3103         longs and receiving floats in the dyn_call code.
3104
3105         * mini-amd64.c: Implement support for receiving vtypes in registers in
3106         the dyn_call code.
3107
3108         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3109         the dyn_call code.
3110
3111 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3112
3113         * mini-arm.c (get_call_info): Return more precise information in
3114         ArgInfo->regtype.
3115         (dyn_call_supported): Use the information in CallInfo.
3116
3117         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3118
3119         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3120         code.
3121
3122         * mini-arm.c: Update after the dyn_call api changes.
3123
3124         * mini.c (mini_create_jit_domain_info): Register a destructor function
3125         for the runtime_invoke_hash.
3126
3127         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3128         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3129         this function.
3130         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3131         (dyn_call_supported): Simplify this by using get_call_info ().
3132         (mono_arch_dyn_call_free): New destructor function.
3133
3134         * generics.cs: Remove a printf.
3135
3136         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3137
3138         * mini-arm.c: Add support for enum return values and passing a few arguments
3139         on the stack.
3140         
3141         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3142         dyn invoke.
3143
3144         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3145
3146         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3147         the dynamic invoke wrappers.
3148
3149         * mini-arm.c: Implement OP_DYN_CALL for arm.
3150
3151         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3152         supported by the dynamic runtime invoke wrapper.
3153
3154         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3155         runtime invoke wrapper.
3156
3157         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3158         if possible when running with full-aot.
3159
3160         * mini-ops.h: Add OP_DYN_CALL opcode.
3161
3162         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3163         with dynamic arguments lists similar to libffi.
3164
3165 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3166
3167         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3168         
3169         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3170         to NEWARR.
3171
3172         * iltests.il.in: Add a new test.
3173         
3174 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3175
3176         * aot-compiler.c (add_generic_instances): Add more instances of
3177         GenericEqualityComparer.
3178
3179 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3180
3181         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3182
3183 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3184
3185         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3186         comments on some functions that now can fail.
3187
3188 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3189
3190         * Makefile.am: Add Info.plist to EXTRA_DIST
3191
3192 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3193
3194         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3195         static synchronized wrappers. Fixes #539500.
3196
3197 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3198
3199         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3200         properly.
3201
3202 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3203
3204         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3205         lmf before calling filter clauses as well. Fixes #539550.
3206
3207         * exceptions.cs: Add a test.
3208         
3209 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3210
3211         * aot-compiler.c (add_generic_class): Add instances of
3212         Array.GetGenericValueImpl as well.
3213
3214         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3215         can be tested too.
3216
3217         * generics.cs: Add a fullaot linq test.
3218
3219 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3220
3221         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3222         reg r1 on arm.
3223
3224 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3225
3226         * mini-trampolines.c (mono_delegate_trampoline) : Call
3227           mono_cominterop_get_invoke if the delegate target object
3228           is a COM object.
3229
3230         Code is contributed under MIT/X11 license.
3231
3232 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3233
3234         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3235         internal call is defined outside platform code. Reduce code 
3236         duplication with existing [Method|Field]AccessException
3237
3238 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3239
3240         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3241         if the return value is a small struct passed on regs.
3242
3243 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3244
3245         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3246
3247         * mini-codegen.c: Enable the cpu description validation for arm.
3248
3249 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3250
3251         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3252         test which depends on structs to objects.cs.
3253         
3254         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3255         require object model related stuff working.
3256
3257         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3258
3259         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3260
3261         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3262         against the instruction metadata in mini-ops.h. amd64 only for now.
3263
3264         * mini-ops.h: Fix some instruction descriptions.
3265
3266         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3267         unused instructions.
3268
3269 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3270
3271         * exceptions.cs: Add a new test.
3272
3273 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3274
3275         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3276
3277 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3278
3279         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3280         skip empty phi opcodes.
3281         
3282         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3283         correctly by zero extending after loads. Skip methods containing calls
3284         to the monitor enter/exit trampolines.
3285
3286         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3287         when calling mono_thread_force_interruption_checkpoint ().
3288
3289         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3290
3291         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3292         64 bit thunks.
3293         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3294
3295         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3296         bootstrap could run.
3297
3298 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3299
3300         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3301
3302 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3303
3304         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3305         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         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3310         in OP_THROW/RETHROW.
3311
3312         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3313         alignment on osx.
3314
3315 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3316
3317         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3318         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3319         LLVM might be very short.
3320
3321 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3322
3323         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3324         the alignment for the value of sp.
3325
3326 2009-09-01  Geoff Norton  <gnorton@novell.com>
3327
3328         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3329         managed wrappers in full aot.
3330
3331 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3332
3333         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3334
3335 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3338
3339 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3340
3341         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3342
3343         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3344         saved info.
3345
3346         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3347
3348         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3349         depend on the info MonoMethodHeader which could be missing in IL stripped
3350         assemblies.
3351
3352 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3353
3354         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3355         they are only 4 byte aligned.
3356
3357 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3358
3359         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3360         was done previously, since using SP causes too many problems.
3361
3362         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3363         frames without a frame pointer works.
3364
3365         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3366         global register in methods with calls, since the calls can go through
3367         a static rgctx trampoline which doesn't save it.
3368
3369 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3370
3371         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3372
3373 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3374
3375         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3376
3377 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3378
3379         * method-to-ir.c: Fix warnings for uninitialized variables.
3380
3381 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3382
3383         * mini-exceptions.c:
3384         * aot-compiler.c: Fix printf warnings.
3385
3386 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3387
3388         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3389         Add GetGenericValueImpl<string>.
3390         
3391         * aot-compiler.c (add_generic_instances): Add instances of
3392         GenericEqualityComparer<T> for primitive types. Only emit the array
3393         wrappers into the mscorlib image.
3394
3395 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3396
3397         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3398         the methods_loaded array using amodule->info->nmethods.
3399
3400         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3401         (MONO_AOT_FILE_VERSION): Bump this.
3402
3403         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3404         to work.
3405
3406         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3407         MonoJitInfo doesn't belong to its methods aot image.
3408
3409 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3410
3411         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3412
3413         * mini-arm.c: Fix warnings.
3414         
3415         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3416
3417         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3418         supports it.
3419
3420 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3421
3422         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3423         avoid clobbering IP.
3424
3425         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3426         hold the trampoline argument, so its initial value is available during
3427         debugging.
3428
3429 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3430
3431         * exceptions-arm.c:
3432         * exceptions-hppa.c:
3433         * mini.c:
3434         * exceptions-s390x.c:
3435         * exceptions-mips.c:
3436         * exceptions-ppc.c:
3437         * exceptions-sparc.c:
3438         * exceptions-alpha.c:
3439         * aot-runtime.c:
3440         * mini-trampolines.c:
3441         * exceptions-x86.c:
3442         * exceptions-s390.c: add and use #define's instead of sizeof()
3443         for MonoJitInfo and MonoJitInfoTable.
3444
3445 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3446
3447         * tramp-arm.c:
3448         * tramp-amd64.c:
3449         * tramp-ppc.c:
3450         * tramp-x86.c: use a #define instead of sizeof() for a few
3451         structures that use a zero-length array.
3452
3453 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3454
3455         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3456         case when the method is dynamic. Fixes #529238.
3457
3458 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3459
3460         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3461         of asserting when a method is JIT compiled in full-aot mode.
3462
3463 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3464         
3465         Contributed under the terms of the MIT/X11 license by
3466         Jerry Maine <crashfourit@gail.com>.
3467         
3468         * fixed wrong dates in changelog.
3469
3470 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3471         
3472         Contributed under the terms of the MIT/X11 license by
3473         Jerry Maine <crashfourit@gail.com>.
3474
3475         * basic-simd.cs: added test for packed double square root.
3476         * cpu-amd64.md: added opcode info for packed double square root.
3477         * cpu-x86.md: added opcode info for packed double square root.
3478         * mini-ops.h: added IR opcode for packed double square root.
3479         * mini-x86.c: added IR to native translation code for packed double square root.
3480         * mini-amd64.c: removed todo for packed double square root.
3481         * simd-intrinsics.c: added method to IR opcode converstion for
3482         packed double square root.
3483
3484 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3485
3486         Contributed under the terms of the MIT/X11 license by
3487         Jerry Maine <crashfourit@gail.com>.
3488
3489         * mini-amd64.c: Added a change to help tell the difference as 
3490         to what perpose the xmm register is being used--mainly to help
3491         with debuging.
3492         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3493         (one used for special cases) xmm registers for both fp
3494         and simd ops. Added define to turn on new feature in the regalloc
3495         that allows fp and simd ops to share the xmm regs happily.
3496         * codegen.c: Added code to detect for which perpose an xmm reg is
3497         being used (fp or simd) and to translate back and forth to the
3498         correct logical reg bank (fp or simd) for 'spill load's.
3499
3500 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3501
3502         Contributed under the terms of the MIT/X11 license by
3503         Jerry Maine <crashfourit@gail.com>.
3504
3505         * basic-simd.cs: Added tests for stressing the regalloc when running with
3506         16 simd regs and when simd and fp ops share the same reg bank.
3507
3508 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3509
3510         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3511         in shared generic code, we might have to look up the class in the
3512         RGCTX.  If we use the class directly, compute its GC descriptor.
3513
3514 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3515
3516         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3517
3518 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3519
3520         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3521         check for errors. Fixed the case when the class with the Main
3522         method is broken.
3523
3524 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3525
3526         Contributed under the terms of the MIT/X11 license by
3527         Jerry Maine <crashfourit@gail.com>.
3528
3529         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3530
3531 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3532
3533         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3534
3535 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3536
3537         * method-to-ir.c: Fix naming of stelem and ldelem.
3538
3539 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3540
3541         * driver.c (main_thread_handler): Check that the assembly loaded
3542         matches the filename when doing AOT.
3543
3544 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3545
3546         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3547         call it anymore.
3548
3549         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3550         utils/mono-sigcontext.h).
3551
3552         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3553         #ifdef.
3554
3555 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3556
3557         * mini.c (mono_codegen):
3558         Call profiler hook to keep track of method code buffers.
3559
3560 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3561
3562         * method-to-ir.c: Invoke write barriers for the
3563         Interlocked.(Compare)Exchange JIT intrinsics.
3564
3565 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3566
3567         * Makefile.am (version.h): Fix issues when built out of tree.
3568         Remove some redundant 'grep's piped through 'sed's.
3569
3570 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3571
3572         This patch is contributed under the terms of the MIT/X11 license
3573
3574         * mini-ppc.c (mono_arch_output_basic_block):
3575         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3576         for bits 32-47 with signed load/store diplacements for bits
3577         48-63.  Use prefered base/offset order for indexed form.
3578         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3579         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3580         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3581         OP_LOADI2_MEMBASE): Same.
3582         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3583         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3584         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3585         indexed form.
3586         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3587         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3588         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3589         OP_LOADI1_MEMINDEX): Same
3590         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3591         OP_STORER8_MEMINDEX): Same
3592         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3593         computations.
3594         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3595         for bits 32-47 with signed load/store diplacements for bits
3596         48-63.  Use prefered base/offset order for indexed form.
3597
3598 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3599
3600 This patch is contributed under the terms of the MIT/X11 license
3601
3602         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3603         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3604         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3605         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3606         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3607         cfg->stack_usage to avoid size warnings.
3608         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3609         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3610         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3611         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3612         to convert.
3613         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3614         after code varible is initialized.
3615         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3616         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3617         (mono_arch_emit_epilog): 
3618         Move Use ppc_load32 for cfg->stack_usage to avoid size
3619         warnings.
3620
3621 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3622
3623         * method-to-ir.c: The write barrier doesn't do the store anymore,
3624         so we have always to emit it.  Also, emit the wbarrier after the
3625         store.
3626
3627 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3628
3629         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3630         for argument count 3 too.
3631
3632 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3633
3634         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3635         the caller handle the exceptions.
3636         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3637         method. Fixes #524498.
3638
3639 2009-07-22  Geoff Norton  <gnorton@novell.com>
3640
3641         * mini-exceptions.c: Fix build on ia64.
3642
3643 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3644
3645         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3646         barriers.
3647
3648 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3649
3650         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3651         code.
3652
3653 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3654
3655         * basic-simd.cs (Main): Pass args to the test driver.
3656
3657 2009-07-20  Geoff Norton  <gnorton@novell.com>
3658
3659         * mini-x86.h: Fix the x86 version guards to use Apple's
3660         properly defined macros.
3661
3662 2009-07-20  Geoff Norton  <gnorton@novell.com>
3663
3664         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3665         aligned access.
3666
3667 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3670         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3671         the information which is needed for invokes, so only one locking+hash table
3672         lookup is needed.
3673
3674         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3675         
3676         * aot-compiler.c (add_generic_instances): Emit instances of 
3677         GenericComparer<T> for primitive types.
3678
3679 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3680
3681         * mini-posix.c: Fix linux build.
3682
3683 2009-07-19  Geoff Norton  <gnorton@novell.com>
3684
3685         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3686         mono_gdb_render_native_backtraces
3687         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3688         so we implement the sane semantics to the runtime here
3689         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3690         so we need to call it differently (mono_gdb_render_native_backtraces)
3691         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3692         here for default implementations.
3693         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3694         support Apple's weird syscall (SYS_fork) implementation and not busy
3695         loop in abort() on native crashes on OSX anymore.
3696
3697 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3698
3699         * aot-runtime.c (load_method): Change the handling of the
3700         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3701         are used.
3702
3703         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3704
3705 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3706
3707         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3708         seems to break the aot tests.
3709         
3710         * mini.c (mono_patch_info_equal): Fix the handling of 
3711         MONO_PATCH_INFO_RGCTX_FETCH.
3712
3713 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3714
3715         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3716
3717         * mini.c (mono_patch_info_hash): Fix the handling of 
3718         MONO_PATCH_INFO_INTERNAL_METHOD.
3719         (mono_patch_info_equal): Ditto.
3720
3721 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3722
3723         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3724         in a few places.
3725         
3726         * mini-llvm.c: Add some infrastructure for AOT support.
3727
3728 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3729
3730         * mini-llvm-cpp.c: Update to the latest llvm api.
3731         
3732         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3733         option to false to prevent llvm from installing signal handlers which
3734         trip up the gc.
3735         
3736 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3737
3738         * cpu-x86.md:
3739         * cpu-amd64.md: Revert previous change as those instructions
3740         take 2 separate arguments. Remember to read the arch docs more
3741         carefully next time.
3742
3743 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3744
3745         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3746
3747 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3748
3749         * mini-ppc.c: exploit multiple load/store units if available (rest of
3750         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3751         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3752
3753 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3754
3755         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3756         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3757
3758 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3759
3760         * cpu-x86.md: Fix missing clobbering from trancendental simd
3761         ops.
3762
3763         * cpu-amd64.md: Same.
3764
3765 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3766
3767         Contributed under the terms of the MIT/X11 license by
3768         Jerry Maine <crashfourit@gail.com>.
3769
3770         * basic-simd.cs: Added tests for single and doulble indexers.
3771
3772         * cpu-amd64.md: Added simd opcode information.
3773
3774         * mini-amd64.c: Added IR to native simd generation code.
3775         Added simd register names and function that returns them.
3776
3777         * mini-amd64.h: Added marcos to turn on simd code compilation in
3778         amd64. Added max simd register count marco. Added caller/callee
3779         register mask marcos. Added marcos to use simd register bank.
3780
3781         * mini.h: Added helper marco for shufling dwords and simple
3782         floats.
3783
3784 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3785
3786         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3787
3788         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3789
3790         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3791         the length of the native code as well.
3792
3793         * basic-simd.cs: Add a test for #521662.
3794
3795 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3796
3797         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3798
3799 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3800
3801         * mini.c: Register function for getting the IP from a signal
3802         context with metadata.
3803
3804 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3805
3806         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3807         call a generic class init trampoline if needed. Fixes #519336.
3808
3809         * generics.cs: Add a test.
3810         
3811 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3812
3813         * method-to-ir.c: When doing a call which might be remote from
3814         shared generic code to other shared code with open type arguments,
3815         get the remoting invoke wrapper from the RGCTX and do an indirect
3816         call to it.
3817
3818 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3819
3820         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3821         after the unbox trampoline in the full-aot case.
3822
3823 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3824         
3825         * mini.c: Move initialization of jit_mutex before debugger initialization
3826         
3827         to avoid crashes.
3828         
3829         
3830         * Info.plist: added Info.plist and link flag to enable the mono executable
3831         to access other processes. Requires codesigning of the executable to work.
3832         
3833         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3834         
3835         compile on OS X.
3836         
3837
3838 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3839
3840         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3841
3842 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3843
3844         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3845         when the generic instance is an instantiation of a subclass of the
3846         methods class. Fixes #517166.
3847
3848 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3849
3850         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3851         code.
3852
3853         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3854         AOTed code.
3855
3856         * CMakeLists.txt: Add minimal support for installation.
3857
3858 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3859
3860         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3861         determine whenever a method is directly callable to a separate function.
3862
3863         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3864         needed ones as a result of the previous change.
3865
3866         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3867         type of register arrays.
3868
3869         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3870         type of register arrays.
3871
3872 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3873         
3874         Contributed under the terms of the MIT/X11 license by
3875         Jerry Maine <crashfourit@gail.com>.
3876
3877         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3878
3879 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3880
3881         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3882
3883 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3884
3885         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3886         dump of structure return value. Fix some formatting.
3887         * cpu-s390x.md: Fix lengths of instruction sequences.
3888         * mini-s390.c: Minor formatting changes.
3889
3890 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3891
3892         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3893         Use sigaction on freebsd as well.
3894
3895 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3896
3897         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3898         uses #ifdef on it.
3899         
3900         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3901
3902 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3903
3904         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3905
3906 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3907
3908         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3909
3910 2009-06-20  Martin Baulig  <martin@ximian.com>
3911
3912         * debug-mini.c
3913         (MonoDebuggerThreadFlags): New enum typedef.
3914         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3915         (mono_debugger_thread_created): Added `gpointer func' argument;
3916         initialize the new `thread_flags' field.
3917
3918 2009-06-18  Martin Baulig  <martin@ximian.com>
3919
3920         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3921         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3922
3923         * debug-debugger.c
3924         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3925         flag in `MONO_DEBUGGER__info.runtime_info'.
3926
3927         * driver.c
3928         (mono_main): Call mini_debugger_set_attach_ok() if generics
3929         sharing is disabled.
3930
3931 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3932
3933         * aot-compiler.c (add_wrappers): Fix a warning.
3934
3935         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3936         the ppc load/store macro changes.
3937
3938 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3939
3940         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3941
3942         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3943         not just the got symbol.
3944
3945         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3946         on ppc.
3947
3948         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3949         ppc.
3950         
3951         * aot-compiler.c: Remove some fixmes.
3952
3953         * driver.c (mono_main): Print a helpful message when cross-compiling.
3954
3955         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3956
3957         * method-to-ir.c (initialize_array_data): Do the optimization if the
3958         target byte order is little endian, instead of the host byte order.
3959
3960         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3961         wrappers into the mscorlib image, Emit a unique plt symbol for each
3962         image, emit symbols for plt entries.
3963
3964         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3965         a .size directive.
3966         
3967 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3968
3969         * aot-compiler.c (add_wrappers): Avoid calling 
3970         mono_marshal_get_type_info () since it can assert for some types.
3971
3972         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3973         ldtoken are used inside wrappers.
3974
3975         * helpers.c: Add support for prefixing tools with the arch name.
3976
3977         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3978         quantities when using ilp32.
3979
3980         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3981         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3982
3983         * image-writer.c: Use .long on ilp32.
3984
3985         * aot-compiler.c: Use 32 bit loads on ilp32.
3986         
3987 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
3988
3989         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
3990
3991         * mini-ops.h: Use TARGET_POWERPC define for consistency.
3992
3993         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
3994
3995         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
3996         second got slot of every aot image.
3997         
3998         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
3999         aot on platforms with function pointers.
4000
4001         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4002         support for aot/full aot on ppc/ppc64.
4003         
4004         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4005         arguments which are needed on ppc.
4006
4007         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4008         argument.
4009
4010         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4011         
4012         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4013
4014         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4015
4016         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4017
4018         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4019
4020 2009-06-17  Geoff Norton  <gnorton@novell.com>
4021
4022         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4023
4024 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4025
4026         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4027         to control whenever the dwarf writer is in xdebug or aot mode.
4028         (emit_class_dwarf_info): Use a separate abbrev for structures without
4029         children.
4030
4031         * aot-compiler.c: Pass the appending parameter to 
4032         mono_dwarf_writer_create ().
4033
4034         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4035         falls through to its next bblock. Fixes #513931.
4036
4037         * iltests.il: Add a test.
4038
4039         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4040         infor even if emit_line is FALSE, as the apple linker seems to require it.
4041
4042         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4043
4044         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4045         gcc does.
4046         (emit_fde): Ditto.
4047
4048 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4049
4050         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4051         mips build.
4052
4053 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4054
4055         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4056         'has_call_handler' fields.
4057
4058         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4059
4060         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4061         first bblock if not needed. Fixes #512790.
4062         
4063 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4064
4065         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4066         
4067         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4068         wrappers.
4069
4070         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4071         remoting-invoke-with-check wrappers, which are not needed when running with
4072         full-aot, since it doesn't support remoting.
4073         
4074 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4075
4076         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4077
4078         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4079         method info, it is not used anymore.
4080
4081         * mini.h: Bump AOT file format version.
4082         
4083         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4084         word smaller.
4085
4086         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4087         change above.
4088         
4089         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4090
4091         * mini.h: Bump AOT file format version.
4092         
4093 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4094
4095         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4096         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4097         iphone.
4098
4099         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4100         of CKFINITE and FBGE for VFP.
4101
4102 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4103
4104         * aot-compiler.c: Don't align code to 16 bytes on arm.
4105         
4106         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4107         before the methods they belong to.
4108
4109         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4110         the full-aot case if possible, since the trampoline will be called right 
4111         away.
4112
4113         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4114         trampolines to 1024 after the change above.
4115
4116         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4117         trampoline to save 8 bytes per trampoline.
4118
4119         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4120         change above.
4121
4122 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4123
4124         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4125
4126 2009-06-08  Martin Baulig  <martin@ximian.com>
4127
4128         * debug-mini.c
4129         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4130         (_mono_debugger_throw_exception): Don't make this static.
4131         (_mono_debugger_unhandled_exception): Likewise.
4132         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4133
4134         * debug-mini.c
4135         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4136         (_mono_debugger_throw_exception): Add function prototype.
4137         (_mono_debugger_unhandled_exception): Likewise.
4138
4139         * mini-exceptions.c
4140         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4141         arg; return the first exception handler if the exception is caught
4142         and we're running inside the debugger.
4143         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4144         improve exception handle inside runtime-invoke, check whether the
4145         exception is actually caught in the method being invoked and not
4146         by the runtime-invoke-wrapper.
4147
4148 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4149
4150         * image-writer.c: Improve support for the osx assembler.
4151
4152         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4153         support them.
4154
4155 2009-06-08  Martin Baulig  <martin@ximian.com>
4156
4157         * debug-mini.c
4158         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4159         (_mono_debugger_throw_exception): Don't make this static.
4160         (_mono_debugger_unhandled_exception): Likewise.
4161         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4162
4163         * debug-mini.c
4164         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4165         (_mono_debugger_throw_exception): Add function prototype.
4166         (_mono_debugger_unhandled_exception): Likewise.
4167
4168         * mini-exceptions.c
4169         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4170         arg; return the first exception handler if the exception is caught
4171         and we're running inside the debugger.
4172         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4173         improve exception handle inside runtime-invoke, check whether the
4174         exception is actually caught in the method being invoked and not
4175         by the runtime-invoke-wrapper.
4176
4177 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4178
4179         * image-writer.c (append_subsection): Don't align subsections of the
4180         debug_line section as a workaround.
4181
4182         * dwarfwriter.c: Emit line number info in the AOT case as well.
4183
4184 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4185
4186         This patch is contributed under the terms of the MIT/X11 license
4187
4188        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4189        code_len <= code_size
4190
4191 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4194
4195 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4196
4197         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4198         invoke wrappers, we now use trampolines instead.
4199
4200 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4201
4202         * mini-darwin.c: The exception thread must not be registered with
4203         the GC.
4204
4205 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4206
4207         * mini-gc.c: Disable the code because it makes SGen crash.
4208
4209 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4212         instead of asserting.
4213
4214 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4215
4216         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4217         output file after the code has been compiled.
4218
4219 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4220
4221         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4222
4223 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4226         entries distinction to simplify the code.
4227
4228         * mini.h: Bump AOT file format version.
4229         
4230 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4231
4232         * objects.cs: Fix the signature of one of the tests.
4233
4234         * mini.c (mini_create_ftnptr): New helper function, moved here from
4235         object.c.
4236         (mini_get_addr_from_ftnptr): Ditto.
4237         (mini_init): Install the new helpers.
4238
4239 2009-05-28  Martin Baulig  <martin@ximian.com>
4240
4241         Correctly initialize the debugger when embedding Mono.
4242
4243         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4244         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4245         see documentation in mini_debug_running_inside_mdb().
4246
4247         * debug-debugger.c
4248         (mini_debug_running_inside_mdb): New function to check whether
4249         we're running inside mdb.
4250
4251         * mini.c (mini_init): Call mini_debugger_init() if we're running
4252         inside the debugger.
4253
4254         * driver.c (mono_main): Moved the call to mini_debugger_init()
4255         into mini_init() to make this work when embedding Mono.
4256
4257         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4258         calls to mini_debugger_init().
4259
4260         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4261         mono_debugger_main() -> mini_debugger_main() and put them inside a
4262         `MONO_DEBUGGER_SUPPORTED' conditional.
4263
4264 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4265
4266         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4267         this is no longer in use.
4268         * mini.h: Same.
4269
4270 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4271
4272         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4273
4274         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4275         methods.
4276
4277 2009-05-27  Martin Baulig  <martin@ximian.com>
4278
4279 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4280
4281         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4282         long_conv_to_r_un to 64 bits.
4283
4284         * cpu-x86.md: Increase the instruction size due to the changes.
4285
4286         * iltests.il.in: Add regression test.
4287
4288         Fixes #467201.
4289
4290 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4291
4292         * objects.cs: Move the previous test from basic.cs to here.
4293
4294 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4295
4296         * basic.cs: Add regression test for #506915.
4297
4298 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4299
4300         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4301         optimization we must check the bb of the first byte of stobj as
4302         it's the only one set in cil_offset_to_bb.
4303
4304         Fixes #506915.  
4305
4306 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4307
4308         * image-writer.c: Fix pointer directive on ppc64.
4309
4310 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4311
4312         * image-writer.c (asm_writer_emit_section_change): Avoid using
4313         .bss subsections on ppc too.
4314
4315 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4316
4317         * image-writer.c: Fix the definition of TARGET_ASM_....
4318         
4319         * image-writer.c: Fix the emission of assembler directives in the last
4320         change.
4321
4322         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4323         exception throwing code to accomodate ppc64.
4324
4325         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4326         size to work on ppc64 too.
4327
4328         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4329         too.
4330
4331         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4332         the assembler dialect instead of using platform specific defines.
4333
4334 2009-05-22  Geoff Norton  <gnorton@novell.com>
4335
4336         * mini-arm.c (get_call_info): If a structure is split between the stack
4337         and argument registers, we should not advance the stack pointer by the entire
4338         native size, but just by the amount that spilled.
4339
4340 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4341
4342         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4343         correctly.
4344
4345 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4346
4347         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4348         wrappers normally.
4349         
4350         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4351         methods so wrapper don't get added twice.
4352         (add_generic_instances): Don't add methods of arrays.
4353
4354         * generics.cs: Mark one test as !FULLAOT.
4355
4356 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4357
4358         * mini-x86.c (emit_move_return_value): Remove unused vars.
4359
4360 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4361
4362         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4363         decomposing 8 bytes structs into a LCALL.
4364
4365         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4366         pointer for where to store the returned regs.
4367
4368         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4369         state the concern.
4370
4371         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4372
4373 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4374
4375         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4376         without getenv.
4377
4378 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4379
4380         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4381
4382         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4383         generics.
4384
4385 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4386
4387         * local-propagation.c (mono_local_cprop): Avoid local propagation
4388         across paired add/sub if the first instruction dest reg is it's
4389         source reg. For example:
4390
4391         int_add_imm R12 <- R12 [1] clobbers: 1
4392         int_sub_imm R42 <- R12 [1] clobbers: 1
4393
4394         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4395         maintain the math identify.
4396
4397         Fixes #505375.
4398
4399 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4400
4401         * Makefile.am: avoid going on the network just to get the revision,
4402         use git log instead
4403
4404 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4405
4406         Fixed estimate for short branches on amd64 (they were off mark, and
4407         enabling call prolog-epilog instrumentations caused assertions).
4408         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4409         estimate for the maximum length of this basic block.
4410         * mini-amd64.c:
4411         - mono_arch_emit_prolog: compute max_length for each basic block
4412           (instead of max_offset), and inflate size estimate also for entry bb
4413           in case of code instrumentation.
4414         - mono_arch_output_basic_block: get rid of "cpos" (the current
4415           estimated "position" in the code), and always use "offset" instead,
4416           which is accurate; at the beginning of the function quickly recompute
4417           max_offset for all the remaining blocks, starting from the current
4418           cfg->code_len (which is correct, and not estimated) and using the
4419           estimated block lengths computed previously.
4420
4421 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4422
4423         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4424         functions, it is already done in the caller.
4425
4426         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4427
4428         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4429         MONO_ARCH_GSHARED_SUPPORTED define.
4430
4431         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4432
4433         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4434         function.
4435
4436 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4437
4438         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4439         call to mono_marshal_get_rgctx_invoke ().
4440
4441         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4442         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4443         gshared use the static rgctx trampolines now.
4444         
4445         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4446         platform supports it.
4447
4448 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4449
4450         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4451
4452         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4453
4454 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4455
4456         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4457
4458         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4459         for ppc.
4460
4461 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4462
4463         Made it possible for mono_arch_instrument_epilog to preserve
4464         argument registers, otherwise instrumenting the "epilogue" before
4465         a tail call would clobber them.
4466         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4467         if like mono_arch_instrument_epilog but with an additional parameter
4468         that states if argument registers must be preserved.
4469         * mini.c: implemented mono_arch_instrument_epilog as a call to
4470         mono_arch_instrument_epilog_full without asking to preserve argument
4471         registers (this makes the existing code work as usual).
4472         * mini-amd64.c:
4473         - mono_arch_instrument_epilog: add parameter to transform it into
4474         mono_arch_instrument_epilog_full, and preserve argument registers
4475         when required.
4476         - mono_arch_output_basic_block, OP_TAILCALL case: call
4477         mono_arch_instrument_epilog_full.
4478         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4479         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4480         only transformed mono_arch_instrument_epilog into
4481         mono_arch_instrument_epilog_full.
4482
4483 2009-05-15  Geoff Norton  <gnorton@novell.com>
4484
4485         * mini-darwin.c: This works on arm now.
4486
4487 2009-05-14  Geoff Norton  <gnorton@novell.com>
4488
4489         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4490         embedding api.
4491
4492 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4493
4494         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4495         label names.
4496
4497         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4498         wrappers during full aot mode correctly.
4499
4500         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4501         methods correctly.
4502
4503         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4504         mono_metadata_type_hash ().
4505
4506 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4507
4508         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4509         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4510         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4511         Removed MONO_INST_BRLABEL from the instruction flags, and the
4512         remaining code that used it, because we do not support branches inside
4513         basic blocks (and branch target labels) anymore.
4514         * Makefile.am: As part of the above cleanup, remove reference to
4515         BURG files which don't exist anymore.
4516
4517 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4518
4519         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4520         osx.
4521
4522         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4523         to use mono_arch_throw_corlib_exception.
4524
4525         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4526         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4527
4528         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4529         domain mempool.
4530
4531         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4532
4533         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4534         for the got to make debugging easier and to avoid confusing it with the
4535         system got.
4536         
4537         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4538         method so a breakpoint can be set when using gdb.
4539
4540 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4541
4542         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4543         on mono_method_get_imt_slot ().
4544
4545         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4546         num_decodes variables.
4547
4548         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4549         change as it doesn't seem to work.
4550         
4551         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4552         wrappers.
4553
4554 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4555
4556         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4557         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4558
4559         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4560         builder when using full aot.
4561
4562         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4563         here, it is already handled.
4564         
4565         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4566         correctly for IMT.
4567
4568         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4569
4570         * mini-arm.h: Enable IMT for full aot.
4571         
4572         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4573         arch doesn't support it.
4574
4575         * mini.c (mini_init): Don't disable IMT for full aot if the
4576         architecture supports it.
4577
4578         * mini.h (MonoAotTrampoline): New enum containing the different types
4579         of 'numerous' trampolines.
4580         (MONO_AOT_FILE_VERSION): Bump this.
4581
4582         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4583         static rgctx trampolines. Add support for full-aot IMT thunks.
4584
4585         * mini-amd64.h: Enable IMT for full aot.
4586
4587         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4588         to exclude tests belonging to a category.
4589
4590         * generics.cs: Mark some tests with a !FULLAOT category.
4591
4592         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4593         generics tests.
4594
4595 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4596
4597         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4598         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4599         (emit_plt): Fix a warning.
4600
4601 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4602
4603         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4604         back into aot-compiler.c to a place where the other functions shared by
4605         the runtime and aot compiler are.
4606         
4607         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4608         as done previously, instead of in MonoAotFileInfo, since pointers might have
4609         alignment requirements.
4610
4611         * mini.h: Bump AOT file format version.
4612
4613 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4614
4615         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4616         that is used at runtime from the aot-compiler.c, this makes it
4617         work on setups that remove the AOT compiler from the output
4618         image. 
4619
4620 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4621
4622         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4623         PPC.
4624
4625         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4626
4627         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4628
4629         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4630         stuff to mono_arch_decompose_long_opts ().
4631         (mono_decompose_opcode): Remove some dead code.
4632
4633 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4634
4635         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4636         cmethod can be null for quite a some reasons.
4637
4638 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4639
4640         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4641
4642 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4643
4644         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4645
4646 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4647
4648         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4649         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4650         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4651         calls returning structures by addr on amd64.
4652
4653         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4654
4655         * iltests.il.in: Restructure the tail call tests a bit.
4656         
4657 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4658
4659         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4660         for virtual methods too.
4661
4662 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4663
4664         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4665         due to regression in verifying System.dll.
4666
4667 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4668
4669         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4670         in dynamic methods.
4671
4672         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4673         instances.
4674
4675         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4676         g_str_hash () which can change.
4677
4678         * driver.c (mini_regression): Disable optimizations not supported by
4679         the cpu. Fixes #500019.
4680
4681         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4682         build.
4683
4684 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4685
4686         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4687         to the latest LLVM code.
4688
4689 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4690
4691         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4692
4693 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4694
4695         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4696         x86/amd64.
4697
4698         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4699         no longer saving offsets, so just save the patch types along with the other
4700         info.
4701         * aot-runtime.c (load_patch_info): Update after the changes to 
4702         encode_patch_list ().
4703         (decode_got_entry): Removed, merged into load_patch_info ().
4704         (is_shared_got_patch): Removed, call the same function from
4705         aot-compiler.c.
4706
4707         * mini.h: Bump aot file format version.
4708         
4709         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4710         half-finished no-dlsym code.
4711
4712         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4713         option.
4714
4715         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4716         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4717
4718 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4719
4720         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4721         buffer length to work with AOT code.
4722
4723         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4724         ldfld/stfld opcodes.
4725
4726         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4727         as it is not used.
4728
4729         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4730
4731         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4732
4733         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4734         LLVM API.
4735
4736         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4737         if needed. Don't decompose long operations when using llvm.
4738
4739 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4740
4741         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4742         PAGESIZE constant.
4743
4744         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4745
4746 2009-05-03  Martin Baulig  <martin@ximian.com>
4747
4748         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4749         mono_debugger_insert_method_breakpoint() since the class init
4750         handler we're inserting at the top of the method already gives us
4751         a notification.
4752
4753 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4756         to mono_arch_decompose_long_opts () for x86 and arm.
4757
4758 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4759
4760         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4761         TARGET_AMD64 here.
4762
4763 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4764
4765         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4766         JIT code.
4767
4768 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4769
4770         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4771         number of trampolines used in full-aot mode.
4772
4773         * aot-compiler.c: Add an ntrampolines option to set the number of 
4774         trampolines emitted in full-aot mode.
4775
4776 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4777
4778         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4779         a volatile load. Get rid of get_tempname (), llvm assigns names
4780         automatically.
4781
4782         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4783         builder function.
4784
4785         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4786         a value.
4787
4788         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4789         level 1.
4790
4791         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4792         to the same register as a fixed sreg2. Fixes #497271.
4793
4794         * iltests.il.in: Add a new test.
4795
4796 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4797
4798         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4799         stack, since pushes complicate exception handling.
4800
4801         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4802         the stack if they are passed using moves.
4803
4804         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4805
4806         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4807         when using llvm.
4808
4809         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4810         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4811         of FMOVE if it is an R4.
4812
4813 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4814
4815         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4816
4817         * mini.h (LLVMCallInfo): New structure to store calling convention 
4818         information for the LLVM back end similar to the CallInfo structures in 
4819         the back-ends.
4820
4821         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4822         call information in a format usable by LLVM.
4823         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4824
4825         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4826         mono_llvm_emit_call () when compiling using LLVM.
4827
4828         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4829         comments to all functions. Fix memory leaks. Add a public init/cleanup
4830         function.
4831
4832         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4833
4834         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4835         mono_array_new_va () jit icall.
4836         
4837 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4838
4839         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4840         multiple machine description files to be specified.
4841         * mini-ops.h: fixes for cross-compilation.
4842
4843 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4844
4845         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4846         some porting work.
4847
4848 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4849
4850         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4851         to prevent asserts in various passes. Fixes #497220.
4852
4853 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4854
4855         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4856         a racy assert.
4857
4858         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4859         table to avoid duplicates.
4860
4861         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4862         
4863         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4864         option is used.
4865
4866 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4867
4868         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4869         is for method or field access.
4870
4871 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4872
4873         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4874         a Value to stdout.
4875
4876         * mini-llvm.c (mono_llvm_emit_method): Use it.
4877         
4878         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4879         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4880         on volatile values.
4881
4882         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4883         synchronized methods.
4884
4885         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4886
4887         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4888
4889         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4890         OP_LOADI8_MEM.
4891
4892         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4893         allowing some options to be set dynamically.
4894
4895 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4896
4897         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4898         unconditional branch.
4899
4900         * mini.h (MonoTrampolineType): Add new trampoline type 
4901         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4902         compiled code.
4903
4904         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4905         function.
4906
4907         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4908         creation function.
4909
4910         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4911         is enabled. Instead, use the llvm vcall trampoline.
4912         
4913         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4914
4915         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4916         
4917         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4918         functions.
4919
4920         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4921         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4922
4923         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4924         OP_IA64_CSET opcode.
4925
4926         * mini.c: Fix a warning.
4927
4928         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4929         THROW to the appropriate llvm type.
4930
4931 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4932
4933         * mini.c (mini_method_compile): Add statistics for methods JITted
4934         with/without LLVM.
4935
4936 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4937
4938         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4939         OP_IA64_CMP_<cond>_IMM opcodes.
4940
4941 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4942
4943         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4944         corlib exceptions.
4945
4946         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4947         correctly.
4948
4949         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4950         GENERICINST.
4951
4952 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4953
4954         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4955
4956 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4957
4958         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4959         support.
4960
4961         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4962         rgctx invoke trampolines for x86.
4963
4964         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4965         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4966         (mono_arch_get_vcall_slot): Simplify this.
4967
4968 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4969
4970         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4971         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4972
4973 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4974
4975         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4976         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4977
4978         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4979
4980         * liveness.c (visit_bb): Remove a needless assert.
4981
4982 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4985         full aot support to the arch specific code.
4986
4987         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
4988
4989         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
4990
4991         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
4992         
4993         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
4994         collect information about the delegate invoke impl trampolines.
4995
4996         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
4997         to save trampolines during full-aot mode.
4998
4999         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5000         creation function which returns a trampoline which sets the rgctx
5001         argument.
5002         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5003         wrapper if possible.
5004         (mono_delegate_trampoline): Ditto.
5005
5006         * mini.c (mono_jit_runtime_invoke): Ditto.
5007
5008         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5009         
5010         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5011
5012         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5013         
5014 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5015
5016         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5017         just setting the opcode to OP_NOP.
5018
5019 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5020
5021         * mini.c (mini_method_compile): Put the last change inside an 
5022         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5023         
5024         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5025         and extend live ranges to cover the whole method when using xdb.
5026
5027         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5028         do it in the trampolines.
5029
5030         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5031         needed.
5032
5033         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5034         
5035         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5036         call code in full-aot mode since IMT is disabled there.
5037         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5038         new JIT no longer has that restriction.
5039
5040         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5041
5042         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5043         a more compact format.
5044         (mono_aot_wrapper_name): New function to return a unique name for a
5045         wrapper method, also used by the AOT runtime.
5046
5047         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5048         aot-compiler.c.
5049
5050         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5051         when a ICollection<T> etc is encountered.
5052         (add_generic_instances): Process method arguments/locals too.
5053         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5054         trampoline names.
5055
5056         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5057         
5058 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5059
5060         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5061
5062         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5063
5064         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5065         representing the result of the decomposition. Nullify instructions
5066         instead of setting them to OP_NOP since nops can't have registers
5067         set.
5068
5069 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5070
5071         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5072         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5073         info. Strip 'mapping symbols' on ARM.
5074
5075         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5076         
5077         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5078         this with the native genmdesc.
5079
5080 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5081
5082         * aot-runtime.c:  Fixing the MSVC build.
5083
5084         Code is contributed under MIT/X11 license.
5085
5086 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5087
5088         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5089         JITted code depends on it.
5090
5091 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5092
5093         * aot-compiler.c: Use new MonoGenericParam accessors.
5094
5095 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5096
5097         Reduce memory usage and improve correctness wrt MonoGenericParam
5098         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5099         handing.  Avoid allocating MonoGenericParams, but use the ones in
5100         the container itself.
5101
5102 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5103
5104         * tasklets.c: Return exceptions in the out argument.
5105
5106 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5107
5108         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5109         opcode. Use pointer types in more places instead of casting them to 
5110         integers.
5111
5112         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5113         optimizations.
5114         (mono_llvm_optimize_method): New helper function to optimize a method.
5115
5116         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5117         widening code so it could be called from more places.
5118         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5119         code paths in the call opcodes.
5120
5121 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5122
5123         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5124
5125 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5126
5127         * dwarfwriter.c: Use _ to separate class name 
5128         components as gdb can't handle '.'. Represent reference variables
5129         as 'class <NAME>&'.
5130         
5131         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5132
5133         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5134         
5135         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5136
5137         * gc-test.cs: New file with GC stack marking tests.
5138         
5139         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5140         negative numbers for vfp.
5141
5142         * basic-float.cs: Add a test.
5143         
5144 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5145
5146         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5147
5148 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5149
5150         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5151         part of tasklet/continuation support.
5152
5153 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5154
5155         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5156         amd64 opcodes inside an ifdef.
5157
5158         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5159         of complex types.
5160         
5161         * dwarfwriter.c (emit_type): Emit the class info for classes.
5162
5163 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5164
5165         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5166
5167         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5168
5169         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5170
5171         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5172
5173 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5174
5175         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5176
5177         * mini-llvm.c: Update comments.
5178
5179         * mini.h (COMPILE_LLVM): New macro.
5180
5181         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5182
5183         * ssa.c (mono_ssa_compute): Ditto.
5184         
5185         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5186         the unwind ops from a DWARF FDE.
5187
5188         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5189         methods by extracting the dwarf unwind ops from the unwind info generated
5190         by LLVM.
5191         
5192         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5193         calls.
5194
5195         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5196         addressing modes.
5197
5198 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5199
5200         * Makefile.am (llvm_sources): Enable this.
5201
5202         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5203         failing back to the JIT if something cannot be handled.
5204
5205         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5206         compiling with LLVM.
5207
5208         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5209         compiling with LLVM.
5210
5211         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5212         compiling with LLVM.
5213
5214         * mini-ops.h: Add a few opcodes needed by LLVM.
5215
5216         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5217         has no unwind info.
5218
5219         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5220         backend.
5221
5222         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5223
5224         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5225
5226 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5227
5228         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5229         ridiculously large methods.
5230
5231 2009-03-31  Martin Baulig  <martin@ximian.com>
5232
5233         * debug-debugger.c (debugger_remove_breakpoint): Call
5234         mono_debugger_remove_class_init_callback ().
5235
5236 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5237
5238         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5239         right before emitting code, not at the start.
5240
5241         * mini.c (mono_postprocess_patches): Extract this into a separate function
5242         from mono_codegen ().
5243
5244         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5245         byref types correctly.
5246
5247 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5248
5249         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5250         by the last change.
5251
5252 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5253
5254         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5255         indirect calls, this avoids problems where get_vcall_slot () would get
5256         confused by the native code for the instruction preceeding the call.
5257         (mono_arch_get_vcall_slot): Simplify this.
5258         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5259
5260         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5261         register allocator now seems to depend on them instead of the data in
5262         cpu-<ARCH>.md.
5263
5264         * mini.c (mini_method_compile): Throw the correct type of exception if
5265         mono_method_get_header () fails because of a loading error.
5266
5267 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5268
5269         * mini.c (mini_method_compile): Clear the loader error if the method
5270         header cannot be decoded.
5271
5272         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5273         interface methods on proxies correctly.
5274
5275         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5276         this argument for vtype methods. Add precise liveness info for arguments.
5277
5278         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5279         LIVERANGE_START/END opcodes.
5280
5281         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5282         for arguments and values in registers.
5283
5284 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5285
5286         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5287         return a valuetype. Fixes #487518.
5288
5289         * iltests.il: Add a test.
5290         
5291         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5292
5293         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5294         closed over a null reference correctly.
5295
5296 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5297
5298         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5299
5300 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5301
5302         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5303         allocated to the same registers as fixed sregs.
5304
5305 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5306
5307         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5308         ATOMIC_CAS_IMM ops.
5309
5310         * method-to-ir.c: Handle more cases for
5311         Interlocked.CompareExchange.
5312
5313         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5314         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5315         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5316
5317 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5318
5319         * aot-runtime.c (decode_method_ref): Fix a warning.
5320
5321         * unwind.c (mono_unwind_frame): Ditto.  
5322
5323 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5324
5325         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5326         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5327
5328         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5329         fix the handling of large values in the ALU_PC_G0_NC relocation.
5330
5331 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5332
5333         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5334
5335 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5336
5337         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5338         ops.
5339
5340 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5341
5342         * method-to-ir.c: MINI_OP3 needs a comma.
5343
5344         * method-to-ir.c, mini.h, mini.c: Remove
5345         mono_init_op_sreg_counts ().
5346
5347 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5348
5349         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5350         OP_JMP.
5351         
5352         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5353         assertion.
5354
5355         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5356
5357         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5358         code somewhat.
5359
5360 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5361
5362         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5363         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5364         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5365         operations.
5366
5367 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5368
5369         * driver.c: Change location of gc_wrapper.h.
5370
5371         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5372         inside finally clauses correctly. Fixes #485721.
5373
5374         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5375         after the change above.
5376
5377         * exceptions.cs: Add a test.
5378         
5379 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5380
5381         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5382
5383         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5384         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5385         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5386
5387         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5388         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5389
5390 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5391
5392         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5393         Simplify logic for ensure_method_is_allowed_to_call_method. 
5394         Handle wrappers on callers.
5395
5396 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5397
5398         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5399         them don't run yet.
5400
5401         * basic-simd.cs: Fix the names of some test methods.
5402
5403 2009-03-18  Geoff Norton  <gnorton@novell.com>
5404
5405         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5406
5407 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5408
5409         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5410
5411 2009-03-17  Jb Evain  <jbevain@novell.com>
5412
5413         * driver.c: remove now uneeded call to mono_gc_base_init before
5414         mono_profiler_load.
5415
5416 2009-03-17  Jb Evain  <jbevain@novell.com>
5417
5418         * dwarfwriter.c (token_handler): handle more cases.
5419
5420 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5421
5422         * method-to-ir.c: Remove more dead code (that was required only
5423         because of method_is_safe). Fix compiler warnings.
5424
5425 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5426
5427         * method-to-ir.c: Remove unneeded/useless method_is_safe
5428         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5429
5430 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5431
5432         * mini.c (mini_method_compile): Print the method been compiled with
5433         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5434         for people not familiar with the runtime.
5435
5436 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5437
5438         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5439         a managed object which is later put into a GList. Return its class instead.
5440
5441         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5442         stack slots when using sgen.
5443
5444 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5445
5446         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5447
5448 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5449
5450         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5451         > so it works on the first vreg as well.
5452
5453 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5454
5455         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5456         trigger randomly.
5457
5458         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5459         
5460         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5461         implement GArray.
5462
5463 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5464
5465         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5466         native->IL offset mapping.
5467
5468 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5469
5470         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5471
5472         * basic.cs: Add a test.
5473
5474 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5475
5476         * mini-x86.c (mono_arch_output_basic_block): Use different
5477         registers in case the ones we want to overwrite are used by the
5478         other operand.  Fixes regression in #480807.
5479
5480 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5481
5482         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5483
5484         * dwarfwriter.c (emit_line_number_info): The line number info for
5485         IL code was off by one. Fix that.
5486
5487         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5488         stack.
5489
5490 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5491
5492         Contributed under the terms of the MIT/X11 license by Steven
5493         Munroe <munroesj@us.ibm.com>.
5494
5495         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5496         Fixes #483462.
5497
5498 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5499
5500         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5501         as well.
5502
5503 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5504
5505         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5506         the delegate ctor handling code. Fixes #482638.
5507         
5508         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5509         #481458.
5510
5511         * iltests.il.in: Add a test.
5512         
5513         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5514         mini-posix.c.
5515
5516 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5517
5518         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5519         is shared generic code, return the trampoline, even if the method
5520         has already been compiled.  Fixes #479763.
5521
5522         * mini.c, mini.h: New function
5523         mono_jit_find_compiled_method_with_jit_info() which is the same as
5524         mono_jit_find_compiled_method() but also returns the jit info.
5525
5526 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5527
5528         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5529         for methods which actually have one.  For all other methods, make
5530         sure the this argument var is live the whole method.
5531
5532         * mini.c (mini_method_compile): Every shared method has a
5533         this/vtable/mrgctx info.  Fixes #480807.
5534
5535 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5536
5537         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5538         generic/imt thunks where some entries branch through the vtable,
5539         while other entries branch directly.
5540
5541 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5542
5543         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5544
5545         * mini-windows.c: Ditto.
5546         
5547         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5548         ctors.
5549
5550 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5551
5552         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5553         down an assert.
5554
5555 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5556
5557         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5558         #481403.
5559
5560 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5561
5562         * exceptions-x86.c: Include debug-mini.h - fixes build.
5563
5564 2009-03-04  Martin Baulig  <martin@ximian.com>
5565
5566         * debug-mini.c: Clean up the exception API and add documentation.
5567         (mono_debugger_handle_exception): New public method; this is
5568         called when throwing an exception or encountering an unhandled one.
5569         (mono_debugger_call_exception_handler): Formerly known as
5570         mono_debugger_handle_exception(); this is used to tell the
5571         debugger that we're about to invoke an exception handler.
5572
5573 2009-03-04  Martin Baulig  <martin@ximian.com>
5574
5575         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5576         ../metadata/mono-debug-debugger.c; save and reset exception state.
5577
5578 2009-03-02  Martin Baulig  <martin@ximian.com>
5579
5580         * debug-mini.c: Moved the debugger exception handling here from
5581         ../metadata/mono-debug-debugger.c.
5582
5583         * debug-mini.h
5584         (MonoDebuggerExceptionAction): New exception typedef.
5585
5586         * debug-mini.c
5587         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5588
5589         * exceptions-amd64.c
5590         (mono_amd64_throw_exception): Use the new debugger exception
5591         handling code.
5592
5593         * mini-exceptions.c
5594         (mono_handle_exception_internal): Don't call
5595         mono_debugger_unhandled_exception() here.
5596
5597 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5598
5599         * mini.c aot-compiler.c: Update after the changes to 
5600         mono_marshal_get_runtime_invoke ().
5601
5602         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5603         Virtual generic methods might not have method->slot set, work around
5604         that.
5605
5606         * generics.cs: Add a test.
5607
5608 2009-03-02  Geoff Norton  <gnorton@novell.com>
5609
5610         * mini.c:
5611         * driver.c: Allow signal chaining of SIGFPE as well.
5612
5613 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5614
5615         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5616         this since it now receives the method not its generic context in the
5617         IMT reg.
5618
5619         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5620         generic/imt thunks where some entries branch through the vtable, while
5621         other entries branch directly.
5622
5623         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5624
5625         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5626         support for interface methods as well.
5627
5628         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5629         using the normal IMT thunks.
5630
5631         generics.cs: Add new tests.
5632         
5633         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5634         the generic inst to the generic imt thunks. This fixes AOT support, 
5635         improves consistency with the normal IMT thunks, and makes it easier to
5636         add support for interface generic virtual methods later.
5637
5638         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5639         
5640 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5641
5642         * driver.c (mono_set_signal_chaining): New public API function to enable
5643         signal chaining on POSIX platforms.
5644
5645         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5646         (si@lindenlab.com) to implement signal chaining. The original patch was
5647         contributed under the MIT X/11 license:
5648         https://bugzilla.novell.com/show_bug.cgi?id=318894
5649
5650 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5651
5652         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5653         too until it can be made to run on amd64.
5654
5655 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5656
5657         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5658         to  get_generic_context_from_code () + get_call_info () if possible.
5659
5660 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5661
5662         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5663         suspend-on-sigsegv functionality.
5664
5665         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5666         to suspend when a native SIGSEGV is received. This is useful for debugging
5667         crashes which don't happen under gdb, since a live process contains more
5668         information than a core file.
5669
5670         * mini-exceptions.c (mono_print_thread_dump): Use 
5671         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5672
5673         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5674
5675         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5676         
5677         * basic-float.cs: Disable the tests which currently fail on amd64.
5678
5679         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5680         value to mono_arch_patch_callsite () to fix crashes.
5681         
5682         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5683
5684 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5685
5686         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5687         nop code by patching the call address to point to the nullified class init
5688         trampoline, as the former does not seem to be safe on SMP machines.
5689
5690 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5691
5692         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5693         they were wrong.
5694
5695 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5696
5697         * basic-float.cs basic-calls.cs: Fix warnings.
5698
5699 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5700
5701         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5702         correct frame pointer in the LMF.  Should fix #478394.
5703
5704 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5705
5706         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5707
5708         * image-writer.c: Make the binary writer less verbose.
5709
5710 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5711
5712         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5713         are called from runtime invoke wrappers.
5714
5715 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5716
5717         * cpu-ppc.md (store_memindex): Increase the size of this.
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 long_conv_to_r_un and long_conv_to_r_un_2.
5724
5725         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5726         OP_LCONV_TO_R_UN.
5727
5728         Last fix for of #467201.
5729
5730
5731 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5732
5733         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5734
5735         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5736         and long_conv_to_r8_2:
5737
5738         Fixed part of #467201.
5739
5740 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5741
5742         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5743
5744         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5745         conversion to 32 bits.
5746
5747         * cpu-x86.md: Increase the size of int_conv_to_r4.
5748
5749         * basic-float.cs: Add a test for this.
5750
5751         Fixed part of #467201.
5752
5753 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5754
5755         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5756
5757         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5758         conversion to 64 bits.
5759
5760         * basic-float.cs: Add a test for this.
5761
5762         Fixed part of #467201.
5763
5764 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5765
5766         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5767
5768         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5769         This behavior is compatible with MS.
5770
5771         * iltest.il.in: Add a test for this.
5772
5773         Fixed part of #467201.
5774
5775 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5776
5777         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5778
5779         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5780         change the precision of the value.
5781
5782         * cpu-x86.md: Define len for float_conv_to_r4.
5783
5784         * basic-float.cs: Add a test for this.
5785
5786         Fixed part of #467201.
5787
5788 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5789
5790         * mini.c: Adjust locking order to the new semantics where the loader lock
5791         comes first.
5792
5793 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5794
5795         * aot-runtime.c:
5796         * mini-amd64.c:
5797         * mini-arm.c:
5798         * mini-ia64.c:
5799         * mini-mips.c:
5800         * mini-ppc.c:
5801         * mini-sparc.c:
5802         * mini-trampolines.c:
5803         * mini-x86.c:
5804         * mini.c:
5805         * tramp-alpha.c:
5806         * tramp-amd64.c:
5807         * tramp-arm.c:
5808         * tramp-hppa.c:
5809         * tramp-ia64.c:
5810         * tramp-mips.c:
5811         * tramp-ppc.c:
5812         * tramp-s390.c:
5813         * tramp-s390x.c:
5814         * tramp-sparc.c:
5815         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5816
5817 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5818
5819         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5820         as it is incorrect.
5821
5822 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5823
5824         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5825         for cctors if needed.
5826
5827 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5828
5829         * mini-ppc.c: Fix build on Darwin.
5830
5831 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5832
5833         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5834         version instead of 3 as valgrind doesn't like version 3.
5835
5836         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5837
5838         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5839         usable for hashing methods.
5840         (emit_extra_methods): Use the new hash to avoid putting every method in the
5841         same hash bucket.
5842
5843         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5844
5845         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5846         whenever a method ref could match a method.
5847         
5848         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5849         test to fail.
5850         
5851         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5852         methods refs.
5853
5854         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5855
5856         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5857         the encoding buffer.
5858
5859         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5860         mono_method_get_header () on inflated methods as an optimization.
5861
5862 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5863
5864         * ssa.c (fold_ins): Fix another crash if the instruction following the
5865         switch was optimized away.
5866
5867 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5868
5869         Contributed under the terms of the MIT/X11 license by Steven
5870         Munroe <munroesj@us.ibm.com>.
5871
5872         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5873
5874 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5875
5876         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5877         around the mono_domain_alloc calls, it is now done by the functions
5878         themselves.
5879
5880         * aot-compiler.c (compile_method): Only add wrappers referenced by
5881         the method if compiling with full AOT.
5882         (mono_compile_assembly): Error out if --aot=full is specified on
5883         a platform where it is not supported.
5884
5885         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5886         on ARM too.
5887
5888         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5889         AOT support.
5890
5891         * aot-runtime.c (load_named_code): Handle 
5892         mono_arm_throw_exception_by_token.
5893
5894         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5895
5896         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5897         unaligned.
5898
5899         * Makefile.am (fullaotcheck): Exit if a test fails.
5900
5901         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5902         on ARM.
5903         (mono_compile_assembly): Handle the assembler failing.
5904
5905         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5906         accepting subsections of .bss.
5907
5908         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5909         was optimized away.
5910
5911         * aot-compiler.c: Remove some unused includes.
5912         
5913         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5914         now in MonoImageWriter.
5915
5916         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5917         code sequence which matches a non-virtual call. Fixes #472654.
5918
5919 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5920
5921         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5922         xdebug code.
5923         
5924         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5925         use the image/dwarf writers directly.
5926
5927         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5928         field.
5929
5930         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5931         MonoDwarfWriter.
5932
5933         * image-writer.h: Fix some typos.
5934
5935         * dwarfwriter.h dwarfwriter.c: New files.
5936         
5937         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5938         separate module.
5939
5940         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5941         argument to return unwind info.
5942
5943         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5944
5945         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5946         
5947         * aot-runtime.c (decode_method_ref): Add a case for 
5948         MONO_AOT_METHODREF_WRAPPER_NAME.
5949
5950         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5951         for AOT.
5952
5953         * aot-compiler.c (encode_method_ref): Use the new constants.
5954
5955         * aot-runtime.c (decode_method_ref): Ditto.
5956
5957         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5958         be compiled, not the icall itself.
5959
5960 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5961
5962         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5963         using decode_method_ref ().
5964
5965         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5966         convert it to an in32. Fixes #475859.
5967
5968         * arrays.cs: Add a test.
5969
5970 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5971
5972         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5973         OP_LCONV_TO_U2.
5974
5975         * basic-long.cs: Add a test.
5976
5977 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5978
5979         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5980         remove the frame pointer in leaf methods which don't receive any
5981         arguments, don't throw exceptions and don't do dynamic stack
5982         allocations.
5983
5984 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5985
5986         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
5987         the fail_tramp changes. Hopefully fixes #475132.
5988
5989 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
5990
5991         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
5992         instead of mono_metadata_signature_dup_full.
5993
5994 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5995
5996         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
5997         for processing jump tables. Fixes #473787.
5998
5999 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6000
6001         * mini-generic-sharing.c: mini_method_get_context() just calls
6002         mono_method_get_context_general() now.
6003
6004         * mini.c, mini.h: Moved get_object_generic_inst(),
6005         construct_object_context_for_method() and
6006         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6007
6008 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6009
6010         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6011         basic block fell through to its successor bblock without a branch. Fixes
6012         #474718.
6013
6014         * iltests.il.in: Add a test.
6015         
6016         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6017         (can_encode_patch): We can now handle arrays of generic parameters and
6018         array methods.
6019
6020         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6021
6022         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6023         the AOT file to avoid some #ifdefs in aot-runtime.c
6024
6025         * mini.h: Bump AOT file format version.
6026
6027 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6028
6029         * Makefile.am (fullaotcheck): Make this run the tests.
6030
6031         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6032
6033 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6034
6035         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6036         individually.  Fixes #473482.
6037
6038 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6039
6040         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6041
6042 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6043
6044         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6045         (mono_compile_assembly): Hush compile warnings about
6046         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6047         code path.
6048
6049 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6050
6051         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6052
6053         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6054
6055         * aot-compiler.c: Fix arm support.
6056
6057         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6058         img_writer_emit_unset_mode () function.
6059
6060         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6061         (mono_unwind_get_dwarf_pc_reg): Ditto.
6062
6063         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6064         Move almost all platform specific code to a set of arch_ functions, 
6065         and document them to ease porting.
6066         
6067         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6068
6069         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6070
6071         * aot-compiler.c: Extract the image writing functionality into a separate
6072         module to reduce the size of this file.
6073
6074 2009-02-09  Geoff Norton  <gnorton@novell.com>
6075
6076         * mini-s390.c: Fix the signature of emit_sig_cookie.
6077
6078 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6079
6080         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6081
6082         * aot-runtime.c (is_shared_got_patch): Ditto.
6083
6084         * aot-runtime.c (load_named_code): Cope with the fact that 
6085         decode_got_entry () won't decode the patch fully if its corresponding got
6086         entry is already filled.
6087         
6088         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6089         Initialize *ji.
6090         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6091
6092         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6093         as the moving pointer instead of 'buf' for consistency with the rest of the
6094         codebase.
6095         (mono_arch_create_monitor_exit_trampoline): Ditto.
6096
6097         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6098         generic_class_init trampolines.
6099         (add_generic_class): Extract some code from add_generic_instances () into a
6100         separate function so it can be called from other places too.
6101         (compile_method): Call add_generic_class () for the classes of inflated methods
6102         referenced by the method.
6103         (can_encode_patch): Allow references to generic parameters.
6104
6105         * aot-runtime.c: Add support the patches required by the new trampolines.
6106         
6107         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6108         support.
6109
6110         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6111         full-aot support.
6112
6113         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6114         this from get_throw_pending_exception, make the signature full aot compatible.
6115
6116         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6117
6118         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6119
6120         * exceptions.cs: Add a test.
6121
6122 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6123
6124         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6125         use the DWARF_DATA_ALIGN constant instead.
6126
6127         * exception-<ARCH>.c: Update after the above change.
6128
6129         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6130         dwarf unwinder.
6131
6132         * mini-arm.c: Enable the dwarf unwinder.
6133
6134         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6135         instead of mono_class_setup_vtable ().
6136
6137 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6138
6139         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6140         dwarf unwinder.
6141
6142         * mini-x86.h: Enable the dwarf unwinder.
6143
6144 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6145
6146         Fix mcs/tests/test-7.cs
6147         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6148         2009-02-03.
6149
6150 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6151
6152         * mini.c (print_jit_stats): Remove some unused statistics.
6153
6154 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6155
6156         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6157
6158 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6159
6160         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6161         the method we get from mono_object_get_virtual_method() because
6162         that function does it properly, now.
6163
6164 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6165
6166         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6167         opcodes. Fixes #472775.
6168
6169 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6170
6171         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6172         fact that mono_find_jit_info() sometimes returns the context
6173         corresponding to the jit info in new_ctx.  Fixes #472600.
6174
6175 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6176
6177         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6178         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6179         klass->enum_basetype directly.
6180
6181         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6182         enum subtypes.
6183
6184         * unwind.c: Avoid 0 sized arrays.
6185
6186 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6187
6188         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6189         size on systems with 64k pages. Fixes #471389.
6190
6191 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6192
6193         Contributed under the terms of the MIT/X11 license by Steven
6194         Munroe <munroesj@us.ibm.com>.
6195
6196         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6197         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6198         necessary.
6199
6200 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6201
6202         Contributed under the terms of the MIT/X11 license by Steven
6203         Munroe <munroesj@us.ibm.com>.
6204
6205         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6206         comparison fix.
6207
6208         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6209         The trampoline can be longer on PPC64.
6210
6211 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6212
6213         Contributed under the terms of the MIT/X11 license by Steven
6214         Munroe <munroesj@us.ibm.com>.
6215
6216         * mini-ppc.c: Compiler warning fixes and trivial code
6217         simplifications.
6218
6219 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6220
6221         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6222         ins->dreg which could be a hardware register, not a vreg.
6223
6224         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6225         
6226         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6227         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6228
6229         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6230         
6231         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6232         ->dreg, that is not the vreg we are looking for.
6233
6234         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6235
6236         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6237         LIVERANGE_END.
6238
6239         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6240         strange crashes.
6241
6242 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6243
6244         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6245
6246         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6247         the line diff is 0.
6248
6249         * aot-compiler.c: Add xdebug support on x86.
6250
6251         * unwind.c: Add x86 support.
6252         
6253         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6254         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6255
6256         * mini.c (mini_method_compile): Ditto.
6257         
6258         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6259         the variable index.
6260
6261         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6262         which mimic .push_section/.pop_section in GAS.
6263         
6264         * aot-compiler.c: Emit precise live range information for variables.
6265
6266         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6267
6268         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6269         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6270         them.
6271
6272         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6273         the live ranges of variables.
6274
6275         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6276         of the variable in terms of native offsets.
6277
6278 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6279
6280         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6281         
6282 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6283
6284         Contributed under the terms of the MIT/X11 license by Steven
6285         Munroe <munroesj@us.ibm.com>.
6286
6287         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6288         order (offset then base reg) for ppc_load_multiple_regs.
6289         (emit_save_saved_regs) Correct operand order for
6290         ppc_store_multiple_regs.
6291         (mono_arch_get_call_filter): Correct operand order for
6292         ppc_load_multiple_regs.
6293
6294         * mini-ppc.c (emit_memcpy): Fix operand order for
6295         ppc_load_reg_update and ppc_store_reg_update.
6296         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6297         (mono_arch_emit_epilog): Correct operand order for
6298         ppc_load_multiple_regs.
6299
6300         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6301         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6302
6303 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6304
6305         * cpu-ppc64.md: Fixed storer4_memindex length.
6306
6307 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6308
6309         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6310         line number info.
6311         
6312         * aot-compiler.c (emit_line_number_info): Optimize this.
6313
6314 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6315
6316         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6317         
6318         * aot-compiler.c: Add debug info for methods without debug info by
6319         emitting an IL file and having the line number info referencing that file.
6320
6321         * aot-compiler.c: Optimize the size of the generated line number info.
6322
6323         * aot-compiler.c: Emit line number info in xdebug mode.
6324
6325         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6326         million arguments.
6327
6328 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6329
6330         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6331
6332         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6333         is used.
6334
6335 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6336
6337         * basic-calls.cs: Test for the weird crash found on arm.
6338         
6339 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6340
6341         * cpu-arm.md: Increase the size of storer8_membase_reg and
6342         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6343
6344         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6345         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6346         reg to LR otherwise we'll be loading/storing from just the offset.
6347
6348 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6349
6350         Question: if we are storing gint32's inside the "*native_offset",
6351         should we change the signature to "gint32 *native_offset" to
6352         ensure that we do not have type definition problems?
6353         
6354         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6355         an int * as this is what the other function expects, causes
6356         problems with Freescale's compiler that defined int32_t to be a
6357         long and makes int incompatible 
6358
6359 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6360
6361         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6362         filename conflict with bjam.
6363
6364 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6365
6366         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6367         as it might use decomposed ops.
6368
6369 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6370
6371         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6372
6373         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6374         is defined.
6375
6376         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6377
6378         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6379         offsets.
6380
6381         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6382         way registers are stored in MonoContext on arm.
6383
6384         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6385         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6386
6387         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6388
6389         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6390
6391         * mini.c (mini_init): Register mono_isfinite.
6392
6393         * jit-icalls.c (mono_isfinite): New jit icall.
6394
6395         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6396         
6397         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6398         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6399         the parent frame.
6400
6401 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6402
6403         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6404         separate frame and stack pointers, so we must use FP to find the register
6405         spill area.
6406         The FP reg is retrieved from the MonoContext::regs array.
6407
6408 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6409
6410         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6411         as FPA requires it.
6412
6413 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6414
6415         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6416         return R4 and R8 when not running under softfloat.
6417
6418         Fixes basic-calls.exe
6419
6420 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6421
6422         * mini-arm.c: Implement some overflow opcodes.
6423
6424 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6425
6426         * ssa.c: handle another alloca.h
6427
6428         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6429         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6430         MONO_ARCH_USE_SIGACTION. 
6431
6432         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6433         capability defines.
6434
6435         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6436
6437         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6438         PPC targets as sigaction does not exist on all platforms, define
6439         this on a per-platform basis.
6440
6441         Instead of erroring out if the platform is not defined, include
6442         mini-ppc-os.h, and expect that the OS specific setting provides
6443         the required information.   
6444
6445 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6446
6447         * aot-compiler.c: Fix --enable-minimal=aot.
6448
6449 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6450
6451         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6452         previous change.
6453
6454 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6455
6456         * exceptions-arm.c: Fix warnings.
6457
6458         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6459         ARM.
6460
6461         * mini-x86.c: Fix --enable-minimal=jit build.
6462
6463         * mini.c: Really fix --enable-minimal=jit build.
6464         
6465         * mini.c (construct_object_context_for_method): Move this outside
6466         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6467
6468         "Backported" of r124984 from 2.0 branch.
6469         
6470         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6471
6472         "Backport" of r124977 + r124978 from 2.0 branch.
6473         
6474         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6475         to avoid calling mono_exception_from_token () from the throw trampoline.
6476         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6477         for throwing corlib exceptions, this fixes full-aot support for corlib
6478         exceptions.
6479
6480         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6481
6482 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6483
6484         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6485         part of the changes to split the code in mini into operating
6486         system specific files.
6487
6488         This patch was done by copying mini.c to the respective files to
6489         preserve SVN history.
6490
6491 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6492
6493         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6494
6495 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6496
6497         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6498         remoting-invoke-with-check wrappers of shared methods.
6499
6500         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6501
6502 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6503
6504         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6505         optimization if the top of stack is the last instruction in the
6506         bblock.  Otherwise it might have been used after its definition.
6507         Fixes #469742.
6508
6509 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6510
6511         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6512         method as well when get_vcall_slot () fails to match a code sequence.
6513
6514         * mini-arm.c: Fix the android build, which doesn't have
6515         __aeabi_read_tp.
6516
6517 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6518
6519         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6520         the s390x build.
6521
6522 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6523
6524         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6525
6526 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6527
6528         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6529         and put its id into jinfo->used_regs. This is only used on amd64,
6530         which is currently the only platform generating unwind info.
6531
6532         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6533         the dwarf unwinder. This is required to correctly handle async exceptions
6534         like thread abort and stack overflows, which can happen while a method
6535         is in the middle of its prolog or epilog.
6536         
6537         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6538         the unwind info belonging to an AOTed method.
6539
6540         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6541         into cfg->unwind_ops.
6542         
6543         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6544
6545         * mini.c (mini_init): Call mono_unwind_init ().
6546         (mini_cleanup): Call mono_unwind_cleanup ().
6547
6548         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6549         unwind info to be shared between methods.
6550
6551         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6552         saved in the LMF.
6553
6554         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6555         get_throw_pending_exception () to avoid initialization races.
6556
6557         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6558         mono_arch_exceptions_init () function.
6559
6560         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6561
6562 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6563
6564         * mini.c (mono_get_domain_intrinsic): New helper function.
6565         (mono_get_thread_intrinsic): Ditto.
6566
6567         * mini-arm.c mini-ia64.c: Use the new helper functions.
6568         
6569         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6570         the last constrained_call change, since it is needed in the non-AOT
6571         case as well.
6572
6573         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6574         
6575         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6576         mono_get_lmf_addr () on arm eabi linux.
6577
6578 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6579
6580         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6581         code sequence which matches a non-virtual call.
6582
6583 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6584
6585         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6586         stack pointer (r1).
6587
6588 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6589
6590         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6591         runtime-invoke wrappers, since they are also shared based on signature.
6592
6593 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6594
6595         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6596         info from the (correct) context.
6597
6598 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6599
6600         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6601         
6602         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6603         using dwarf unwinding info. Not yet used.
6604
6605         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6606
6607 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6608
6609         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6610         descriptors.
6611
6612         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6613         special case and handle mono_arch_delegate_invoke_impl() returning
6614         function descriptors.
6615
6616         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6617         trampolines return function descriptors, too.
6618
6619 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6620
6621         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6622         out_of_line optimization.
6623
6624 2009-01-21  Martin Baulig  <martin@ximian.com>
6625
6626         * mini.h
6627         (MonoCompile): Added `disable_deadce_vars' to disable removing
6628         unused variables.
6629
6630         * mini.c
6631         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6632         inside the debugger.
6633
6634         * liveness.c (mono_analyze_liveness): Don't remove any unused
6635         variables if `cfg->disable_deadce_vars' is set.
6636
6637 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6638
6639         * method-to-ir.c: Only apply exception constructor optimization if
6640         the the method actually belongs to an exception class.  Fixes
6641         #467456.
6642
6643 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6644
6645         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6646         change inside a #ifdef __mono_ppc64__.
6647
6648         * aot-compiler.c (compile_method): Remove the previous limitation.
6649
6650         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6651         on type variables in AOTed code.
6652         
6653         * aot-compiler.c (compile_method): Skip generic methods having type 
6654         constraints on their generic parameters.
6655
6656         * aot-compiler.c (compile_method): Check for methods which cannot be
6657         encoded inside RGCTX_FETCH patches as well.
6658
6659         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6660         build.
6661
6662 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6663
6664         * method-to-ir.c: Force the vtable variable in shared generic code
6665         for the case that they might show up on a stack trace where they
6666         are needed.
6667
6668         * mini-exceptions.c: Save and use generic sharing info as well as
6669         IP in stack traces to resolve shared generic instantiations.
6670
6671 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6672
6673         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6674         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6675
6676 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6677
6678         * method-to-ir.c: Do generic sharing for array constructors.
6679
6680 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6681
6682         * mini-exceptions.c (mono_print_thread_dump): Add information
6683         about the thread state using wapi_current_thread_desc.
6684
6685 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6686
6687         * basic-simd.cs: Tests for the new constructors. 
6688
6689 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6690
6691         * mini-ops.h: Added OP_EXPAND_*
6692
6693         * cpu-x86.md: Same.
6694
6695         * mini-x86.c (mono_arch_output_basic_block): Same.
6696         
6697         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6698
6699 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6700
6701         * iltests.il.in: Add a test for #467385.
6702
6703 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6704
6705         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6706         thread been cleaned up is not the same currently in execution.
6707
6708         Fixes appdomain-unload crashes on windows, osx and linux variants
6709         without the __thread keyword.
6710
6711 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6712
6713         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6714         (koush@koushikdutta.com). Implement this for android.
6715
6716         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6717         begins with a digit.
6718
6719         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6720         mono_marshal_get_write_barrier ().
6721
6722 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6723
6724         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6725         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6726         that pass them on a register pair.
6727
6728         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6729         test was crashing due to that.
6730
6731 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6732
6733         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6734         trampoline code. Include ucontext.h only if available.
6735
6736 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6737
6738         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6739         and doesn't check whether it's sharable, like it was before
6740         removing the shared generics hash.  This brings IronPython
6741         performance back to what it was before that change.
6742
6743 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6744
6745         * method-to-ir.c: Handle delegate invocation optimization earlier,
6746         otherwise it would be handled (much more slowly) by the
6747         final/sealed optimization.
6748
6749 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6750
6751         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6752         domain is not set. Fixes #465864.
6753
6754 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6755
6756         * method-to-ir.c: Don't stop sharing of generic methods with catch
6757         clauses - we already handle those.
6758
6759 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6760
6761         * mini.c, mini.h: lookup_generic_method() is now
6762         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6763         making the shared_generics_hash obsolete.
6764
6765 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6766
6767         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6768         use the red zone.  Make room on the stack first and then use it,
6769         not the other way around.
6770
6771 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6772
6773         * mini.c (mini_init): Call mono_xdebug_init ().
6774
6775         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6776
6777 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6778
6779         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6780
6781         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6782         trampolines.
6783
6784         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6785         debug+unwind info for trampolines.
6786
6787         * mini.c (mono_create_unwind_op): New helper function.
6788
6789         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6790
6791 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6792
6793         * aot-compiler.c: Fix the build.
6794
6795 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6796
6797         * Makefile.am: Update dtrace-prelink.sh location.
6798
6799 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6800
6801         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6802         optimization. Fixes #464520.
6803
6804 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6805
6806         * mini-amd64.c : Adding code to save/restore non-volatile registers
6807            on Winx64.
6808
6809         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6810           registers on Winx64.
6811
6812         Contributed under MIT/X11 license.
6813
6814 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6815
6816         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6817         __GNUC_MINOR__ which can break when the major version changes.
6818
6819 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6820
6821         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6822
6823 2009-01-07  Geoff Norton  <gnorton@novell.com>
6824
6825         * helpers.c:  Allow mono -v -v -v to work on darwin.
6826
6827 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6828
6829         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6830           pattern. 
6831
6832         Contributed under MIT/X11 license.
6833
6834 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6835
6836         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6837         instead of directly accessing type->data.klass. Fixes #462016.
6838         (mono_allocate_stack_slots_full): Ditto.
6839
6840         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6841         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6842
6843         * aot-compiler.c (emit_plt): Fix ARM build.
6844
6845 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6846
6847         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6848         
6849         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6850         change.
6851
6852         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6853         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6854         #463357.
6855
6856         * iltests.il.in: Add a regression test.
6857
6858 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6859
6860         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6861
6862 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6863
6864         * basic-simd.cs: Add a regression test for #462457.
6865
6866 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6867
6868         * mini-ops.h: Add a definition of XPHI.
6869
6870         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6871
6872         * ssa.c (op_phi_to_move): Handle XPHI.
6873
6874         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6875
6876         Fixes #462457
6877
6878 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6879
6880         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6881
6882 2008-12-31  Geoff Norton  <gnorton@novell.com>
6883
6884         * mini-ppc.c: The prolog size allocated can be too small for darwin
6885         ppc32 under certain circumstances.  Also fix a small logic bug.
6886
6887 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6888
6889         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6890         while loading AOT methods.
6891
6892         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6893         since only the former is nulled out after a successful cast. This prevents
6894         crashes with rethrown exceptions when using --debug=casts.
6895
6896 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6897
6898         * mini.h: New macro for checking whether a method is final,
6899         i.e. whether the method or its class is marked final.
6900
6901         * method-to-ir.c: Use the new macro for all final-checks
6902         consistently.  Fixes the crash in the System.ServiceModel tests.
6903
6904 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6905
6906         * mini-exceptions.c (get_exception_catch_class): Corrected another
6907         overly strict assertion.
6908
6909 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6910
6911         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6912         Clobbering it is not allowed because the caller might use it as
6913         the vtable register in the interface call.
6914
6915 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6916
6917         * mini-exceptions.c (get_exception_catch_class): Corrected an
6918         overly strict assertion.
6919
6920 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6921         
6922         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6923
6924         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6925
6926         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6927
6928         * cpu-mips.md: correct lengths for certain long_ opcodes.
6929
6930         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6931
6932         * 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().
6933         
6934 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6935
6936         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6937         
6938 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6939         
6940         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6941         
6942 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6943
6944         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6945         next basic block.
6946         
6947 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6948
6949         * 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
6950
6951         * 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)
6952         
6953 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6954         
6955         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6956         
6957 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6958
6959         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6960         gshared code. Fixes #458947.
6961
6962         * generics.cs: Add a test.
6963
6964 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6965         
6966         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6967         
6968         * mini-mips.c: first pass n32 code generation.
6969
6970         * mini-mips.h: datatypes and defines for n32 support.
6971
6972         * exceptions-mips.c: first pass n32 code generation.
6973         
6974         * tramp-mips.c: first pass n32 code generation.
6975         
6976         * cpu-mips.md: add long_ opcodes.
6977         
6978 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6979
6980         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6981
6982         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6983         
6984         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6985         
6986         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6987
6988         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6989
6990         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6991
6992         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6993
6994         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6995
6996         * helpers.c: for mips/n32, don't pass -mips32 to objdump
6997
6998 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
6999
7000         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7001
7002 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7003
7004         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7005
7006 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7007
7008         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7009         descriptors for helper functions directly in front of the code.
7010
7011 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7012
7013         * method-to-ir.c: Removed an unnecessary assertion.
7014
7015 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7016
7017         * method-to-ir.c: Merge SGEN changes from the old JIT.
7018
7019 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7020
7021         * driver.c (compile_all_methods_thread_main): Handle failure of
7022         mono_get_method ().
7023
7024 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7025
7026         * mini-ppc.c: Merged with mini-ppc64.c.
7027
7028         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7029
7030         * Makefile.am: Use the same sources for PPC and PPC64.
7031
7032         * mini-ppc64.c: Removed.
7033
7034 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7035
7036         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7037         code to mono_bb_is_fall_through.
7038         
7039         * branch-opts.c (mono_remove_critical_edges): Same.
7040
7041 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7042
7043         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7044         expect that an OP_BR_REG will be there.
7045
7046 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7047
7048         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7049         for the many branch ops. The original check miss OP_BR_REG.
7050
7051         Fixes #457574.
7052         
7053 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7054
7055         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7056
7057 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7058
7059         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7060         while holding the aot lock.
7061
7062 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7063
7064         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7065         
7066 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7067
7068         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7069           to release all runtime callable wrappers held by the runtime.
7070
7071         Contributed under MIT/X11 license.
7072
7073 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7074
7075         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7076           for Winx64.
7077
7078         Contributed under MIT/X11 license.
7079
7080 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7081
7082         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7083         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7084
7085 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7086
7087         * cpu-mips.md: fix ckfinite length
7088
7089         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7090         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7091         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7092         
7093 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7094
7095         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7096         
7097 2008-12-08  Geoff Norton  <gnorton@novell.com>
7098
7099         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7100         size by 8 bytes as well.
7101
7102 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7103
7104         * basic-simd.cs: Fix method names for Vector16b.
7105         
7106 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7107
7108         * basic-simd.cs: Fix method names for Vector16sb.
7109
7110 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7111
7112         * basic-simd.cs: Fix method names for Vector8us.
7113         
7114 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7115
7116         * basic-simd.cs: Fix method names for Vector8s.
7117         
7118 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7119
7120         * basic-simd.cs: Fix method names for Vector4ui.
7121
7122 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7123
7124         * basic-simd.cs: Fix method names for Vector2l.
7125
7126 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7127
7128         * basic-simd.cs: Fix method names for Vector2d.
7129
7130 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7131
7132         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7133         that are extension methods.
7134
7135 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7136
7137         * basic-simd.cs: Fix method names for Vector4f.
7138
7139 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7140
7141         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7142         as such. Fixes #456669.
7143
7144 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7145
7146         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7147         
7148 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7149
7150         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7151         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7152         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7153         (mips_adjust_stackframe): handle FP spills
7154                 
7155         * mini-ops.h: add mips_mtc1_s2
7156         
7157         * cpu-mips.md: add mips_mtc1_s2
7158         
7159 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7160
7161         * unwind.c: New file, move the unwind info encoding functions here from
7162         aot-compiler.c, so they could be used at runtime too.
7163
7164 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7165
7166         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7167         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7168         
7169 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7170
7171         * mini-mips.c: cleanup warnings
7172         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7173         (mips_adjust_stackframe): handle case of taking the address of stack locals
7174         
7175 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7176
7177         * aot-compiler.c: Implement a few functions missing from the asm writer.
7178         (emit_method_code): Only write symbols for methods when using the bin
7179         writer, since the assembler can't deal with the characters in our method
7180         names.
7181
7182         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7183
7184         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7185         call.
7186
7187         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7188         a bit to also restore %rax.
7189
7190 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7191
7192         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7193
7194 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7195
7196         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7197         arguments.
7198
7199 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7200
7201         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7202
7203         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7204         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7205
7206         * exceptions-ppc64.c: Removed.
7207
7208         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7209
7210 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7211
7212         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7213         tramp-ppc64.c.
7214
7215         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7216
7217         * tramp-ppc64.c: Removed.
7218
7219 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7220
7221         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7222         the TYPESPEC table.
7223
7224 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7225
7226         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7227
7228         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7229         mini-ppc.h instead of mini-ppc64.h.
7230
7231         * mini-ppc64.h: Removed.
7232
7233 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7234
7235         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7236         
7237         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7238         
7239 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7240
7241         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7242         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7243         code easier.
7244
7245 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7246
7247         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7248
7249 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7250
7251         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7252
7253 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7254
7255         * basic-simd.cs: Tests for operator == and != on Vector4f.
7256
7257 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7258
7259         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7260
7261         * simd-intrinsics.c: Kill useless enum.
7262
7263 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7264
7265         * cpu-mips.md: add long_conv_to_ovf_i4_2
7266         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7267
7268 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7269
7270         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7271         
7272         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7273
7274 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7275
7276         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7277         
7278 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7279
7280         * basic-simd.cs: Add tests for new methods.
7281
7282 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7283
7284         * simd-intrinsics.c: Add support for operator == and !=
7285         on Vector4(u)i.
7286
7287         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7288
7289 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7290
7291         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7292
7293 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7294
7295         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7296
7297         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7298         MONO_PATCH_INFO_ICALL_ADDR.
7299
7300         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7301
7302         * aot-compiler.c: Resurrect full-aot support.
7303
7304 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7305
7306         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7307         
7308 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7309
7310         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7311         
7312 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7313
7314         * basic-simd.cs: Fix tests to work under ppc.
7315         Remove tests for methods that will be removed.
7316
7317 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7318
7319         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7320         generic type (via a typedef or typeref) correctly.
7321
7322 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7323
7324         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7325         diagnose an assertion failure.
7326
7327 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7328
7329         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7330         Fix trampoline size.
7331
7332         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7333         conversion opcodes are implemented natively instead via emulation.
7334
7335 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7336
7337         * cpu-mips.md: remove mips_xori
7338
7339         * mini-ops.h:  remove mips_xori
7340
7341         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7342
7343         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7344         
7345         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7346         
7347 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7348
7349         * cpu-mips.md: fix instruction lengths.
7350
7351         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7352
7353         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7354
7355         * mini-ops.h: fix slti / sltiu op profiles.
7356         
7357 2008-12-02  Martin Baulig  <martin@ximian.com>
7358
7359         * method-to-ir.c (mono_method_to_ir): Disable debugging
7360         information for the init locals block to make the debugger stop
7361         after all locals have been initalized.
7362
7363 2008-12-02  Martin Baulig  <martin@ximian.com>
7364
7365         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7366         running inside the debugger.
7367
7368 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7369
7370         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7371         is enabled.
7372
7373         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7374         alu->alu imm optimization which only shows if deadce is disabled.
7375
7376         * aot-compiler.c: Rename the function names for the binary and asm writers
7377         so they can coexist in the same process. Rework the xdebug code to use the
7378         asm writer. This avoids the need to call into the runtime to dump the
7379         debugging info. Add more debugging info for types.
7380
7381         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7382
7383         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7384         cpu description tables, they can't occur in cpu-<ARCH>.md.
7385
7386         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7387         the stack in CEE_LDFLDA. Fixes #450542.
7388
7389         * generics.cs: Add a new test.
7390
7391 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7392
7393         * mini-ops.h: updated MIPS opcodes
7394         * mini-mips.c: decompose long opts
7395         * mini-mips.h: decompose long opts
7396         
7397 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7398
7399         * cpu-mips.md: fix length on int_rem_un
7400         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7401         
7402 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7403
7404         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7405
7406         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7407
7408 2008-11-29  Martin Baulig  <martin@ximian.com>
7409
7410         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7411         mono_debug_using_mono_debugger() in addition to the
7412         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7413
7414 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7415
7416         * mini-ops.h: updated more MIPS opcodes
7417         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7418         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7419         
7420 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7421
7422         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7423
7424 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7425
7426         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7427         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7428         * mini-ops.h: correct selected mips opcode entries
7429         
7430 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7431
7432         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7433         make them work.
7434
7435 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7436
7437         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7438
7439 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7440
7441         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7442         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7443         * mini-mips.h: disable IMT
7444         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7445         
7446 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7447
7448         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7449
7450 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7451
7452         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7453
7454 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7455
7456         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7457         consistency.
7458
7459 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7460
7461         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7462         for Set/GetVector aligned versions.
7463
7464 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7465
7466         * basic-simd.cs: Add tests for Get/SetVector.
7467
7468 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7469
7470         * mini.c: Removed g_slist_append_mempool().  Now in
7471         metadata/mempool.c.
7472
7473 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7474
7475         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7476         size properly and make the bounds check optional.
7477
7478         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7479         for SetVector and IsAligned.
7480
7481 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7482
7483         * mini.c: Remove unused mono_normalize_opcodes () function.
7484
7485 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7486
7487         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7488         using the new atomic add ops now.
7489
7490         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7491         add.
7492
7493 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7494
7495         * mini-ppc64.c: Several fixes.
7496
7497 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7498
7499         * cpu-mips.md: added jump_table
7500         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7501
7502 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7503
7504         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7505
7506 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7507
7508         * mini-ops.h: corrected a handful of MIPS opcodes.
7509
7510 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7511
7512         * aot-compiler.c: MIPS to use ELF writer
7513
7514 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7515
7516         * mini-codegen.c: remove MIPS specific assert.
7517
7518 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7519
7520         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7521         fixes.  PPC64 now passes most of the runtime regressions.
7522
7523 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7524
7525         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7526         volatile intervals a bit.
7527
7528 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7529
7530         * basic-long.cs: New test case.
7531
7532 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7533
7534         * mini.c (mini_method_compile): Disable globalra for large methods for 
7535         now.
7536
7537         * regalloc2.c (order_moves): Add fp support.
7538
7539         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7540         source bblock ends with an OP_BR_REG.
7541
7542         * ratests.cs: Add a new test.
7543
7544 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7545
7546         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7547         sharing.  PPC64 now passes generics.exe.
7548
7549 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7550
7551         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7552
7553 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7554
7555         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7556         memory when mono_jit_info_table_find () can't find the method in the
7557         LMF case.
7558
7559         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7560         AOTed code too.
7561         
7562         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7563         writer too.
7564
7565 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7566
7567         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7568         Several fixes.  PPC64 now runs exceptions.exe and
7569         devirtualization.exe.
7570
7571 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7572
7573         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7574         arrays.exe and basic-math.exe.
7575
7576 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7577
7578         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7579         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7580
7581 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7582
7583         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7584
7585 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7586
7587         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7588
7589         * ir-emit.h: Move macros from method-to-ir.c to here.
7590
7591 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7592
7593         * mini-ops.h: Correct the long simd ops to use LREG.
7594
7595 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7596
7597         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7598         
7599         * mini-ops.h: Correct the dreg type of a few long opcodes.
7600
7601         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7602         Add netbsd support.
7603
7604 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7605
7606         * mini-ppc.c: remove negative stack references in epilog
7607         for platforms that don't support the red zone.
7608
7609 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7610
7611         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7612         point regs.  Now PPC64 passes basic-calls.exe.
7613
7614 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7615
7616         * basic-simd.cs: Add tests for accessors of Vector2l.
7617
7618 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7619
7620         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7621
7622         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7623         
7624         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7625
7626 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7627
7628         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7629         PPC64 passes basic-long.exe.
7630
7631 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7632
7633         * decompose.c: Decompose carry and overflow add on PPC64 like on
7634         other 64 bit archs.  Don't decompose sub at all on PPC64.
7635
7636         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7637         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7638         basic-long.exe.
7639
7640 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7641
7642         * basic-simd.cs: Add tests for accessors of Vector2d.
7643
7644 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7645
7646         * mini-ops.h: Added OP_INSERTX_R8_SLOW,.
7647
7648         * cpu-x86.md: Same.
7649
7650         * mini-x86.c (mono_arch_output_basic_block): Same.
7651         
7652         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector2d.
7653
7654 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7655
7656         * basic-simd.cs: Add tests for accessors of Vector4f.
7657
7658 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7659
7660         * mini-ops.h: Added OP_INSERTX_R4_SLOW,.
7661
7662         * cpu-x86.md: Same.
7663
7664         * mini-x86.c (mono_arch_output_basic_block): Same.
7665         
7666         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4f.
7667
7668 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7671
7672 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7673
7674         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7675
7676         * cpu-x86.md: Same.
7677
7678         * mini-x86.c (mono_arch_output_basic_block): Same.
7679         
7680         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7681
7682 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7683
7684         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7685
7686 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7687
7688         * simd-intrinsics.c: Enable setters for Vector16sb.
7689
7690 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7691
7692         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7693
7694         * cpu-x86.md: Same.
7695
7696         * mini-x86.c (mono_arch_output_basic_block): Same.
7697         
7698         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7699
7700 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7701
7702         * simd-intrinsics.c: Implement setter for Vector8us.
7703
7704 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7705
7706         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7707         for dead variables.
7708
7709 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7710
7711         * mini-ppc.c: remove references to the red zone in the prolog
7712         (for systems that don't support it).
7713
7714 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7715
7716         * cpu-ppc64.md: Fixed a few instruction lengths.
7717
7718         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7719         now.
7720
7721 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7722
7723         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7724         basic.exe now.
7725
7726 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7727
7728         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7729
7730 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7731
7732         * mini-ops.h: Added OP_INSERT_I2.
7733
7734         * cpu-x86.md: Same.
7735
7736         * mini-x86.c (mono_arch_output_basic_block): Same.
7737         
7738         * simd-intrinsics.c: Implement setter for Vector8s.
7739
7740         * simd-methods.h: Add the names of get setters of Vector8s.
7741
7742 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7743
7744         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7745         
7746         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7747         parameters.
7748
7749         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7750
7751 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7752
7753         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7754         for PPC64.  An empty program runs now.
7755
7756 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7757
7758         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7759
7760         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7761         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7762         info for JITted code is emitted into a shared library, loadable into gdb.
7763
7764 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7765
7766         * Makefile.am: Changes to build PPC64.
7767
7768         * mini-arch.h: Include mini-ppc64.h on PPC64.
7769
7770 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7771
7772         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7773         in PPC code up to r119147.
7774
7775 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7776
7777         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7778         cpu-ppc64.md: Changes for PPC64.
7779
7780         Based on code submitted by andreas.faerber@web.de at
7781         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7782         X11/MIT license.
7783
7784 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7785
7786         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7787         cpu-ppc64.md: Copied from the corresponding PPC files from
7788         r118846.
7789
7790 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7791
7792         * mini-ops.h: Added OP_ROUND.
7793
7794         * cpu-x86.md: Added round.
7795
7796         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7797
7798         * basic-math.cs: Added test_0_round to test rounding.
7799
7800         Contributed under MIT/X11 license.
7801
7802 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7803
7804         * aot-compiler.c : Fix the Winx64 build.
7805
7806         Contributed under MIT/X11 license.
7807
7808 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7809
7810         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7811         in OP_EXTRACT_R8 to avoid possible stack corruption.
7812
7813 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7814
7815         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7816
7817         * cpu-x86.md: Added extract_r8.
7818
7819         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7820         
7821         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7822         a couple of OP_EXTRACT_I4.
7823
7824         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7825
7826         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7827
7828 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7829
7830         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7831         and not 4.1. 
7832
7833 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7834
7835         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7836         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7837
7838         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7839         are not needed any more.
7840
7841         * mini.h: Remove the unused INS_LIST macros.
7842
7843         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7844         longer needed.
7845
7846         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7847         ir-emit.h.
7848
7849         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7850         mono_alloc_ireg () instead.
7851
7852         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7853         macros.
7854
7855         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7856         on amd64.
7857
7858         * aot-runtime.c (load_aot_module): Disable AOT when running under
7859         CAS.
7860
7861         * mini-amd64.h: Change the monitor fastpath defines to check for
7862         !PLATFORM_WIN32 so they work on *bsd too.
7863
7864         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7865
7866         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7867
7868         * mini.h (MonoCompile): Remove new_ir flag.
7869
7870         * regalloc.h regalloc.c: Remove unused code.
7871
7872         * cpu-*.md: Remove more unused opcodes.
7873
7874         * simple-cee-ops.h simple-mini-ops.h: Removed.
7875
7876         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7877         
7878 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7879
7880         * aliasing.h: Removed.
7881
7882         * *.c: Remove references to aliasing.h and inssel.h.
7883
7884         * mini.c: Remove additional unused functions.
7885
7886         * mini-ops.h cpu-*.md: Remove unused opcodes.
7887
7888 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7889
7890         Remove the old JIT code.
7891
7892         * inssel*.brg: Removed.
7893
7894         * ssa.c abcremoval.c aliasing.c: Removed.
7895
7896         * ssa2.c: Renamed to ssa.c.
7897
7898         * abcremoval2.c: Renamed to abcremoval.c.
7899
7900         * *.c: Removed all !cfg->new_ir code.
7901
7902         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7903         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7904
7905         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7906         
7907 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7908
7909         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7910         to simplify the code and cut back on the number of global symbols in the AOT
7911         file.
7912         
7913         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7914
7915 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7916
7917         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7918         with the got/got_info tables.
7919
7920         * mini.h: Bump AOT file format version.
7921         
7922         * unwind.h: New file, contains definitions for stack unwinding.
7923
7924         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7925         to cfg->unwind_ops.
7926         
7927         * aot-compiler.c: Generalize the emitting of unwind information to use the
7928         information in cfg->unwind_ops.
7929
7930         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7931
7932         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7933         AOT method frames. Enable writing symbols for methods by default.
7934
7935 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7936
7937         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7938         and make it work with vectors of element sizes 1, 2 and 4.
7939
7940         * simd-intrinsics.c: Enable getter for all vectors with element size
7941         1, 2 or 4.
7942
7943         * simd-methods.h: Add the names of other getters.
7944
7945         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7946
7947         * cpu-x86.md: Same.
7948
7949         * mini-x86.c: Same.
7950
7951 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7952
7953         * mini-ppc.h: portability fix.
7954
7955 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7956
7957         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7958         buggy and will overwrite it.
7959
7960 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7961
7962         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7963         Use it to emit local symbols for all methods so AOTed methods show up with
7964         their full name in gdb/valgrind output.
7965
7966 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7967
7968         * mini-ppc.c: portability fixes.
7969
7970 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7971
7972         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7973         entries out of the if (!generic_shared...) code so it is always done.
7974         (mono_class_init_trampoline): Do the patching when running under valgrind
7975         too, newer versions of valgrind have no problems with it.
7976
7977 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7978
7979         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7980         further sections.
7981
7982 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7983
7984         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7985         filters.
7986
7987 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7988
7989         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
7990
7991 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
7992
7993         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
7994
7995         * cpu-x86.md: Same.
7996
7997         * mini-x86.c: Same.
7998
7999         * simd-intrinsics.c: Same.
8000
8001 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8002
8003         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8004
8005 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8006
8007         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8008         to work with more Vector types.
8009
8010 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8011
8012         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8013         store the elemens directly instead of using and intermediate.
8014
8015 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8016
8017         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8018
8019         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8020         to preserve %eax for aot plt trampolines.
8021
8022         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8023         (encode_method_ref): Flag synchronized methods so they won't go through
8024         the AOT trampoline.
8025
8026         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8027         wrappers.
8028
8029         * cpu-ia64.md (jmp): Increase max length.
8030
8031 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8032
8033         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8034         open generic classes.
8035
8036         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8037
8038         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8039         box+brtrue optimization since it causes test failures on x86.
8040
8041 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8042
8043         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8044
8045         * cpu-x86.md: Same.
8046
8047         * mini-x86.c: Same.
8048
8049         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8050         for simd ctor values. 
8051
8052         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8053         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8054
8055 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8056
8057         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8058         LogicalRightShift.
8059
8060         * simd-instrincs.c: Same.
8061
8062         * basic-simd.cs: Same.
8063
8064 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8065
8066         * ratests.cs: Add more tests.
8067
8068         * regalloc2.c (add_spill_code): Handle more corner cases.
8069
8070 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8071
8072         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8073         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8074         both the source an destination of an instruction.
8075
8076 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8077
8078         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8079         wapihandles.c: more portability changes.
8080
8081 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8082
8083         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8084         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8085         safe to execute in a signal handler and the kernel provides better
8086         the info in /proc/self/smaps. Avoid the assert on sigaction during
8087         cleanup.
8088
8089 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8090
8091         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8092         do the bblock linking hack if it is actually needed.
8093
8094         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8095         up linking.
8096
8097         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8098         crash problem is fixed.
8099
8100         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8101         bblocks.
8102
8103         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8104         for catch clauses.
8105         (mini_method_compile): Set the starting value of next_vreg to 
8106         MAX_IREGS + MAX_FREGS when using globalra.
8107
8108         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8109         filter clauses with BB_EXCEPTION_HANDLER.
8110
8111         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8112
8113 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8114
8115         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8116         space for stdcall.  Fixes regressions on Win32.
8117
8118 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8119
8120         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8121         bblocks.
8122         (linear_scan): Remove an assert which doesn't seem to be needed.
8123
8124         * local-propagation.c (mono_local_deadce): Avoid a call to
8125         MONO_DELETE_INS which would screw up the instruction linking.
8126
8127         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8128
8129         * regalloc2.c: Upgrade to work the current JIT code.
8130
8131 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8132
8133         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8134         case.
8135
8136         * aot-runtime.c: Remove some dead code.
8137
8138         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8139         consistency.
8140         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8141
8142         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8143         trampolines using sscanf since atoi doesn't work on large unsigned values.
8144
8145         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8146         Initialize code_size.
8147
8148 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8149
8150         * method-to-ir.c (mini_emit_inst_for_method): Make
8151         Interlocked.CompareExchange work for Int arguments on 32 bit
8152         archs, as well.
8153
8154 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8155
8156         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8157
8158 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8159
8160         * main.c Fix MSVC build.
8161
8162         Contributed under MIT/X11 license.
8163
8164 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8165
8166         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8167         alignment larger than 8 bytes are aligned correctly, too.
8168
8169         * mini.c: Honor the min_align field of MonoClass when laying out
8170         the stack.
8171
8172 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8173
8174         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8175
8176         * aot-compiler.c (emit_plt): Fix a warning.
8177         
8178         * aot-compiler.c: Implement ARM support in the binary writer.
8179
8180 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8181
8182         * basic-simd.cs: Add test for getter with byref arg.
8183         Fix the naming of a few tests.
8184         Add missing checks to a test.
8185
8186 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8187
8188         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8189
8190         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8191         most of the full-aot support for monitor enter/exit trampolines.
8192
8193         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8194         enter/exit trampoline creation functions.
8195
8196         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8197         make dist.
8198
8199 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8200
8201         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8202         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8203         implement the needed functionality without adding crap to the runtime.
8204
8205 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8206
8207         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8208         non-x86 builds.
8209
8210         * mini.c (mono_build_date): New global version holding the build date in
8211         string format.
8212         
8213         * Makefile.am (buildver.c): Generate a file containing the build date.
8214
8215         * main.c: Set the build date from the generated file.
8216
8217         * mini.c (mono_get_runtime_build_info): New helper function returning build
8218         information in a string format.
8219         
8220         * driver.c (mono_main): Print the build date in --version.
8221
8222         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8223         file when the bind-to-runtime-version option is used.
8224
8225 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8226
8227         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8228
8229 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8230
8231         * simd-methods.h: Rename prefetch methods.
8232
8233         * simd-intrinsics.c: Same.      
8234
8235 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8236
8237         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8238         sizes.
8239
8240 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8241
8242         * aot-compiler.c: Use the bundled elf header files instead of depending on
8243         the system one.
8244         
8245         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8246         mempool.
8247
8248         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8249         on every call.
8250
8251 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8252
8253         * cpu-x86.md: Add store nta ops.
8254
8255         * mini-ops.h: Same.
8256
8257         * mini-x86.c: Same.
8258
8259         * mini.h: Add an enum for simd prefetch modes.
8260
8261         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8262         of store. Use the changed code to support store nta.
8263
8264         * simd-intrinsics.c: Add prefetch ops for all vector types.
8265
8266 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8267
8268         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8269         threads.
8270         
8271         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8272         names.
8273
8274         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8275         trampolines.
8276
8277 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8278
8279         * mini-x86.c: Fixed commit.
8280
8281 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8282
8283         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8284
8285 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8286
8287         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8288         and MONITOR_EXIT, for the ASM fastpaths.
8289
8290         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8291         available.
8292
8293         * mini.c, patch-info.h: Signature and patch infos for
8294         Monitor.Enter/Exit trampolines.
8295
8296         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8297
8298         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8299         Monitor.Enter/Exit ASM fastpath for Linux.
8300
8301 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8302
8303         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8304
8305         * objects.cs: Add a new test.
8306         
8307         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8308
8309         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8310         if MONO_LOG_LEVEL is set.
8311
8312         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8313
8314         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8315
8316         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8317         
8318         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8319         of file offsets. Align the sections belonging to the data segment to 
8320         PAGESIZE.
8321
8322 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8323
8324         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8325         elf.h. Port it to amd64.
8326
8327 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8328
8329         * driver.c: Enable SIMD by default.
8330
8331 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8332
8333         * cpu-x86.md: Add prefetch op.
8334
8335         * mini-ops.h: Same.
8336
8337         * mini-x86.c: Same.
8338
8339         * mini.h: Add an enum for simd prefetch modes.
8340
8341         * simd-methods.h: Add prefetch function names.
8342
8343         * simd-intrinsics.c: Add prefetch ops for all vector types.
8344
8345 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8346
8347         * aot-compiler.c (emit_bytes): Speed this up a little.
8348
8349 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8350
8351         * aot-compiler.c: Add JIT time etc. statistics.
8352         
8353         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8354
8355         * mini.h (MonoCompile): Add 'got_offset' field.
8356
8357         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8358         method_got_offsets array.
8359
8360         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8361         wrappers.
8362
8363         * aot-compiler.c (compile_method): Add generic method instances referenced
8364         by the method to the list of methods to be compiled, this is required so if
8365         A<T> references B<T>, and another assembly references A<int>, then it will
8366         also get a copy of B<int>.
8367
8368         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8369         when checking for monitor enter/exit.
8370
8371 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8372
8373         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8374         for Monitor.Enter and Monitor.Exit if enabled.
8375
8376         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8377         Solaris.
8378
8379 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8380
8381         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8382         of an OP_MOVE. Fixes #440046.
8383
8384         * basic-long.cs: Add a new test.
8385
8386 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8387
8388         * mini.h: Add synchronization note for the managed counter-part.
8389
8390         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8391         returns the simd caps of the current cpu.
8392
8393 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8394
8395         * basic-simd.cs: Remove Console.WriteLine.
8396
8397 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8398
8399         * basic-simd.cs: New tests for Vector2ul.
8400
8401 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8402
8403         * simd-intrinsics.c: Add new vector type Vector2ul.
8404
8405 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8406
8407         * basic-simd.cs: New tests for Vector2l.
8408
8409 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8410
8411         * cpu-x86.md: Add long version of most packed int ops.
8412
8413         * mini-ops.h: Same.
8414
8415         * mini-x86.h: Same.
8416
8417         * simd-intrinsics.c: Add new vector type Vector2l.
8418
8419 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8420
8421         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8422
8423         * simd-methods.h: Remove SN_op_BitwiseXor.
8424
8425 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8426
8427         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8428         alignment.
8429
8430 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8431
8432         * basic-simd.cs: Test for Vector2d.
8433
8434         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8435         value.
8436
8437 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8438
8439         * cpu-x86.md: Add double version of all packed float ops.
8440
8441         * mini-ops.h: Same.
8442
8443         * mini-x86.h: Same.
8444
8445         * simd-intrinsics.c: Add new vector type Vector2d.
8446
8447         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8448
8449         * simd-methods.h: Add Duplicate.
8450
8451 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8452
8453         * basic-simd.cs: Test for packing with signed saturation.
8454
8455 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8456
8457         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8458         found in the TYPESPEC table.
8459
8460 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8461
8462         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8463         too.
8464
8465         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8466
8467         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8468         instead of the RVA, since the RVA can be changed by tools like the cil 
8469         stripper.
8470
8471         * method-to-ir.c (mono_method_to_ir2): Ditto.
8472
8473         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8474         (deserialize_variable): Ditto.
8475
8476 2008-10-25  Martin Baulig  <martin@ximian.com>
8477
8478         * debug-mini.c (write_variable): Use
8479         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8480
8481 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8482
8483         * cpu-x86.md: Add unsigned variants of packd and packw.
8484
8485         * mini-ops.h: Same.
8486
8487         * mini-x86.h: Emit the right instruction for packd and packw.
8488         Add unsigned variants of packd and packw.
8489
8490         * simd-intrinsics.c: Packd and packw were used in place of their
8491         unsigned variants. Change that.
8492         Add intrinsics for (Signed)PackWithSignedSaturation.
8493
8494         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8495
8496 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8497
8498         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8499
8500 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8501
8502         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8503
8504         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8505
8506         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8507         sse instructions.
8508
8509         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8510
8511 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8512
8513         * method-to-ir.c, mini.c: Special casing for the synchronized
8514         wrapper for the ldtoken+GetTypeFromHandle case.
8515
8516 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8517
8518         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8519
8520         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8521         created/split bblocks.
8522
8523 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8524
8525         * mini-ops.h: Add packed signed mul high.
8526         
8527         * cpu-x86.md: Same.
8528
8529         * mini-x86.c (mono_arch_output_basic_block): Same.
8530
8531         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8532
8533         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8534
8535 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8536
8537         * basic-simd.cs: Tests for Vector16sb.
8538
8539 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8540
8541         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8542
8543 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8544
8545         * mini-ops.h: Add packed signed min, max and compare greater.
8546         
8547         * cpu-x86.md: Same.
8548
8549         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8550         saturation.
8551
8552         * simd-methods.h: Add CompareGreaterThan.
8553
8554         * simd-methods.h: Remove CompareEquals.
8555
8556         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8557
8558         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8559
8560         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8561         CompareEqual.
8562
8563 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8564
8565         * basic-simd.cs: Fix tests due to change in the API.
8566
8567 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8568
8569         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8570
8571 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8572
8573         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8574
8575         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8576         inst_offset as this has invalid values for LDADDR.
8577
8578 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8579
8580         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8581
8582         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8583
8584 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8585
8586         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8587         for accessing field->data.
8588
8589 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8590
8591         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8592
8593 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8594
8595         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8596
8597         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8598
8599 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8600
8601         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8602         from the cfg mempool.
8603
8604 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8605
8606         * basic-simd.cs: Tests for new methods in Vector8us.
8607
8608 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8609
8610         * mini-ops.h: Add multiply and store high.
8611         
8612         * cpu-x86.md: Same.
8613
8614         * mini-x86.c (mono_arch_output_basic_block): Same.
8615
8616         * simd-methods.h: Same.
8617
8618         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8619         and CompareEqual.
8620
8621 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8622
8623         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8624         mono_class_setup_vtable ().
8625
8626         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8627         mono_class_get_vtable_entry () for accessing klass->vtable.
8628
8629         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8630
8631         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8632         found.
8633
8634         * method-to-ir.c (mono_save_token_info): Don't save references made from
8635         wrappers.
8636
8637         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8638         of generic instances.
8639
8640         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8641
8642 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8643
8644         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8645         OP_JMP depends on the method signature.  Calculate it properly.
8646
8647 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8648         
8649         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8650         called directly.
8651
8652         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8653         instances.
8654         (emit_extra_methods): Add another table mapping method indexes to 
8655         offsets in the extra_method_info table.
8656
8657         * mini.h: Bump AOT file format version.
8658         
8659         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8660         and mono_aot_get_method_from_token () into one function.
8661
8662 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8663
8664         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8665         separate counter.
8666
8667 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8668
8669         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8670         methods.
8671
8672         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8673         disable_aot.
8674
8675         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8676
8677         * mini.h: Bump aot file format version.
8678
8679         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8680         AOT file can contain native code for methods which are not in the METHOD
8681         table. Generate code for non-sharable generic instances of generic methods
8682         found in the METHODSPEC table.
8683         
8684         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8685         encoding generic type handles.
8686
8687         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8688         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8689
8690         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8691         macros + MONO_ADD_INS.
8692
8693         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8694         context as well.
8695
8696         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8697
8698         * mini.h: Bump aot file format version.
8699
8700         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8701
8702 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8703
8704         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8705         platforms, with definable stack alignment value.  Set to 16 now
8706         for all platforms.
8707
8708         * mini.c, mini.h, driver.c: Command line option for disabling
8709         stack alignment.
8710
8711 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8712
8713         * basic-simd.cs: Tests for new methods in Vector4ui.
8714
8715 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8716
8717         * mini-ops.h: Add packed int shuffle.
8718         
8719         * cpu-x86.md: Same.
8720
8721         * mini-x86.c (mono_arch_output_basic_block): Same.
8722
8723         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8724         extract mask, max, min, shuffle.
8725
8726         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8727
8728 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8729
8730         * basic-simd.cs: Tests for new methods in Vector8us.
8731
8732 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8733
8734         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8735         RuntimeTypeHandle, not a TypedReference.
8736
8737 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8738
8739         * simd-intrinsics.c: remove relocations.
8740
8741 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8742
8743         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8744         optimizations from the x86 backend.
8745
8746 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8747
8748         * simd-methods.h, simd-intrinsics.c: debloat method names and
8749         prepare for no relocations.
8750
8751 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8752
8753         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8754         
8755         * cpu-x86.md: Same.
8756
8757         * mini-x86.c (mono_arch_output_basic_block): Same.
8758
8759         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8760         extract mask, max, min and sum of absolute differences.
8761
8762         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8763         method name.
8764
8765 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8766
8767         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8768         Renamed one test for consistency.
8769
8770 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8771
8772         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8773         fix to the code that deal with other blocks.
8774
8775 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8776
8777         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8778
8779 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8780
8781         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8782         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8783         able to process the source reg.
8784
8785 2008-10-16  Martin Baulig  <martin@ximian.com>
8786
8787         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8788
8789         * inssel.brg: Add `OP_HARD_NOP'.
8790
8791         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8792
8793         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8794         `OP_HARD_NOP' instruction when running inside the debugger.
8795
8796         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8797         `OP_HARD_NOP' instruction when running inside the debugger.
8798
8799 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8800
8801         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8802         now works. The issue with the regalloc tripping up no longer
8803         happens.
8804
8805         * simd-intrinsics.c (load_simd_vreg): Same.
8806
8807 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8808         
8809         * basic-simd.cs: Tests for new Vector8ui methods.
8810
8811 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8812
8813         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8814         only for type. This fixes crashes where MonoInst::klass is checked
8815         for ops of type != VTYPE or OBJ.
8816
8817         * simd-intrinsics.c (load_simd_vreg): Same.
8818
8819 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8820
8821         * mini-ops.h: Add ops for packed shuffle/max/avg and
8822         extract mask.
8823         
8824         * cpu-x86.md: Same.
8825
8826         * mini-x86.c (mono_arch_output_basic_block): Same.
8827
8828         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8829         extract mask.
8830
8831         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8832         to emit extract mask op.
8833
8834         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8835         to emit word shuffles.
8836
8837 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8838
8839         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8840         the largest alignment needed by a variable, but at least
8841         sizeof(gpointer).
8842
8843 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8844
8845         * basic-simd.cs: Tests for the fixes in the last commit.
8846
8847 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8848
8849         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8850         no longer handles STACK_PTR input.
8851
8852         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8853
8854         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8855         get_simd_vreg   but handles STACK_PTR input.
8856
8857         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8858         as the input can be an arbitrary pointer.
8859
8860         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8861         LDADDR local optimization directly otherwise use a store op.
8862
8863 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8864
8865         * basic-simd.cs: Tests for dup low and dup high.
8866
8867 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8868
8869         * mini-ops.h: Add dup low and dup high ops.
8870         
8871         * cpu-x86.md: Same.
8872
8873         * mini-x86.c (mono_arch_output_basic_block): Same.
8874
8875         * simd-intrinsics.c (vector4f_intrinsics): Same.
8876
8877 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8878
8879         * basic-simd.cs: Tests for recently added functionality.
8880
8881 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8882
8883         * mini-ops.h: Add remaining sse1 fp ops.
8884         
8885         * cpu-x86.md: Add remaining sse1 fp ops.
8886
8887         * mini-x86.c (mono_arch_output_basic_block): Same.
8888
8889         * mini.h: Add enum for simd FP compare conditions.
8890
8891         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8892
8893         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8894         so the backed can generate the appropriate op.
8895
8896 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8897         This patch squeese one more byte from the SimdIntrinsc struct.
8898
8899         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8900         a a shift amount intead of simply or'ing it.
8901
8902         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8903
8904         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8905         byte so we can have an aditional flags field without increasing struct size.
8906
8907         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8908         against the simd_supported_versions bitmask.
8909
8910         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8911
8912 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8913
8914         * mini.c: remove rawbuffer code (the only use here is unsafe because
8915         it takes locks during signal handling and the kernel now provides much
8916         better info in proc/pid/smaps these days).
8917
8918 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8919
8920         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8921         OP_X86_PUSH_OBJ. Fixes #434620.
8922
8923         * objects.cs: Add a test.
8924         
8925 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8926
8927         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8928         that the packuswb/packusdw don't work with unsigned numbers for what
8929         would be negative numbers in signed format.
8930
8931         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8932         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8933
8934         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8935
8936         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8937
8938         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8939
8940         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8941
8942         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8943         add more ops.
8944
8945         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8946         version as the enum in mini.h.
8947
8948         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8949         for sse3 ops, check the simd_version field if present. This way the code
8950         works with all versions of sse.
8951
8952 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8953
8954         * simd-intrinsics.c: Fixed intrinsic name typo.
8955
8956         * mini.h: Added missing simd exported function.
8957
8958         * basic-simd.cs: Added tests for Vector4ui.
8959         Fixed broken test for Vector16b.
8960
8961 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8962
8963         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8964         the max length to 64.
8965
8966 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8967
8968         * method-to-ir.c: Only do the fast virtual generic method call for
8969         non-wrapper methods.
8970
8971         * mini.h, mini-trampolines.c: The new generic virtual remoting
8972         trampoline handles virtual method calls via the vtable (as done by
8973         the fast virtual generic method calls) to remoting proxies.
8974
8975         * mini.c (mono_jit_create_remoting_trampoline): For generic
8976         methods reate a generic virtual remoting trampoline.
8977
8978         * mini-amd64.h: Enable fast virtual generic method calls again.
8979
8980 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8981
8982         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8983         restore registers when doing tail calls.
8984
8985 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8986
8987         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
8988         Vector4ui.
8989
8990 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8991
8992         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
8993
8994 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8995
8996         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
8997
8998 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8999
9000         * basic-simd.cs: Retrofit for API changes.
9001
9002 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9003
9004         * mini-ppc.c: Handle integer stack arguments for tail calls.
9005
9006 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9007
9008         * optflags-def.h: Removed sse3 optimization.
9009
9010         * driver.c: Same.
9011
9012         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9013         sse3.
9014
9015         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9016
9017         * mini.h: Added enumeration with simd versions.
9018
9019         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9020         for detecting SSE3.
9021
9022         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9023
9024         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9025
9026 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9027
9028         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9029
9030         * basic-simd.cs: Fixed test naming.
9031
9032 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9033
9034         * mini-ops.h: Added ops for packed and saturated math, shifts
9035         and packing/unpacking.
9036
9037         * cpu-x86.md: Added descriptors for the above ops.
9038
9039         * mini-x86.c: Added code to emmit the above ops.
9040
9041         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9042
9043 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9044
9045         * aot-compiler.c (compile_method): Enable AOT for generic code.
9046
9047         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9048
9049 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9050
9051         * mini.c: add a workaround for a common screwup that ends up blamed
9052         to mono (other processes blocking signal delivery).
9053
9054 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9055
9056         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9057         in the LDFLD/STFLD opcodes. Fixes #432673.
9058
9059         * iltests.il.in: Add a new test.
9060
9061 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9062
9063         * mini-arm.c: attach the thread in unmanaged->managed transitions
9064         using delegates (bug #433148).
9065
9066 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9067
9068        * basic-simd.cs: Use new ShuffleSel constants.
9069
9070 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9071
9072         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9073
9074         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9075         only disable simd intrinsics if no sse2 is detected.
9076
9077         * optflags-def.h: Added sse3.
9078
9079         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9080         is disabled.
9081
9082 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9083
9084         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9085         when adding delegate-invoke wrappers.
9086
9087 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9088
9089         * Makefile.am: Reenable the simd tests.
9090
9091 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9092
9093         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9094           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9095           other vreg is allocated to that hreg.
9096
9097         Contributed under MIT/X11 license.
9098
9099 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9100
9101         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9102         yet checked in.
9103
9104 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9105
9106         * basic-simd.cs: New test suite for SIMD intrinsics.
9107
9108         * Makefile.am: Added new tests.
9109
9110 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9111
9112         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9113
9114         * mini-ops.h: Same.
9115
9116         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9117
9118         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9119         using SSE2 aware opcodes.
9120
9121         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9122         is enabled, this code path is only reachable if conversion ops are emmited after
9123         mono_method_to_ir.
9124
9125         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9126
9127         This optimization saves 6 bytes per conversion against the old version.
9128
9129 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9130
9131         * aot-compiler.c (compile_method): Don't skip methods referencing 
9132         generic methods without a corresponding entry in token_info_hash, since
9133         encode_method_ref () can handle all generic methods now.
9134
9135         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9136         generic context is set.
9137         
9138         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9139         generic sharing of LDTOKEN.
9140
9141 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9142
9143         * mini-amd64.h: Temporarily disabled fast virtual generic method
9144         calls because it breaks the System.Runtime.Remoting tests.
9145
9146 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9147
9148         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9149
9150         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9151         so inlining actually works.
9152         (check_inline_caller_method_name_limit): Ditto.
9153
9154 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9155
9156         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9157         64 bit safety (from Olaf Hering and Andreas Farber).
9158
9159 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9160         
9161         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9162         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9163         unused virtual call support code.
9164
9165         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9166         
9167         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9168         which can't use aot trampolines.
9169         (decode_patch): Don't create aot trampolines for methods which can't use
9170         them.
9171
9172         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9173         use aot trampolines.
9174
9175         * mini.h: Bump AOT image format version.
9176         
9177 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9178
9179         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9180         to save_token_info () since cmethod is inflated for constrained calls.
9181
9182         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9183
9184 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9185
9186         * Makefile.am: Add build rules for ppc64.
9187         This avoids the build failing at pedump with unresolved symbols
9188         due to lack of arch_sources. Instead it will now fail earlier
9189         due to lack of cpu-ppc64.md.
9190
9191         Contributed under MIT/X11 license.
9192
9193 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9194
9195         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9196         tail calls.
9197
9198         * iltests.il.in: Add test case for tail call with many arguments.
9199
9200 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9201
9202         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9203         to the fast virtual generic method code until the aot case is fixed.
9204
9205 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9206
9207         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9208
9209 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9210
9211         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9212         thunks.
9213
9214 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9215         
9216         * simd-intrinsics.c: Forgot to add this one.
9217
9218         * mini-codegen.c: Fix macro in case SIMD is not supported.
9219
9220 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9221         
9222         This patch land initial JIT support for simd intrinsics.
9223
9224         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9225
9226         * Makefile.am: Added simd-intrinsics.c
9227
9228         * simd-intrinsics.c: New file with simd instrinsic related
9229         code.
9230
9231         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9232
9233         * cpu-x86.md: Add simd related instructions.
9234
9235         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9236
9237         * driver.c: Added two new --regression variants.
9238
9239         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9240
9241         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9242
9243         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9244         extract some complicated logic to helper functions.
9245
9246         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9247
9248         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9249
9250         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9251         the specialized simplification pass.
9252
9253         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9254
9255         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9256
9257         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9258         table.
9259
9260         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9261         if MONO_ARCH_NEED_SIMD_BANK is defined.
9262
9263         * mini-ops.h: Added the new simd ops.
9264
9265         * mini-x86.c: Added mono_arch_xregname.
9266
9267         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9268
9269         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9270
9271         * mini-x86.h: Define simd related MONO_ARCH macros.
9272
9273         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9274
9275         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9276
9277         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9278         MONO_CLASS_IS_SIMD to deal with simd related IR.
9279
9280         * mini.h (MonoInst): Added spill_var to the backend union.
9281
9282         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9283
9284         * mini.h: Added forward declarations of the new simd fuctions.
9285
9286         * optflags-def.h: Added new optimization names SIMD.
9287
9288         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9289
9290         * regalloc.h: Added support for working with 3 register banks.
9291
9292         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9293
9294         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9295
9296 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9297
9298         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9299
9300 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9301
9302         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9303         instead of one on 64 bit systems.
9304
9305         * method-to-ir.c: Remove unused includes.
9306
9307 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9308
9309         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9310         cfg->used_int_regs, since the two are different on arm.
9311
9312 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9313
9314         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9315         mono_method_get_vtable_index() to get the vtable index.
9316
9317 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9318
9319         * method-to-ir.c (mono_method_to_ir2): Don't create native
9320         wrappers for array methods, because they're never called (and if
9321         they were called they wouldn't work).
9322
9323 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9324
9325         * method-to-ir.c (mono_method_to_ir2): Array methods are
9326         special-cased and must not be invoked indirectly via the (M)RGCTX
9327         when generic sharing is turned on.  Fixes #431413.
9328
9329 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9330
9331         * method-to-ir.c: When generic sharing is active, call
9332         non-interface virtual generic methods via the standard trampoline.
9333
9334         * mini-trampolines.c: Handle virtual generic shared methods.
9335
9336         * mini.h, mini-x86.c, mini-x86.h: New argument for
9337         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9338         method thunks and which is the trampoline to call if the lookup
9339         fails.  Enable the virtual generic method thunk for x86.
9340
9341         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9342         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9343         argument but assert that it's NULL, because these archs don't yet
9344         implement the virtual generic method thunk.  Changes in the IMT
9345         thunk data structures.
9346
9347 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9348
9349         * aot-compiler.c (emit_globals): Avoid invalid characters in
9350         the static linking symbol.
9351
9352         * objects.cs: Add a test for the range check optimization. Fix warnings.
9353
9354         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9355         optimization from the current JIT.
9356
9357         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9358         later in decompose_array_access_opts () to allow more optimizations.
9359
9360         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9361         mono_decompose_soft_float () for consistency.
9362
9363         * mini-ops.h: Fix arguments of OP_STRLEN.
9364
9365         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9366         into a separate function.
9367         (reset_cast_details): Ditto.
9368         (handle_unbox): Save cast details. Fixes #431254.
9369
9370         * method-to-ir.c: Remove some obsolete FIXMEs.
9371
9372 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9373
9374         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9375
9376 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9377
9378         * mini-codegen.c: More work on macros to make them
9379         ready for multiple regbanks.
9380
9381 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9382
9383         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9384
9385         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9386
9387 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9388
9389         * mini-codegen.c (mono_spillvar_offset): Proper support for
9390         multiple regbanks.
9391
9392 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9393
9394         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9395         the stack overflow changes.
9396
9397 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9398
9399         * mini-codegen.c: Make all bank macros depend on reg_bank.
9400
9401         * mini-codegen.c (mono_local_regalloc): Make free mask
9402         initialization regbank aware.
9403
9404 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9405
9406         * mini-codegen.c (mono_local_regalloc): Extract callee
9407         mask selection to a function and make it regbank aware.
9408
9409 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9410
9411         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9412         code to deal with many regbanks.
9413
9414 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9415
9416         * mini-codegen.c: More fp->regbank changes.
9417
9418 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9419
9420         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9421         of a hardcoded constant.
9422
9423 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9424
9425         * method-to-ir.c (type_from_stack_type): Fix typo.
9426
9427 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9428
9429         * mini-ia64.c (emit_move_return_value): Convert float return values to
9430         double.
9431
9432         * objects.cs: Add a new test.
9433         
9434         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9435         VARARG methods to fix an assert later.
9436
9437         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9438         end so it at least compiles.
9439
9440 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9441
9442         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9443
9444 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9445
9446         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9447         optimization to a new function (emit_optimized_ldloca_ir) and enable
9448         it for both ldloca and ldloca_s.
9449
9450 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9451
9452         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9453         gshared CASTCLASS code.
9454
9455         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9456         amd64, where the libc stack unwinder encounters stack frames referring to
9457         native code in unmapped memory.
9458
9459         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9460         sharing.
9461
9462         * generics.cs: Add new test.
9463
9464 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9465
9466         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9467         add a check that one of the ARM_FPU_ constants is defined.
9468
9469         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9470         
9471         * mini-exceptions.c: Fix build on non-altstack platforms.
9472
9473         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9474         sharing of vtypes.
9475
9476         * ir-emit.h: Add a comment to NEW_PCONST.
9477
9478         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9479
9480         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9481
9482         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9483         after the changes to MonoJitDomainInfo.
9484
9485 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9486
9487         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9488
9489 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9490
9491         * mini-ppc.c: Compiler warning fixes.
9492
9493 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9494
9495         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9496         for pinvokes.
9497
9498 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9499
9500         * exceptions-ppc.c, mini-ppc.h: Compile
9501         mono_arch_handle_altstack_exception() on Darwin, too.
9502
9503 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9504
9505         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9506         work on archs which don't have generic sharing implemented, only
9507         without the vtable_arg.
9508
9509 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9510
9511         * mini.c: Added comment explaining why delegate ctor icall
9512         wrappers are compiled.
9513
9514 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9515
9516         * mini.c: Don't produce trampolines to delegate ctor icall
9517         wrappers but compile them upfront.
9518
9519 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9520
9521         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9522         runtime-set function when going back to managed code. Currently this
9523         is used to set back the protection on the soft ovf pages and/or to
9524         throw the stack overflow exception that happened in unmanaged code.
9525
9526 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9527
9528         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9529         runtime-set function when going back to managed code. Currently this
9530         is used to set back the protection on the soft ovf pages and/or to
9531         throw the stack overflow exception that happened in unmanaged code.
9532
9533 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9534
9535         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9536         the support code for restoring stack protection after stack overflows
9537         that happen in unmanaged code. Don't set the exec permission on the
9538         soft overflow area.
9539
9540 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9541
9542         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9543         delegate->method_ptr is set. Fixes #428054.
9544
9545 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9546
9547         * tests.cs: Rename to ratests.cs.
9548
9549         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9550         emit_get_rgctx_... functions.
9551
9552 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9553
9554         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9555
9556 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9557
9558         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9559         before asserting that method is sharable.
9560
9561 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9562
9563         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9564         whether method needs a static RGCTX wrapper used instead of
9565         complex conditions.
9566
9567         * generic-sharing.c, mini.h: A few functions moved to
9568         metadata/generic-sharing.c.
9569
9570 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9571
9572         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9573         Generic code sharing for value types, which essentially means
9574         treating value type methods like static methods.  The RGCTX is
9575         passed in the same way.
9576
9577 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9578
9579         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9580         opcode when creating multi-dimensional arrays of open types.
9581
9582         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9583         open generic types.
9584
9585         * generics.cs: Add a test.
9586
9587         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9588
9589 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9590
9591         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9592
9593         * mini.c (mini_method_compile): Set it when running under the debugger. 
9594
9595         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9596         vreg optimization if the flag is set.
9597
9598         * driver.c (mono_main): Add --attach= option to pass options to
9599         the attach agent.
9600
9601         * mini.c (sigquit_signal_handler): Start the attach agent.
9602
9603         * ssapre.c: Disable this to save space since it is not yet ported to
9604         linear IR.
9605
9606         * regalloc2.c: Disable this to save space.
9607
9608         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9609
9610 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9611
9612         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9613         the -v option useful again.
9614
9615 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9616
9617         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9618         --break-at-bb.
9619
9620         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9621         arrays of arrays. Fixes #428406.
9622
9623         * method-to-ir.c (mini_emit_castclass): Ditto.
9624
9625         * objects.cs: Add new test.
9626         
9627 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9628
9629         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9630         was wrong at it choked against target_type_is_incompatible for byref types.
9631
9632 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9633
9634         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9635         places.
9636
9637 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9638
9639         * mini-exceptions.c: update a few more exceptions-related counters.
9640
9641 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9642
9643         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9644         new functions to allocate from persistent mempools.
9645
9646 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9647
9648         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9649         multiple register banks in the future.
9650
9651         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9652
9653 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9654
9655         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9656
9657         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9658
9659         * mini.h: Export type_to_eval_stack_type.
9660
9661         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9662         is only ins->klass of byref types.
9663
9664 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9665
9666         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9667         (mini_emit_memcpy2): Ditto.
9668
9669         * mini-amd64.c: Fix a warning.
9670
9671 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9672
9673         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9674         linking.
9675
9676 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9677
9678         * method-to-ir.c: Extract stloc micro-optimization to a
9679         function and apply it to all cases.
9680
9681 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9682
9683         * method-to-ir.c: Don't fail generic code sharing in cases we
9684         already support.
9685
9686 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9687
9688         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9689
9690 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9691
9692         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9693         implementation.
9694
9695 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9696
9697         * trace.c: make tracing more useful and correct, with per-thread
9698         id and indent info.
9699
9700 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9701
9702         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9703         doing a method call and the argument is an R4.
9704
9705 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9706
9707         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9708         generic methods.
9709
9710 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9711
9712         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9713
9714 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9715
9716         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9717         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9718
9719 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9720
9721         * driver.c: Add a --agent argument (not supported yet) to load managed
9722         agent assemblies before loading the main assembly, similarly to how the
9723         Java VM handles agents.
9724
9725 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9726
9727         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9728         function to do stack layout of local variables.
9729
9730 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9731
9732         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9733         calculation.
9734
9735 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9736
9737         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9738         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9739         JIT if DISABLE_JIT is defined.
9740
9741         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9742         defined.
9743
9744 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9745
9746         * iltests.il.in: Disable the fconv test on PPC (the result is
9747         undefined according to ECMA).
9748
9749 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9750
9751         * iltests.il.in: Enable tail call tests for PPC.
9752
9753         * mini.h: Add variable for storing incoming valuetype argument
9754         addresses for tail calls.
9755
9756         * mini-ppc.c: Implement valuetype arguments and return values for
9757         tailcalls on Linux.
9758
9759 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9760
9761         * mini-ppc.c: Partially implement tail calls (struct arguments and
9762         return values not supported).
9763
9764         * method-to-ir.c: Enable tail calls on PPC.
9765
9766 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9767
9768         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9769         runtime-invoke wrappers to work around the problem of them getting
9770         assigned to a random class.
9771
9772         * aot-runtime.c (mono_aot_get_method): Ditto.
9773         
9774 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9775
9776         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9777         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9778
9779 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9780
9781         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9782         until they're implemented properly.
9783
9784         * exceptions-ppc.c: Use arch-independent exception-handling code
9785         instead of custom one.
9786
9787         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9788         for Linear IR.
9789
9790         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9791
9792         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9793         applies when __powerpc__ is defined.
9794
9795 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9796
9797         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9798         methods to their code to avoid computing the full name of wrappers and
9799         doing a lookup in a string hash table.
9800
9801 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9802
9803         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9804         we identify bblocks before method_to_ir () is ran.
9805
9806         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9807         Also avoid optimizing branches pointing to themselves.
9808
9809         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9810
9811 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9812
9813         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9814
9815 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9818         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9819         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9820         'buf'.
9821
9822         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9823         jumped to the same entry in plt_jump_table.
9824
9825 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9826
9827         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9828         dynamic images.
9829
9830 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9831
9832         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9833         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9834         #421807.
9835
9836 2008-08-29  Geoff Norton  <gnorton@novell.com>
9837
9838         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9839         segment, and doesn't properly handle .space as .text.  Fixes
9840         AOT Mach/ARM
9841
9842 2008-08-29  Geoff Norton  <gnorton@novell.com>
9843
9844         * mini.c: Disable the mach exception handler when running on 
9845         ARM
9846
9847 2008-08-29  Geoff Norton  <gnorton@novell.com>
9848
9849         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9850         globals on Darwin/ARM
9851
9852 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9853
9854         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9855         since too many things depend on it. Instead, call 
9856         mono_runtime_set_no_exec ().
9857         
9858         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9859         the new JIT.
9860
9861         * aot-compiler.c: Add an 'asm-only' AOT option.
9862
9863         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9864                 
9865         * aot-compiler.c (compile_method): Disable gshared support for now as it
9866         doesn't yet work.
9867
9868 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9869
9870         * mini-amd64.h : Fix a compiler warning.
9871
9872         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9873           Changed to use a callback function to retrieve the unwind info.
9874           This avoids problems observed when code blocks were removed by
9875           unloading an app domain.
9876
9877         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9878           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9879           to work properly.
9880
9881         Contributed under MIT/X11 license.
9882
9883 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9884
9885         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9886           case to keep the stack aligned to 8.
9887
9888         Contributed under MIT/X11 license.
9889
9890 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9891
9892         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9893         avoid repeated linear searches.
9894
9895 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9896
9897         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9898         methods it can't handle.
9899         
9900         * aot-compiler.c (add_method): Avoid adding a method twice.
9901         (add_wrappers): Add runtime invoke wrappers for all methods.
9902
9903         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9904         function to create an aot-compatible version of this trampoline.
9905
9906         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9907
9908 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9909
9910         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9911
9912         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9913         with a generic sharing failure.
9914
9915         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9916
9917         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9918         CEE_RETHROW. Fixes #419634.
9919
9920         * mini.c (mono_method_to_ir): Ditto.
9921
9922         * exceptions.cs: Add a new test.
9923         
9924         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9925         to mono_type_stack_size_internal () since some callers might not pass in
9926         an rgctx.
9927
9928         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9929         instrument_prolog. Fixes #419878.
9930
9931         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9932         doubles in soft float mode volatile.
9933
9934 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9935
9936         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9937
9938         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9939         to handle soft float correctly.
9940
9941         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9942         the fast path.
9943
9944         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9945
9946         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9947         to sp, since the generics catch code requires it.
9948
9949         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9950         copying.
9951
9952         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9953         mono_arch_emit_imt_argument ().
9954
9955         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9956
9957         * mini-arm.c tramp-arm.c: Generic sharing updates.
9958
9959 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9960
9961         * mini-arm.c: Fix the arm build.
9962
9963         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9964         handling enums, generic instances and generic sharing.
9965         (mini_type_stack_size_full): Ditto.
9966
9967         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9968         
9969         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9970
9971         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9972
9973         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9974         trampolines.
9975
9976         * mini-arm.c: Various small generic sharing changes.
9977
9978         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9979         this for x86.
9980         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9981         custom code.
9982
9983         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9984         helper function to return a generic class init trampoline.
9985
9986         * method-to-ir.c mini.c: Use it.
9987         
9988         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
9989         arch-specfic function to return a generic class init trampoline.
9990
9991         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
9992         the GENERIC_CLASS_INIT custom code.
9993
9994         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
9995         a fatal error, not a sharing failure.
9996
9997         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
9998         needed.
9999
10000         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10001         trampoline argument from MONO_ARCH_VTABLE_REG.
10002
10003         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10004         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10005         argument, and pass the vtable in VTABLE_REG.
10006
10007         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10008         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10009         argument, and pass the vtable in VTABLE_REG.
10010         (mono_arch_create_trampoline_code_full): Remove some special casing for
10011         the rgctx fetch trampoline.
10012
10013         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10014         Fixes #419273.
10015
10016         * iltests.il: Add a test for it.
10017
10018 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10019
10020         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10021
10022         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10023         no longer needed.
10024
10025         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10026         use mono_jit_info_table_find () to avoid recursion.
10027         (mono_delegate_trampoline): Add a sync wrapper here.
10028
10029         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10030         here.
10031
10032         * mini.c (mono_method_to_ir): Ditto.
10033         
10034         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10035         add_sync_wrapper argument. Don't add a sync wrapper here.
10036         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10037
10038         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10039         
10040 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10041
10042         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10043           of nonvolatile registers back from MonoContext to CONTEXT.
10044
10045         Contributed under MIT/X11 license.
10046
10047 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10048
10049         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10050           arguments on Winx64 there are only 4 argument registers.  For this
10051           logic to work the last argument must be pulled from the stack.  
10052
10053         Contributed under MIT/X11 license.
10054
10055 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10056
10057         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10058
10059         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10060         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10061         encode/decode_method_ref ().
10062
10063         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10064
10065         * aot-runtime.c (decode_patch): Ditto.  
10066
10067         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10068         MONO_PATCH_INFO_METHOD.
10069
10070         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10071         MonoGenericJitInfo.
10072
10073         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10074         MonoGenericJitInfo.
10075
10076         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10077
10078         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10079         one from the caller.
10080
10081         * aot-runtime.c (decode_generic_inst): New function to decode and
10082         return a interned generic inst.
10083         (decode_klass_ref): Use it.
10084         (decode_method_ref): Ditto.
10085
10086         * aot-compiler.c (emit_exception_debug_info): Save 
10087         jinfo->has_generic_jit_info too.
10088
10089 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10090
10091         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10092
10093         * iltests.il.in: Add a test for fconv_to_i.
10094
10095         * liveness.c: Disable the liveness2 pass for now to save space.
10096
10097         * regalloc2.c: Include mempool-internals.h to fix warnings.
10098
10099         * aot-compiler.c (encode_method_ref): Encode the context of generic
10100         instance methods.
10101
10102         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10103         the context saved in the aot file.
10104
10105         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10106
10107         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10108
10109         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10110         volatile so they won't be optimized away.
10111
10112 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10113
10114         * ssa.c:
10115         * ssa2.c:
10116         * mini.c:
10117         * regalloc2.c:
10118         * dominators.c: Remove duplicated functions that now are in
10119         mempool-internals.h.
10120
10121 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10122
10123         * aot-compiler.c: Fix warnings.
10124
10125         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10126
10127         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10128
10129         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10130         as the patch type.
10131
10132         * mini.c (mono_resolve_patch_target): Ditto.
10133         
10134         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10135         (encode_klass_ref): Add support for encoding VARs/MVARs.
10136
10137         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10138
10139         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10140         the handling of the got entries into a separate 'decode_got_entry' function.
10141         Add support for RGCTX_FETCH.
10142
10143         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10144         clobbered by the trampoline code.
10145
10146         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10147         not clobbered by the indirect calling code.
10148
10149 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10150
10151         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10152         to fix the build.
10153
10154 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10155
10156         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10157         signature using the compilation mempool otherwise we would leak it.
10158
10159 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10160
10161         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10162         mono_emit_abs_call ().
10163
10164         * patch-info.h: Add GENERIC_CLASS_INIT.
10165
10166         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10167
10168         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10169         as their target as a near call.
10170
10171         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10172         ABS handling code.
10173         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10174
10175         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10176         call to a runtime function described by a patch.
10177
10178         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10179         mono_emit_abs_call, this has the advantage that the ABS handling code in
10180         mono_codegen () can handle them both, and can handle other stuff in the
10181         future without additional code.
10182
10183         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10184         entry.
10185         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10186         abs addresses.
10187
10188         * mini.h: Add missing bblock related prototypes.
10189
10190         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10191         reverse_inst_list_len fields.
10192
10193         * mini.c: Refactor this file a bit by moving branch optimizations to 
10194         branch-opts.c.
10195
10196         * method-to-ir.c: Merge generic sharing changes missed earlier.
10197
10198         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10199
10200         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10201         shared patches. Process METHODCONST as a shared patch.
10202
10203         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10204         as it crashes on the 2.0 mscorlib.
10205
10206         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10207         to cause crashes.
10208         
10209         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10210         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10211         by IMT.
10212
10213         * aot-compiler.c: Reorganize the got handling code to be a bit more
10214         understandable.
10215
10216 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10217
10218         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10219         mono_patch_info_equals/hash, and use it to massively simplify
10220         get_plt_index ().
10221
10222         * mini.c (mono_patch_info_hash): Simplify this and add support for
10223         more patch types.
10224
10225         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10226
10227         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10228         handling code, since an offset is not enough to identify a trampoline.
10229
10230         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10231
10232 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10233
10234         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10235
10236         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10237
10238         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10239
10240         * decompose.c: PPC decompositions for various ops.
10241
10242         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10243
10244 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10245
10246         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10247         call the generic trampoline code using a call, instead of a jump, to
10248         remove some special casing from the generic trampoline code.
10249
10250         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10251         (mono_codegen): Ditto.
10252
10253         * aot-compiler.c aot-runtime.c: Ditto.
10254
10255         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10256
10257         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10258         helper function to find the offset corresponding to a lazy fetch trampoline.
10259
10260         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10261         when doing generic sharing.
10262
10263         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10264         places.
10265         
10266         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10267         mini-trampolines.c to be with the other trampoline creation functions.
10268
10269         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10270         as it is equal to method->signature in most cases, add a 
10271         mono_emit_method_call_full variant which takes a signature and an imt
10272         argument as well.
10273
10274 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10275
10276         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10277         to this function, since it could be computed easily from the method 
10278         argument.
10279         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10280         more.
10281
10282         * method-to-ir.c mini.c: Remove references to 
10283         compile_generic_method_wo_context.
10284
10285         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10286         generic method calls.
10287         
10288         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10289         dimensional non-szarrays.
10290
10291         * mini.c (mini_init): Register mono_array_new_1.
10292
10293         * jit-icalls.c (mono_array_new_1): New jit icall.
10294
10295         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10296         pointing to the method.
10297
10298         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10299         method addresses belonging to METHOD_JUMP patches in the 
10300         jump_target_got_slot_hash.
10301         (mono_aot_load_method): Ditto.
10302
10303         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10304         METHOD_JUMP patches.
10305
10306         * mini.c (mini_create_jit_domain_info): New helper function which 
10307         initializes/frees domain->runtime_info.
10308         (mini_free_jit_domain_info): Ditto.
10309         (mini_init): Install the domain hook functions with the runtime.
10310
10311         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10312         information maintained by the JIT.
10313
10314         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10315         insertion into jump_table_hash into mono_codegen (), also implement proper
10316         locking.
10317
10318         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10319         tail calls, it is already done by the aot code.
10320         
10321         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10322         mechanism on amd64.
10323
10324         * iltests.il.in: Make the jmp test a bit more complex.
10325
10326         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10327         generic instances which doesn't have a token.
10328
10329         * aot-runtime.c (decode_method_ref): Ditto.
10330         
10331         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10332         can handle this case now.
10333         (handle_box): Ditto.
10334
10335 2008-08-15  Geoff Norton  <gnorton@novell.com>
10336
10337         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10338         debugging check.
10339
10340 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10341
10342         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10343         calling generic methods.
10344
10345         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10346
10347         * aot-runtime.c (decode_patch_info): Ditto.
10348
10349         * mini.c (mono_resolve_patch_target): Ditto.
10350         
10351         * patch-info.h: Add METHOD_RGCTX.
10352
10353         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10354
10355 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10356
10357         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10358         arguments in registers.
10359
10360         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10361         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10362
10363         * mini.c (mini_method_compile): Abort aot compilation for generic
10364         methods if generic sharing is disabled.
10365         
10366         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10367         an mrgctx.
10368
10369         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10370         requiring an mrgctx.
10371
10372         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10373         store instructions when converting a vcall to a normal call.
10374
10375         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10376         mono_arch_find_jit_info.
10377
10378 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10379
10380         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10381         avoid calling mono_method_full_name () for every method even if the
10382         env var is not set.
10383         (check_inline_caller_method_name_limit): Ditto.
10384
10385 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10386
10387         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10388         assemblies in one run.
10389
10390         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10391         skipped methods if it is not 0.
10392
10393         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10394
10395 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10396
10397         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10398           MONO_ARCH_HAVE_UNWIND_TABLE.
10399
10400         Contributed under MIT/X11 license.
10401
10402 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10403
10404         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10405           from default optimizaton list on Winx64.
10406
10407         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10408
10409         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10410           the LMF from the MonoJitTlsData structure.
10411
10412         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10413
10414         Contributed under MIT/X11 license.
10415
10416 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10417
10418         * mini.c (sigsegv_signal_handler): Fix the build.
10419
10420         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10421         assembly->aot_module.
10422
10423         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10424         hash table. This simplifies and speeds up a lot of code, and fixes support
10425         for .netmodules.
10426
10427         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10428         with the runtime.
10429
10430         * mini-exceptions.c: Ditto.
10431         
10432         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10433         'native_offset' argument, since these are computed in the 
10434         mono_find_jit_info () function.
10435
10436         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10437         is used by exceptions-ppc.c.
10438
10439         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10440         mono_arch_find_jit_info ().
10441         
10442         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10443         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10444         generic code in mini-exceptions.c.
10445
10446 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10447
10448         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10449
10450         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10451         
10452         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10453         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10454         called while holding the loader lock. Fixes #415608.
10455         (mono_aot_get_method_from_token_inner): Ditto.
10456
10457 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10458
10459         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10460         to reduce differences between this and the generic implementation in
10461         mini-exceptions.c.
10462         (ves_icall_get_frame_info): Ditto.
10463
10464         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10465
10466         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10467         longer neccesarry.
10468
10469         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10470         mono_arch_get_call_filter () and make it non-static, for consistency with the
10471         other architectures.
10472
10473 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10474
10475         * mini.c:
10476         * local-propagation.c:
10477         * mini-x86.c: Correct the name of arch defines.
10478
10479 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10480
10481         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10482         NO_EMULATE_LONG_SHIFT_OPS define.
10483
10484 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10485
10486         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10487         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10488
10489         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10490         MACH fixes. Merged from the 2.0 branch.
10491
10492         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10493
10494         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10495         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10496
10497         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10498
10499         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10500         mono_marshal_get_native_wrapper () signature changes.
10501
10502 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10503
10504         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10505         conversion bug under arm.
10506
10507 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10508
10509         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10510
10511         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10512         with overflow checking.
10513
10514 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10515
10516         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10517         to the genmdesc.pl file
10518
10519 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10520
10521         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10522         arg_array in the soft-float versions of the LOAD/STORE macros.
10523
10524         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10525         implementation.
10526
10527         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10528
10529 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10530
10531         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10532         a float HFA. Fixes #413621.
10533
10534 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10535
10536         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10537         frame_size to args_size. Fixes build.
10538
10539 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10540
10541         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10542         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10543
10544         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10545         the stack are not unaligned. Fixes #413247.
10546         
10547 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10548
10549         * mini.c: update jitted methods performance counters.
10550
10551 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10552
10553         * mini-exceptions.c: increase the exceptions thrown performance
10554         counter in mono_handle_exception ().
10555
10556 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10557
10558         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10559         can work with netmodules.
10560
10561 2008-07-28  Geoff Norton  <gnorton@novell.com>
10562
10563         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10564         regression tests.
10565
10566 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10567
10568         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10569         correct place.
10570
10571 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10572
10573         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10574           The float param registers and other param registers must be the 
10575           same index on Windows x64.
10576
10577         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10578           ArgValuetypeAddrInIReg argument case.  Setting the argument
10579           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10580
10581         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10582           variable computed above as the copy length for arguments of storage
10583           type ArgValuetypeAddrInIReg.
10584
10585         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10586           ArgValuetypeAddrInIReg argument case.  This case will rely on
10587           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10588
10589         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10590           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10591           jump and tail call instructoins as they do not follow the typical call behavior.
10592
10593         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10594           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10595           local variable and pass the local variable by reference to the called method.
10596
10597         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10598           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10599           of a struct is passed in a register it must be saved with the other
10600           volatile argument on the stack.
10601
10602         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10603           frame pointer the stack adjustment value must be saved to the unwind 
10604           info structure.
10605
10606         Contributed under MIT/X11 license.
10607
10608 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10609
10610         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10611         which got lost in the merge.
10612
10613 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10614
10615         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10616         build.
10617
10618         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10619         
10620         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10621         icalls, since they won't be patched.
10622
10623         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10624         different code sequence when running under valgrind to prevent some valgrind
10625         errors.
10626
10627         * iltests.il.in: Add new regression test.
10628
10629         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10630         end with a throw.
10631
10632         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10633         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10634
10635         * iltests.il.in: Add new test.
10636
10637         * aot-compiler.c: Fix some warnings.
10638
10639         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10640         Fixes #412494.
10641
10642 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10643
10644         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10645         (mini_usage_jitdeveloper): Add a missing --wapi option.
10646
10647 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10648
10649         * mini-codegen.c: Simplify the is_fp macros.
10650         (free_up_ireg): Remove, use free_up_reg instead.
10651         (free_up_reg): Fix the fp case.
10652
10653 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10654
10655         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10656         lowered earlier.
10657
10658         * exceptions-x86.c: Merge some changes which seemed to have got lost
10659         in the linear-ir merge.
10660
10661         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10662
10663         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10664         long vreg volatile even if the variable was already created.
10665
10666         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10667         volatile variables.
10668
10669 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10670
10671         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10672
10673         * mini.c (mono_jit_compile_method_inner): Add support for 
10674         MONO_EXCEPTION_BAD_IMAGE.
10675
10676         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10677         mini_method_get_context () returns NULL. Fixes #356531.
10678
10679         * mini.c (mono_method_to_ir): Ditto.
10680         
10681         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10682         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10683
10684 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10685
10686         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10687         in the LDFTN implementation.
10688
10689 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10690
10691         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10692         code, patch calls to icalls, too, even if they're not in the
10693         shared generic code hash.  Fixes #411962.
10694
10695 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10696
10697         * cpu-x86.md: Increase the length of the fcall opcodes.
10698
10699         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10700         calls returning floats.
10701
10702         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10703         on NEWARR.
10704         
10705         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10706         missed earlier.
10707
10708         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10709         into the domain->method_code_hash.
10710
10711         * aot-compiler.c: Fix win32 build.
10712
10713         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10714         
10715         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10716         gshared NEWARR implementation.
10717
10718         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10719
10720         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10721         can be used outside of method_to_ir.
10722
10723         * mini.h (MonoCompile): Add arg_types field.
10724
10725         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10726         
10727         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10728         the values of the local arg_array and param_types array.
10729
10730 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10731
10732         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10733         got accesses might only get generated later when NEWOBJ is decomposed.
10734         
10735         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10736         looking up the native code of the target method when a delegate is called
10737         for the first time.
10738
10739         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10740         optimization.
10741
10742         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10743
10744         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10745         AOT work on platforms without a working dlsym implementation.
10746
10747         * mini.h: Bump AOT image format version.
10748         
10749 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10750
10751         * mini-exceptions.c: Free a MonoType with
10752         mono_metadata_free_type() instead of g_free().
10753
10754         * aot-runtime.c: Free a MonoType.
10755
10756 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10757
10758         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10759         optimization.
10760
10761         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10762         fp stack on x86.
10763
10764 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10765         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10766         profiler hook.
10767
10768 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10769
10770         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10771         NEWOBJ calls on valuetypes.
10772
10773         * iltests.il.in: Add new test.
10774
10775         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10776
10777 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10778
10779         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10780         is no longer needed.
10781
10782         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10783         non register sized integer arguments.
10784         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10785         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10786         emit_memcpy2 ().
10787
10788         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10789         CEE_MONO_RETOBJ.
10790         
10791         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10792         two a binop with different sized arguments is emitted.
10793
10794         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10795         instruction in the ins==NULL case.
10796
10797 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10798
10799         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10800
10801         * mini-x86.c: Fix osx build.
10802
10803         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10804         opcodes as well.
10805
10806         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10807         instruction for non int sized variables.
10808
10809         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10810         implementation.
10811
10812 2008-07-23  Robert Jordan  <robertj@gmx.net>
10813
10814         * method-to-ir.c: Fix MSVC build.
10815
10816 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10817
10818         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10819         a non int sized type, widen it to an int since newer versions of gcc seem to
10820         generate code which needs this.
10821
10822         * ssa2.c abcremoval2.c: Fix warnings.
10823
10824         * *: Merge the Linear IR branch.
10825
10826         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10827         the ChangeLog file there describes all the changes done over the years. 
10828         Further documentation can be found at www.mono-project.com/Linear_IL.
10829
10830 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10831
10832         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10833           The float param registers and other param registers must be the 
10834           same index on Windows x64.
10835
10836         Contributed under MIT/X11 license.
10837
10838 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10839
10840         * mini.c: Make the previous fix GC safe.
10841
10842 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10843
10844         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10845
10846 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10847
10848         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10849           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10850           ArgValuetypeAddrInIReg instead.
10851
10852         Contributed under MIT/X11 license.
10853
10854 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10855
10856         * mini-codegen.c (get_register_spilling): Fix a warning.
10857
10858 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10859
10860         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10861         for types which the initialization fails. Raises the provided exception
10862         at the right stop after cleanup.
10863
10864 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10865
10866         * aot-compiler.c: Free most of the memory allocated during compilation.
10867
10868         * mini.c (mini_parse_debug_options): Fix a leak.
10869         
10870         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10871         during aot compilation.
10872
10873 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10874
10875         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10876         it has too much register pressure.
10877
10878 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10881
10882 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10883
10884         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10885         on x86.
10886
10887         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10888         on amd64 similar to the way it is done on arm.
10889
10890         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10891
10892         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10893         consistency, normalize error messages, avoid loading aot-only modules in
10894         normal mode.
10895
10896         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10897         for consistency.
10898
10899         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10900
10901 2008-07-11  Martin Baulig  <martin@ximian.com>
10902
10903         * debug-debugger.h
10904         (MonoDebuggerInfo): Add `interruption_request'.
10905
10906 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10907
10908         * aot-compiler.c (emit_plt): Remove some dead code.
10909
10910         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10911
10912         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10913         return the plt info offset belonging to a given plt entry.
10914
10915         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10916         mono_aot_get_plt_info_offset.
10917         
10918         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10919         similar to the amd64 code by makeing jumps through a separate jump table 
10920         instead of embedding the jump addresses into the code.
10921
10922 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10923
10924         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10925         method.
10926
10927 2008-07-10  Martin Baulig  <martin@ximian.com>
10928
10929         * mini.c (mini_method_compile): Disable generics sharing when
10930         running in the debugger.
10931
10932 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10933
10934         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10935
10936         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10937         the local register allocator from running out of registers on x86 when 
10938         using aot.
10939
10940 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10941
10942         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10943         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10944         C4146.
10945
10946         Contributed under MIT/X11 license.
10947
10948 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10949
10950         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10951         speed up the assembler.
10952
10953 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10954
10955         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10956         support.
10957
10958         * mini.c: Move the soft float handling macros a bit earlier, add 
10959         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10960         place.
10961
10962         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10963
10964         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10965         read-only to help catch code allocation requests.
10966         
10967         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10968         and turn it off when using --aot-only or when compiling with --aot=full.
10969
10970         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10971         jump table for switches from the normal domain mempool, not the code
10972         manager.
10973
10974         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10975         unbox trampoline which handles aot-only mode too.
10976
10977         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10978         an AOTed unbox trampoline.
10979
10980         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10981
10982 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10983
10984         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10985         ""
10986
10987         Contributed under MIT/X11 license.
10988
10989 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10990
10991         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
10992           the unwind information for the method at the end of the allocated block.
10993           
10994         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
10995           MonoCompileArch to hold the unwind info for SEH on Winx64
10996         
10997         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
10998           frame pointer info for the method being compiled.
10999           
11000         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11001           the call to mono_exception_from_token.
11002           
11003         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11004           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11005           information is stored a the end of the method block because it is all 32-bit offset based.
11006
11007         Contributed under MIT/X11 license.
11008
11009 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11010
11011         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11012
11013         * wapihandles.c: Fix warnings.
11014
11015         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11016         mode.
11017
11018         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11019         mono_jit_compile_method in aot-only mode since that calls the type 
11020         initializer.
11021         
11022         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11023         get_delegate_invoke_impl in aot-only mode.
11024
11025         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11026
11027 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11028
11029         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11030
11031         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11032         is on by default.
11033
11034         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11035
11036         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11037         init trampoline from the AOT file as well.
11038
11039         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11040         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11041         code.
11042
11043         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11044         mono_init.
11045
11046         * exceptions-amd64.c: Add _full variants for the remaining exception code
11047         creation functions as well, allow emission of relocatable code, remove
11048         caching since that is now done by the caller.
11049
11050         * mini-exceptions.c: Add _full variants for the remaining exception code
11051         creation functions as well, add aot-only support.
11052
11053         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11054         if we can determine a proper token for them.
11055         (add_wrappers): Add a few more wrappers.
11056         (emit_method_code): Remove some dead code.
11057         (emit_trampolines): Emit exception code too.
11058
11059         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11060
11061         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11062         mono_array_new_va which avoids varargs.
11063
11064         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11065
11066         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11067         mono_arch_create_specific_trampoline () in all places.
11068
11069         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11070         a bit so it can be used for other things as well.
11071         
11072         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11073         on demand as well.
11074
11075         * exceptions-amd64.c: Rename the caching from the exception code creation
11076         functions, it is done by the caller instead.
11077         
11078         * exceptions-amd64.c: Change the signature of the exception code creation 
11079         functions to allow the creation of relocatable code later.
11080
11081         * mini-exceptions.c: Add a set of functions to query the various 
11082         runtime-generated exception functions.
11083
11084         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11085         mono_arch_.. () functions.
11086         
11087 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11088
11089         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11090
11091         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11092
11093         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11094         (mini_get_vtable_trampoline): Ditto.
11095
11096         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11097         code in the AOT case by returning the code size and a list of relocations to
11098         the caller.
11099
11100         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11101
11102 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11103
11104         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11105           clean the stack.
11106
11107         Contributed under MIT/X11 license.
11108
11109 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11110
11111         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11112         so the buffer size can be computed correctly. Fixes #404735.
11113
11114         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11115         normally as cfg->debug_info is already freed.
11116
11117 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11118
11119         * mini-amd64.c: For calls returning vtypes in registers, don't store
11120         the return address on the stack, instead allocate a separate local for
11121         it. Fixes #404729.
11122
11123 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11124
11125         * mini-trampolines.c, mini.h: Add an argument to
11126         mono_create_jit_trampoline_in_domain() for turning off the adding
11127         of the sync wrapper.
11128
11129         * mini.c: Use the JIT trampoline without sync instead of
11130         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11131         be patched.
11132
11133 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11134
11135         * driver.c: Turn on GSHARED optimization by default.
11136
11137 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11138
11139         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11140         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11141
11142         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11143         create a variant of the generic trampoline code callable from AOTed trampolines.
11144
11145         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11146         trampoline code callable from AOTed trampolines.
11147
11148         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11149
11150 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11151
11152         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11153         pass-through manner.
11154
11155         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11156         and don't fail sharing for them anymore.
11157
11158         * mini-exceptions.c: Handle exceptions in shared generic methods.
11159
11160         * generic-sharing.c: When checking the context of a generic
11161         method, also check its class's context.  Don't treat wrappers as
11162         sharable.
11163
11164         * mini-trampolines.c: Some code factored out to
11165         metadata/generic-sharing.c.  Handle the MRGCTX case.
11166
11167         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11168         we must deal with the method being of another instantiation of the
11169         class.  Add static rgctx invoke wrappers to generic methods.
11170
11171 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11172
11173         * mini.c: Provide all jit infos of generic shared methods with a
11174         generic jit info.
11175
11176         * mini-exceptions.c: Handle the new situation that a generic info
11177         might be available, but not info about the this/vtable/mrgctx
11178         variable.
11179
11180 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11181
11182         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11183         generic methods.
11184
11185 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11186
11187         * dominators.c (check_dominance_frontier): Fix a warning.
11188
11189         * mini.h: Add some missing prototypes.
11190
11191         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11192
11193         * driver.c (mono_jit_init_version): Correct the comments since the first
11194         argument should be the name of the root domain, not a filename.
11195
11196         * aot-runtime.c (make_writable): Error out if this is called while running
11197         with --aot-only.
11198         (load_aot_module): Ditto.
11199
11200         * aot-compiler.c: Really fix the computation of method indexes.
11201
11202         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11203         optimizations as this is no longer called frequently.
11204
11205         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11206         method and the invoke impl code and pass it to the delegate trampoline instead of
11207         just the delegate class.
11208
11209 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11210
11211         * aot-compiler.c: Fixup the computation of method indexes.
11212         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11213         the method builder infrastructure.
11214
11215         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11216         has no header.
11217
11218         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11219         mode, load the method right away instead of creating a trampoline.
11220
11221         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11222
11223         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11224         some checks a bit.
11225
11226 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11227
11228         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11229         (mono_aot_load_method): Use method_index instead of method->token.
11230
11231         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11232         can handle icalls etc. properly.
11233
11234         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11235
11236         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11237
11238         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11239         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11240         JIT_ICALL_ADDR patch type.
11241
11242         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11243
11244         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11245         request flag.
11246         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11247
11248         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11249
11250 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11251
11252         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11253         domain->jit_code_hash.
11254
11255 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11256
11257         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11258
11259 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11260
11261         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11262         get_this_arg_from_call, let it compute it when needed.
11263
11264         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11265         gsctx from code only when needed.
11266
11267         * mini-trampolines.c (get_generic_context): Rename this to 
11268         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11269         it can be called by the arch backends.
11270
11271         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11272
11273 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11274
11275         * driver.c (mono_main): Add experimental --aot-only command line option.
11276
11277         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11278         set.
11279
11280 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11281
11282         * driver.c (DllMain): Remove mono_module_handle.
11283
11284         Contributed under MIT/X11 license.
11285
11286 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11287
11288         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11289         for emitting methods which are not in the source assembly. Detect and report
11290         failure of assembling+linking.
11291         
11292         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11293
11294         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11295
11296 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11297
11298         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11299
11300 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11301
11302         * mini.h: Remove some obsolete prototypes.
11303
11304         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11305
11306 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11307
11308         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11309         supported by Visual Studio, so use alloca().
11310
11311 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11312
11313         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11314         Fixes #402585.
11315
11316 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11317
11318         * mini.c: Fail sharing of a generic method if it contains an open
11319         catch clause (because we don't pass MRGCTXs yet).
11320
11321 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11322
11323         * mini.c: When compiling a method with generic sharing, insert the
11324         method instantiated with an all-Object generic context into the
11325         jit info table, instead of the context of the first instantiation
11326         of the method we happen to compile.
11327
11328 2008-06-18  Martin Baulig  <martin@ximian.com>
11329
11330         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11331         `major_version' and `minor_version'.
11332
11333 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11334
11335         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11336         mono_method_is_generic_sharable_impl() takes an additional
11337         argument specifying whether to treat type variables as reference
11338         types.
11339
11340 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11341
11342         * mini.h: Removed obsolete prototypes.
11343
11344 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11345
11346         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11347         already handle them.
11348
11349 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11350
11351         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11352         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11353         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11354         tramp-x86.c: Added a MonoGenericContext* argument to
11355         mono_arch_get_unbox_trampoline() so that it can call other
11356         functions which require it.
11357
11358 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11359
11360         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11361         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11362         mono_arch_get_this_arg_from_call() takes a
11363         MonoGenericSharingContext* as well.
11364
11365 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11366
11367         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11368         implement generic sharing of unbox.
11369
11370 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11371
11372         * mini.c: Don't compute the vtable to determine whether a field is
11373         special static, because it might not work for open types.
11374
11375 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11376
11377         * mini.c: Removed the unused token_type and token_source arguments
11378         from get_runtime_generic_context_ptr().
11379
11380 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11381
11382         * mini.c (ADD_BINOP): fix the build
11383
11384 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11385
11386         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11387         a widening op.
11388
11389 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11390
11391         * mini.h: Removed class relations enum that's not used anymore.
11392
11393 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11394
11395         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11396
11397         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11398         the lazy fetch trampoline access code.
11399
11400 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11401
11402         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11403
11404 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11405
11406         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11407
11408         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11409
11410         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11411
11412 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11413
11414         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11415         intrinsics.
11416
11417         * mini-ops.h: Add MIN/MAX_UN opcodes.
11418
11419         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11420         intrinsics.
11421
11422         * basic-math.cs: Add more min/max tests.
11423
11424         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11425
11426 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11427
11428         * mini.c: Small fix in the prologue of emit_castclass.
11429
11430 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11431
11432         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11433
11434         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11435         do not work even for unsigned types. Fixes #400014.
11436
11437         * basic-math.cs: Add regression tests for unsigned Min/Max.
11438
11439 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11440
11441         * mini.c: Added additional context_used argument to several
11442         functions, which will be needed for sharing generic methods.  Use
11443         GET_RGCTX macro wherever appropriate.  Declare only one
11444         context_used in mono_method_to_ir().
11445
11446 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11447
11448         * mini.c, generic-sharing.c: Removed generic class relations.
11449
11450         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11451         functions due to MRGCTX changes.
11452
11453 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11454
11455         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11456         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11457         with calculated IMT.
11458
11459         * mini.c: Generic sharing of calls via generic interfaces.
11460
11461         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11462         generic method with non-constant MonoGenericContext*.  Instead,
11463         the context is taken out of the method itself.
11464
11465 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11466
11467         * mini.c: Generic sharing of ldvirtftn.
11468
11469 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11470
11471         * mini.c: Generic sharing of ldftn.
11472
11473 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11474
11475         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11476
11477 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11478
11479         * mini.c: Generic sharing of the special case of ldtoken followed
11480         by a call to GetTypeFromHandle.
11481
11482 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11483
11484         * mini.c: Generic sharing of box for nullable types.
11485
11486 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11487
11488         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11489         are passed on the stack. Fixes #324807.
11490
11491 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11492
11493         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11494         for the ArgValuetypeAddrInIReg case.
11495
11496         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11497         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11498
11499         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11500         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11501         local variable and pass the local variable by reference to the called method.
11502           
11503         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11504         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11505
11506         Contributed under MIT/X11 license.
11507
11508 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11509
11510         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11511
11512         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11513         everything.
11514
11515 2008-06-10  Martin Baulig  <martin@ximian.com>
11516
11517         * debug-mini.c
11518         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11519
11520 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11521
11522         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11523         possible error when no arguments are passed.
11524
11525         Contributed under MIT/X11 license.
11526
11527 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11528
11529         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11530         where the file name is NULL.
11531
11532 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11533
11534         * mini.c: Fix s390 build.
11535
11536 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11537
11538         * trace.c (mono_trace_parse_options): Fix warnings.
11539
11540         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11541
11542 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11543
11544         * mini.c (remove_block_if_useless): Avoid printing the method name.
11545         
11546         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11547         MONO_INST_NEW.
11548
11549         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11550         LMF. Not yet used.
11551
11552         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11553         translated code after it has been patched.
11554
11555 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11556
11557         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11558         avoid problems during code patching on SMP systems.
11559         (emit_call): Avoid adding a patch info which is already added by 
11560         emit_call_body.
11561         (mono_arch_emit_exceptions): Ditto.
11562
11563 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11564
11565         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11566         MONO_TYPE_ISSTRUCT already checks for it.
11567
11568 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11569
11570         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11571           structs with floats on Winx64 the float registers are not used.  
11572           The integer registers are always used..
11573         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11574           only one register will be used and only if the size of the struct 
11575           is 1,2,4, or 8 bytes.
11576
11577         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11578           to work for Winx64.
11579
11580         Contributed under MIT/X11 license.
11581
11582 2008-06-05  Martin Baulig  <martin@ximian.com>
11583
11584         * debug-debugger.c (debugger_lookup_class): Also call
11585         mono_class_setup_methods() here; we're only called from RTI.
11586
11587 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11588
11589         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11590         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11591         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11592         Post-process object files and add dtrace-generated object, if necessary.
11593
11594         Contributed under MIT/X11 license.
11595
11596 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11597
11598         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11599         element class.
11600
11601         * mini.c: Generic sharing for unbox.any and castclass.
11602
11603 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11604
11605         * mini.c: Ignore tailcall prefix in shared generic code and when
11606         doing calls which require a vtable/rgctx argument.
11607
11608 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11609
11610         * mini.c: Don't free the JIT info.
11611
11612         * driver.c: Changes in the JIT info table testing code.
11613
11614 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11615
11616         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11617         interruption. Fix some warnings.
11618
11619         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11620         interruption_checkpoint.
11621
11622 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11623
11624         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11625         from embedding applications.
11626
11627 2008-06-02  William Holmes  <billholmes54@gmail.com>
11628
11629         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11630           reserving 32 bytes on the stack when making calls. 
11631
11632         Contributed under MIT/X11 license.
11633
11634 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11635
11636         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11637         the linear IL branch.
11638
11639         * driver.c: Print out more information for --version on arm.
11640
11641 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11642
11643         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11644         bb_exit instead, since out of line bblocks might not actually be emitted
11645         out-of-line.
11646         
11647         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11648         maximum epilog size for out of line bblocks if tracing is enabled.
11649
11650         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11651
11652 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11653
11654         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11655
11656 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11657
11658         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11659         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11660         opcodes.
11661
11662 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11663
11664         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11665         the 'value' to store is a constant.
11666
11667         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11668
11669         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11670         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11671
11672 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11673
11674         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11675         for accessing method->generic_container.
11676
11677 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11678
11679         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11680         
11681         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11682
11683         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11684
11685         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11686         fails.
11687
11688 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11689
11690         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11691
11692         * mini.c: Handle the case when mono_class_vtable () fails.
11693
11694 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11695         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11696         the stat profiler.
11697
11698 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11699
11700         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11701         together with domain sharing.
11702
11703 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11704
11705         * mini.c: Treat callvirts to final methods like non-virtual calls
11706         when doing generic sharing, i.e. look them up in the runtime
11707         generic context.
11708
11709 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11710
11711         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11712         with computed types (for generic sharing).
11713
11714         * mini.c: Generic sharing for mkrefany and refanyval.
11715
11716 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11717
11718         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11719         possible.
11720
11721         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11722         the generic sharing code.
11723         
11724         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11725         when needed.
11726
11727 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11728
11729         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11730
11731 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11732
11733         * driver.c: updated copyright date
11734
11735 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11736
11737         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11738         needed.
11739
11740 2008-05-19  Martin Baulig  <martin@ximian.com>
11741
11742         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11743         pointing to the new `_mono_debug_using_mono_debugger' variable.
11744
11745         * driver.c
11746         (mono_main): Check mono_debug_using_mono_debugger() rather than
11747         the `MONO_INSIDE_MDB' environment variable to check whether we're
11748         inside the debugger.
11749
11750 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11751
11752         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11753         argument.
11754
11755 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11756
11757         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11758
11759         * mini.c: Added mini_assembly_can_skip_verification. This
11760         function checks if the assembly requested to skip verification. 
11761         Fixes part of #387274.
11762
11763 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11764
11765         * mini.c (mini_get_method): Disable the check for open generic classes when
11766         using generic sharing.
11767
11768         * generics.cs: Add a test for #387034.
11769
11770         * mini.c (mini_get_method): Check whenever the method class is an open generic
11771         type, and return NULL in that case, causing a verification error. Fixes
11772         #384123.
11773
11774 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11775
11776         * driver.c (mono_main): Revert r102623. The right
11777         thing to do is to enable the verifier under verifiable
11778         unless a --security flag was passed.
11779
11780         We need this non-trivial behavior for --verify-all otherwise
11781         mcs-compileall won't be able to use it. As it needs everything to
11782         be verified under validil.
11783
11784 2008-05-06  Martin Baulig  <martin@ximian.com>
11785
11786         Fix #383749.
11787
11788         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11789         (mono_debugger_thread_cleanup): Likewise.
11790         (mono_debugger_extended_notification): Likewise.
11791
11792 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11793
11794         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11795         against both inflated and non-inflated methods. We need to check against the
11796         generic definition for cases where the instantiated method is not visible.
11797         We need to check against the inflated types for cases where the instantiation
11798         changes any super type. This fixes #382986.
11799
11800         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11801         that check for visibiliy as generic params only appears as the type subject
11802         of tokens on call opcodes. Field manipulation and ldftn must always
11803         target an exact type.
11804
11805 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11806
11807         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11808         if no related --security flag is passed.
11809
11810 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11811
11812         * mini-arch.h: Prepare support for ppc64.
11813
11814         Contributed under MIT/X11 license.
11815
11816 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11817
11818         * aot-runtime.c: Prepare support for ppc64.
11819
11820         Contributed under MIT/X11 license.
11821
11822 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11823
11824         * mini-ops.h: Prepare support for ppc64.
11825
11826         Contributed under MIT/X11 license.
11827
11828 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11829
11830         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11831
11832         Contributed under MIT/X11 license.
11833
11834 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11835
11836         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11837         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11838         assemblies on windows.
11839
11840 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11841
11842         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11843         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11844         * main.c: Use UTF-8 encoded command line instead of Windows default code
11845         page on Windows to support Unicode.
11846         * driver.c (DllMain): New function for mixed-mode assembly support.
11847         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11848         export __stdcall functions without decoration.
11849
11850         Contributed under MIT/X11 license.
11851
11852 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11853
11854         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11855         saving it very early.
11856
11857 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11858
11859         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11860         deleted.  The only way to access the new RGCTX is via the
11861         trampline.
11862
11863         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11864         vtable instead of the RGCTX to static methods.
11865
11866         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11867         accessing the new RGCTX.
11868
11869         * generic-sharing.c: There is no separation between self, type
11870         arguments and other types in the RGCTX anymore.
11871
11872 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11873
11874         * mini-amd64.c (add_general): Remove previous stack adjustment.
11875         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11876         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11877         for 32 bytes of stack space reserved for all calls.
11878         
11879         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11880         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11881         adjustment.
11882         
11883         Code contributed under MIT/X11 license.
11884
11885 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11886
11887         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11888         against the root definition, peeling out method and type instantiations.
11889         Cache verify success results, code that fails verification is still
11890         checked multiple times.
11891
11892 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11893
11894         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11895
11896 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11897
11898         * mini-amd64.c (add_general): Always increment stack on Win64.
11899         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11900         on Win64.
11901         
11902         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11903         stack based argument handling on Win64.
11904         
11905         Code contributed under MIT/X11 license.
11906
11907 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11908
11909         * Makefile.am (version.h): Add support for git-svn.
11910
11911 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11912
11913         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11914         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11915         avoiding allocations and libc functions which might deadlock.
11916         
11917         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11918         'no-gdb-backtrace' option is set.
11919
11920         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11921
11922         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11923
11924 2008-04-21  Martin Baulig  <martin@ximian.com>
11925
11926         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11927         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11928
11929 2008-04-21  Martin Baulig  <martin@ximian.com>
11930
11931         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11932         `thread_vtable', `event_handler_ptr' and `event_handler'.
11933
11934 2008-04-21  Martin Baulig  <martin@ximian.com>
11935
11936         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11937         allows delayed initialization of the `executable_code_buffer' when
11938         attaching.
11939
11940 2008-04-21  Martin Baulig  <martin@ximian.com>
11941
11942         * mini.h (mono_debugger_create_notification_function): Removed.
11943         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11944
11945         * mdb-debug-info64.s
11946         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11947
11948         * mdb-debug-info32.s
11949         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11950
11951         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11952         currently only works on x86 and x86_64, so don't create it on ppc.
11953
11954 2008-04-21  Martin Baulig  <martin@ximian.com>
11955
11956         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11957
11958         * mini.c
11959         (mini_method_compile): In the fp elimination check, check
11960         `debug_options.mdb_optimizations' in addition to
11961         mono_debug_using_mono_debugger().       
11962
11963         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11964         disable some JIT optimizations which are only disabled when
11965         running inside the debugger.
11966         Added `--help-debug' option to describe the debugging options.
11967         (parse_debug_options): New static function to parse the `--debug'
11968         options, so we can easily add more stuff in future.
11969
11970 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11971
11972         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11973         the method has no body.
11974
11975 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11976
11977         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11978         assembly is not allowed in MSVC 64-bit compiler. 
11979         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11980         as we get floating point exceptions everywhere.
11981         
11982         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11983         correctly align arguments for call to throw_exception.
11984         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11985         
11986         Code contributed under MIT/X11 license.
11987
11988 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
11989
11990         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
11991
11992 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
11993
11994         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
11995
11996         * mini-amd64.c (NEW_INS): Set cil_code.
11997
11998         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
11999         from mini-amd64.c so all debugger related logic is in one place.
12000
12001         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12002         later won't have a random ip assigned to them.
12003
12004 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12005
12006         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12007         the arch specific function initializes code_size.
12008         (mono_create_delegate_trampoline): Ditto.
12009
12010         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12011         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12012         platforms.
12013
12014         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12015         running under the debugger.
12016
12017         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12018         debugger.
12019
12020         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12021         debugger. Also move the disabling of optimizations here from driver.c.
12022         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12023         debugger.
12024
12025         * mini.h (MonoCompile): Add a few new flags.
12026
12027 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12028
12029         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12030         so the cil_code field of created MonoInst's is properly set.
12031         (mini_select_instructions): Ditto.
12032
12033         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12034         (MONO_INST_NEW_CALL): Ditto.
12035
12036         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12037         in many places so the ins->cil_code field is properly initialized.
12038
12039         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12040         place.
12041
12042 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12043
12044         * mini.c (mini_method_compile): Print a different message when compiling a 
12045         shared method.
12046         
12047         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12048         > 1.
12049
12050 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12051
12052         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12053         SSE2 instructions.
12054
12055         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12056         
12057 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12058
12059         * mini.c (handle_stack_args): Make this return void since its return value was
12060         never used. Also set cfg->unverifiable for invalid IL instead of calling
12061         G_BREAKPOINT ().
12062
12063 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12064
12065         * mini.c: Make sure "this" is live in catch clauses with type
12066         variables in shared generic code.
12067
12068 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12069
12070         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12071         generic_class_is_reference_type() to ensure the proper behaviour
12072         when sharing generic code and the type in question is a type
12073         argument.
12074
12075 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12076
12077         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12078         race conditions when printing thread dumps. Fixes #377738.
12079
12080 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12081         
12082         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12083         shows up when both MonoInst arguments can cause aliasig.
12084         There is likely no way in the current JIT to trigger this problem, but
12085         it showed up in the development of generics sharing, when in a new
12086         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12087         When the generics sharing code will be committed, its tests will be
12088         valid also for this bug.
12089
12090 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12091
12092         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12093         PATCH_INFO_METHOD.
12094
12095         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12096         NULL.
12097
12098 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12099
12100         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12101         use a more detailed exception message for InvalidCastException.
12102
12103         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12104
12105         * driver.c (mono_main): Add --debug=casts option to turn on better 
12106         InvalidCastException message details.
12107
12108         * mini.c (mini_get_debug_options): New helper function to return the address of
12109         the debug_options variable.
12110
12111         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12112         the jit_tls TLS variable.
12113
12114         * mini.c (mono_jit_tls): New TLS variable.
12115
12116         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12117         option is used.
12118
12119 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12120
12121         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12122
12123         * mini.c: Removed verifer related stuff, code moved to verify.c.
12124
12125         * driver.c: Using code from verify.c instead of mini.c.
12126
12127 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12128
12129         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12130         longer valid.
12131
12132 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12133
12134         * mini.c (check_for_method_verify): Enabling verification of
12135         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12136         have been fixed.
12137
12138 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12139
12140         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12141         caller saved registers as well.
12142         
12143         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12144         saved registers as well.
12145
12146 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12147
12148         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12149
12150         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12151         code.
12152
12153 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12154
12155         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12156         to get_call_info.
12157         (get_call_info): Take a gsctx argument instead of 'cfg'.
12158
12159 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12160
12161         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12162         mono_verify_all is set.
12163
12164         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12165
12166         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12167
12168 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12169
12170         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12171         an exception.
12172
12173         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12174         verifier and the code generated by the compiler.
12175
12176 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12177
12178         * mini.c: Generic sharing of the non-nullable case of the box
12179         instruction.
12180
12181 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12182
12183         * inssel.brg: Fix the build.
12184
12185         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12186
12187 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12188
12189         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12190         Array:Address. Fixes #372410.
12191
12192         * iltests.il.in: New tests for readonly prefix.
12193
12194 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12195
12196         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12197         mini-trampolines.c.
12198
12199         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12200         mini-exceptions.c.
12201
12202         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12203         
12204         * mini.c (mono_decompose_op_imm): New helper function.
12205
12206         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12207         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12208         return value.
12209
12210         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12211         mono_arch_output_basic_block. Fix warnings.
12212
12213         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12214         for now.
12215
12216 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12217
12218         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12219         since the extra frame is now detected automatically inside the loop.
12220
12221         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12222         opts which are now in mono_peephole_ins ().
12223         
12224         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12225
12226         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12227         frames and skip duplicate managed-to-native frames. Fixes #367665.
12228
12229         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12230         opts which are now in mono_peephole_ins ().
12231         (mono_arch_peephole_pass_2): Ditto.
12232
12233         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12234
12235         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12236         arch independent peephole optimizations.
12237
12238         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12239         opts which are now in mono_peephole_ins ().
12240
12241         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12242         
12243         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12244
12245         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12246         pattern.
12247
12248         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12249         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12250         opcode. 
12251
12252 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12253
12254         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12255         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12256         return value.
12257
12258         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12259         mono_arch_output_basic_block. Fix warnings.
12260
12261 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12262
12263         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12264         conv.ovf.u.un.
12265
12266 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12267
12268         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12269         conv.ovf.u.un.
12270
12271         * iltests.il: Add new tests.
12272
12273 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12274
12275         * mini.c: Removed Windows version macros.
12276
12277 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12278
12279         * generic-sharing.c: Put reflection types in the extensible part
12280         of the runtime generic context.
12281
12282         * mini.c: Generic sharing of the GetTypeHandle special case of the
12283         ldtoken instruction.
12284
12285 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12286
12287         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12288
12289         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12290         
12291         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12292         consistency with the other version on the linear IR branch.
12293
12294         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12295
12296         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12297
12298         * iltests.il.in: Add new tests.
12299
12300 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12301
12302         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12303
12304         * iltests.il.in: Add new tests.
12305
12306 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12307
12308         * mini.c: Two variables with the same name were declared in
12309         nesting contexts and one wasn't initialized.  Fixed.
12310
12311 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12312
12313         * mini.c: Generic sharing of the initobj instruction.
12314
12315 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12316
12317         * mini.c: make the test to optimize ldtoken from typeof() more
12318         precise.
12319
12320 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12321
12322         * mini.c: Generic sharing of the initobj instruction for reference
12323         types.
12324
12325 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12326
12327         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12328         the mono_breakpoint_clean_code() code to perform bound checks.
12329
12330 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12331
12332         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12333         mono_arch_patch_callsite() to include the start of the managed method
12334         to be able to perform bound checks.
12335
12336 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12337
12338         * mini.c: Generic sharing for the isinst instruction.
12339
12340 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12341
12342         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12343         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12344         with the runtime generic context argument.
12345
12346         * mini.c: Share calls to several types of unsharable methods by
12347         putting the address of the method code in the runtime generic
12348         context and doing an indirect call.
12349
12350         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12351         to switches.
12352
12353 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12354
12355         * generic-sharing.c: Change due to a change in the runtime genric
12356         context API.
12357
12358 2008-03-15  Martin Baulig  <martin@ximian.com>
12359
12360         * tramp-x86.c
12361         (mono_arch_nullify_class_init_trampoline): Add call to
12362         mono_breakpoint_clean_code() to make things work when running
12363         inside the debugger.
12364
12365         * tramp-amd64.c
12366         (mono_arch_nullify_class_init_trampoline): Add call to
12367         mono_breakpoint_clean_code() to make things work when running
12368         inside the debugger.
12369
12370 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12371
12372         * inssel-long.brg (reg): Fix 64 bit build.
12373
12374 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12375
12376         * mini.c, mini.h: Share static generic code by passing it an
12377         implicit argument pointing to the runtime generic context.
12378
12379         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12380         inssel-long32-mips.brg: New opcodes for calling shared static,
12381         which need to be passed the runtime generic context.
12382
12383         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12384         argument on the stack in the prologue if needed.  New function for
12385         finding the runtime generic context argument from the registers
12386         saved by the trampoline.
12387
12388         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12389         runtime generic context argument.
12390
12391         * tramp-amd64.c: Also restore the register used for the runtime
12392         generic context argument.
12393
12394         * mini-trampoline.c: Resolve shared static calls by consulting the
12395         runtime generic context via the new argument.
12396
12397         * generic-sharing.c: Add an argument to sharability-checking
12398         functions that specifies whether type variables should be treated
12399         as sharable type arguments.
12400
12401         * inssel-x86.brg: Removed a superfluous, buggy rule.
12402
12403         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12404         to switches.
12405
12406 2008-03-14  Martin Baulig  <martin@ximian.com>
12407
12408         * debug-debugger.c (main_thread_handler): Call
12409         mono_runtime_run_main() without sending any notifications.
12410
12411         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12412
12413 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12414
12415         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12416
12417 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12418
12419         * tramp-x86.c: Fixed register restore offsets in the trampoline
12420         code for ECX and EDX.
12421
12422 2008-03-12  Geoff Norton  <gnorton@novell.com>
12423
12424         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12425         different ucontext_t implementations.
12426         * exceptions-arm.c: Use the above defines to get exceptions working on 
12427         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12428         * mini-arm.c: Implement iPhone icache support (based on a patch by
12429         Luke Howard lukeh@padl.com)
12430
12431 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12432
12433         * mini.c: Enable generic sharing of calls to non-static
12434         non-interface non-generic non-value-type methods.
12435
12436         * mini-trampolines.c: Resolve calls from shared generic code.
12437
12438 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12439
12440         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12441
12442         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12443
12444 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12445
12446         * mini.c: some fixes for the AOT compiler.
12447
12448 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12449
12450         * cpu-amd64.md: Add clob:1 to some float opcodes.
12451
12452 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12453
12454         * mini.h: Added MiniVerifierMode enumeration.
12455
12456         * mini.c: Added mini_verifier_set_mode to control
12457         the usage of the new verifier.
12458
12459         * mini.c (mono_method): Integrated the new verifier.
12460
12461         * driver.c: Extended --security option with validil and
12462         verifiable options to activate the new verifier.
12463
12464 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12465
12466         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12467         optimization to ctors taking 0 or 2 arguments too.
12468
12469         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12470         a bit.
12471
12472         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12473
12474         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12475
12476 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12477
12478         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12479         non-aot case as well.
12480
12481         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12482
12483         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12484         changes.
12485
12486         * aot-compiler.c (encode_patch): Ditto.
12487
12488         * mini.h (G_MININT32): Fix the definition of this.
12489
12490 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12491
12492         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12493
12494         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12495
12496 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12497
12498         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12499         methods returning vtypes in registers.
12500         (mono_arch_allocate_vars): Ditto.
12501
12502         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12503
12504         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12505
12506         * generics.cs: Add a test from the linear IR branch.
12507
12508         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12509
12510         * mini.c (inline_method): Cache failed inline attempts.
12511
12512 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12513
12514         * mini.c: For shared methods of generic classes put the location
12515         of "this" into the MonoGenericJitInfo.
12516
12517         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12518         register out of a MonoContext by register number.  Add the generic
12519         sharing context as an argument to mono_arch_find_this_argument().
12520
12521         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12522         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12523         for new arch function.
12524
12525         * mini-exception.c: Handle open exception clauses in shared
12526         generic code.
12527
12528         * mini-trampolines.c: Supply additional argument to
12529         mono_arch_find_this_argument().
12530
12531 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12532
12533         * Makefile.am (regtests): Run the bench.exe tests last.
12534
12535 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12536
12537         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12538         a bit.
12539
12540 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12541
12542         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12543         with MS.
12544
12545         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12546         
12547         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12548
12549         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12550         whose class has no cctor.
12551
12552         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12553
12554 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12557         unverified.
12558
12559 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12560
12561         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12562         to be in sync with the code on the linear IR branch.
12563
12564         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12565
12566         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12567
12568 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12569
12570         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12571
12572         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12573
12574         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12575
12576         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12577
12578         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12579         
12580         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12581         body.
12582
12583 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12584
12585         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12586         OP_LOADR4_MEMBASE emission.
12587
12588         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12589         (mono_spillvar_offset_float): Ditto.
12590
12591         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12592
12593         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12594         emission.
12595
12596         * basic-long.cs: Add regression tests for them.
12597
12598         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12599         use.
12600         (mono_arch_allocate_vars): Fix representation of single-precision float
12601         argument.
12602         (mono_arch_output_basic_block): Ditto.
12603
12604         * inssel-mips.brg: Ditto, remove duplicate items.
12605
12606         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12607         arguments of tail calls as on other platforms.
12608         (mono_arch_output_basic_block): Handle tail calls.
12609
12610         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12611         register.
12612
12613         * objects.cs (test_5_pass_static_struct): Add test for it.
12614
12615         Contributed under MIT/X11 license.
12616
12617 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12618
12619         * Makefile.am: Use gmcs for compiling the regression tests.
12620
12621         * *.2.cs *.2.il: Rename to *.cs and *.il.
12622
12623 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12624
12625         * regalloc.h: Make the vassign array smaller.
12626
12627         * mini.c (mini_method_compile): Remove an unused field in cfg.
12628
12629         * mini-codegen.c: Add a bunch of micro optimizations.
12630
12631 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12632
12633         * regalloc.h: Remove some unused fields.
12634
12635 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12636
12637         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12638
12639         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12640
12641 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12642
12643         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12644
12645         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12646         trampoline: Fetch an entry from the runtime generic context.  If
12647         it's NULL, jump to the actual trampoline to fill the runtime
12648         generic context.  Otherwise, return it.
12649
12650         * mini.c: Call the lazy fetch trampoline to get entries out of the
12651         runtime generic context.
12652
12653         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12654         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12655         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12656
12657 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12658
12659         * mini.c: Fetch data out of the extensible part of the runtime
12660         generic context instead of calling a helper function.
12661
12662         * generic-sharing.c: Some functions moved into
12663         metadata/generic-sharing.c.  Helper function for fetching other
12664         types now checks and asserts against extensible rgctx (just for
12665         debugging purposes - the helper function isn't called anymore
12666         unless for debugging).
12667
12668 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12669
12670         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12671         for tail calls up to the point that the tests in iltests.exe run. Also add a
12672         dummy CKFINITE implementation.
12673         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12674         needed for trampoline LMF frames.
12675
12676         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12677         trampoline LMF frames.
12678
12679 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12680
12681         * mini.c (inline_method): clean any pending loader error when inlining fail.
12682         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12683
12684 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12685
12686         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12687
12688         * aot-runtime.c (decode_patch_info): Ditto.
12689
12690         * mini.c (mono_resolve_patch_target): Ditto.
12691         
12692         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12693         icall wrappers.
12694
12695         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12696         
12697         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12698         if it references an icall address.
12699
12700 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12701
12702         * cpu-s390x.md: Remove some more unused opcodes.
12703         
12704         * cpu-s390x.md: Remove some unused opcodes.
12705
12706         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12707         mono_op_imm_to_op ().
12708
12709         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12710         instead of a switch statement.
12711         
12712         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12713         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12714
12715         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12716         
12717         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12718
12719         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12720         -1.
12721
12722 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12723
12724         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12725         opened. Fixes #362607.
12726
12727         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12728
12729         * iltests.il.in: Add a test for static methods in interfaces.
12730
12731 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12732
12733         * genmdesc.c (build_table): Fix a crash on older glib versions.
12734
12735         * cpu-sparc.md: Remove some unused opcodes.
12736         
12737         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12738         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12739
12740         * cpu-amd64.md: Remove some unused opcodes.
12741
12742         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12743         like the other opcodes.
12744
12745 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12748
12749         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12750
12751         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12752         variables 'cfg' instead of 'm' for consistency.
12753
12754         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12755
12756         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12757         argument holding the vtype return address, to avoid the ambigious use of
12758         cfg->ret for this purpose.
12759
12760         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12761
12762         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12763         
12764         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12765         new mono_print_ins () function which only takes one argument.
12766
12767 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12768
12769         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12770         macro arguments.
12771
12772 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12773
12774         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12775
12776         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12777
12778         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12779         opcodes and other small changes.
12780
12781         * mini-ops.h: Add some new opcodes from the linear IR branch.
12782
12783         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12784
12785         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12786         opcodes, use the REG_MEMBASE opcodes instead.
12787         
12788         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12789         opcodes, use the REG_MEMBASE opcodes instead.
12790         
12791         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12792         linear IR branch.
12793
12794         * mini.c (mono_op_imm_to_op): New helper function.
12795
12796         * mini-ops.h: Add some opcodes from linear IR branch.
12797
12798 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12799
12800         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12801         <tsv@solvo.ru>.
12802
12803 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12804
12805         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12806         OP_ICONV_TO_R4/R8.
12807
12808         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12809
12810 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12811
12812         * aot-compiler.c (emit_method_code): Add an assert.
12813
12814         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12815         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12816         methods.
12817
12818 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12819
12820         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12821         some load/store opcodes so they are consistent. 
12822         (mono_arch_emit_prolog): Simplify some code.
12823
12824         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12825
12826         * objects.cs: Add tests for large argument offsets on ARM.
12827
12828         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12829         stack offsets. Fixes #359651.
12830
12831         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12832
12833         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12834
12835         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12836
12837         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12838
12839         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12840
12841         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12842         rid of CEE_CONV_R_UN.
12843
12844         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12845
12846 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12847
12848         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12849
12850         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12851
12852         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12853
12854         * cpu-amd64.md: Remove some unused opcodes.
12855
12856         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12857
12858         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12859
12860         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12861         arch specific functions for its parts. Call the peephole pass after local
12862         regalloc so the prolog can compute a more accurate max_offset.
12863         
12864         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12865         the corresponding OP_I/OP_L opcodes.
12866
12867         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12868
12869         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12870
12871 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12872
12873         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12874         as they are handled in mini.c.
12875
12876         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12877         
12878         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12879         case since it is handled in mini.c.
12880
12881         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12882
12883         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12884
12885         * *.c: Use the new opcodes in the IR and back end code.
12886
12887         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12888
12889         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12890
12891 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12892
12893         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12894         an assert because it has a race condition.
12895
12896 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12897
12898         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12899
12900         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12901
12902         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12903
12904         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12905         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12906
12907 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12908
12909         * cpu-amd64.md (move): Correct the maximum size of move.
12910
12911 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12912
12913         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12914         the generic class init trampoline to return quickly if the class
12915         is already inited.
12916
12917 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12918
12919         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12920         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12921
12922 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12923
12924         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12925         branch.
12926
12927 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12928
12929         * objects.cs: Add some soft-float tests.
12930
12931         * mini.c: Fix a couple more soft-float issues.
12932
12933         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12934
12935         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12936         avoid a REX prefix.
12937
12938 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12939
12940         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12941         exception happens while compiling a virtual method.
12942
12943 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12944
12945         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12946         
12947         * mini-sparc.c: Fix build.
12948
12949         * mini-sparc.c (get_call_info): Add support for generic sharing.
12950
12951         * mini-exceptions.c: Add a FIXME.
12952
12953 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12954
12955         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12956         altstack handling code.
12957
12958         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12959         
12960         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12961
12962         * mini-s390.c: Add support for generic sharing.
12963
12964         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12965         Fix CAS on s390.
12966         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12967
12968         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12969
12970         * mini-s390x.c: Add support for generic sharing.
12971         
12972         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12973         Fix CAS on ia64.
12974         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12975
12976         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12977         can be used since it takes a 16 bit signed immediate.
12978
12979         * inssel-s390x.brg: Fix OP_SETRET.
12980
12981         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12982
12983         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12984
12985         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
12986
12987         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
12988
12989         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
12990         in one place.
12991
12992         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
12993         stuff.
12994
12995         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
12996         of the unused mono_arch_patch_delegate_trampoline stuff.
12997
12998 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
12999
13000         * basic-long.cs: Move the fp related tests to basic-float.cs.
13001
13002         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13003
13004         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13005
13006         * basic-calls.cs: Add a test for proper float argument passing.
13007
13008         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13009         if the context corresponds to an exception received through a signal.
13010
13011         * exceptions.cs: Add a test for nullref handling at the start of a try
13012         clause.
13013
13014         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13015
13016         * jit-icalls.c (mono_break): New JIT icall.
13017
13018         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13019
13020         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13021
13022 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13023
13024         * cpu-*.md: Get rid of unused opcodes.
13025
13026         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13027
13028         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13029         by all platforms.
13030
13031         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13032         define.
13033
13034         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13035         the arch independent trampoline code in mini-trampolines.c.
13036
13037         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13038
13039         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13040
13041         * mini-s390.h: Remove an unused define.
13042         
13043         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13044         the arch independent trampoline code in mini-trampolines.c.
13045
13046         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13047
13048 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13049
13050         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13051
13052         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13053
13054         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13055
13056         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13057
13058         * cpu-amd64.md: Use smaller sizes for int opcodes.
13059
13060         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13061
13062         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13063         objects.cs.
13064
13065         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13066         debugging.
13067
13068         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13069         instead of though a pointer to save an indirection when accessing elements of
13070         the array.
13071
13072         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13073         some typos.
13074         (NOT_IMPLEMENTED): New helper macro.
13075         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13076         of a bb.
13077
13078         * *.c: Use the new helper macro.
13079
13080 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13081
13082         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13083
13084 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13085
13086         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13087         stack slots.
13088
13089 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13090
13091         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13092         profiling is enabled.
13093         
13094         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13095         the end.
13096         (mono_arch_emit_prolog): Add more first bblock optimizations.
13097
13098         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13099         in order if possible.
13100         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13101         bblock, since the arguments are still in their original registers.
13102
13103         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13104
13105 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13106
13107         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13108         as well.
13109
13110         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13111         offset 0.
13112
13113         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13114
13115         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13116         process async exceptions received while in unmanaged code.
13117
13118         * mini.c (mini_init): Install a callback with the runtime which will be called
13119         when a thread receives an async exception while in unmanaged code.
13120
13121         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13122
13123         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13124
13125 2008-01-16  Wade Berrier  <wberrier@novell.com>
13126
13127         * cpu-g4.md:
13128         * cpu-arm.md:
13129         * cpu-s390x.md:
13130         fix build
13131
13132 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13133
13134         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13135         compilation with sun cc.
13136
13137         * cpu-*.md: Fix the build.
13138
13139         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13140
13141         * mini-amd64.h: Add some comments to the MonoLMF structure.
13142
13143         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13144         
13145         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13146         in the LMF structure if possible. This saves two instructions in the
13147         managed->native wrappers.
13148
13149         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13150
13151 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13152
13153         * generic-sharing.c: New type argument lookup code which uses the
13154         runtime generic context template.
13155
13156 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13157
13158         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13159
13160         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13161         (mono_arch_output_basic_block): Fix localloc implementation.
13162
13163         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13164
13165         * mini-ia64.c (peephole_pass): Fix ia64 build.
13166
13167         * mini-amd64.c (peephole_pass): Fix a warning.
13168         
13169         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13170         at a constant offset from sp/fp.
13171
13172         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13173         instead of obtaining it from *lmf in the managed method case.
13174
13175 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13176
13177         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13178
13179 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13180
13181         * mini.h (MonoInstList): New type.
13182         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13183         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13184         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13185         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13186         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13187         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13188         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13189         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13190         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13191         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13192         MONO_INST_LIST_FOR_EACH_ENTRY,
13193         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13194         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13195         mono_inst_list_first, mono_inst_list_last,
13196         mono_inst_list_next, mono_inst_list_prev): New instruction
13197         list handling interfaces.
13198         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13199         list head 'ins_list'.
13200         (MonoInst): Replace next pointer with list head 'node'.
13201         (MonoCallInst): Make 'out_args' a MonoInstList.
13202         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13203         (MonoCompile): Delete reverse_inst_list and
13204         reverse_inst_list_len.
13205         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13206         mono_arch_lowering_pass, mono_arch_local_regalloc,
13207         mono_arch_output_basic_block, mono_arch_emit_prolog):
13208         Convert to new instruction lists.
13209         (insert_after_ins): Delete.
13210         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13211         instruction lists.
13212         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13213         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13214         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13215         mono_emulate_opcode, mono_emit_load_got_addr,
13216         inline_method, mono_method_to_ir, mono_print_bb_code,
13217         print_dfn, decompose_pass, nullify_basic_block,
13218         replace_out_block_in_code, remove_block_if_useless,
13219         merge_basic_blocks, move_basic_block_to_end,
13220         try_unsigned_compare, optimize_branches, mono_print_code,
13221         mini_select_instructions, remove_critical_edges): Likewise.
13222         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13223         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13224         mono_arch_output_basic_block, mono_arch_emit_prolog):
13225         Likewise.
13226         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13227         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13228         mono_arch_output_basic_block): Likewise.
13229         (inst_list_prepend, insert_after_ins): Delete.
13230         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13231         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13232         instruction lists.
13233         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13234         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13235         mono_arch_emit_prolog): Likewise.
13236         * cfold.c (mono_constant_fold): Likewise.
13237         * liveness.c (visit_bb, mono_analyze_liveness,
13238         optimize_initlocals): Likewise.
13239         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13240         * graph.c (mono_draw_code_cfg): Likewise.
13241         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13242         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13243         mono_ssa_cprop): Likewise.
13244         * abcremoval (get_relations_from_previous_bb, process_block):
13245         Likewise.
13246         * local-propagation (mono_cprop_invalidate_values,
13247         mono_local_cprop_bb): Likewise.
13248         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13249         peephole_pass, mono_arch_output_basic_block,
13250         mono_arch_emit_prolog): Likewise.
13251         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13252         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13253         mono_arch_emit_prolog): Likewise.
13254         (insert_after_ins): Delete.
13255         * aliasing.c (print_code_with_aliasing_information,
13256         mono_build_aliasing_information, mono_aliasing_deadce):
13257         Convert to new instruction lists.
13258         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13259         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13260         mono_arch_local_regalloc, mono_arch_output_basic_block):
13261         Likewise.
13262         (insert_after_ins): Delete.
13263         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13264         peephole_pass, mono_arch_output_basic_block): Convert to
13265         new instruction lists.
13266         * mini-codegen (InstList, inst_list_prepend,
13267         insert_after_ins): Delete.
13268         (insert_before_ins, get_register_force_spilling,
13269         get_register_spilling, free_up_ireg, free_up_reg,
13270         create_copy_ins, create_spilled_store, alloc_int_reg,
13271         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13272         to new instruction lists.
13273         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13274         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13275         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13276         (insert_after_ins): Delete.
13277         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13278         mono_arch_local_regalloc, mono_arch_output_basic_block,
13279         mono_arch_call_opcode): Convert to new instruction lists.
13280         (insert_after_ins): Delete.
13281         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13282         peephole_pass, mono_arch_output_basic_block,
13283         mono_arch_emit_prolog): Convert to new instruction lists.
13284
13285 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13286
13287         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13288
13289         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13290         Fixes #353182.
13291
13292         * Makefile.am (version.h): Make this work with non-bash shells.
13293
13294 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13295
13296         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13297
13298 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13299
13300         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13301         the InitializeArray optimization.
13302
13303 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13304
13305         * mini.c driver.c: Don't include os/gc_wrapper.h.
13306
13307 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13308
13309         * mini.c (print_jit_stats): Print GC statistics if available.
13310
13311 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13312
13313         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13314
13315 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13316
13317         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13318
13319 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13320
13321         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13322         
13323         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13324
13325         * driver.c (mono_main): Ditto.
13326
13327 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13328
13329         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13330
13331         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13332         in the vtable can't be encoded.
13333         (compile_method): Ditto.
13334
13335 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13336
13337         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13338         defined.
13339
13340         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13341         lmf->rbp.
13342
13343         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13344         the top LMF entry belongs to the current method.
13345
13346         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13347
13348 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13349
13350         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13351         
13352         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13353
13354         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13355
13356         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13357
13358         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13359
13360         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13361         implementation.
13362
13363         * basic-float.cs: Add an ulong->double cast test.
13364
13365 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13366
13367         * mini.c (mono_method_to_ir): Fix a warning.
13368
13369 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13370
13371         * mini-ops.h: Add OP_SWITCH.
13372
13373         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13374         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13375
13376 2007-12-11  Geoff Norton  <gnorton@novell.com>
13377
13378         * mini-s390x.c: Minor change to the MAX() define to allow
13379         it to compile with other gcc versions.
13380
13381 2007-12-11  Geoff Norton  <gnorton@novell.com>
13382
13383         * cpu-s390x.md:
13384         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13385
13386 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13387
13388         exceptions-arm.c (mono_arch_get_restore_context): Restore
13389         the frame pointer.
13390
13391         exceptions-arm.c (throw_exception): Save the frame pointer.
13392         This is a partial fix for #323747. Only the client side is
13393         fixed.
13394
13395 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13396
13397         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13398         was using an unrelated variable to log the class which
13399         needed the cctor to be called. This was crashing on arm.
13400
13401 2007-12-09  Robert Jordan  <robertj@gmx.net>
13402
13403         * mini-x86.c (mono_arch_emit_epilog):
13404         Consider all kinds of 64-bit types. Fixes #323114.
13405
13406 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13407
13408         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13409
13410 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13411
13412         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13413
13414 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13415
13416         * mini.c: run type ctor before allocating an object, not only
13417         when running it's constructor method (fixes at least part of bug #342507).
13418
13419 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13420         
13421         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13422         
13423         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13424         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13425         function.
13426
13427         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13428         mono_generic_class_init_trampoline () the same as it is done with the other
13429         trampolines.
13430
13431         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13432         aot-runtime.c aot-compiler.c: Implement AOT support.    
13433
13434 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13435
13436         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13437         build for archs which don't have the vtable trampoline defined
13438         yet.
13439
13440 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13441
13442         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13443
13444         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13445
13446         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13447
13448         * tramp-<ARCH>.c: Use the new helper function.
13449
13450 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13451
13452         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13453         trampoline call, which takes a vtable argument.
13454
13455         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13456         OP_TRAMPCALL_VTABLEs like other calls.
13457
13458         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13459         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13460         call.  Implemented a support function which fetches the vtable
13461         from a register set.
13462
13463         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13464         Implemented a generic class init trampoline, using the
13465         OP_TRAMPCALL_VTABLE opcode.
13466
13467         * mini.c: Implemented static field access when sharing generic
13468         code.  This implies initing the class using the new
13469         OP_TRAMPCALL_VTABLE call.
13470
13471 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13472
13473         * mini.c: Don't compile methods with sharing enabled if their
13474         classes are disabled for sharing.
13475
13476 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13477
13478         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13479         opcodes. Fixes #346563.
13480
13481         * objects.cs: Add a new test.
13482
13483         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13484
13485         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13486         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13487
13488 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13489
13490         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13491
13492 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13493
13494         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13495         code stream.
13496
13497 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13498
13499         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13500
13501         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13502         optimization in the AOT case.
13503         
13504 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13505
13506         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13507         
13508         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13509
13510         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13511
13512         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13513
13514         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13515         is created by the inlined delegate ctor.
13516
13517         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13518
13519         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13520
13521 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13522
13523         * cpu-x86.md: Fix the length of ckfinite.
13524
13525 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13526
13527         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13528         
13529         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13530         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13531
13532         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13533
13534         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13535         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13536
13537 2007-11-28  Martin Baulig  <martin@ximian.com>
13538
13539         * mini-x86.c
13540         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13541         after creating the trampoline.
13542
13543 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13544
13545         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13546
13547         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13548         the same version.
13549
13550         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13551         instead of the calling method to help AOT.
13552
13553         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13554
13555 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13556
13557         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13558         is defined.
13559
13560 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13561
13562         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13563         
13564         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13565         (encode_method_ref): No need to handle generic method definitions specially.
13566
13567         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13568
13569         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13570         decode_klass_info.
13571
13572         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13573         encode_klass_info.
13574         (compile_method): Enable generic sharing.
13575
13576 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13577
13578         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13579         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13580
13581         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13582         generic code.
13583
13584         * mini-trampolines.c: Fix a warning.
13585
13586         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13587         NEW_PCONST.
13588         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13589         (generic_class_is_reference_type): Remove unused function.
13590
13591         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13592         in the generic vtable trampoline case.
13593
13594         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13595         
13596         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13597         return an AOT method based on a vtable slot.
13598
13599         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13600
13601         * mini.c (mini_get_vtable_trampoline): Export this.
13602
13603 2007-11-22  Martin Baulig  <martin@ximian.com>
13604
13605         * debug-debugger.h
13606         (MonoDebuggerInfo): Move `debugger_version' up.
13607
13608 2007-11-22  Martin Baulig  <martin@ximian.com>
13609
13610         * mini-amd64.c
13611         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13612
13613         * mini-trampolines.c
13614         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13615         after compiling the method.
13616
13617 2007-11-20  Martin Baulig  <martin@ximian.com>
13618
13619         * debug-mini.c
13620         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13621         (mono_debugger_remove_breakpoint): Likewise.
13622         (mono_debugger_check_breakpoints): Likewise.
13623
13624         * debug-debugger.c: Implement the new breakpoint interface here.
13625
13626 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13627
13628         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13629         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13630
13631         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13632
13633 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13634
13635         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13636
13637         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13638         mini.c.
13639
13640         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13641         mini.c.
13642
13643         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13644         returning a vtype in a register.
13645
13646         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13647         here from the arch specific code.
13648
13649         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13650         mini.c.
13651
13652         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13653         (mono_arch_emit_prolog): Increment maximum prolog size.
13654
13655         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13656         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13657
13658         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13659         MonoGenericSharingContext.
13660
13661         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13662         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13663
13664 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13665
13666         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13667         which extract fields out of the runtime generic context.  Full
13668         sharing of the NEWARR opcode.
13669
13670 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13671
13672         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13673         --enable-minimal=ssa.
13674
13675 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13676
13677         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13678         mono_marshal_get_delegate_invoke () signature change.
13679
13680 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13681
13682         * mini.c: Removed the shared context in favor of the generic
13683         sharing context.  Allocate the MonoJitInfo structure with room for
13684         the generic sharing context if it's needed.
13685
13686         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13687         domain-internals.h now.
13688
13689         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13690
13691         * generic-sharing.c: Several changes for working without a shared
13692         context and instead operating on open types instead.
13693
13694 2007-11-12  David S. Miller  <davem@davemloft.net>
13695
13696        * inssel-sparc.brg: Fix double instruction emit.
13697
13698 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13699
13700         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13701         Get/Set/Address methods.
13702         
13703         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13704         mono_marshal_get_delegate_invoke signature change.
13705
13706 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13707
13708         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13709         This can happens with dynamic methods. Fixes the other bug in #322722.
13710
13711 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13712
13713         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13714         BX call sequence.
13715
13716         * mini-arm.c (arm_patch): Implement patching of BX call
13717         sequence. Fixes one of the bugs in #322722.
13718
13719 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13720
13721        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13722        under Linux.  We only need to flush every 32-byte cache line.    
13723
13724 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13725
13726         * mini.c:
13727         move_basic_block_to_end: Add branches when needed, eventually creating
13728         a new BB.
13729         optimize_branches: added a parameter that tells if it's ok to create
13730         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13731         and avoid calling move_basic_block_to_end when it's not ok.
13732         Fixes bug 318677.
13733
13734 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13735
13736         * mini.c: Abort inlining call to InitializeArray if something
13737         looks wrong.  Let the icall handle it, which now has proper safety
13738         checks.
13739
13740 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13741
13742         * mini.c (mono_spill_call): add support for soft-float.
13743
13744         * mini.c (mono_method_to_ir): add support for soft-float
13745         to inlined functions that return float.
13746
13747         * mini.c (mono_method_to_ir): add support for soft-float
13748         to cee_stsfld opcode on float fields.
13749
13750 2007-11-05  Geoff Norton  <gnorton@novell.com>
13751
13752         * mini-x86.h: Fix the structure access for X86 Leopard.
13753
13754
13755 2007-11-05  Martin Baulig  <martin@ximian.com>
13756
13757         * mini-trampolines.c
13758         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13759         after compiling the method to notify the debugger.
13760
13761 2007-11-05  Martin Baulig  <martin@ximian.com>
13762
13763         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13764
13765 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13766
13767         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13768         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13769
13770 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13771
13772         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13773         native-to-managed wrappers.
13774         
13775 2007-11-01  Geoff Norton  <gnorton@novell.com>
13776
13777         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13778         members.
13779
13780 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13781
13782         * mini.c, mini-x86.c: when getting back from unmanaged code
13783         to managed via a marshaled delegate we also need to set the
13784         right domain.
13785
13786 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13787
13788         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13789         for amd64.
13790
13791 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13792
13793         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13794         let the debugger or other external agents to tell the JIT when
13795         a sw breakpoint has been inserted in the code that the JIT needs
13796         to be able to inspect.
13797
13798 2007-10-31  Martin Baulig  <martin@ximian.com>
13799
13800         * debug-debugger.h
13801         (MonoDebuggerInfo): Remove `runtime_class_init'.
13802
13803 2007-10-30  Martin Baulig  <martin@ximian.com>
13804
13805         * debug-mini.h
13806         (mono_debugger_thread_created): Added `MonoThread *' argument.
13807         (mono_debugger_extended_notification): New public method.
13808         (mono_debugger_trampoline_compiled): New public method.
13809
13810         * debug-mini.c
13811         (MonoDebuggerThreadInfo): Added `thread' and
13812         `extended_notifications' fields.
13813
13814         * debug-debugger.c
13815         (debugger_executable_code_buffer): New static variable.
13816
13817         * debug-debugger.h
13818         (MonoDebuggerInfo): Added `executable_code_buffer',
13819         `executable_code_buffer_size', `breakpoint_info_area',
13820         `breakpoint_table' and `breakpoint_table_size'.
13821
13822 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13823
13824         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13825         that IP  either is an unused value or the vtable pointer. IMT 
13826         calls use vtable + offset now. Reduced by almost half the size
13827         of IMT entries.
13828
13829 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13830
13831         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13832         defines to access param registers. Replace long usage with
13833         gsize as sizeof(long) != sizeof(void*) on Win64.
13834
13835         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13836         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13837         instead of non-existant _GetAddressOfReturnAddress.
13838
13839         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13840         param registers. Save/restore %rdi and %rsi in MonoLMF.
13841
13842         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13843         param registers. Modify (throw_exception) signature to take 
13844         %rdi and %rsi on Win64. 
13845
13846         Code is contributed under MIT/X11 license.
13847
13848 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13849
13850         * helpers.c: unlink debugging output files.
13851
13852 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13853
13854         * mini.c: Move mono_create_ftnptr () to object.c.
13855
13856 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13857
13858         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13859         optional. This function can now be used to disassemble code generated
13860         outside the JIT such as trampolines and IMT thunks.
13861
13862         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13863
13864         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13865         vtable pointer from a ldr instruction.
13866
13867         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13868         new IMT call sequence.
13869
13870         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13871         call sequence for interface invocations.
13872
13873         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13874         for imt support. This function is empty since IMT on ARM requires no
13875         special handling on the IR side.
13876
13877         * mini-arm.c (mono_arch_find_imt_method): added, required for
13878         imt support.
13879
13880         * mini-arm.c (mono_arch_find_this_argument): added, required
13881         for imt support.
13882
13883         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13884         a ldr instruction to load a value stored in the code stream.
13885
13886         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13887         for imt support.
13888
13889
13890 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13891
13892         * mini.c (mini_init): Install the jump trampoline callback.
13893
13894 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13895
13896         * mini-trampolines.c: handle synchronized methods with the common
13897         vtable trampoline (bug #335601).
13898
13899 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13900
13901         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13902
13903         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13904         64 bit platforms.
13905
13906         * mini-ia64.h mini-ia64.c: Add support for IMT.
13907
13908         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13909         prolog. Fixes #331958.
13910
13911 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13912
13913         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13914
13915 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13916
13917         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13918         trampoline.
13919
13920 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13921
13922         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13923         trampoline.
13924
13925 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13926
13927         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13928         trampoline.
13929
13930 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13931
13932         * mini-trampolines.c: changed the magic rampoline to understand
13933         the common vtable trampoline method: the method to invoke is
13934         determined by the vtable displacement of the call.
13935
13936 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13937
13938         * mini.c, mini.h: register the common vtable trampoline if the
13939         architecture supports it.
13940
13941 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13942
13943         * cpu-amd64.md: use the correct max length for tls_get.
13944
13945 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13946
13947         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13948         CEE_STELEM_ANY. Fixes #333696.
13949
13950 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13951
13952         * exceptions-x86.c: provide more graceful handling of the case where
13953         we followed a bogus function pointer from managed code (bug #332866).
13954
13955 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13956
13957         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13958         replaces the generic_shared flag and will carry more information
13959         in the future.
13960
13961         * generic-sharing.c: Added mini_type_stack_size() which allows
13962         allows open types if given a generic sharing context.
13963         mini_get_basic_type_from_generic() takes a
13964         MonoGenericSharingContext* instead of a MonoCompile* now.
13965
13966         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13967         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13968         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13969         changes above.  Just passing arguments through to the right
13970         places.
13971
13972 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13973
13974         * mini-arm.c: unify the call emission to emit_code_seq().
13975
13976 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13977
13978         * tramp-arm.c: reduced the trampoline size.
13979
13980 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13981
13982         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13983         variable handling out of arch-specific code.
13984
13985 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
13986
13987         * mini-arm.c: implemented fast delegate dispatch.
13988
13989 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
13990
13991         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
13992         that fp elimination is turned off if the space required by locals is too
13993         big. Fixes #331958.
13994
13995 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
13996
13997         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
13998         ARM to the new style trampoline.
13999
14000 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14001
14002         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14003
14004         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14005
14006 2007-10-09  Martin Baulig  <martin@ximian.com>
14007
14008         * debug-debugger.h
14009         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14010         `field_info_offset_offset'.     
14011
14012 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14013
14014         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14015         removed more internal usage of the r11 register and made it available
14016         to the register allocator.
14017
14018 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14019
14020         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14021         when sharing generics and treat type variables as references.
14022
14023 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14024
14025         * mini-ppc.c: started removing the internal uses of register r11
14026         to eventually allow the register allocator to manage it as an
14027         additional available register.
14028
14029 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14030
14031         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14032
14033 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14034
14035         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14036         specific trampolines as they are not performance critical as a jump
14037         target (maybe align as before only for AOT code?). This saves about
14038         200 KB of native code on x86 for monodevelop startup.
14039
14040 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14041
14042         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14043         monodevelop startup.
14044
14045 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14046
14047         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14048
14049         * mini-sparc.h mini-sparc.c: Implement IMT support.
14050
14051         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14052         its smaller and doesn't clobber sparc_g1.
14053
14054         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14055
14056 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14057
14058         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14059
14060 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14061
14062         * mini-ppc.c: implemented fast delegate invocation.
14063
14064 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14065
14066         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14067
14068 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14069
14070         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14071         code to the new style trampoline in preparation for IMT support.
14072
14073 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14074
14075         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14076         systems already. This also reduces the specific trampiline sizes and
14077         prepares for the use of r12 as the IMT identifier register.
14078
14079 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14080
14081         * mini-mips.h: endianess fix (simplified from a patch by
14082         Thomas Kunze <thommy@tabao.de>, bug #323737).
14083
14084 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14085
14086         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14087         to access ucontext fields and enable netbsd support
14088         (partially from Magnus Henoch <mange@freemail.hu>).
14089
14090 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14091
14092         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14093         use the preprocessor from the CPP env var if it is set.
14094
14095 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14096
14097         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14098         code, before interface_offset gets used.
14099
14100 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14101
14102         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14103         mono_class_setup_vtable () before accessing klass->vtable.
14104
14105 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14106
14107         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14108         hackish.
14109
14110 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14111
14112         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14113         IMT slots (this saves hundreds of KB of memory in programs like
14114         IronPython and Monodevelop).
14115
14116 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14117
14118         * mini.c: print the delegate counter.
14119
14120 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14121
14122         * mini-x86.c: make it easier to enable the debugging code for IMT
14123         slots.
14124
14125 2007-09-28  Martin Baulig  <martin@ximian.com>
14126
14127         * debug-debugger.h
14128         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14129         `mono_method_klass_offset' and `mono_method_token_offset'.
14130
14131 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14132
14133         * mini.c: First generics sharing implementation.  Can only share
14134         in very simple cases.  If sharing doesn't work it falls back to
14135         dedicated compilation.
14136
14137         * mini.h: Flag in MonoCompile to specify whether generic
14138         compilation is shared.  Flags enum for marking which generic inst
14139         of a context is used.  Prototypes for helper functions.
14140
14141         * generic-sharing.c: Helper functions for generic method sharing.
14142
14143         * optflags-def.h: Optimization flag (gshared) for enabling generic
14144         method sharing added.
14145
14146         * Makefile.am: generic-sharing.c added.
14147
14148 2007-09-19 Daniel Nauck <dna@mono-project.de>
14149
14150         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14151
14152 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14153         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14154         fixes bug 325507.
14155
14156 2007-09-19  Martin Baulig  <martin@ximian.com>
14157
14158         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14159         mono_debug_cleanup() is now part of mono_cleanup().
14160
14161 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14162
14163         * driver.c (mono_main): Fix a warning.
14164
14165 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14166
14167         * aot-compiler.c: Optimize various parts when processing large assemblies.
14168         Fixes ##325568.
14169
14170         * mini.c (mono_patch_info_hash): Improve hash function.
14171
14172 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14173
14174         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14175         
14176         Code is contributed under MIT/X11 license.
14177
14178 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14179
14180         * mini.c (mini_init): Fix a leak.
14181
14182         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14183
14184 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14185
14186         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14187
14188 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14189
14190         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14191
14192 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14193
14194         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14195         variance tests.
14196
14197         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14198
14199         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14200
14201         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14202
14203         * aot-runtime.c (decode_patch_info): Ditto.
14204
14205 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14206
14207         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14208         static case. Cache delegates in architecture specific code, 
14209         based on number of parameters.
14210         
14211         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14212         in architecture specific code, based on number of parameters.
14213         
14214         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14215         caching happen in architecture specific code now.
14216         
14217         Code is contributed under MIT/X11 license.
14218
14219 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14220
14221         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14222         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14223         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14224
14225         Code is contributed under MIT/X11 license.
14226
14227 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14228         * mini.c: (mono_thread_abort) Fixed bug #82416.
14229
14230 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14231
14232         * mini.: hook the new managed GC allocation feature into the JIT.
14233
14234 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14235
14236         * mini.c: implementation for the new runtime tls opcode.
14237
14238 2007-09-11  Martin Baulig  <martin@ximian.com>
14239
14240         * debug-debugger.h
14241         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14242         `mono_method_inflated_offset'.
14243
14244 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14245
14246         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14247         async exceptions into a method.
14248
14249         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14250         purpose of testing whenever the unwinder works at every instruction.
14251
14252 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14253
14254         * mini.c: check accessibility of method used in ldftn (fixes
14255         bug #82635).
14256
14257 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14258
14259         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14260
14261         * inssel.brg: Fix a warning.
14262
14263 2007-09-03  Martin Baulig  <martin@ximian.com>
14264
14265         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14266         now takes the `main_method' as argument.
14267
14268 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14269
14270         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14271
14272 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14273
14274         * driver.c: include the cil-coff.h header on Windows.
14275         
14276         Code is contributed under MIT/X11 license.
14277
14278 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14279
14280         * mini.c, driver.c: don't include the cil-coff.h header.
14281
14282 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14283
14284         * mini.c: flag places that needs fixes fo soft-float support.
14285
14286 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14287
14288         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14289         endian systems (partially from Dean Jenkins, bug #81924).
14290
14291 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14292
14293         * mini.c (check_linkdemand): Remove embedded reference object in
14294         call to LinkDemandSecurityException.
14295         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14296         with an IntPtr instead of a reference object.
14297
14298 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14299
14300         * mini.c (handle_initobj): Handle alignment properly.
14301
14302         * inssel.brg (mini_emit_memset): Ditto. 
14303
14304         * inssel.brg (mini_emit_memcpy): Ditto. 
14305
14306         * inssel-sparc.brg: Ditto.              
14307
14308         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14309
14310 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14311
14312         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14313         exceptions raised in unmanaged code. Fixes part of #82594.
14314
14315 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14316
14317         * mini.c (mono_method_to_ir), declsec.c
14318         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14319
14320 2007-08-22  Martin Baulig  <martin@ximian.com>
14321
14322         * debug-mini.h
14323         (MonoDebuggerThreadInfo): New typedef.
14324         (mono_debugger_thread_table): New global variable.
14325         (mono_debugger_thread_created): New public function.
14326         (mono_debugger_thread_cleanup): New public function.
14327
14328         * debug-debugger.h
14329         (MonoDebuggerInfo):
14330         - removed `get_current_thread' and `lookup_assembly'.
14331         - removed `data_table'.
14332         - added `thread_table'.
14333
14334         * mini.c
14335         (mono_thread_start_cb): Call mono_debugger_thread_created().
14336         (mono_thread_attach_cb): Likewise.
14337         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14338         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14339         initial domain.
14340
14341         * driver.c (mono_main): Move mono_debug_init() up, before calling
14342         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14343
14344 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14345
14346         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14347         together when passing several arguments of type double (gives a small
14348         speedup and saves a few bytes of generated code).
14349
14350 2007-08-20  Jb Evain  <jbevain@novell.com>
14351
14352         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14353
14354 2007-08-20  Jb Evain  <jbevain@novell.com>
14355
14356         * mini.c (mono_method_to_ir): throw MethodAccessException
14357         and FieldAccessException instead of InvalidProgramException.
14358
14359 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14360
14361         * mini.c: CoreCLR security checks.
14362
14363         * mini.h: Removed MonoSecurityMode (moved to
14364         metadata/security-manager.h) and mono_security_mode global var
14365         (replaced by set/get functions in security-manager.h).
14366
14367         * driver.c: Added "core-clr-test" security mode for testing.  Used
14368         set-function for setting security mode.
14369
14370 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14371
14372         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14373         the new jit_info_table.
14374
14375         * driver.c: Test code for the new jit_info_table (enabled by the
14376         define MONO_JIT_INFO_TABLE_TEST).
14377
14378 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14379
14380         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14381         detection of call <REG> instruction sequence. Fixes build on freebsd.
14382
14383 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14384
14385         * mini-exceptions.c: Fix a warning.
14386
14387 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14388
14389         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14390         stack overflow handling code on amd64 too.
14391
14392         * mini-exceptions.c (mono_setup_altstack): Make this use 
14393         mono_thread_get_stack_bounds ().
14394
14395         * mini-x86.h: Disable sigaltstack on solaris x86.
14396
14397 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14398
14399         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14400
14401 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14402
14403         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14404
14405 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14406
14407         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14408
14409         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14410
14411 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14412
14413         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14414         due to alignment.
14415
14416 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14417
14418         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14419         to be emitted (bug #82281).
14420
14421 2007-08-01  Martin Baulig  <martin@ximian.com>
14422
14423         Merged the `debugger-dublin' branch.
14424
14425         * debug-debugger.h (MonoDebuggerInfo):
14426         Removed the `old_*' compatibility entries.
14427         Added `debugger_version' and `data_table'.
14428         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14429         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14430
14431         * debug-mini.c
14432         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14433         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14434         instead of a `gconstpointer'.
14435         (mono_debugger_insert_method_breakpoint): Return a
14436         `MonoDebugMethodAddressList *'.
14437
14438 2007-06-28  Martin Baulig  <martin@ximian.com>
14439
14440         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14441
14442 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14443
14444         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14445         __builtin_frame_address () since it is broken on older gcc versions.
14446
14447 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14448
14449         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14450         on the stack overflow handling and made the managed stack overflows
14451         catchable in most cases using soft guard pages.
14452         * exceptions-x86.c: added code to restore the protection in the soft
14453         guard pages at the end of exception handling.
14454
14455 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14456
14457         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14458
14459 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14460
14461         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14462         exception handling.
14463
14464 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14465
14466         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14467         signal handling support until it has been ported to the new mechanism.
14468         * mini.c: fixed stack overflow detection and use the new
14469         architecture code  to handle signals on the altstack.
14470
14471 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14472
14473         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14474         stack overflows on the alt stack.
14475
14476 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14477
14478         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14479         stack overflows on the alt stack.
14480
14481 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14482
14483         * exceptions-ppc.c: cleanup preparing for altstack support.
14484
14485 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14486
14487         * exceptions-arm.c: cleanup preparing for altstack support.
14488
14489 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14490
14491         * mini.c (print_jit_stats): Output hazard pointer stats.
14492
14493 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14494
14495         * driver.c, mini.c: Replaced security mode flags with a single
14496         enum variable.
14497
14498 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14499
14500         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14501
14502 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14503
14504         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14505         (which doesn't do anything yet) for activating Core CLR
14506         (Silverlight) security.
14507
14508 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14509
14510         * mini-codegen.c: work around a possible gcc bug on arm.
14511
14512 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14513
14514         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14515         message for platforms that don't support AOT compilation.
14516
14517 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14518
14519         * mini.h, mini.c, driver.c: temporary smcs hack.
14520
14521 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14522
14523         * mini-arm.h, mini-arm.c: arm EABI fixes.
14524
14525 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14526
14527         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14528         case.
14529
14530         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14531         trampolines taking a method argument.
14532
14533         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14534
14535         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14536         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14537
14538         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14539         JIT compilation throws an exception. Fixes #82050.
14540
14541 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14542
14543         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14544         with the MONO_EXCEPTION_ defines.
14545
14546 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14547
14548         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14549         #82117.
14550         
14551         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14552         the cause of an assertion.
14553
14554 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14555
14556         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14557         removed.
14558
14559 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14560
14561         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14562         assert. Should fix #82103.
14563
14564 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14565
14566         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14567         here too. Fixes #82095.
14568
14569         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14570         addresses.
14571
14572         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14573
14574         * mini-amd64.h: Enable IMT for amd64.
14575         
14576         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14577
14578 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14579
14580         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14581
14582 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14583
14584         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14585         as soon as check_linkdemand sets an exception_type.
14586
14587 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14588
14589         * mini-x86.c: fixed offsets for IMT call sequence.
14590         * mini-x86.h: enable IMT again.
14591
14592 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14593
14594         * trace.c (mono_trace_enter_method): Decode MonoType too.
14595
14596         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14597
14598         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14599
14600         * mini-amd64.c: Add preliminary IMT implementation.
14601         
14602 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14603
14604         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14605         understand the new IMT-base interface invocation (thanks to
14606         Daniel Nauck for the report and the remote debugging session).
14607
14608 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14609
14610         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14611
14612 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14613
14614         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14615
14616 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14617
14618         * mini-trampolines.c: implement AOT IMT support.
14619         * mini-x86.h: enable IMT support for wider testing.
14620
14621 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14622
14623         * inssel.brg (emit_imt_argument): Add aot support here.
14624
14625         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14626
14627 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14628
14629         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14630         of the IMT implementation, partially from massi, with my
14631         implementation of the bsearch sequence. Disabled by default until
14632         the AOT code is implemented.
14633
14634 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14635
14636         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14637
14638         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14639
14640 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14641
14642         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14643         arch-independent IMT JIT code from Massimiliano
14644         Mantione (massi@ximian.com) with small cleanups from me.
14645
14646 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14647
14648         * Makefile.am: fix svn invocation to get the svn revision to be
14649         independent of the local language (build fix).
14650
14651 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14652
14653         * mini.c (inline_method): Reset cfg->exception_type if the
14654         inlining is aborted.  Fixes: 82049.
14655
14656 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14657
14658         * mini.c: remove assert from exception handling code when exception_ptr
14659         is not set.
14660
14661 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14662
14663         * mini.c (mono_codegen): Add an assert.
14664
14665         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14666         enter and leave code.
14667         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14668
14669 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14670
14671         * mini-ppc.c: fixed memory corruption for localloc(0)
14672         (bug #81852).
14673
14674 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14675         
14676         * mini.c: Fix warnings.
14677
14678 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14679
14680         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14681         to emit better double->int conversions.
14682
14683 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini.c: the provided Min/Max optimizations are valid for unisgned
14686         ints.
14687
14688 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14689
14690         * 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
14691
14692 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14693
14694         * mini.c (mono_running_on_valgrind): Add support for reporting the
14695         method and  its boundaries to valgrind.
14696
14697 2007-06-28  Martin Baulig  <martin@ximian.com>
14698
14699         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14700
14701 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14702
14703         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14704
14705         * generic.2.cs: Add new test case.
14706
14707 2007-06-25  Martin Baulig  <martin@ximian.com>
14708
14709         Merged the `debugger-dublin' branch.
14710
14711         * debug-mini.c
14712         (mono_debugger_insert_method_breakpoint): New public method.
14713         (mono_debugger_remove_method_breakpoint): Likewise.
14714         (mono_debugger_check_breakpoints): New static method.
14715         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14716
14717         * debug-debugger.h (MonoDebuggerInfo):
14718         Renamed (to keep backward compatibility in the vtable):
14719         `insert_breakpoint' -> `old_insert_breakpoint'.
14720         `remove_breakpoint' -> `old_remove_breakpoint'.
14721         `create_string' -> `old_create_string'.
14722         `lookup_class' -> `old_lookup_class'.
14723         `lookup_type' -> removed; changed into a dummy field.
14724         `lookup_assembly' -> `old_lookup_assembly'.
14725         Added (same functionality, but different signature):
14726         `create_string', `lookup_class', `lookup_assembly'
14727         Added new:
14728         `get_method_addr_or_bpt', `remove_method_breakpoint',
14729         `runtime_class_init'.
14730
14731         * debug-debugger.c: Merged the `debugger-dublin' branch.
14732
14733 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14734
14735         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14736         well.
14737         (peephole_pass): Likewise.
14738
14739 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14740
14741         * driver.c: hopefully make setaffinity work also for ancient
14742         versions of linux.
14743
14744 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14745
14746         * driver.c : win32 build fix.
14747
14748 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14749
14750         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14751         processor if it is set.
14752
14753 2007-06-21  Martin Baulig  <martin@ximian.com>
14754
14755         * debug-mini.h: New file.
14756
14757         * debug-mini.c
14758         (mono_debugger_insert_breakpoint_full): Moved here from
14759         ../metadata/mono-debug-debugger.c.
14760         (mono_debugger_remove_breakpoint): Likewise.
14761         (mono_debugger_breakpoint_callback): Likewise.
14762
14763 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14764
14765         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14766         changes in MonoGenericClass.
14767
14768 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14769
14770         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14771
14772 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14773
14774         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14775         removal of MonoGenericMethod.
14776
14777 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14778
14779         * mini-exceptions.c: hooks for the exception events profiling API.
14780
14781 2007-06-14  Randolph Chung  <tausq@debian.org>
14782
14783         * Makefile.ma: Add hppa target.
14784         * mini-arch.h: Include mini-hppa.h
14785         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14786         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14787         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14788
14789 2007-06-14  Randolph Chung  <tausq@debian.org>
14790
14791         * inssel.brg: Add rules for "chained" compare-branch operations so that
14792         a single compare op can affect multiple branches.  Adjust cost for
14793         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14794         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14795         cost for some rules so that they can more easily be overridden by
14796         per-arch rules (with fixes from lupus).
14797         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14798
14799 2007-06-13  Randolph Chung  <tausq@debian.org>
14800
14801         * mini-ops.h: Reorder branch ops so that they match the order of the
14802         corresponding CEE_* ops.  The code expects them this way.
14803         Add new ops for HPPA target.
14804         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14805
14806 2007-06-13  Randolph Chung  <tausq@debian.org>
14807
14808         * mini-exceptions.c: Handle cases where the stack grows towards
14809         larger addresses.
14810         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14811
14812 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14813
14814         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14815         counter.
14816         * driver.c: explain where a non-matching corlib is found.
14817
14818 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14819
14820         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14821
14822 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14823
14824         * mini-exceptions.c: Generate a method profile leave event during
14825         an exception to ensure that the profiler gets notified.
14826
14827 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14828
14829         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14830         branch.
14831
14832         * cpu-amd64.md: Add long_and/or/xor opcodes.
14833
14834 2007-06-06  Wade Berrier  <wberrier@novell.com>
14835
14836         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14837         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14838         length of instruction shr_imm (expected 8, got 10)
14839
14840 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14841
14842         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14843
14844 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14845
14846         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14847         MonoInternalHashTable again (fixed bug in the internal hash table
14848         code).
14849
14850 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14851
14852         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14853         Have to figure out what makes it crash the SWF regression.
14854
14855 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14856
14857         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14858
14859 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14860
14861         * mini.c: optimize out the type check when storing null in a
14862         reference array.
14863
14864 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14865
14866         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14867         MonoInternalHashTable.
14868
14869 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14870
14871         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14872         signed integer methods.
14873
14874 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14875
14876         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14877         permanently since the current approach doesn't work.
14878
14879 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14880
14881         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14882         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14883
14884 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14885
14886         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14887         the sreg2==rdx case.
14888         
14889         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14890         account if it contains a rex prefix.
14891         (peephole_pass): Handle OP_FMOVE as well.
14892
14893 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14896         as it causes regressions.
14897
14898 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14899
14900         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14901         static case as well.
14902
14903         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14904
14905         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14906         (mono_arch_get_this_arg_from_call): Ditto.
14907
14908         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14909
14910         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14911         invoke_impl field.
14912
14913         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14914         (mono_arch_get_this_arg_from_call): Ditto.
14915
14916         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14917         
14918         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14919         try to create optimized invoke code and use that for further invocations. 
14920         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14921
14922         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14923
14924 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14925
14926         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14927         sealed classes or methods.
14928         *devirtualization.cs: tests for the new optimization
14929
14930 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14931
14932         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14933         by the update_volatile () function.
14934
14935 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14936
14937         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14938         require it.
14939
14940         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14941
14942 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14943
14944         * mini.c: Add configure checks for header files.
14945         * mini-x86.c: Add configure checks for header files.
14946         * trace.c: Add configure checks for header files.
14947         * aot-runtime.c: Add configure checks for header files.
14948         * aot-compiler.c: Add configure checks for header files.
14949         * driver.c: Add configure checks for header files.
14950         * mini-codegen.c: Add configure checks for header files.
14951         
14952         Code is contributed under MIT/X11 license.
14953
14954 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14955
14956         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14957         icompare_imm -128 + op_iclt. Fixes #81703.
14958
14959 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14960
14961         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14962
14963 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14964
14965         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14966         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14967         so that all isinst checks now use "interface_bitmap".
14968
14969 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14970
14971         * cpu-amd64.md (jmp): Fix a warning.
14972
14973         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14974
14975         * basic.cs: Add new regression test.
14976
14977         * basic.cs: Remove test which is now in basic-long.cs.
14978
14979         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14980
14981         * basic-long.cs: Add new test.
14982         
14983 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
14986
14987 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
14988
14989         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
14990
14991         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
14992         places.
14993         
14994         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
14995         throwing code a bit.
14996
14997         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
14998         the exception throwing code a bit.
14999
15000         * mini-x86.c (get_call_info): Allocate result from a mempool.
15001
15002 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15003
15004         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15005
15006         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15007
15008         * mini.h (MonoCompile): Add 'token_info_hash' field.
15009
15010         * mini.c: Save token->method associations during compilation so the AOT 
15011         compiler can use it.
15012         
15013         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15014         which reference generic classes and methods.
15015
15016 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15017
15018         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15019
15020         * aot-compiler.c (compile_method): Fix a typo in a comment.
15021
15022         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15023
15024         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15025         everything generic.
15026
15027         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15028
15029 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15030
15031         * mini.h (MonoCompile): Add 'args' field.
15032
15033         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15034         into cfg->args.
15035
15036         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15037
15038 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15039
15040         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15041
15042         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15043
15044         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15045         opcodes for some opcodes.
15046
15047         * mini.h *.brg *.c: Use the new opcodes.
15048
15049 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15050
15051         * mini.h: Bumped aot revision.
15052
15053         * inssel.brg: modified code generation of type checks for interfaces
15054         to use the new "MonoClass.interface_bitmap" instead of the old
15055         "MonoClass.interface_offsets".
15056
15057 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15058
15059         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15060
15061 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15062
15063         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15064         64 bit platforms.
15065
15066 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15067
15068         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15069
15070 2007-04-27  Wade Berrier  <wberrier@novell.com>
15071
15072         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15073         mini.h) to fix build.
15074
15075 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15076
15077         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15078         
15079         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15080         causes the corlib unit tests to fail.
15081
15082 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15083
15084         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15085
15086         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15087
15088         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15089         opcodes to the comparison relations.
15090
15091         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15092         opcodes to their types.
15093         
15094         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15095
15096         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15097         it in cfg->arch.cinfo.
15098
15099         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15100
15101         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15102         cfg->cil_offset_to_bb.
15103
15104 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15105
15106         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15107         created becase of initlocals.
15108
15109 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15110
15111         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15112         Sergey Tikhonov <tsv@solvo.ru>.
15113
15114 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15115
15116         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15117
15118 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15119
15120         * cpu-s390.md (break): Correct the length of break instruction.
15121
15122 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15123
15124         * mini.c: fix a couple of soft-float issues and comments.
15125
15126 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15127
15128         * trace.c (is_filenamechar): - is also a filename char.
15129
15130 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15131
15132         * mini-s390.c: Correct checking for enum type in return value processing.
15133
15134 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15135
15136         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15137         (version.h): Makefile is in the build directory.
15138
15139 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15140
15141         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15142
15143 2007-04-11  Martin Baulig  <martin@ximian.com>
15144
15145         * mini.c (can_access_member): Fix handling of generic classes;
15146         fixes #81259.
15147
15148 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15149
15150         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15151
15152 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15153
15154         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15155
15156 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15157
15158         * mini-codegen.c: make sure the right spill amount is
15159         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15160
15161 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15162
15163         * mini-ppc.c: fixes for the fp_branch_nan test.
15164
15165 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15166
15167         * basic.cs: Comment out new test which still fails on ia64.
15168
15169 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15170
15171         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15172
15173 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15174
15175         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15176
15177 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15178
15179         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15180         on 64 bit machines. Fixes part of #80738.
15181
15182         * basic.cs: Add regression test.
15183
15184 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15185
15186         * inssel.brg basic.cs: Revert previous change to fix build.
15187
15188         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15189         platforms.
15190         
15191         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15192
15193         * basic.cs: Add new regression test.
15194
15195 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15196
15197         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15198         many arguments.
15199
15200 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15201
15202         * cpu-s390x.md: Correct length of break instruction.
15203
15204 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15205
15206         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15207         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15208
15209 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15210
15211         * *.c: Begin WIN64 port.
15212         * mini.c:  Use correct register in profiler.
15213         * mini-amd64.c: No inline assembly on Win64.
15214         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15215         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15216         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15217         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15218         mono_arch_ip_from_context for Win64.
15219         
15220         Contributed under MIT/X11 license.
15221
15222 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15223
15224         * exceptions-amd64.c (seh_handler): Ditto.
15225
15226         * exceptions-x86.c (seh_handler): Fix a memory leak.
15227
15228 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15229
15230         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15231         mini-s390x.c: fixed peephole optimizations to deal
15232         correctly with 1 and 2 byte reload avoidance.
15233
15234 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15235
15236         * cpu-s390.md, cpu-s390x.md: update localloc length.
15237
15238 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15239
15240         * cpu-g4.md: added missing descriptions.
15241
15242 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15243
15244         *  Makefile.am: Add support so the tail tests are not executed on
15245         PowerPC as that is a known limitation of the PowerPC port.
15246
15247 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15248
15249         * runmdesc.bat:  Move to msvc directory.
15250         
15251 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15252
15253         * runmdesc.bat:  Run executable that was produced by the current
15254         target and sent via an argument.
15255         
15256 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15257
15258         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15259         #81102.
15260
15261         * generics.2.cs: Add regression test.
15262
15263 2007-03-09  Wade berrier  <wberrier@novell.com>
15264
15265         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15266
15267 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15268
15269         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15270         AOT code depends on this.
15271
15272 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15273
15274         * mini.c: more precise tracking of types in the eval stack
15275         (part of fix for bug #81044).
15276
15277 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15278
15279         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15280
15281         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15282
15283 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15284
15285         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15286
15287         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15288
15289 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15290
15291         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15292         a pointer on 64 bit systems. Fixes #80190.
15293
15294         * iltests.il: Add new regression test.
15295
15296 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15297
15298         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15299
15300 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15301
15302         * trace.c: Remove an erroneous alignemnt check when tracing.
15303           Fixes --trace on OSX86.
15304
15305 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15306
15307         * mini-$(arch).h: initialize SP in context for all the archs.
15308
15309 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15310
15311         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15312         regressions in the thread tests.
15313
15314 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15315
15316         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15317         - fixed implementation of LOCALLOC opcode
15318         - implemented non-un compare for floats
15319         - code cleanup
15320         - implementation of FDIV and CKFINITE opcodes
15321         - fixes for latest mono updates
15322         - additional arch opcodes
15323
15324 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15325
15326         * Makefile.am: simplify and merge rules for cross-compilation.
15327
15328 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15329
15330         * local-propagation.c: Actually *apply* the fix for bug 80591...
15331
15332 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15333
15334         * mini-exceptions.c: backuot part of the last change
15335         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15336
15337 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15338         * inssel.brg: Fix bug 59286.
15339
15340
15341 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15342
15343         * mini-exceptions.c: patch from Zoltan to correctly check for
15344         stack boundaries (using the stack register, not the frame register),
15345         fixes bugs #80724, #79717.
15346
15347 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15348
15349         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15350         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15351
15352         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15353         presence of frame pointer elimination.
15354
15355 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15356         
15357         * mini-x86.h: NetBSD UCONTEX_REG defines.
15358
15359 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15360
15361         * inssel-amd64.brg: Fix amd64 build.
15362
15363 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15364
15365         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15366         on amd64.
15367
15368 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15369
15370         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15371         ends.
15372
15373         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15374
15375 2007-01-30 Mark Mason <mason@broadcom.com>
15376
15377            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15378            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15379            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15380            beginning support for CEE_JMP [not quite working yet]
15381            * tramp-mips.c: LMF handling now works
15382         
15383 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15384
15385         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15386
15387         * mini.h (NULLIFY_INS): New macro.
15388
15389 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15390
15391         * mini.c: statistical profiler fix for windows, patch
15392         from Tor Lillqvist (tml@novell.com).
15393
15394 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15395         * local-propagation.c: Fix bug 80591.
15396
15397 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15398
15399         * Makefile.am: put back the --export-dynamic option as with
15400         the previous gmodule flags (thanks to Robert Jordan).
15401
15402 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15403
15404         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15405
15406         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15407         simplify and speed up the local register allocator. Also rename some fields
15408         like iassign->vassign.
15409         
15410         * regalloc.c: Remove some functions which are no longer used since their
15411         inlined version is in mini-codegen.c.
15412         
15413         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15414
15415         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15416
15417 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15418
15419         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15420         narrowing. Fixes #80622.
15421
15422         * iltests.il: Add new regresssion test. 
15423
15424 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15425
15426         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15427         debug-debugger.c, debug-debugger.h: warning fixes.
15428         * driver.c: updated copyright year and made it fit in one line.
15429
15430 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15431
15432         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15433
15434 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15435
15436         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15437
15438         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15439
15440         * iltests.il: Add new test for bug #80507.
15441
15442 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15443
15444         * mini-arm.h: use soft-float also on vfp for now.
15445
15446 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15447
15448         * mini.c: fix some more soft-float issues.
15449
15450 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15451
15452         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15453
15454 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15455         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15456         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15457         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15458
15459 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15460
15461         * mini-arm.c: typo fix.
15462
15463 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15464
15465         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15466
15467 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15468
15469         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15470         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15471
15472         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15473
15474         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15475
15476         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15477         
15478         * inssel.brg: Fix a warning.
15479
15480         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15481
15482         * abcremoval.c ssa.c ssapre.c: Update after this change.
15483         
15484         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15485
15486         * dominators.c (df_set): Use mono_bitset_union_fast.    
15487
15488 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15489
15490         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15491         mini-codegen.c: reduce relocations and memory usage for the cpu
15492         description.
15493
15494 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15495
15496         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15497
15498         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15499         to reduce their size.
15500
15501 2007-01-19 Mark Mason <mason@broadcom.com>
15502
15503         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15504         * mini-mips.c: more configuration macros, support long conditional branches, additional
15505         asserts, fix epilog instrumentation.
15506         * mini-mips.h: use standard stack walk
15507         * cpu-mips.md: increase size of div, rem and conditional branches
15508         
15509 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15510
15511         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15512         to cpu spec data.
15513
15514 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15515
15516         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15517         (compile_method): Ditto.
15518
15519         * aot-runtime.c (decode_klass_info): Ditto.
15520
15521         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15522         needed by the code generated by inssel.brg. Also fix a warning.
15523
15524 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15525
15526         * mini.c: deal with enums that become genericinsts by
15527         being nested in a generic class (bug #79956).
15528
15529 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15530
15531         * mini.c: match the generic definition to check for
15532         private access with generic types (bug #78431).
15533
15534 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15535
15536         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15537         to make life easier for people cross-compiling that insist on not
15538         using scratchbox.
15539
15540 2007-01-17 Mark Mason <mason@broadcom.com>
15541
15542         * inssel-long.brg: patch to deal with mips missing flags
15543         * inssel-long32-mips.brg: implement overflow checks
15544         * insset-mips.brg: implement overflow checks
15545         * mini-mips.h: implement conditional exception handling
15546         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15547           Remove unused code, minor cleanups.
15548         * exceptions-mips.c: minor cleanups
15549         * mini-ops.h: add mips conditional exception ops
15550         * cpu-mips.md: add mips conditional exception ops
15551
15552         
15553 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15554
15555         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15556         to deal with mips missing of flags.
15557
15558 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15559
15560         * exceptions-ppc.c: execute fault handlers.
15561
15562 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15563
15564         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15565
15566 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15567
15568         * mini.c: handle also floating point values in initialize_array.
15569
15570 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15571
15572         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15573         array initialization and make it conditional on the intrins option.
15574
15575 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15576
15577         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15578         relocations and put the patch info names close to the enum definition.
15579
15580 2007-01-15 Mark Mason <mason@broadcom.com>
15581
15582         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15583
15584 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15585
15586         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15587
15588 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15589
15590         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15591
15592 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15593
15594         * Makefile.am: distribute the mips sources.
15595
15596 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15597
15598         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15599         directly.
15600
15601 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15602
15603         * cpu-x86.md: back out for now as this triggers other regressions.
15604
15605 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15606
15607         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15608         to eax:edx, so ecx can't get allocated to them (bug #80489).
15609
15610 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15611
15612         * mini.c, mini-exceptions.c: enabled running fault handlers
15613         (bug #80469).
15614
15615 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15616
15617         * driver.c: If nothing fail, do not use the string "failed",
15618         because it makes it very annoying to view test result logs on the
15619         web. 
15620
15621 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15622
15623         * debug-debugger.c (mono_debugger_main): Rename "main" to
15624         "main_method" to prevent a warning.
15625
15626         Remove a warning for unused field.
15627
15628 2006-12-28  Martin Baulig  <martin@ximian.com>
15629
15630         * debug-debugger.c
15631         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15632
15633 2006-12-22  Martin Baulig  <martin@ximian.com>
15634
15635         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15636         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15637         seperate `.mdb_debug_info' section, so we can access it from the
15638         debugger even if the binary is stripped.
15639
15640         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15641         from the `.mdb_debug_info' here to prevent the linker from
15642         removing that section.
15643
15644         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15645         mdb-debug-info64.s.
15646
15647 2006-12-19  Robert Jordan  <robertj@gmx.net>
15648
15649         * mini-x86: enable the code to return small structures in
15650         registers for FreeBSD as well. Fixes bug #80278.
15651         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15652
15653 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15654
15655         * mini-x86.c: align the stack when calling the profiler
15656         function instrumenting the prolog (on OSX).
15657
15658 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15659
15660         * mini.c: emit a break opcode where Debugger.Break () is called.
15661
15662 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15663
15664         * mini.c (mono_method_to_ir): Provide useful information on this
15665         assert, to prevent others from debugging like I did.
15666
15667 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15668
15669         * mini.c: enable code which was incorrectly commented
15670         (bug #80235).
15671
15672 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15673
15674         * mini-x86.c: enable on OSX, too, the code to return small
15675         structures in registers.
15676
15677 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15678
15679         * mini-x86.c: remove the use of the dynamic code manager here, too.
15680
15681 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15682
15683         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15684         mono_debugger_create_notification_function() to use
15685         mono_global_codeman_reserve () instead of a dynamic code manager.
15686
15687 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15688
15689         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15690         ves_array_element_address() jit icall and use a generated
15691         managed method instead (which is about 4 times faster for a rank 3
15692         array access).
15693
15694 2006-11-29  Mark Mason  <mason@broadcom.com>
15695
15696         * basic-calls.cs: additional tests for passing
15697         structures as function arguments.
15698
15699 2006-11-29  Mark Mason  <mason@broadcom.com>
15700
15701         * mini-mips.h: disable custom exception handling
15702         * mini-mips.c: throw/rethrow should use jalr to call
15703         exception stubs.  Fixed bug with passing structures
15704         by value. More support for tracing floating point
15705         functions.
15706
15707 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15708
15709         * mini.c: fixed typo in the soft-float ldind.r4 handling
15710         (bug #80086).
15711
15712 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15713
15714         * mini.c, mini.h, driver.c: added --runtime command line
15715         option to select a different runtime than the autodetected one.
15716         * jit.h: added API for embedders to initialize with a specific
15717         runtime version.
15718
15719 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15720
15721         * mini.c: handle also boxing of r4 values (bug #80024).
15722
15723 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15724
15725         * mini-ppc.c: force indirect calls until we reserve
15726         enough address space for all the generated code.
15727
15728 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15729
15730         * exceptions-arm.c: workaround bugs in the libc definition
15731         of struct ucontext.
15732
15733 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15734
15735         * inssel.brg: fixes from me and Mark Mason.
15736
15737 2006-11-23  Dick Porter  <dick@ximian.com>
15738
15739         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15740         semaphore display now we've fixed the initial value
15741
15742 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15743
15744         * inssel.brg: partially revert the last change to fix the build.
15745
15746 2006-11-21  Mark Mason  <mason@broadcom.com>
15747
15748         * inssel.brg: Add and use compare-and-branch macros to support
15749         architectures that do not have condition code registers (ie. MIPS).
15750         * *-mips.{c,brg,md}: Fix copyright statements
15751
15752 2006-11-20  Mark Mason  <mason@broadcom.com>
15753
15754         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15755         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15756         * mini.h: Added declaration for mono_print_ins()
15757         * mini-codegen.c: added ins_spec initializer for MIPS
15758         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15759         vreg to be virtual and hreg to be non-virtual.
15760         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15761         is not yet working/implemented correctly.
15762         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15763         non-static, fixup calls to print_ins() from other parts in the file.
15764
15765 2006-11-20  Mark Mason  <mason@broadcom.com>
15766
15767         * basic-calls.cs: added tests for passing structures as arguments
15768         to calls.
15769
15770 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15771
15772         * inssel-long32.brg: optimize signed division by power of two.
15773
15774 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15775
15776         * mini-arm.c: added support for interworking with thumb code
15777         (mono must be still be built using the ARM instruction encoding).
15778
15779 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15780
15781         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15782         verifier has different rules for it.   Fixes a few verifier issues
15783         in the test suite.
15784
15785         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15786         at the end, so people know what happened.
15787
15788 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15789
15790         * brach-opts.c: in optimize_exception_target() make sure we
15791         are in a catch clause (fixes bug #79871).
15792
15793 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15794
15795         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15796         more soft-float support fixes.
15797
15798 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15799
15800         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15801         that are passed half on the stack and half in registers.
15802
15803 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15804
15805         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15806         more mips integration work from Mark E Mason 
15807         <mark.e.mason@broadcom.com>.
15808
15809 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15810
15811         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15812         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15813         tramp-mips.c: added sources for the mips port, not
15814         integrated in the build yet. Contributed by
15815         Mark E Mason <mark.e.mason@broadcom.com>.
15816
15817 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15818
15819         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15820
15821 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15822
15823         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15824         put the soft-float rules in its own file since it seems to
15825         break s390 compilation.
15826
15827 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15828
15829         * mini-arm.c: fixed wrnings.
15830
15831 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15832
15833         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15834         inssel-arm.brg: ARM support for soft-float.
15835
15836 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15837
15838         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15839         loads and stores of 32 bit fp values.
15840
15841 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15842
15843         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15844
15845         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15846         works. Fixes #79852 and #79463.
15847
15848 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15849
15850         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15851         more soft-float support WIP and fixes.
15852
15853 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15854
15855         * mini-arm.c: some VFP updates.
15856
15857 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15858
15859         * mini-exceptions.c: 0 is a valid local var offset in some
15860         architectures, don't assert (bug #78508).
15861
15862 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15863
15864         * exceptions-arm.c: fixed off by one error in stack walk code.
15865
15866 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15867
15868         * mini.h, mini.c: more precise tracking of type load exceptions.
15869
15870 2006-11-03  Robert Jordan  <robertj@gmx.net>
15871
15872         * Makefile.am: [WIN32] Add monow.exe target.
15873         * driver.c: [WIN32] Don't detach the console when debugging.
15874         Fixes bug #79797.
15875         
15876 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15877
15878         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15879
15880 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15881
15882         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15883
15884         * driver.c (mini_regression): Fix --regression with AOT.
15885
15886         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15887
15888 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15889
15890         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15891
15892         * mini-sparc.h: Don't use sigaction on sparc/linux.
15893
15894         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15895
15896         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15897
15898         * mini-exceptions.c: Add proper include files for getpid ().
15899
15900 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15901
15902         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15903         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15904         method.
15905
15906         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15907         name cache to reduce its size.
15908
15909         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15910
15911 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15912
15913         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15914         the mono_lmf TLS variable.
15915
15916         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15917         trampoline lmf frames.  
15918
15919         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15920
15921 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15922
15923         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15924         the mono_lmf TLS variable.
15925
15926         * mini-exceptions.c: Access the LMF structure through accessors.
15927
15928         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15929         variable instead of in jit_tls->lmf.
15930
15931         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15932         
15933         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15934         trampoline lmf frames.
15935
15936         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15937
15938 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15939
15940        * mini.c trace.c mini-x86.c: Revert these too.
15941         
15942        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15943        signature change.
15944
15945 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15946
15947         * genmdesc.c: removed now dead code.
15948
15949 2006-10-09  Robert Jordan <robertj@gmx.net>
15950
15951         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15952
15953 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15954
15955         * mini.h: do not leave gaps in the opcode values.
15956
15957 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15958
15959         * jit-icalls.h: flag functions as internal here, too.
15960
15961 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15962
15963         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15964         functions with the internal attribute.
15965
15966 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15967
15968         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15969
15970 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15971
15972         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15973         for soft-float.
15974
15975 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15976
15977         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15978         tail calls as on other platforms.
15979
15980         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15981
15982         * iltests.il: Add a few tailcall tests.
15983
15984 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15985
15986         * driver.c: fix loop for old compilers (bug #79521).
15987
15988 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
15989
15990         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
15991
15992         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
15993
15994         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
15995         metadata without any code.
15996
15997         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
15998         more precise debugging information using gdb.
15999
16000 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16001
16002         * inssel-ia64.brg: Make the helper methods static.
16003
16004 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16005
16006         * inssel-x86.brg: make the helper methods static.
16007
16008 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16009
16010         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16011
16012 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16013
16014         * mini.c: updates for monoburg changes.
16015         * inssel.brg: make a few helper functions static as they should.
16016
16017 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16018
16019         * Makefile.am: Move mini-codegen.c to common_sources.
16020
16021 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16022
16023         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16024         instructions.
16025         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16026         mini-ppc.h: port to use the common local register allocator.
16027
16028 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16029
16030         * mini.h: Remove the comment too then.
16031
16032 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16033
16034         * mini.h: put back backend.data which is to be used shortly and
16035         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16036         pointers on 4 byte boundaries it'd have much bigger issues running
16037         and you can ifdef it out anyway.
16038
16039 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16040
16041         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16042         MonoInst size by 4 bytes on 64 bit machines.
16043
16044 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16045
16046         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16047         replacement with more meaningful field names. Arch maintainers, please
16048         check the assigned names are good enough for your arch.
16049
16050 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16051
16052         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16053         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16054
16055 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16056
16057         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16058         relocations and memory requirements, put the optimization flags
16059         definitions in their own file.
16060
16061 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16062
16063         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16064
16065         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16066
16067 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16068
16069         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16070
16071 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16072
16073         * inssel.brg: use the correct function to get the size of an item
16074         in an array, given an element class.
16075         * aot-compiler.c: do not access class->class_size directly.
16076
16077 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16078
16079         * mini.h, debug-mini.c: added a debugging function to print
16080         info about local variables and arguments in a jitted method.
16081
16082 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16083
16084         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16085
16086         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16087
16088 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16089
16090         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16091         inner and outer loops when passing vtypes.
16092
16093 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16094
16095         * mini-ppc.c: take into account the cpu errata for cache flushing
16096         which caused some random errors (bug #79381).
16097
16098 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16099
16100         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16101         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16102
16103 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16104
16105         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16106         loaded.
16107
16108         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16109         freebsd ports tree.
16110
16111         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16112         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16113
16114         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16115         displacement.
16116
16117 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16118
16119         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16120
16121 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16122
16123         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16124         macro does not have to be changed during debugging.
16125
16126         * 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>.
16127
16128         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16129
16130         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16131         
16132         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16133         MONO_ARCH_NO_EMULATE_MUL is defined.
16134
16135         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16136
16137         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16138
16139         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16140
16141         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16142         
16143 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16144
16145         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16146         stuff to mini-exceptions.c where it is used.
16147
16148         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16149         setup code, the real one is in mini-exceptions.c.
16150
16151         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16152         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16153         some changes from the freebsd ports tree.
16154
16155         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16156         constants.
16157         
16158         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16159
16160 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16161
16162         * mini.c: on Linux, check for /proc to be mounted
16163         (bug# 79351, novell bug#201204).
16164
16165 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16166
16167         * mini.c: handle cases where pthread_attr_getstack() behaves
16168         incorrectly (bug #78096).
16169
16170 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16171
16172         * mini-arm.c: support larger stack frames (bug #79272).
16173
16174 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16175
16176         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16177
16178         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16179         tokens.
16180
16181         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16182         mono_class_from_name () to find a class from its name.
16183
16184         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16185
16186 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16187
16188         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16189
16190 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16191
16192         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16193
16194 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16195
16196         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16197         callinfo->trampoline.
16198
16199         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16200         fixes #79271.
16201         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16202         future.
16203
16204 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16205
16206         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16207
16208 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16209
16210         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16211         stats.method_trampolines, it is already done by the generic trampoline code.
16212
16213         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16214         
16215 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16216
16217         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16218
16219         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16220
16221         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16222
16223         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16224         
16225         * mini.c (print_jit_stats): Print new stats.
16226
16227         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16228
16229 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16230
16231         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16232         Address on two dimensional arrays. Fixes #78729.
16233
16234         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16235
16236         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16237         a method.
16238
16239         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16240
16241         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16242         #79130.
16243         
16244         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16245         a race condition.
16246         (mini_get_ldelema_ins): Ditto.
16247
16248 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16249
16250         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16251         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16252         Fixes #79213.
16253
16254 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16255
16256         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16257         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16258
16259         * exceptions-s390x.c: Cosmetic change.
16260
16261         * tramp-s390.c: Fix warning.
16262
16263         * cpu-s390.md: Correct length of mul_imm.
16264
16265 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16266
16267         * aot-compiler.c: added binary writer with ELF backend
16268         implementation (only on Linux/x86 for now).
16269
16270 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16271
16272         * Makefile.am: Don't run net 2.0 AOT tests.
16273
16274         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16275         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16276
16277         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16278
16279 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16280
16281         * aot-compiler.c: simplified and refactored the asm-writing code
16282         to allow different backends.
16283
16284 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16285
16286         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16287
16288         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16289         little. Share patches of type TYPE_FROM_HANDLE as well.
16290
16291         * mini.c (mono_patch_info_equal): New helper function.
16292         (mono_patch_info_hash): Ditto.
16293
16294         * aot-compiler.c (emit_method_code): Fix s390 build.
16295
16296         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16297         is not handled because it is stored as a flag and not as a type ctor. Fixes
16298         #79016.
16299
16300 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16301
16302         * aot-compiler.c: Fix computation of GOT slot statistics.
16303         
16304         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16305         Also remove support for not PIC AOT.
16306
16307         * mini.h: Bump AOT file format version.
16308
16309         * objects.cs: Add a test for #78990.
16310
16311         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16312         (peter.dettman@iinet.net.au). Fixes #79087.
16313
16314         * basic-long.cs: Add a test for the above.
16315
16316 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16317
16318         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16319         
16320         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16321         code somewhat.
16322
16323 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16324
16325         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16326         exceptions.
16327
16328 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16329
16330         * mini.c: Don't verify COM proxy invoke calls
16331         
16332
16333 2006-08-10  Dick Porter  <dick@ximian.com>
16334
16335         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16336         which process is holding semaphores locked.
16337
16338 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16339
16340         * mini-ia64.c mini-amd64.c: Fix #79027.
16341
16342         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16343
16344         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16345
16346         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16347         implicit arguments in a vararg call. Fixes #79027.
16348
16349 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16350
16351         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16352         (mono_get_array_new_va_signature): Ditto.
16353
16354 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16355
16356         * aot-runtime.c: Call init_plt lazily.
16357
16358         * inssel-long.brg: Fix unsigned long->int conversion.
16359
16360         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16361
16362         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16363         that most data is now in the .rss/.data section.
16364
16365 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16366
16367         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16368
16369         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16370
16371         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16372
16373         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16374
16375         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16376         virtual call. Fixes #79010.
16377
16378         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16379         and use the result as the this argument in the real call.
16380
16381         * generics.2.cs: Add a new test for #79010.
16382         
16383 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16384
16385         * mini-x86.c: Fix a warning.
16386
16387         * aot-compiler.c: Add a bunch of statistics.
16388
16389         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16390
16391 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16392
16393         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16394
16395 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16396
16397         * 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>.
16398
16399 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16400
16401         * mini.c (mono_method_to_ir): Obtain the original method in the
16402         CIL stream and use this to perform validation.
16403
16404         Fixed: #78816
16405
16406 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16407
16408         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16409         (mono_arch_call_opcode): Ditto.
16410
16411         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16412         #78826.
16413
16414         * mini.c (mono_patch_info_dup_mp): New helper function.
16415         
16416         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16417         compilation. Fixes #78827.
16418
16419 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16420
16421         * declsec.c: Use original security informations for
16422           MONO_WRAPPER_MANAGED_TO_MANAGED.
16423
16424 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16425
16426         * mini.c: Allow Com Interop methods/classes and
16427         don't verify COM wrapper calls
16428         
16429
16430 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16431
16432         * inssel-long32.brg: Fix long->i4 checked conversion.
16433
16434         * exceptions.cs: Add a test for the above.
16435
16436 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16437
16438         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16439
16440         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16441         leaks.
16442
16443         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16444         #78775.
16445
16446 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16447
16448         * mini.c: Fix solaris/x86 exception handling.
16449
16450         * Makefile.am: Get rid of $(ICU_LIBS).
16451
16452 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16453
16454         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16455         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16456         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16457
16458         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16459
16460         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16461         this function causes a SIGSEGV.
16462
16463 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16464
16465         * mini.c: Remove unused solaris/x86 includes.
16466
16467 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16468
16469         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16470
16471 2006-06-20  Jb Evain  <jbevain@gmail.com>
16472
16473         * cpu-g4.md: fix max length of start_handler instruction.
16474
16475 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16476         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16477
16478 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16479         * ssa.c: Fixed bug 78653 for SSA based deadce.
16480         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16481         MonoInst.flags, used in SSA based deadce.
16482         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16483         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16484
16485 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16486
16487         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16488         it can end up using non executable memory on ppc64 systems
16489         running ppc32 userspace (fix from Johannes Berg).
16490
16491 2006-06-14  Dick Porter  <dick@ximian.com>
16492
16493         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16494         4.1.1
16495
16496 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16497         * mini.c: Made so that inline is locally disabled if it would
16498         trigger a .cctor, because too many apps depend on this behavior
16499         (which seems to be also the one of the MS CLR).
16500
16501 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16502
16503         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16504         No idea why this worked before.
16505
16506         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16507         which branch to outer exception clauses since they could skip the
16508         inner finally clauses. Fixes #78633.
16509
16510         * exceptions.cs: Add a test for the above.
16511
16512         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16513         Fixes #78629.
16514
16515         * iltests.il: Add a test for the above.
16516
16517 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16518
16519         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16520         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16521
16522         * iltests.il: Add a test for the above.
16523
16524 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16525
16526         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16527         
16528         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16529         methods as instrinsics.
16530
16531 2006-06-09  Wade Berrier <wberrier@novell.com>
16532
16533         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16534         (simple-cee-ops.h ssapre-mini-ops.h)
16535
16536 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16537
16538         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16539         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16540         instruction).
16541         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16542         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16543
16544 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16545
16546         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16547
16548 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16549
16550         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16551         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16552         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16553         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16554         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16555         of opcodes, so that bug 78549 should not happen again.
16556         * ssapre.c: Updated to use the renamed files.
16557
16558 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16559
16560         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16561         in OP_ATOMIC_EXCHANGE_I4.
16562
16563 2006-06-07  Wade Berrier <wberrier@novell.com>
16564
16565         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16566         in mono_debugger_create_notification_function)
16567
16568 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16569
16570         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16571         
16572         * mini.c (type_from_stack_type): Disable some changes which do not
16573         seem to work.
16574
16575         * driver.c: Reenable opts.
16576
16577         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16578         of the evaluation stack.
16579         
16580         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16581         evaluation stack trace at entry to the bblock.
16582
16583         * mini.c (merge_stacks): New function to perform verification of stack merges.
16584         Turned off by default.
16585
16586         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16587         STACK_MP.
16588         
16589 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16590
16591         * local-propagation.c: Fixed bug 78549.
16592
16593 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16594
16595         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16596
16597 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16598
16599         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16600         tramp-arm.c, tramp-ia64.c
16601         (mono_debugger_create_notification_function): Update signature to
16602         new signature and use new protocol for creating the notification
16603         function.  
16604
16605         Should fix the build.
16606
16607 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16608
16609         * exceptions-ppc.c (mono_jit_walk_stack)
16610         (ves_icall_get_frame_info): Fix the build
16611
16612 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16613
16614         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16615
16616 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16617
16618         * il2tests.2.il: New file for generics CIL tests.  Add test for
16619         #78019.
16620         * Makefile.am: Update.
16621
16622         Fix #78019
16623         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16624         to nullable types.
16625
16626 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16627
16628         * aliasing.c: Fixed bug 78311.
16629
16630 2006-05-29  Martin Baulig  <martin@ximian.com>
16631
16632         * mini-exceptions.c (mono_find_jit_info): When computing the
16633         native offset, check whether we're actually inside the method's
16634         code; call mono_debug_print_stack_frame() to format the frame.
16635         (ves_icall_System_Exception_get_trace): Call
16636         mono_debug_print_stack_frame() to format the stack frame.
16637         (ves_icall_get_trace): Update to the new debugging API.
16638         (mono_jit_walk_stack_from_ctx): Likewise.
16639         (ves_icall_get_frame_info): Likewise.
16640
16641         * mini.c (get_method_from_ip): Use the new debugging API.
16642         (mono_print_method_from_ip): Likewise.
16643
16644         * exceptions-ppc.c
16645         (mono_jit_walk_stack): Use the new debugging API.
16646         (ves_icall_get_frame_info): Likewise.   
16647
16648 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16649
16650         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16651
16652 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16653
16654         * mini.c: Added "limitator" to inline for debugging.
16655
16656 2006-05-24  Martin Baulig  <martin@ximian.com>
16657
16658         * debug-debugger.c (mono_debugger_init): Create a private,
16659         malloc()-based code manager for the notification function and
16660         intentionally leak it on exit.  This fixes the crash-on-exit race
16661         condition.
16662
16663         * tramp-amd64.c
16664         (mono_debugger_create_notification_function): Added
16665         `MonoCodeManager *' argument.
16666
16667         * tramp-x86.c
16668         (mono_debugger_create_notification_function): Added
16669         `MonoCodeManager *' argument.
16670
16671 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16672
16673         * aliasing.c: Fixed 64 bit issue.
16674         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16675         default since all known bugs are fixed (one more time!).
16676
16677 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16678
16679         * mini.c: write barrier support.
16680
16681 2006-05-23  Martin Baulig  <martin@ximian.com>
16682
16683         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16684         check at the top of the file.
16685
16686 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16687
16688         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16689         reverting changes without reason and without changelog entries.
16690
16691 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16692
16693         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16694         to a few opcodes. Fixes #78439.
16695
16696         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16697         consistency with other archs.
16698
16699         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16700
16701 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16702
16703         * debug-debugger.c: fix the build.
16704
16705 2006-05-17  Martin Baulig  <martin@ximian.com>
16706
16707         * debug-debugger.c
16708         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16709         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16710         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16711         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16712
16713 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16714
16715         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16716
16717 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16718
16719         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16720         MONO_TYPE_GENERICINST.
16721         
16722         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16723         MONO_TYPE_GENERICINST.
16724
16725 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16726
16727         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16728         #78325.
16729
16730 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16731
16732         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16733         mempool.
16734         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16735
16736 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16737
16738         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16739         mono_trace_cleanup ().
16740
16741         * iltests.il: Fix problem with the newly added test.
16742
16743         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16744         due to register constraints, free up the previous hreg. Fixes #78314.
16745
16746         * iltests.il: Add new test for #78314.  
16747
16748         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16749         Interlocked.Add. Fixes #78312.
16750
16751         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16752         
16753 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16754
16755         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16756
16757 2006-05-05  Martin Baulig  <martin@ximian.com>
16758
16759         * debug-mini.c (mono_debug_open_block): New method.
16760
16761         * mini-amd64.c
16762         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16763         the beginning of each basic block.
16764
16765         * mini-x86.c
16766         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16767         the beginning of each basic block.
16768
16769 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16770
16771         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16772         default until I understand why they break the build on amd64.
16773
16774 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16775
16776         * mini.c (mini_cleanup): Call mono_cleanup ().
16777
16778         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16779         errors.
16780
16781 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16782
16783         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16784         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16785         default since all known bugs are fixed, and I cannot reproduce bug
16786         77944... I'm asking Matt Hargett to test again after this commit.
16787
16788 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16789
16790         * mini-codegen.c: Fixed typo that thrashed inline.
16791
16792 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16793
16794         * dominators.c (compute_dominators): Avoid using a worklist since
16795         it is not correct in some cases. Instead, iterate over all bblocks as
16796         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16797
16798 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16799
16800         * mini.c (mono_jit_compile_method_inner): Use
16801         mono_prepare_exception_from_error that resets the value
16802         internally.
16803
16804 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16805
16806         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16807         
16808 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16809
16810         * aliasing.c: Fixed bug 78210.
16811
16812 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16813
16814         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16815         default until all their problems (or the ones they trigger) are fixed.
16816
16817 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16818
16819         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16820         
16821         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16822         as loaded only after resolving patches since that could invoke the same method.
16823
16824         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16825
16826         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16827         functions.
16828
16829         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16830         AOT loader.
16831
16832         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16833         stack.
16834
16835         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16836         made from AOT code through the PLT table.
16837
16838         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16839         holding the plt offset when a call is made to the aot plt trampoline.
16840         
16841 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16842
16843         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16844         amd64 AOT support.
16845
16846         * Makefile.am (common_sources): Fix build breakage.
16847
16848         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16849         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16850         intra-assembly calls if possible.
16851         
16852         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16853
16854         * mini-trampolines.c: Handle PLT entries.
16855
16856         * mini.c: Avoid creating a GOT var for calls.
16857
16858         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16859         from mscorlib code.
16860
16861         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16862         from mscorlib code.
16863
16864         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16865         AOT code.       
16866
16867         * mini.h: Bump AOT file format version.
16868         
16869         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16870         covers more cases.
16871
16872 2006-04-25  Martin Baulig  <martin@ximian.com>
16873
16874         * driver.c: Disable copyprop, consprop and inline when running
16875         inside the debugger.
16876
16877 2006-04-25  Martin Baulig  <martin@ximian.com>
16878
16879         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16880         with `get_current_thread' and added `detach'.
16881         (MonoDebuggerMetadataInfo): Added `thread_size',
16882         `thread_tid_offset', `thread_stack_ptr_offset' and
16883         `thread_end_stack_offset'.
16884
16885 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16886
16887         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16888         aot-runtime.c.
16889
16890         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16891         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16892
16893         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16894
16895         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16896
16897         * aot.c: Add support for ADJUSTED_IID.  
16898
16899 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16900
16901         * aot.c (emit_method_order): Don't align method_order_end.
16902
16903         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16904         the interface ID changes.
16905
16906 2006-04-21  Dick Porter  <dick@ximian.com>
16907
16908         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16909         cleaning up a thread.  Fixes the new part of bug 77470.
16910
16911 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16912
16913         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16914         to managed wrapper.
16915                      
16916 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16917
16918         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16919         
16920         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16921         SIGSEGV. Fixes #78072.
16922
16923         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16924         unregister our SIGABRT handler.
16925
16926 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16927
16928         * mini.c: Disabled inline where it can alter the call stack in a
16929         way visible from managed code.
16930         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16931         default.
16932
16933 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16934
16935         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16936         on other platforms. Fixes #78089.
16937
16938 2006-04-13  Martin Baulig  <martin@ximian.com>
16939
16940         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16941         determine whether we're inside the debugger.
16942
16943         * debug-debugger.h
16944         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16945
16946 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16947
16948         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16949         handler clauses. Fixes #78024.
16950
16951         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16952         in the CALL_MEMBASE opcodes. Fixes #78088.
16953         (mono_arch_get_vcall_slot_addr): Ditto.
16954
16955 2006-04-10  Martin Baulig  <martin@ximian.com>
16956
16957         * debug-debugger.c: The thread handling code has now been moved
16958         into ../metadata/threads.c.
16959
16960 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16961
16962         * driver.c (mono_main): Fix --with-gc=none build.
16963
16964         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16965         (mono_spillvar_offset_float): Ditto.
16966         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16967         hreg, not when its !global, since on ia64, there is a third category: stacked
16968         registers.      
16969
16970 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16971
16972         * mini.c: set MonoInst->klass for load field address and a few other
16973         places.
16974
16975 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16976
16977         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16978
16979 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16980
16981         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16982         the branch opt changes.
16983
16984 2006-04-06  Dick Porter  <dick@ximian.com>
16985
16986         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
16987         
16988         * wapihandles.c (mini_wapi_seminfo): 
16989         * driver.c (mono_main): Add semaphore info option
16990
16991 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
16992
16993         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
16994         branch optimization changes. Fixes #78009.
16995
16996 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16997
16998         * mini.c: ignore accessibility of methods in managed->native wrappers.
16999
17000 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17001
17002         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17003         
17004         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17005
17006 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17007
17008         * mini.c: Modify the branch optimizations to preserve the invariant that
17009         the entries inside the in_bb and out_bb arrays are unique.
17010         (mono_unlink_bblock): Avoid creation of new arrays.
17011
17012 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17013
17014         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17015         change (#77992).
17016
17017 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17018
17019         * mini.c (optimize_branches): Remove the "optimizations" in
17020         the cbranch1/cbranch2 -> branch cases which were causing several
17021         problems in the past. Fixes #77986.
17022
17023 2006-03-31  Chris Toshok  <toshok@ximian.com>
17024
17025         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17026         default optimizations :(
17027
17028 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17029
17030         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17031         branch.
17032
17033 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17034
17035         * local-propagation.c: Added comments to structs and removed
17036         "Mono" prefixes from local tree mover types.
17037
17038 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17039
17040         * Makefile.am (arch_sources): Define this for each architecture so 
17041         libmono_la_SOURCES is defined in one place.
17042
17043 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17044
17045         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17046         from handles/.
17047
17048 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17049
17050         * driver.c: print the GC name supplied by configure.
17051
17052 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17053
17054         * local-propagation.c: Added tree mover, and moved here all the
17055         local propagation code from mini.c
17056         * mini.c: Added support for treeprop, and moved all the local
17057         propagation code to local-propagation.c
17058         * mini.h: Added support for treeprop
17059         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17060         treeprop, inline and deadce by default
17061         * Makefile.am: Added local-propagation.c
17062
17063 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17064
17065         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17066
17067 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17068
17069         * debug-debugger.c: make it compile without the Boehm GC.
17070
17071 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17072
17073         * mini.c: fixed issue with mismatch when an icall is registered
17074         with multiple names but same address.
17075
17076 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17077
17078         * declsec.c, mini-exceptions.c: use write barrier to set reference
17079         fields of managed objects.
17080
17081 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17082
17083         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17084         (can_access_internals): Fix a warning.
17085
17086         * mini.c (print_method_from_ip): Rename this to 
17087         mono_print_method_from_ip so it gets exported.
17088
17089         * trace.c: Deal with strings inside StringBuilder's containing garbage
17090         and fix memory leaks. Fixes #77848.
17091
17092 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17093
17094         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17095         fixes #77787.
17096
17097 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17098         
17099         * mini-s390.c: Remove OP_X86_TEST_NULL.
17100
17101 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17102
17103         * mini.c: use the correct GetHashCode() for the moving collector.
17104
17105 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17106
17107         * liveness.c: Regalloc spill cost tuning.
17108
17109 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17110         
17111         * mini-s390x.h: Correct S390_LONG macro.
17112
17113         * mini-s390x.c: Cleanup unused code.
17114
17115 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17116
17117         * jit-icalls.h: New file.
17118
17119         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17120         icalls and include that instead of including jit-icalls.c.
17121
17122         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17123         OP_X86 opcodes.
17124
17125 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17126
17127         * mini.c: when checking for member accessibility, also check for
17128         friend assemblies and for explicit interface implementations.
17129
17130 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17131
17132         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17133
17134         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17135
17136         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17137         common cases are done first.    
17138
17139         * mini-ops.h: Only define platform specific opcodes on the given platform.
17140
17141         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17142         branch.
17143         
17144 2006-03-14  Martin Baulig  <martin@ximian.com>
17145
17146         Revert Paolo's change from r57348:
17147
17148         * mini.h: don't use gboolean for bitfields.
17149         * mini.c: verifier changes for fields and methods accessibility.
17150
17151 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17152
17153         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17154
17155         * mini-s390x.c: Fix conv_r_un.
17156
17157         * cpu-s390, cpu-s390x.md: Fix lengths.
17158
17159 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17160
17161         * mini.c: nested types have access to all the nesting
17162         levels, not just the enclosing types.
17163
17164 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17165
17166         * mini.c: added a few more verification checks.
17167
17168 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17169
17170         * liveness.c: Merge optimizations from the linear-il branch.
17171
17172 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17173
17174         * mini-ia64.c (emit_call): Add a comment.
17175
17176         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17177
17178         * tramp-ia64.c: Fix some warnings.
17179
17180 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17181
17182         * mini.h: don't use gboolean for bitfields.
17183         * mini.c: verifier changes for fields and methods accessibility.
17184
17185 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17186
17187         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17188         lazy icall wrapper changes.
17189
17190         * dominators.c: Replace all the dominator algorithms with faster
17191         ones from the linear-il branch.
17192
17193         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17194         the mempool.
17195
17196         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17197         common cases are done first.
17198
17199         * mini-amd64.c: Fix some warnings.
17200
17201         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17202         from the mempool.
17203
17204         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17205         added code.
17206
17207         * mini.h: Add a missing prototype.
17208
17209 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17210
17211         * mini.c: Compile icall wrappers lazily.
17212
17213         * mini-codegen.c: Use printf instead of g_print since its much faster.
17214
17215         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17216         function.
17217
17218         * mini.c (optimize_branches): Cache the negative result from 
17219         remove_block_if_useless ().
17220
17221         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17222         Also fix some bblock linking issues.
17223
17224         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17225         assembly files.
17226
17227         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17228
17229         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17230         accessed fields first, for better cache behavior.
17231         
17232 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17233
17234         * mini.c: speedup IList<T> array accesses.
17235
17236 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17237
17238         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17239         inline_costs counter. Fixes #77190.
17240
17241 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17242
17243         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17244         trace messages. Fixes #77706.
17245
17246 2006-03-04  Martin Baulig  <martin@ximian.com>
17247
17248         * tramp-amd64.c, tramp-x86.c
17249         (mono_debugger_create_notification_function): Use
17250         mono_global_codeman_reserve() to allocate a buffer at runtime and
17251         return it.
17252
17253         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17254
17255         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17256         notification function at runtime and then call `initialize' in the
17257         `MONO_DEBUGGER__debugger_info' vtable.
17258
17259 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17260
17261         * iltests.il: Fix a visibility problem.
17262
17263 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17264
17265         * driver.c, mini.c: add hooks for the counters API.
17266
17267 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17268
17269         * driver.c: show disabled options.
17270
17271 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17272
17273         * linear-scan.c: always use cost-driven selection.
17274
17275 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17276
17277         * jit-icalls.c (helper_compile_generic_method): Revert change from
17278         2006-02-24.
17279
17280 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17281
17282         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17283
17284 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17285
17286         * inssel.brg: style fixes, mostly to force the updated monoburg
17287         to run for people using svn.
17288
17289 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17290
17291         * mini.c: match monoburg changes.
17292
17293 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17294
17295         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17296         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17297         declaration in the header file.
17298
17299 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17300
17301         * helpers.c: reduce relocations and mem usage.
17302
17303 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17304
17305         * mini.h, mini-codegen.c: disable logging features if
17306         requested by configure.
17307
17308 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17309
17310         * mini.c: tiny verifier changes.
17311
17312 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17313
17314         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17315         cpu-pentium.md: stack alignment changes for osx/x86,
17316         partially from Geoff Norton <gnorton@customerdna.com>.
17317
17318 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17319
17320         * jit-icalls.c (helper_compile_generic_method): Update to changes
17321         in metadata/class.c.
17322
17323 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17324         
17325         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17326         
17327         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17328         interface calls with large offsets.
17329
17330 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17331
17332         * jit-icalls.c (helper_compile_generic_method): Document the
17333         special-case we depend on so that we can inflate the method twice
17334         with the same context with no bad side-effects.
17335
17336 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17337
17338         * mini-x86.c, mini-amd64.c: fix for case when xen support
17339         is disabled.
17340
17341 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17342
17343         * mini-x86.c, mini-amd64.c: generate code to access tls items
17344         in a faster way for Xen systems.
17345
17346 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17347
17348         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17349         updates and compilation fixes for the OSX/x86 port, mostly from
17350         Geoff Norton <gnorton@customerdna.com>.
17351
17352 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17353
17354         * inssel.brg: faster interface call implementation
17355         to sync with the interface_offsets MonoVTable changes.
17356
17357 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17358
17359         * mini.c: more verification checks.
17360
17361 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17362
17363         * mini.c: added a few more verification checks.
17364
17365 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17366
17367         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17368         facility on the processor and use it if available.
17369
17370 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17371
17372         * driver.c, aot.c, mini.c: throw exception if the IL code is
17373         invalid or unverifiable.
17374
17375 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17376
17377         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17378         m.StructField.
17379
17380 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17381
17382         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17383
17384 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17385
17386         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17387         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17388         handling of instantiated generic valuetypes.
17389
17390 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17391
17392         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17393         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17394         instead.
17395
17396         * generics.2.cs: Revert the nullable reftypes tests.
17397
17398 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17399
17400         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17401         using __builtin_frame_address (1) as it doesn't work in the presence
17402         of optimizations. Hopefully fixes #77273.
17403
17404         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17405         -> generics.cs change as it doesn't work with some automake versions.
17406
17407 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17408
17409         * mini.c: handle systems that sue a different way to
17410         retrieve the stack address of the current thread.
17411
17412 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17413
17414         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17415         it specially in the makefile.
17416
17417         * generics.2.cs: Add tests for nullable reference types.
17418
17419 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17420
17421         * mini.c: always handle the case when mono_jit_init()
17422         is called in a thread different from the main thread,
17423         confusing libgc (bug #77309).
17424
17425 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17426
17427         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17428
17429 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17430
17431         * mini.c: change optimize_branches () to use a single loop
17432         and introduce a new optimization to simplify some range checks.
17433
17434 2006-02-03  Martin Baulig  <martin@ximian.com>
17435
17436         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17437         and merged with debugger_thread_manager_add_thread().
17438         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17439         inform the debugger about the main thread.
17440
17441 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17442
17443         * basic.cs: Add test for div.un/rem.un constant folding.
17444
17445 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17446
17447         * cpu-s390x.md: correct int_xor_imm length
17448
17449 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17450
17451         * generics.2.cs: New test for #77442.
17452
17453         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17454         #77442.
17455
17456 2006-02-02  Martin Baulig  <martin@ximian.com>
17457
17458         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17459         <mono/metadata/mono-debug-debugger.h>   
17460
17461         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17462
17463 2006-02-02  Martin Baulig  <martin@ximian.com>
17464
17465         * debug-debugger.h: New header file for debug-debugger.c.
17466
17467         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17468         function is a separate thread anymore; add support for attaching.
17469
17470 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17471
17472         * tramp-x86.c: Fix a warning.
17473
17474 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17475
17476         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17477         on very large methods.
17478
17479         * aot.c (load_patch_info): Fix a warning.
17480
17481 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17482
17483         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17484         mini-ops.h: alu membase optimizations.
17485
17486 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17487
17488         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17489         to speedup StringBuilder.
17490
17491 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17492
17493         * dominators.c (mono_compute_natural_loops): Fix detection of
17494         loop body start blocks.
17495
17496         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17497
17498 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17499
17500         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17501         #75145.
17502
17503 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17504
17505         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17506
17507 2006-01-25  Martin Baulig  <martin@ximian.com>
17508
17509         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17510         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17511         started to cleanup this file a little bit.
17512
17513 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17514
17515         * mini.c: optimize a codepath frequently happening in generics code.
17516
17517 2006-01-23  Martin Baulig  <martin@ximian.com>
17518
17519         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17520
17521         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17522         functions directly.
17523
17524         * driver.c: debug-debugger.c is only available if
17525         `MONO_DEBUGGER_SUPPORTED' is defined.   
17526
17527 2006-01-23  Martin Baulig  <martin@ximian.com>
17528
17529         * debug-debugger.c: Only enable this on platforms where the Mono
17530         Debugger is working (x86 and x86_64).
17531
17532 2006-01-21  Martin Baulig  <martin@ximian.com>
17533
17534         The Mono Debugger is now using the normal `mono' instead of the
17535         `mono-debugger-mini-wrapper' when executing managed code.
17536
17537         * debug-debugger.c: New file; previously known as
17538         debugger/wrapper/wrapper.c.
17539
17540         * debug-mini.c (mono_init_debugger): Removed.
17541
17542         * driver.c (mono_main): Added new `--inside-mdb' command line
17543         argument which is used when running inside the debugger.
17544
17545 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17546
17547         * liveness.c (mono_analyze_liveness): Remove some unused data
17548         structures.
17549
17550 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17551
17552         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17553
17554 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17555
17556         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17557         depends on implementation details of monobitset.
17558
17559         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17560         Fixes #77271.
17561
17562 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17563
17564         * liveness.c: Update after monobitset changes.
17565
17566 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17567
17568         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17569
17570 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17571
17572         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17573
17574         * mini-s390x.c: Remove warning messages.
17575
17576 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17577
17578         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17579
17580 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17581
17582         * generics.2.cs: Add ldelem/stelem_any test.
17583
17584 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17585
17586         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17587
17588 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17589
17590         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17591         
17592 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17593
17594         * generics.2.cs: Reenable vtype tests.
17595
17596         * inssel-x86.brg: Remove an icorrect valuetype rule.
17597
17598 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17599
17600         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17601         initial support for OP_ABS.
17602
17603 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17604
17605         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17606
17607 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17608
17609         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17610         conversion and implement LADD/LSUB.
17611
17612         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17613         architectures.
17614
17615 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17616
17617         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17618
17619         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17620         architectures.
17621
17622 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17623
17624         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17625         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17626         (stack walk problem).
17627
17628 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17629
17630         * aot.c (mono_aot_load_method): Fix a warning.
17631
17632 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17633
17634         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17635
17636 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17637
17638         * iltests.il: Add test for #77148.
17639
17640         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17641         #77148.
17642
17643 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17644
17645         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17646
17647 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17648
17649         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17650         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17651
17652         * basic-long.cs: Add lconv-to-r4/r8 tests.
17653
17654 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17655
17656         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17657
17658         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17659         here as on other archs.
17660
17661 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17662
17663         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17664
17665 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17666
17667         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17668         
17669         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17670
17671         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17672         instrument_prolog; Add memory_barrier instruction.
17673
17674 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17675
17676         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17677
17678 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17679
17680         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17681
17682         * aliasing.c inssel.brg: Fix warnings.
17683
17684         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17685         could skip initialization of some parts of memory.
17686
17687         * mini.c mini-ia64.c: Fix warnings.
17688
17689         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17690
17691 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17692
17693         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17694         a crash seen on sparc.
17695
17696         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17697         
17698         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17699
17700 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17701
17702         * mini-ops.h: Add s390_backchain instruction
17703
17704         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17705
17706         * cpu-s390.md: Add s390_backchain instruction
17707
17708         * mini-s390.c: Significant ABI changes
17709
17710         * mini-s390.h: Cater for zero length structures
17711
17712 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17713
17714         * mini-s390.c: ABI fixes
17715
17716         * inssel-s390.brg: Remove debug statements
17717
17718         * cpu-s390.md: Fix length of ATOMIC_xx operations
17719
17720 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17721
17722         * basic-float.cs: Add float<->long conversion tests.
17723
17724 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17725
17726         * mini-s390.c: Fix LOCALLOC processing.
17727
17728         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17729
17730 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17731
17732         * iltests.il: Add tests for some opcodes not covered by the other
17733         tests.
17734
17735 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17736
17737         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17738         register loading for Tail processing; Correct trace output.
17739
17740         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17741
17742         * cpu-s390.md: Correct size of jmp instruction. 
17743
17744 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17745
17746         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17747
17748 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17749
17750         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17751           Bring s390 up to current level.
17752
17753 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17754
17755         * generics.2.cs: Disable the newly added tests as they do not work yet.
17756         
17757         * generics.2.cs: Add valuetype tests.
17758
17759 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17760
17761         * basic-long.cs: Add i4->u8 test.
17762
17763         * objects.cs: Add tests for JIT intrinsic.
17764
17765         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17766         optimizations lost by a mistake.
17767
17768 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17769
17770         * basic-long.cs: Remove a test moved to objects.cs.
17771
17772         * arrays.cs: Add more array tests.
17773
17774 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17775
17776         * arrays.cs: Add new tests for multi-dimensional arrays.
17777
17778 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17779
17780         * Makefile.am (test_sources2): Add generics.2.cs.
17781         (EXTRA_DIST): Add test_sources2.
17782
17783 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17784
17785         Support for boxing and unboxing nullable types as well as the
17786         isinst operation on nullables, per the CLI ammendment.
17787
17788         * inssel.brg (CEE_ISINST): Special case for nullable
17789
17790         * mini.c (handle_unbox_nullable): new method
17791         (handle_box): Special case for nullable types
17792         (mono_method_to_ir): Call handle_unbox_nullable in correct
17793         places.
17794
17795         * generics.2.cs: New test suite
17796
17797         * Makefile.am: Support for regression tests with generics.
17798
17799 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17800
17801         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17802         allocated to registers. Fixes #76800.
17803
17804 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17805
17806         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17807
17808 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17809
17810         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17811         of platforms.
17812
17813 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17814
17815         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17816         objects.cs.
17817
17818         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17819         
17820         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17821 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17822
17823         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17824         single precision before storing to a single precision location.
17825
17826 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17827
17828         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17829
17830 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17831
17832         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17833         correct files.
17834
17835         * basic.cs: Remove test_0_byte_compares test which was moved to
17836         objects.cs a long time ago.
17837
17838 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17839
17840         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17841
17842 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17843
17844         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17845         handlers are called.
17846
17847         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17848         throwing code.
17849
17850          * mini-ia64.c: Add support for the throw->branch exception 
17851         optimization.   
17852
17853         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17854
17855 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17856
17857         * mini.c: Enabled "fastpath" deadce :-)
17858         
17859 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17860
17861         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17862         alias analysis pass to support it.
17863         * mini.h: Likewise.
17864         * ssa.c: Likewise.
17865         * liveness.c: Likewise (liveness computation can use aliasing
17866         information to be more accurate).
17867         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17868         moreover made so that "--compile-all" uses the given optimization
17869         flags and not the default ones.
17870         * aliasing.c: Alias analysis (new file).
17871         * aliasing.h: Likewise.
17872         * Makefile.am: added "aliasing.c" and "aliasing.h".
17873         
17874 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17875
17876         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17877         OP_L opcodes.
17878
17879 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17880
17881         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17882         fp >= end_of_stack exit condition, as it is not needed, and it might
17883         become true for fp eliminated frames.
17884
17885 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17886
17887         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17888         coded offsets.
17889
17890 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17891
17892         * mini-arm.c: fixed alignment of doubles/longs to match
17893         the C ABI (bug #76635).
17894
17895 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17896
17897         * aot.c: fix compilation with --enable-minimal=aot.
17898
17899 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17900
17901         * mini-arm.c: fixed compatibility with the new
17902         floating point emulator package for compares.
17903
17904 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17905
17906         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17907
17908 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17909
17910         * mini-exceptions.c (print_stack_frame): Output to stderr.
17911         (mono_handle_native_sigsegv): Ditto.
17912
17913 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17914
17915         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17916         OP_LCONV_TO_OVF_I implementation.
17917
17918         * mini-amd64.c: Add support for the throw->branch exception 
17919         optimization.
17920
17921         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17922         when the catch clause catches a more general exception, i.e. Object.
17923
17924 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17925
17926         * cpu-ia64.md: Remove unused opcodes.
17927
17928         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17929         specific defines for architectures defining USE_SIGACTION.
17930
17931         * mini-ia64.c: Fix some warnings.
17932
17933         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17934         version seemed to skip a frame.
17935
17936 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17937
17938         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17939         only calls which are made to native code use this flag.
17940
17941 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17942
17943         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17944         varargs methods as well.
17945         
17946         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17947         which have save_lmf set. Reorganize methods prologs a bit.
17948
17949         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17950         debugger to the proper place.
17951
17952 2005-10-29  Martin Baulig  <martin@ximian.com>
17953
17954         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17955         when running inside the debugger until the debugger has support
17956         for it.
17957
17958 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17959
17960         * mini.h: Fix a warning.
17961
17962 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17963
17964         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17965         we expose publicly, this returns the string.
17966
17967 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17968
17969         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17970         with fp elimination.
17971
17972 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17973
17974         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17975         native stacktrace using the glibc 'backtrace' function if available.
17976
17977 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17978
17979         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17980
17981         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17982         handle SIGSEGVs received while in native code.
17983
17984         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17985         code, call mono_handle_native_sigsegv which will abort the runtime
17986         after printing some diagnostics, instead of converting it into a
17987         confusing NullReferenceException.
17988
17989 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
17990
17991         * cpu-pentium.md: Remove unused opcodes.
17992
17993 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
17994
17995         * mini-amd64.h (MonoLMF): Add rsp field.
17996
17997         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
17998         the lmf too.
17999
18000 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18001
18002         * mini-codegen.c (get_register_spilling): Fix some warnings.
18003
18004 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18005
18006         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18007         elimination during exception handling. Enable fp elimination by
18008         default.
18009
18010         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18011         elimination.
18012
18013 2005-10-16  Martin Baulig  <martin@ximian.com>
18014
18015         * mini-exceptions.c
18016         (mono_debugger_run_finally): New public method for the debugger.
18017
18018 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18019
18020         * debug-mini.c (mono_debug_init_method): Fix warning.
18021
18022         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18023         the 'exname' parameter const to fix some warnings.
18024
18025 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18026
18027         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18028         introduced by the previous patch.
18029
18030 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18031
18032         * basic-float.cs: Add test for precision of float arithmetic.
18033
18034         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18035         when loading/storing single values from/to memory.
18036
18037         * mini.c (mono_jit_compile_method_with_opt): Create the function
18038         pointers in the correct domain.
18039
18040 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18041
18042         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18043         introduced by previous patch.
18044         
18045         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18046         when out_filter_idx is NULL.
18047
18048         * mini-exceptions.c: Don't run filter clauses twice during exception
18049         handling. Fixes #75755.
18050
18051 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18052
18053         * aot.c: Add support for ldflda wrappers.
18054
18055         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18056         #75902.
18057
18058 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18059
18060         * mini.c, mini.h: do not consider exception handlers blocks when
18061         setting up interface variables.
18062
18063 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18064
18065         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18066
18067 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18068
18069         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18070         causes a regression.
18071
18072         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18073
18074 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18075
18076         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18077         of the OP_P definitions.
18078
18079         * TODO: Add a proposal for dealing with the CEE/OP mess.
18080
18081         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18082         optimizations from the x86 port.
18083
18084         * cpu-amd64.md: Ditto.
18085
18086         * basic.cs basic-long.cs: Add tests.
18087
18088 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18089
18090         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18091         Patrik Torstensson's implementation of my exception-handling
18092         optimization idea, when the exception object is not used
18093         (bug #62150).
18094
18095 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18096
18097         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18098         of the mul_imm optimizations from the old jit.
18099
18100 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18101
18102         * mini.c, liveness.c: patch by Patrik Torstensson and
18103         Zoltan Varga to improve performance in methods with
18104         exception clauses.
18105
18106 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18107
18108         * driver.c: Remove 'Globalization' entry from --version.
18109
18110 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18111
18112         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18113         there is a profiler interested in JIT events.
18114
18115         * aot.c: Load profile files produced by the AOT profiling module, and
18116         reorder methods based on the profiling info. Add a 'method_order' table
18117         to the AOT file to make mono_aot_find_jit_info work with the reordered
18118         methods.
18119
18120         * mini.h: Bump AOT file version info.
18121
18122 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18123
18124         * mini-arm.h: work around what looks like a gcc bug when optimizations
18125         are enabled.
18126
18127 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18128
18129         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18130         conditionals.  Use ...
18131         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18132
18133 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18134
18135         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18136         to determine the amount of memory to copy when passing valuetypes.
18137
18138         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18139         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18140
18141 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18142
18143         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18144         information about aot.
18145
18146 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18147
18148         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18149         macros. This will allow a deadlock debugger to easily be plugged
18150         in.
18151
18152 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18153
18154         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18155
18156 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18157
18158         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18159         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18160         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18161         ($(arch_built)) [CROSS_COMPILING]: Error out.
18162
18163 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18164
18165         * aot.c: Add support for the no_special_static flag for classes.
18166
18167 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18168
18169         * Reapply reverted patches.
18170
18171         * *: Revert r50174 as well.
18172
18173         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18174
18175 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18176
18177         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18178
18179 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18180
18181         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18182         part of the SIG_HANDLER_SIGNATURE.  
18183
18184 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18185
18186         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18187         statistics.
18188
18189         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18190         introduced by previous patch.
18191
18192 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18193
18194         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18195         saved registers too.
18196
18197         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18198         upon the information returned by get_call_info ().
18199         
18200         * mini-x86.c (add_float): Fix stack size calculation.
18201         (mono_arch_call_opcode): Rewrite this so it works based up the
18202         information returned by get_call_info ().
18203         (mono_arch_get_this_vret_args): Ditto.
18204
18205 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18206
18207         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18208         in cinfo to determine the registers which need to be used.
18209
18210 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18211
18212         * driver.c (mono_main): Add --server and --desktop flags. 
18213
18214 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18215
18216         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18217         registers as global registers.
18218
18219         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18220         longer needed with the new register allocator.
18221
18222         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18223
18224         * cpu-ia64.md: Remove unused opcodes.
18225         
18226         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18227         
18228 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18229
18230         * cpu-amd64.md: Remove unused opcodes.
18231
18232         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18233         needed with the new register allocator.
18234
18235         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18236         reg-reg moves.
18237
18238 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18239
18240         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18241
18242 2005-09-16  Martin Baulig  <martin@ximian.com>
18243
18244         * exceptions-amd64.c
18245         (throw_exception): Don't call mono_debugger_throw_exception() if
18246         we're a rethrow - see the FIXME in the code.
18247
18248 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18249
18250         * mini.c (mono_init_exceptions): This only works on some architectures.
18251         
18252 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18253
18254         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18255         on ia64.
18256
18257         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18258
18259         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18260         now in mini-exceptions.c.
18261
18262 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18263
18264         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18265         now in mini-exceptions.c.
18266
18267 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18268
18269         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18270         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18271
18272         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18273         code into mini-exceptions.c. Add some assertions to it.
18274
18275 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18276
18277         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18278         (<software@solmersa.com>). Fix as errors on windows.
18279
18280 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18281
18282         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18283         method info into the LMF.
18284
18285 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18286         
18287         * mini-ia64.c: Add proper unwind info for method epilogs.
18288
18289         * exceptions-ia64.c: Add some code to help debugging.
18290         
18291         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18292
18293         * mini-exceptions.c: Fix warning.
18294
18295 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18296
18297         * mini.c: Really fix build.
18298
18299         * mini-x86.c mini-amd64.c: Fix build.
18300
18301 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18302
18303         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18304
18305         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18306         some Interlocked methods as intrinsics.
18307
18308         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18309         for Thread methods as well.
18310
18311         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18312
18313         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18314
18315         * mini-ia64.c mini-x86.c mini-amd64.c 
18316         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18317         OP_MEMORY_BARRIER.
18318         
18319         * mini.c (mono_init_exceptions): Fix build breakage.
18320
18321 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18322
18323         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18324         of instructions. Use the new ia64_unw_op macros for emitting unwind
18325         info.
18326
18327         * mini.c (mono_init_exceptions): Initialize exception handling
18328         related trampolines at startup.
18329
18330 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18331
18332         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18333
18334 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18335
18336         * mini.c: Handle type loading errors gracefully during compilation and
18337         throw the appropriate exception.
18338
18339 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18340
18341         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18342         for the mono binary.
18343
18344 2005-09-09  Martin Baulig  <martin@ximian.com>
18345
18346         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18347         the release.
18348
18349 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18350
18351         * mini-arm.h: use emulation for conv.r.un for the release.
18352
18353 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18354
18355         * mini-arm.c, objects.cs: more fixes and tests for them.
18356
18357 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18358
18359         * mini-arm.c: align structures to at least 4 bytes to be able
18360         to keep our current optimized memcpy.
18361
18362 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18363
18364         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18365
18366 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18367
18368         * mini.c: ignore SIGPIPE.
18369
18370 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18371
18372         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18373
18374         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18375
18376 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18377
18378         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18379
18380 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18381
18382         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18383         exception handling support.
18384         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18385         patch by Brian Koropoff <briank@marakicorp.com>).
18386
18387 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18388
18389         * mini.c: revert another 'optimization' which breaks when
18390         items on the eval stack need to be saved at a basic block end
18391         (bug #75940).
18392
18393 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18394
18395         * jit-icalls.c: for arrays, ensure we always provide
18396         lower bounds.
18397
18398 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18399
18400         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18401         
18402         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18403
18404 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18405
18406         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18407         arguments in their original register.
18408
18409 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18410
18411         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18412         memset/memcpy.
18413
18414         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18415         when ssapre is enabled.
18416
18417         * inssel-long.brg: Fix bug in previous patch.
18418
18419         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18420         multiplication by a constant.
18421
18422 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18423
18424         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18425         icc.
18426
18427         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18428         saving registers.
18429
18430 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18431
18432         * inssel-arm.brg: apply changes tested by Brian Koropoff
18433         <briank@marakicorp.com>.
18434
18435 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18436
18437         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18438         
18439 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18440
18441         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18442         to the same register if dreg is just a base register.
18443         (print_ins): Improve printing of membase opcodes.
18444
18445         * inssel-x86.brg: Add optimized ldind(reg) rules.
18446
18447         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18448
18449 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18450
18451         * mini.c: when running under valgrind, set the stack bottom for
18452         the GC at the actual approximate stack for the app (fixes running
18453         mono with valgrind).
18454
18455 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18456
18457         * mini.c: do no break at the first valuetype to init found
18458         (fixes bug #75791).
18459
18460 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18461
18462         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18463
18464 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18465
18466         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18467
18468 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18469
18470         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18471
18472 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18473
18474         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18475
18476         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18477         code.
18478
18479         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18480         code.
18481
18482         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18483         methods.
18484
18485 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18486
18487         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18488
18489 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18490
18491         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18492         in the tail recursion optimization.
18493
18494         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18495         debug info into the assembly file.
18496
18497         * iltests.il: Add test for filter regions.
18498
18499         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18500         initial stack of filter regions. Fixes #75755.
18501
18502 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18503
18504         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18505         stack requirements.
18506
18507 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18508
18509         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18510         the check for an already compiled method on non-ia64 platforms.
18511         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18512         proper domain.
18513
18514         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18515
18516         * inssel-x86.brg: Add some optimized call rules.
18517
18518 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18519
18520         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18521         method here.
18522
18523         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18524         mono_arch_patch_delegate_trampoline.
18525
18526         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18527
18528         * mini-trampolines.c: Fix build.
18529
18530         * mini-amd64.h: Add delegate trampolines.
18531
18532         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18533
18534         * inssel-amd64.brg: Add optimized call rules.
18535         
18536         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18537
18538         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18539
18540 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18541
18542         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18543         change.
18544
18545         * mini-ia64.c: Remove LMF fixmes.
18546
18547         * mini-ia64.h: Remove most fields from LMF.
18548
18549         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18550
18551         * mini-trampolines.c: Add support for IA64 function descriptors.
18552
18553         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18554         for IA64 function descriptors.
18555
18556 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18557
18558         * tramp-arm.c: patch the vtable for virtual calls. Added
18559         support code to register/unregister the LMF.
18560         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18561         more LMF work.
18562
18563 2005-08-19  Dick Porter  <dick@ximian.com>
18564
18565         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18566         bit value if needed.
18567
18568 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18569
18570         * mini.c (mini_get_method): Move handling of wrapper data here.
18571
18572         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18573
18574         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18575         virtual.
18576
18577         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18578         bblock->code does not remain empty.
18579
18580 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18581
18582         * arrays.cs: Add regression test for #75832.
18583
18584         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18585         rules. Fixes #75832.
18586
18587         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18588         instruction scheduling.
18589
18590 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18591
18592         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18593
18594 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18595
18596         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18597
18598         * mini-codegen.c: Fix VC build.
18599
18600         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18601
18602 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18603
18604         * mini.h: fix signature for mono_register_opcode_emulation.
18605
18606 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18607
18608         * mini.c: Get rid of most of the helper_sig_... constants using
18609         mono_create_icall_signature ().
18610
18611 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18612
18613         * jit-icalls.c (helper_ldstr): New helper function.
18614
18615         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18616
18617         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18618         throw, load the string using a helper call instead of creating a string object.
18619
18620         * aot.c: Update after LDSTR changes.
18621
18622         * mini.h: Bump AOT file version.
18623         
18624         * aot.c: Save class size info into the AOT file. Print more statistics during
18625         compilation.
18626
18627         * mini.h: Bump AOT file version.
18628
18629         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18630         ordering of disasm cases. Fixes #74957.
18631
18632 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18633
18634         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18635         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18636         the generic code needed for the ARM port.
18637
18638 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18639
18640         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18641         inssel-arm.brg: more ARM features and fixes.
18642
18643 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18644
18645         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18646         ARM port work in progress.
18647
18648 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18649
18650         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18651
18652         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18653
18654         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18655
18656         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18657
18658         * *-ia64.*: Ongoing IA64 work.
18659         
18660         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18661
18662 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18663
18664         * TODO: Remove out-of-data todo stuff.
18665
18666         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18667         dead code.
18668
18669         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18670
18671         * mini.h: Bump corlib version.
18672
18673 2005-07-27  Martin Baulig  <martin@ximian.com>
18674
18675         * mini-codegen.c
18676         (create_copy_ins): Added `const unsigned char *ip' argument; set
18677         `copy->cil_code' from it.
18678
18679 2005-07-27  Martin Baulig  <martin@ximian.com>
18680
18681         * mini-exceptions.c (mono_handle_exception): Don't call
18682         mono_debugger_handle_exception() for filters.
18683
18684 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18685
18686         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18687         as well.
18688
18689 2005-07-26  Martin Baulig  <martin@ximian.com>
18690
18691         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18692
18693         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18694         helper_compile_generic_method() if the method is actually virtual
18695         and non-final.
18696
18697 2005-07-26  Martin Baulig  <martin@ximian.com>
18698
18699         * mini.c
18700         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18701         public; this is now accessed directly by the debugger.
18702         (mono_generic_trampoline_code): Removed.
18703
18704         * debug-mini.c
18705         (mono_debug_init_method): Also add interncalls and wrappers.
18706
18707 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18708
18709         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18710
18711 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18712
18713         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18714
18715 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18716
18717         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18718
18719 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18720
18721         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18722         getting TLS offsets on AMD64 too.
18723
18724 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18725
18726         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18727
18728 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18729
18730         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18731         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18732
18733 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18734
18735         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18736
18737         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18738         to mini.c.
18739
18740         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18741         mono_sparc_is_virtual_call ().
18742         
18743         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18744
18745         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18746         trampoline parameters.
18747
18748         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18749         
18750         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18751         to mono_arch_get_vcall_slot_addr.
18752
18753         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18754         trampoline code.
18755
18756         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18757
18758 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18759
18760         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18761
18762 2005-07-19  Martin Baulig  <martin@ximian.com>
18763
18764         * exceptions-amd64.c (throw_exception): Call
18765         mono_debugger_throw_exception() here like we're doing it on i386.
18766
18767 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18768
18769         * mini-ia64.c: Add optimized TLS access support.
18770
18771 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18772
18773         * mini-exceptions.c: Ongoing IA64 work.
18774
18775         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18776
18777         * mini.c: Use the default optimization set when embedding. Fixes
18778         #75194.
18779
18780 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18781
18782         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18783         of trampolines to a separate file.
18784
18785         * mini-trampolines.c: New file.
18786
18787         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18788         separate file.
18789         
18790         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18791         amd64/ia64 code.
18792
18793         * mini-codegen.c: Fix cygwin build.
18794
18795 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18796
18797         * mini.c: Add some minor changes needed by the IA64 port.
18798
18799         * *-ia64.*: Ongoing IA64 work.
18800
18801 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18802
18803         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18804         trampolines into arch-independent and arch-dependent parts.
18805
18806         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18807
18808 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18809
18810         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18811
18812         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18813         the xp-regalloc-branch for amd64.
18814
18815         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18816         xp-regalloc-branch for x86.
18817
18818 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18819
18820         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18821
18822 2005-07-06  Martin Baulig  <martin@ximian.com>
18823
18824         * mini.c
18825         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18826         (mono_jit_runtime_invoke): Likewise.
18827
18828 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18829
18830         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18831         on x86 too.
18832         
18833         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18834         without loading their metadata. Reorganize the file format so exception handling+
18835         debug info is kept separate from normal method info. Create MonoJitInfo 
18836         structures for methods lazily.
18837
18838         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18839         loading metadata.
18840         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18841
18842         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18843
18844         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18845         in AOT code.
18846
18847         * mini.h: Bump AOT file version.
18848
18849 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18850
18851         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18852
18853 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18854
18855         * Makefile.am (check-local): Call semdel-wrapper.
18856
18857 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18858
18859         * mini-x86.c: Revert the last change as it seems to break the build..
18860
18861 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18862
18863         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18864         
18865         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18866
18867 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18868
18869         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18870         outside of the macro, so strange stuff doesn't happen with gcc4
18871         (NEW_AOTCONST_TOKEN): Likewise.
18872
18873 2005-06-28  Martin Baulig  <martin@ximian.com>
18874
18875         * mini.c (mini_class_is_system_array): New static method; use this
18876         instead of `klass->parent == mono_defaults.array_class' everywhere
18877         since this also works for the new generic array class.
18878
18879 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18880
18881         * inssel.brg: Remove warnings.
18882
18883 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18884
18885         * mini-ia64.c: Ongoing IA64 work.
18886
18887         * basic-float.cs: Add float->i1 conversion test.
18888
18889         * iltests.il: Add conv.u4 test.
18890
18891 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18892
18893         * inssel-long.brg: Fix bug caused by last change.
18894
18895 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18896
18897         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18898         BSDs.  Allows the x86 JIT to work on OSX86
18899
18900 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18901
18902         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18903         u4->i8 conversion.
18904
18905         * mini-ia64.c: Ongoing IA64 work.
18906
18907 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18908
18909         * mini-ia64.c: Ongoing IA64 work.
18910
18911         * driver.c: Clean up jit_code_hash as well when using --regression.
18912
18913         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18914
18915         * basic-long.cs: Add tests for long->u4 conversion.
18916
18917 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18918
18919         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18920         that we do not depend on undefined C behavior: the order stuff
18921         gets evaluated within an expression. Fixes mono when compiled on
18922         GCC 4.
18923
18924 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18925
18926         * *-ia64.*: Ongoing IA64 work.
18927
18928         * aot.c: Lower memory usage while loading AOT methods.
18929
18930         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18931
18932         * mini.h: Bump AOT file format version.
18933
18934 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18935
18936         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18937
18938 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18939
18940         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18941         not on callee assembly). Fixed some comments.
18942
18943 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18944
18945         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18946         it gets proper disassembly.
18947         (emit_method_info): Remove some dead code.
18948
18949         * mini.c (mini_method_compile): Allways allocate the GOT var in
18950         mono_method_to_ir for emulating opcodes.
18951
18952 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18953
18954         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18955         before freeing the code memory. Fixes #74990.
18956
18957         * objects.cs: Add regression test for #74992.
18958
18959         * liveness.c: Extend live ranges of arguments to the beginning of the
18960         method. Fixes #74992.
18961
18962         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18963         so it points into the faulting instruction.
18964
18965 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18966
18967         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18968
18969         * *-ia64.*: Ongoing IA64 work.
18970
18971         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18972
18973 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18974
18975         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18976
18977         * *-ia64.*: Ongoing IA64 work.
18978
18979 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18980
18981         * basic-long.cs: Add tests for add/sub.ovf.
18982
18983         * basic.cs: Add tests for sub.ovf.
18984
18985         * *-ia64.*: Ongoing IA64 work.
18986
18987 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
18988
18989         * *-ia64.*: Ongoing IA64 work.
18990
18991         * basic.cs: Add conv.ovf.i4.un test.
18992
18993 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
18994
18995         * mini.c: (remove_block_if_useless) Fixed bug 75061.
18996         
18997 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18998
18999         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19000
19001 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19002
19003         * *-ia64.*: Ongoing IA64 work.
19004
19005 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19006
19007         * trace.[ch]:
19008         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19009
19010 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19011
19012         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19013
19014 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19015
19016         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19017
19018         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19019         of a call is callable by a near call.
19020
19021 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19022
19023         * mini-ia64.c: Ongoing IA64 work.
19024
19025 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19026
19027         * genmdesc.c: Make the generated array non-static.
19028
19029         * inssel-long.brg: Fix LSHR_IMM rule.
19030
19031         * *-ia64.*: Ongoing IA64 work.
19032
19033         * *-ia64.*: Ongoing IA64 work.
19034
19035 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19036
19037         * *-ia64.*: Ongoing IA64 work.
19038
19039         * *-ia64.*: Ongoing IA64 work.
19040         
19041         * mini-ia64.c: Ongoing IA64 work.
19042
19043         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19044
19045 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19046
19047         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19048         
19049         * objects.cs basic-long.cs: Move some tests to objects.cs.
19050
19051 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19052
19053         * *-ia64.*: Ongoing IA64 work.
19054
19055         * iltests.il: Add a new test.
19056
19057         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19058         newobj. Fixes #75042.
19059
19060 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19061
19062         * *-ia64.*: Ongoing IA64 work.
19063         
19064         * *-ia64.*: Ongoing IA64 work.
19065         
19066         * *-ia64.*: Ongoing IA64 work.
19067
19068         * basic.cs objects.cs: Move tests accessing static variables as well.
19069
19070         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19071
19072 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19073
19074         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19075
19076         * driver.c: Always print failed tests.
19077
19078         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19079         frame pointer.
19080
19081         * *ia64*: Ongoing IA64 work.
19082
19083 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19084
19085         * basic.cs: Add tests for add.ovf. Fix warnings.
19086
19087 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19088
19089         * driver.c (mono_main): Avoid crash if no argument is passed to
19090         --break;  Do not use g_error, but f_printf.   And fix all other
19091         ocurrences of the same crash.
19092
19093 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19094
19095         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19096         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19097         Fixes #74742.
19098
19099 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19100
19101         * *-ia64.*: Add beginnings of IA64 backend.
19102
19103         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19104
19105 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19106
19107         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19108         Fixes #74925.
19109
19110         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19111
19112         * mini-amd64.c: Fix a warning.
19113
19114 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19115
19116         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19117         in float_neg. Fixes #74897.
19118
19119         * mini-amd64.c (emit_call): Fix another near call bug.
19120
19121 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19122
19123         * declsec.c: Keep the appdomain information in the structure. Added a 
19124         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19125         value gets overwritten).
19126         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19127         an MonoAppDomain member to MonoSecurityFrame.
19128         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19129         used in the stack walk. Now use a MonoArray which grow (double) when
19130         it gets full.
19131
19132 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19133
19134         * mini.c: Re-enabled runtime cleanup, since running threads should
19135         now properly stop when exiting.
19136
19137 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19138
19139         * mini-codegen.c: New file contaning the arch-independent local
19140         register allocator. Not used by any architectures yet.
19141
19142         * mini.h linear-scan.c: Merge some changes from the 
19143         mini-xp-local-regalloc branch.
19144
19145 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19146
19147         * mini-amd64.c (emit_call): Fix calls to native functions when the
19148         runtime is compiled as a shared library. Fixes #74756.
19149
19150         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19151         on a literal field. Fixes #74751.
19152
19153 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19154
19155         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19156
19157 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19158
19159         * objects.cs: Add missing null casting test.
19160
19161 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19162
19163         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19164         in wrapper methods. Also rename 'address' variable to 'offset'.
19165
19166 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19167
19168         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19169         warnings.
19170         
19171         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19172
19173         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19174         work on windows.
19175
19176 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19177
19178         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19179
19180 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19183         just the last bytes.
19184
19185 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19186
19187         * aot.c (mono_compile_assembly): Fix warning.
19188
19189         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19190         by the _MSC_VER stuff.
19191
19192 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19193
19194         * inssel-long.brg: Fix #74588.
19195
19196         * cpu-amd64.md: Fix #74591.
19197
19198         * iltests.il: Add new regression tests.
19199
19200 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19201
19202         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19203         valuetype.
19204
19205 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19206
19207         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19208
19209         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19210         from Bill Middleton <flashdict@gmail.com>.
19211
19212 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19213
19214         * arrays.cs: Add new regression test. Fix warnings.
19215
19216 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19217
19218         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19219         and leakage in CKFINITE.
19220
19221         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19222         this to a null op since it is called on amd64 too.
19223
19224         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19225
19226         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19227         body since this is not used on amd64.
19228         
19229         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19230
19231         * mini-amd64.c: Remove obsolete fixmes.
19232
19233         * mini.c (print_method_from_ip): Fix debugging support.
19234
19235 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19236
19237         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19238         so that expressions that don't give much gain are not reduced.
19239         * ssapre.h: Likewise.
19240
19241 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19242
19243         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19244
19245         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19246
19247         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19248
19249 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19250
19251         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19252
19253         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19254
19255 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19256
19257         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19258         stack touching.
19259
19260         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19261
19262         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19263
19264         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19265
19266         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19267         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19268
19269         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19270
19271         * mini-x86.c: Fix up stack overflow handling.   
19272
19273         * exceptions.cs: Add new regression test.
19274
19275 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19276
19277         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19278         mono_jit_thread_attach.
19279
19280         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19281
19282 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19283
19284         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19285         avoid calling constructors using callvirt.
19286
19287         * inssel.brg: Fix #74073.
19288
19289 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19290
19291         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19292         compilation with non-GCC compilers.
19293         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19294         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19295
19296 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19297
19298         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19299         klass->interface_offsets (will likely fix bug#74073).
19300
19301 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19302
19303         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19304
19305 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19306
19307         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19308         to amd64_div_reg_size ().
19309         
19310         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19311
19312 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19313
19314         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19315
19316 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19317
19318         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19319
19320 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19321
19322         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19323         
19324         * mini.c (mono_precompile_assembly): Load and precompile referenced
19325         assemblies as well. Fixes #74015.
19326
19327 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19328
19329         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19330
19331 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19332
19333         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19334         a lot of checks and (anyway) permissions cannot work until corlib is 
19335         loaded.
19336
19337 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19338
19339         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19340
19341 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19342
19343         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19344         calls (fixes bug#72824).
19345
19346 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19347
19348         * mini.c: fix tail recursion elimination (see test in bug#73936).
19349
19350 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19351
19352         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19353         some fp functions in sse2 mode.
19354
19355 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19356
19357         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19358
19359 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19360
19361         * mini.h mini.c: Add mono_get_jit_tls_key ().
19362
19363         * mini-x86.c: Enable fast TLS support on windows.
19364
19365 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19366
19367         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19368         * mini.c: Check for p/invoke method when generating code. If a
19369         p/invoke method, or it's class, isn't decorated with [Suppress
19370         UnmanagedCodeSecurity] then generate code to call System.Security.
19371         UnmanagedDemand (only if the security manager is active).
19372
19373 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19376         last change as it seems to cause strange crashes.
19377         
19378 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19379
19380         * *.c: handle unsafe function pointers where needed.
19381
19382 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19383
19384         * mini.c (mono_jit_free_method): Remove the fixme too.
19385
19386 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19387
19388         * mini.c: As discussed, make the code actually free the delegate
19389         thunk now, to enable the debugging of delegate problems, use
19390         MONO_DEBUG=1 when running Mono. 
19391
19392         This takes also care of parts of the leaks as seen by Joe.
19393
19394 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19395
19396         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19397         thread_tls_offset calculation.
19398
19399 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19400
19401         * declsec.c: Reworked linkdemand checks for icall. The previous code
19402         was using the declaration code (untrusted) and didn't work as expected
19403         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19404         specific case.
19405
19406 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19407
19408         * iltests.il: Add new localloc test.
19409
19410         * mini-amd64.c: Handle large stack allocations the same way as on
19411         windows if stack overflow handling is working.
19412         
19413         * mini-amd64.c: Allocate the signal stack using mmap.
19414
19415         * mini.c (sigsegv_signal_handler): Fix reading of context.
19416
19417         * mini-exceptions.c: Fix up stack overflow handling.
19418
19419         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19420
19421         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19422
19423         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19424
19425         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19426
19427         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19428         tramp_init functions as they are no longer needed.
19429
19430 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19431
19432         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19433         
19434         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19435
19436         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19437         
19438         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19439         support that now.
19440
19441         * mini-ops.h: Add OP_LMUL_IMM.
19442
19443         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19444         long mul/div opcodes as intrinsic.
19445
19446         * mini-amd64.c (emit_call): Handle the case when the callee might be
19447         an AOT method.
19448
19449 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19450
19451         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19452         extra safe.
19453         
19454         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19455
19456         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19457
19458 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19459
19460         * mini.c (mono_codegen): Don't leak here, to help people running
19461         monogrind.
19462
19463 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19464
19465         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19466         conversions in sse2 mode.
19467
19468         * basic-float.cs: Add regression test.
19469         
19470         * mini-amd64.c: Reenable sse2.
19471
19472 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19473
19474         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19475
19476 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19477
19478         * driver.c: Copyright text should include 2005.
19479         
19480 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19481
19482         * cpu-amd64.md (load_membase): Fix more max lengths.
19483
19484 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19485
19486         * cpu-amd64.md (load_membase): Fix max length.
19487
19488         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19489
19490         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19491
19492         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19493         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19494
19495         * basic-float.cs: Add rounding regression test.
19496
19497         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19498
19499 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19500
19501         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19502         structures in registers for pinvoke wrappers.
19503
19504 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19505
19506         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19507
19508 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19509
19510         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19511         wrapper to mono_jit_thread_attach.
19512
19513         * mini.c (mini_jit_thread_attach): New jit icall.
19514
19515         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19516         native->managed wrappers.
19517
19518         * exceptions.cs: Add new regression test.
19519
19520         * mini.c (optimize_branches): Check regions in the cbranch to throw
19521         block case as well. Fixes #73242.
19522
19523 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19524
19525         * mini.c: thread safety fixes.
19526
19527 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19528
19529         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19530         patching stuff, since delegates use jump trampolines so there is
19531         no caller.
19532
19533         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19534         jump trampolines.
19535         
19536         * tramp-amd64.c: Fix build.
19537
19538         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19539         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19540
19541         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19542         Rename this to mono_arch....
19543         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19544
19545         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19546
19547         * mini-amd64.c (emit_call): If both the caller and the callee is
19548         guaranteed to have 32 bit addresses, emit a normal call.
19549
19550         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19551
19552         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19553         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19554         method_ptr inside delegates.
19555
19556 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19557
19558         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19559         invalidated. Fixes #73001.
19560
19561         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19562
19563         * mini-x86.c: Only use stdcall for pinvokes on windows.
19564
19565 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19566
19567         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19568         * mini-x86.c: remove unreliable __thread var offset detection,
19569         use the correct accessors and enable by default.
19570
19571 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19572
19573         * mini.c (mono_jit_free_method): Fix memory leak.
19574
19575 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19576
19577         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19578
19579 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19580
19581         * cpu-amd64.md: Fix lengths of atomic opcodes.
19582
19583 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19584
19585         * driver.c: try to not imply using ICU is any good.
19586
19587 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19588
19589         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19590         functions as inline ops.
19591
19592         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19593         some Interlocked functions as inline ops.
19594
19595         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19596
19597         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19598
19599         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19600
19601         * mini.c: Add support for OP_NOT_TAKEN.
19602
19603         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19604         structures in registers for pinvoke wrappers.
19605
19606         * mini-amd64.c: Fix warnings.
19607
19608 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19609
19610         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19611
19612         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19613
19614         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19615         address instead of loading the address from it.
19616
19617         * mini-x86.c: Add support for returning small structs in registers
19618         on Win32. Fixes part of #70864.
19619         
19620 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19621
19622         * trace.c (get_token): Improve error checking.
19623
19624 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19625
19626         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19627
19628 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19629  
19630         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19631         it can be reused for MonoClass.
19632         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19633         _LINKDEMAND.
19634
19635 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19636
19637         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19638         instead of a MonoReflectionMethod. The method information wasn't used
19639         when displaying SecurityException details (but will be now).
19640
19641 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19642
19643         * Makefile.am : windows build fix.
19644
19645 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19646
19647         * iltests.il: Add new regression test.
19648
19649         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19650         #72522.
19651
19652 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19653  
19654         * mini.c: Moved linkdemand check into helper function check_linkdemand
19655         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19656         LDFTN, LDVIRTFTN).
19657
19658 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19659
19660         * declsec.c: Added statistics counter for different kinds of 
19661         LinkDemands.
19662         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19663         (and commented) declaration.
19664         * mini.c: Added statistics counter for security Demand code 
19665         generation. Added display of security statistics.
19666
19667 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19668
19669         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19670         Fix compilation errors under gcc-2.95.
19671
19672 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19673
19674         * mini.c, driver.c: Use the new jit trampoline hashtable
19675
19676 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19677
19678         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19679
19680 2005-02-11  Martin Baulig  <martin@ximian.com>
19681
19682         * debug-mini.c (mono_debug_close_method): Free the line number array.
19683
19684 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19685
19686         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19687         icalls.
19688
19689         * mini.h: Bump AOT file format version. 
19690
19691 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19692
19693         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19694         APTC and P/Invoke.
19695         * declsec.h: Added macros to get/set lazyly initialized security 
19696         informations about assemblies. Added new enum for different type of
19697         possible LinkDemand violation. Added function to check LinkDemands.
19698         * mini.h: Added a field to MonoCompile to hold any security violation
19699         detected when JITting a method (so it can be thrown later).
19700         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19701         and CEE_CALLVIRT. Added code to throw exception at the end of
19702         mini_method_compile (note: the exception is unhandled right now).
19703
19704 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19705
19706         * mini.c, jit-icalls.c: use the managed implementation of
19707         memset for initobj and memset, to avoid managed <-> unmanaged
19708         transitions.
19709
19710 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19711
19712         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19713         optimization if it would need a GOT var.
19714
19715         * basic.cs: Add tests for constant propagation and switch statements.
19716
19717         * ssa.c: Fix out-of-range constant propagation and switch statements.
19718
19719 2005-02-09    <vargaz@freemail.hu>
19720
19721         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19722
19723 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19724
19725         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19726
19727 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19728
19729         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19730
19731 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19732
19733         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19734         arithmetic operations.
19735
19736 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19737
19738         * mini-ppc.c: add a workaround for broken user code that
19739         DllImports vararg functions with non-vararg signatures.
19740
19741 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19742
19743         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19744         meaningfull error message for assemblies written in Managed C++.
19745
19746         * tramp-amd64.c mini-amd64.h: Add support for 
19747         create_trampoline_from_token ().
19748
19749         * aot.c mini-x86.c abcremoval.c: Applied patch from
19750         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19751
19752 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19753
19754         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19755         which takes a MonoImage/token as parameter instead of a MonoMethod.
19756
19757         * aot.c: Use the new trampoline for initializing vtables.
19758
19759         * aot.c: Add support for ldfld/stfld_remote wrappers.
19760
19761         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19762         rules for compare <MEM>, IMM.
19763
19764         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19765
19766         * aot.c: Handle inherited finalizers correctly.
19767
19768 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19769
19770         * inssel.brg (stmt): Add a missing _setup_... ().
19771
19772         * aot.c: Save some parts of the class state to the AOT file and use it
19773         to recompute that state when a class is initialized.
19774
19775         * mini.c: Install AOT hooks into the runtime.
19776
19777         * mini.h: Bump AOT file format version.
19778         
19779         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19780         Fixes #72148.
19781
19782         * iltests.il: Add new test.
19783
19784 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19785
19786         * mini.c: fix typo.
19787
19788 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19789
19790         * mini.c: setup the statistical profiler in the thread attach
19791         callback to cope with the new single thread code.
19792
19793 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19794
19795         * mini-ppc.c: ensure we have enough room for the profiler
19796         calls (fixed bug#72084).
19797
19798 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19799
19800         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19801         it.
19802
19803 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19804
19805         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19806
19807 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19808
19809         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19810         to succesfully execute parrotbench).
19811         * ssapre.h: Likewise.
19812
19813 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19814
19815         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19816         variable for stores to method arguments (fixes a SSAPRE issue).
19817
19818 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19819
19820         * mini.c: handle value types in dup, fixes gen-112.cs.
19821
19822 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19823
19824         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19825         sequence for calls in dynamic methods to avoid thunks.
19826
19827 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19828
19829         * mini.c: correctly remove dynamic methods from the hashtable.
19830
19831 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19832
19833         * driver.c: Disabled SSAPRE until fix the bug that appears
19834         in IronPython's parrotbench.
19835
19836 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19837
19838         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19839
19840         * mini.c (mono_method_to_ir): Revert the previous change.
19841         
19842         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19843         when AOT compiling.
19844
19845         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19846         mono_jit_info_table_find () etc. when running under valgrind.
19847
19848         * inssel.brg: Fix warnings.
19849
19850         * mini-exceptions.c: Fix warnings.
19851
19852 2005-01-31  Martin Baulig  <martin@ximian.com>
19853
19854         * driver.c (compile_all_methods_thread_main): Don't try to compile
19855         generic methods or anything which has type parameters.
19856
19857 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19858
19859         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19860
19861         * TestDriver.cs: Add --verbose flags.
19862
19863         * graph.c ssa.c: Fix 64 bit warnings.
19864         
19865         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19866         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19867         Fix 64 bit warnings.
19868
19869         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19870         variable not spotted by gcc.
19871         
19872         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19873         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19874         X86_COMPARE_MEMBASE opcodes.
19875
19876         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19877
19878 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19879
19880         * *: MonoMethod->signature might be NULL now. You *MUST* use
19881         mono_method_signature.
19882
19883 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19884
19885         * driver.c (compile_all_methods_thread_main): Compile the methods
19886         without invoking cctors.
19887
19888 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19889
19890         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19891         * basic-calls.cs: test for the above.
19892
19893 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19894
19895         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19896         MonoJitInfo changes.
19897
19898 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19899
19900         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19901         eagerly if it contains dynamic methods.
19902         
19903         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19904
19905         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19906         trace, it is now computed by an icall from trace_ips.
19907         
19908         * mini-exceptions.c: Fix a warning.
19909
19910 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19911
19912         * mini-exceptions.c: don't bother getting stack trace info if
19913         it's not going to be used.
19914
19915 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19916
19917         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19918         ssapre-mini-ops.h.
19919
19920 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19921
19922         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19923
19924         * aot.c: Avoid calling mono_method_get_header () if not needed.
19925
19926         * mini.h: Bump AOT file format version.
19927         
19928         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19929
19930         * mini.c (mono_print_tree): Print more info for calls.
19931
19932 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19933
19934         * declsec.h: Remove warning by adding missing include for marshal.h
19935
19936 2005-01-26  Martin Baulig  <martin@ximian.com>
19937
19938         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19939         `ip' twice.
19940
19941 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19942
19943         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19944         flags.
19945
19946         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19947
19948         * aot.c (mono_compile_assembly): Fix a warning.
19949
19950 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19951
19952         * declsec.c: Look for security attributes on the original MonoMethod 
19953         (and not the wrapped one). This fix permissions on icalls.
19954
19955 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19958
19959         * mini.c (mono_allocate_stack_slots): Add a fixme.
19960
19961         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19962
19963 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19964
19965         * inssel.brg: optimize casts of sealed types (more
19966         optimizations waiting for fixes in remoting).
19967
19968 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19969
19970         * inssel.brg (stmt): Add another dummy rule.
19971
19972         * driver.c: Fix warnings.
19973
19974         * driver.c (mono_main): If running under valgrind, instruct glib to use
19975         the system allocation functions so valgrind can track the memory
19976         allocated by the g_... functions.
19977
19978         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19979
19980         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19981
19982         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19983
19984         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19985         variables in try regions.
19986
19987         * mini.c (mini_method_compile): Don't disable optimizations on large
19988         methods when AOT compiling.
19989
19990         * mini.c (mono_allocate_stack_slots): New arch independent method to 
19991         allocate stack slots. Not yet used.
19992
19993 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
19994
19995         * debug-mini.c (mono_debug_close_method): Plug some leaks.
19996
19997 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
19998
19999         * mini-ppc.c: make the branch info relative as the code
20000         buffer can be reallocated.
20001
20002 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20003
20004         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20005         * driver.c: Removed the AOT/security restriction. Now initialize the
20006         security manager (in metadata) if --security is used.
20007         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20008         rather than the pointer to declarative security, when AOT is used.
20009
20010 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20011
20012         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20013         basic blocks, reduced intrinsic exception throwing code size.
20014
20015 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20016
20017         * driver.c (mini_usage): Reorder the usage screen.
20018
20019 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20020
20021         * mini.c (mono_resolve_patch_target): Fix warning.
20022
20023 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20024
20025         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20026         previous patch.
20027
20028         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20029
20030         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20031         breaks the amd64 build.
20032
20033         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20034         register allocation. Fixes #71454.
20035
20036         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20037
20038         * arrays.cs: Add new regression test.   
20039
20040 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20041
20042         * ssapre.c: Turned usage of snprintf to GString.
20043         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20044         (I left it on by mistake in my previous commit).
20045
20046 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20047
20048         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20049         on cond branch optimization (fixes bug# 71515).
20050
20051 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20052
20053         * abcremoval.c: Fixed bug 71062.
20054         * abcremoval.h: Likewise.
20055
20056 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20057
20058         * mini.c: Added a new functionality to optimize_branches, the removal
20059         of useless basic blocks, and fixed some problem in the removal of
20060         critical edges; some utility functions added for both purposes.
20061         * ssapre.c: Added complex expression support, and fixed bug 70637.
20062         * ssapre.h: Likewise.
20063         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20064         enabled in SSAPRE.
20065         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20066         * driver.c: Re-enabled SSAPRE.
20067
20068 2005-01-19  Martin Baulig  <martin@ximian.com>
20069
20070         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20071         the result of mono_get_method_constrained().
20072
20073 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20074
20075         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20076         manager.
20077
20078 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20079
20080         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20081         be detected.  Fixes #59296.
20082
20083 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20084
20085         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20086         which can happen. Fixes #71361.
20087
20088 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20089
20090         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20091         manager.
20092
20093 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20094
20095         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20096         appdomain-unload.exe to fail.
20097         
20098         * mini.c: Fix some memory leaks.
20099
20100 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20101
20102         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20103         Fixed bug and sped up some codepaths.
20104
20105 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20106
20107         * mini.c: Fix some memory leaks.
20108
20109         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20110         conversion.
20111
20112         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20113
20114         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20115         #71320.
20116
20117         * iltests.il: Add regression test for #71320.
20118
20119 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20120
20121         * mini.c (mono_codegen): Fix installation of profiler hooks.
20122
20123         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20124
20125 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20126
20127         * mini.h, mini.c, cfold.c: optimize access to enum
20128         readonly fields, too. Eval conditional branches if possible
20129         to perform unreachable code removal in more cases.
20130
20131 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20132
20133         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20134
20135         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20136         code manager.
20137
20138         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20139         WinXP DEP. Fixes #71244.
20140
20141 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20142
20143         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20144
20145 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20148
20149 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20150
20151         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20152         changes.
20153
20154         * mini.h: Bump AOT version.
20155
20156         * mini.h (MonoCompile): Change exvar to a hash table.
20157
20158         * mini.c: Allocate a separate exvar for each handler block.
20159
20160         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20161
20162         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20163         ex var with the pending exception and only throw if the two are equal.
20164         Fixes #68552.
20165         
20166         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20167
20168         * mini-x86.c: Fix warnings.
20169
20170         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20171         used by all the ports now.
20172
20173         * aot.c: Add write-symbols and save-temps options.
20174
20175 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20176
20177         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20178
20179 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20180
20181         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20182         operations.
20183
20184         * tramp-s390.c: Check vtable slot belongs to the domain.
20185
20186         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20187         as per other platforms.
20188
20189         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20190
20191 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20192
20193         * driver.c: we don't run the Main() code in a subthread anymore.
20194
20195 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20196
20197         * mini.c: added experimental rtc support in the statistical
20198         profiler: if the user has the permission, more accurate statistics
20199         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20200         The MONO_RTC value must be restricted to what the linux rtc allows:
20201         power of two from 64 to 8192 Hz.
20202
20203 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20204
20205         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20206
20207 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20208
20209         * mini-ppc.c: better icache flush for smp.
20210
20211 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20212
20213         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20214
20215         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20216         amd64 port, not yet used.
20217
20218 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20219
20220         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20221         a struct type.
20222
20223 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20224
20225         * driver.c: Added --security option to activate the security manager.
20226         Right now this will allow code generation for declarative demands and
20227         is disabled when AOT is specified.
20228         * mini.c: Add code generation for declarative security demands.
20229         * mini.h: Add mono_use_security_manager as an extern gboolean.
20230
20231 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20232
20233         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20234         emitting more dense assembly code.
20235
20236         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20237         exception throwing stuff.
20238
20239 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20240
20241         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20242         dead code.
20243
20244         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20245         left in by mistake.
20246
20247         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20248         fixed.
20249
20250         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20251
20252         * tramp-*.c: Only patch vtable slots if the object is in the current
20253         domain. Fixes appdomain-unload.exe.
20254
20255         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20256         
20257         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20258         x86 branch.
20259
20260 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20261
20262         * mini.c (reverse_branch_op): New helper function.
20263
20264         * mini.c (optimize_branches): Run the new optimization only on 
20265         platforms which support it. Also reverse all kinds of branches.
20266
20267         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20268
20269         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20270         a throw statement.
20271
20272         * mini.c (optimize_branches): Reverse not-equals branches if the false
20273         bblock is a throw. This happens a lot of time with argument checking in
20274         corlib.
20275
20276         * mini.c (mono_codegen): Add support for placing basic blocks after
20277         the function epilogue.
20278
20279         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20280         function epilogue.
20281         
20282 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20283
20284         * mini.c (setup_stat_profiler): Only set this up if the platform
20285         supports ITIMER_PROF.
20286
20287 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20288
20289         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20290         previous patch.
20291
20292         * inssel.brg: Fix a warning.
20293
20294 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20295
20296         * mini.c: added support for statistical profiler 
20297         (run with: --profile=default:stat).
20298
20299 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20300
20301         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20302
20303         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20304
20305         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20306         related to global registers from the amd64 port.
20307
20308 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20309
20310         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20311
20312         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20313         with global registers.
20314         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20315
20316         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20317
20318 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20319
20320         * debug-mini.c (encode_value): Fix off-by-one.
20321
20322         * aot.c (encode_value): Likewise.
20323
20324         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20325
20326 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20327
20328         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20329         AOT.
20330
20331         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20332         
20333         * aot.c (emit_method_info): Increase size of temp buffer.
20334
20335         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20336         the AOT case.
20337
20338 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20339
20340         * aot.c (emit_method_info): Fix build.
20341         
20342         * aot.c: Further rework of the AOT file format to reduce the size of
20343         the method info data.
20344
20345         * mini.h: Bump AOT file format version.
20346
20347 2004-12-27  Martin Baulig  <martin@ximian.com>
20348
20349         * mini.c (mini_get_method): New static method; call
20350         mono_get_method_full() and mono_get_inflated_method().
20351         (mono_method_to_ir): Use mini_get_method() instead of
20352         mono_get_method_full(). 
20353
20354 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20355
20356         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20357
20358 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20359
20360         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20361
20362         * inssel-amd64.brg: Add some optimization rules.
20363
20364 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20365
20366         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20367         standard not GC'd stuff is fine.
20368
20369 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20370
20371         * aot.c: Rework the AOT file format to get rid of most of the global
20372         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20373
20374         * mini.h: Bump AOT file format version.
20375         
20376 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20377
20378         * mini.h: Bump AOT file format version.
20379
20380         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20381         address is inside a GOT.
20382
20383         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20384
20385         * cpu-pentium.md: Increase the maximum size of some instructions which
20386         might involve a got access.
20387         
20388         * mini.c (get_method_from_ip): Another debug helper function.
20389
20390         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20391         when got var accesses are created during the decompose phase.
20392
20393         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20394
20395         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20396         argument mini_compile_method and to MonoCompile, and use this to
20397         determine whenever a given method is compiled for AOT. This allows the
20398         other methods compiled during AOT compilation to be free of AOT stuff,
20399         so the backends does not need to add special support for them by
20400         creating a fake GOT etc.
20401
20402         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20403         longer needed.
20404
20405 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20406
20407         * mini.c (mono_method_to_ir): It turns out that some of the
20408         x-appdomain wrappers are lax with types, so just ignore this for
20409         all wrappers.
20410
20411         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20412         at the vtable->klass. If it is non-shared code we can just use the
20413         vtable.
20414
20415 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20416
20417         * mini-ppc.c: access MonoDomain from tls, too.
20418
20419 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20420
20421         * declsec.c: Removed unused variable (and related warning ;-)
20422
20423 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20424
20425         * iltests.il: New test for LDELEMA on an array of ref types.
20426
20427         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20428         all ldelema's on reftypes.
20429         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20430         it was the wrong place to put it.
20431
20432         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20433         register to pop to make this cleaner, at the request of Paolo.
20434
20435 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20436
20437         * mini-ops.h (OP_GETHASHCODE): New op.
20438
20439         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20440
20441         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20442         operation.
20443
20444         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20445         by 25%.
20446         
20447         * mini-x86.c (mono_arch_output_basic_block): Rather than
20448
20449         add ebp, 4
20450
20451         Emit
20452
20453         pop edx
20454
20455         The first is 3 bytes while the second is 1. This saves 36 kb on
20456         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20457         see a small boost because of icache locality.
20458
20459         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20460
20461 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20462
20463         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20464         started code sharing with the generic code.
20465
20466 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20467
20468         * mini-ppc.c, cpu-g4.md: added code for direct access to
20469         tls data slots.
20470
20471 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20472
20473         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20474          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20475         to OP_TLS_GET.
20476
20477 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20478
20479         * declsec.c|h: Added functions to cache the declarative stack modifiers
20480         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20481         structure.
20482         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20483         created. Register internal calls for System.Security.SecurityFrame::
20484         _GetSecurityFrame and _GetSecurityStack.
20485         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20486         the definitions for the new stack walk/callback mechanism.
20487         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20488         first security frame for LinkDemands and InheritanceDemands) and
20489         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20490         from lupus.
20491         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20492         walk initialization (lupus).
20493
20494 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20495
20496         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20497         idiom.
20498         (handle_loaded_temps): Do not create a temporary variable for
20499         things that we know are temps. They will never be modified.
20500         (mono_spill_call): Set MONO_INST_IS_TEMP
20501         (mono_emulate_opcode): ditto
20502         (emit_tree): ditto
20503         (mono_method_to_ir.CEE_DUP): ditto
20504
20505 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20506
20507         * mini.c (type_to_eval_stack_type): Make this handle the void type
20508         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20509         (emit_tree): use ip_in_bb to special case some common idioms
20510         Update all callers to pass in the IP.
20511         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20512
20513         This gives us a nice 2% speedup in mcs bootstrap.
20514
20515         * mini-x86.c (peephole_pass): Peephole pass to make
20516         mov  [foo], eax
20517         push [foo]
20518
20519         into
20520
20521         mov [foo], eax
20522         push eax
20523
20524         * mini.c (ip_in_bb): new method.
20525         (mono_method_to_ir): use this method rather than doing the hash
20526         lookup ourselves.
20527
20528         * linear-scan.c (mono_linear_scan): When expiring actives, you
20529         don't need to keep around variables that expire on this
20530         instruction. This makes it so that:
20531              a = b + 1
20532         will turn into:
20533              store (ebx add (ebx, 1))
20534         which will become
20535              add ebx, 1
20536
20537 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20538
20539         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20540         combination to avoid doing two copies. Fix up problems with previous
20541         patch.
20542
20543         * mini.c: Fix 64 bit warnings.
20544
20545         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20546
20547 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20548
20549         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20550         changes from the x86 code.
20551
20552         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20553
20554 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20555
20556         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20557         throwing code to reduce its size, unify the AOT and non-aot code and 
20558         get rid of relocations in the AOT case.
20559
20560         * mini-x86.h mini.c exceptions-x86.c 
20561         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20562         raise corlib exceptions which doesn't require relocations in the 
20563         caller.
20564
20565         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20566
20567 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20568
20569         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20570         needed.
20571
20572         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20573         in the AOT case.
20574
20575 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20576
20577         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20578         with add function when used from Inc/dec atomic 
20579         functions. Re-enabled optimization on x86.
20580         * mini-ops.h: renamed atomic_add functions to
20581         allow _add to match the Interlocked::Add and
20582         _add_next to match Interlocked::Inc/Dec.
20583
20584 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20585
20586         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20587         linking of BBs to the end BB, and enabled SSAPRE also with
20588         consprop and copyprop (which was prevented by that bug).
20589
20590 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20591
20592         * mini-x86.c: disabling the Interlocked optimizing code. 
20593
20594 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20595
20596         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20597         file version check.
20598         
20599 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20600
20601         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20602         interlocked optimization due lack of support on x86, rewrote 
20603         exchange to take into account that base may be in eax.
20604         
20605         xsp works again; activated Interlocked optimizing code.
20606         
20607 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20608
20609         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20610
20611 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20612
20613         * mini-ops.h: Add new opcodes.
20614
20615         * mini.h: Add new patch types. Add got_var to MonoCompile.
20616
20617         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20618         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20619         make it work with all kinds of patchable code.
20620
20621         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20622         address of the GOT, and referencing entries in the GOT.
20623
20624         * mini.c: Add code to load the GOT address if needed by an opcode.
20625
20626         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20627         independent AOT code on the x86 using an elf-style Global Offset Table.
20628
20629 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20630
20631         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20632
20633 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20634
20635         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20636         when running xsp.
20637
20638 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20639
20640         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20641         of Interlocked:Increment/Decrement/Add as inline ops.
20642         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20643
20644 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20645
20646         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20647         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20648
20649 2004-12-12  Duncan Mak  <duncan@ximian.com>
20650
20651         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20652         again. `patch_info->table_size' is no longer valid after Zoltan's
20653         commit #37636.
20654
20655 2004-12-12  Martin Baulig  <martin@ximian.com>
20656
20657         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20658         if we are the "real" method, ie. not an inlined method inside it.
20659
20660 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20661
20662         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20663         before we look in the special fields table. This fixes
20664         ../tests/thread-static-init.cs.
20665
20666 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20667
20668         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20669         for Array get_Rank and get_Length. Fixes bug #70465.
20670
20671 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20672
20673         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20674         separate structure to reduce the size of MonoJumpInfo.
20675
20676 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20677
20678         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20679
20680 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20681
20682         * mini.c (mini_get_inst_for_method): Changed to allow ports
20683         to return a MonoInst instead of opcode 
20684         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20685         
20686         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20687         Allow ports to return a created MonoInst instead of op-code, will enable
20688         new optimizations.
20689         (renamed mini_get_opcode_for_method to better reflected the functionality)
20690
20691 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20692
20693         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20694
20695 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20696
20697         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20698         Fixes #69985.
20699
20700 2004-12-08  Martin Baulig  <martin@ximian.com>
20701
20702         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20703         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20704
20705 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20706
20707         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20708         correctly.
20709
20710         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20711         arithmetic.
20712
20713 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20714
20715         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20716
20717 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20718
20719         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20720         bug introduced by the previous patch.
20721
20722 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20723
20724         * mini-ppc.c, objectc.cs: handle large structs passed by value
20725         (fixes bug #69972).
20726
20727 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20728
20729         * mini-ppc.c: OP_ARGLIST implementation from
20730         Geoff Norton  <gnorton@customerdna.com>.
20731
20732 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20733
20734         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20735         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20736
20737 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20738
20739         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20740
20741 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20742
20743         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20744         support.
20745
20746 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20747
20748         * mini-sparc.c: Zero out localled-ed memory.
20749
20750         * iltests.il: Add tests for zeroing out localloc-ed memory.
20751
20752 2004-12-04  Martin Baulig  <martin@ximian.com>
20753
20754         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20755         mono_method_get_signature_full().       
20756
20757 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20758
20759         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20760         and some utility functions (always for SSAPRE), integrated SSAPRE.
20761         * mini.h: Likewise.
20762         * driver.c: Added ssapre option.
20763         * ssa.c: Small fix on OP_ARG handling.
20764         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20765         * Makefile.am: Likewise.
20766
20767 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20768
20769         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20770         now in the xp code.
20771
20772         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20773         icall.
20774
20775 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20776
20777         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20778         
20779         * cpu-s390.md : Increase instruction length of oparglist.
20780
20781         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20782
20783 2004-11-30  Martin Baulig  <martin@ximian.com>
20784
20785         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20786         virtual generic methods.  We call a special helper_compile_generic_method()
20787         icall to retrieve the method from the vtable, inflate and compile
20788         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20789
20790         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20791
20792 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20793
20794         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20795
20796 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20797
20798         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20799         Fixes #69929.
20800
20801 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20802
20803         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20804         platforms with PIC aot.
20805
20806 2004-11-28  Martin Baulig  <martin@ximian.com>
20807
20808         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20809         Fixes gen-112.cs.
20810
20811 2004-11-28  Martin Baulig  <martin@ximian.com>
20812
20813         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20814         the result of mono_type_get_underlying_type() to check whether
20815         we're byref.
20816
20817 2004-11-26  Martin Baulig  <martin@ximian.com>
20818
20819         * mini.c
20820         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20821         in the g_assert().
20822
20823 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20824
20825         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20826         the same way as the other arguments so they won't get clobbered.
20827
20828         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20829         calls through R11 since it is clobbered by the trampoline code.
20830
20831 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20832
20833         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20834         pick up in-tree mscorlib.dll.
20835
20836 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20837
20838         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20839
20840         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20841         runtime data/code are now stored in a table similar to the GOT in ELF. 
20842         This allows the code itself to be position independent.
20843
20844         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20845         loading changes.
20846
20847         * aot.c: Attach ELF type (object/function) directives to all global
20848         symbols.
20849
20850         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20851
20852         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20853
20854         * mini-amd64.h: Turn on PIC AOT code.
20855
20856         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20857         returning the offset within an OP_AOTCONST instruction where the GOT
20858         offset needs to be added.
20859
20860         * mini.h: Bump AOT file format version.
20861
20862 2004-11-25  Martin Baulig  <martin@ximian.com>
20863
20864         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20865         uninflated generic methods.
20866
20867 2004-11-25  Martin Baulig  <martin@ximian.com>
20868
20869         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20870
20871 2004-11-24  Martin Baulig  <martin@ximian.com>
20872
20873         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20874         original klass (this only applies for generic instances).
20875
20876 2004-11-24  Martin Baulig  <martin@ximian.com>
20877
20878         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20879         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20880         that array).
20881
20882 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20883
20884         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20885         localloc. Fixes #69678.
20886
20887         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20888         
20889 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20890
20891         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20892         used SSE registers on pinvoke calls. Fixes #69774.
20893
20894 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20895
20896         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20897         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20898
20899 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20900
20901         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20902         Refer directly to the mcs/ tree.
20903
20904 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20905
20906         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20907         Check if a trampoline for a synchronized method is required. 
20908
20909 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20910
20911         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20912         with localloc if needed. Throe arithmetric exception in
20913         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20914         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20915
20916 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20917
20918         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20919         types before switching on type.  Fixes #69622.
20920
20921 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20922
20923         * Makefile.am (check-local): New.  Integrate into 'make check'.
20924         (MCS,RUNTIME): Define using in-tree mono and mcs.
20925         (ILASM): New.
20926         (%.exe): Use $(ILASM).
20927
20928 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20929
20930         * mini-ppc.c: adjust initial prolog size (bug #69691).
20931
20932 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20933
20934         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20935         #69664.
20936
20937 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20938
20939         * Makefile.am (clean-local): Rename from 'clean'.
20940
20941 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20942
20943         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20944         to mono_arch_is_int_overflow. 
20945         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20946         SIGFPE events.
20947
20948 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20949
20950         * declsec.c|h: New files to support declarative security attributes.
20951         Added function to check if a method has (applicable) security.
20952         * mini.c|h: Add check for declarative security attributes in
20953         mono_method_check_inlining.
20954         * Makefile.am: Added declsec.c and declsec.h to the build.
20955
20956 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20957
20958         * mini.c, mini.h: update to keep dynamic code info per-domain.
20959
20960 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20961
20962         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20963         (mini_init): Get rid of it from here too.
20964
20965 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20966
20967         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20968         implemented OP_RETHROW (patch by Geoff Norton
20969         <gnorton@customerdna.com>).
20970
20971 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20972
20973         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20974         between appdomains.  Fixes appdomain-unload on PPC.
20975
20976 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20977
20978         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20979         mini-exceptions.c: handle the new wrapper types.
20980         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20981         token value as a MonoClass* when compiling a wrapper.
20982         mono_jit_create_remoting_trampoline now takes an additional
20983         MonoRemotingTarget parameter.
20984         
20985 2004-11-10  Martin Baulig  <martin@localhost>
20986
20987         * mini.c (mono_method_to_ir): Use `generic_container->context'
20988         rather than creating a new one.
20989
20990 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20991
20992         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
20993
20994         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
20995
20996 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
20997
20998         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
20999         the experimental aot cache stuff.
21000
21001 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21002
21003         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21004         mini-exceptions.c: update to exception clause structure changes.
21005
21006 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21007
21008         * exceptions-x86.c (throw_exception): Fix warnings.
21009
21010         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21011         for OP_RETHROW.
21012
21013 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21014
21015         * exceptions-sparc.c (get_throw_exception): Really fix this.
21016
21017 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21018
21019         * tramp-*.c: we no longer support icalls without wrappers, so
21020         a bit of code can be removed here
21021
21022 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21023
21024         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21025         patch.
21026
21027         * cpu-sparc.md: Add op_rethrow.
21028
21029         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21030
21031         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21032
21033         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21034         * mini-ops.h: Add OP_RETHROW.
21035
21036         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21037
21038         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21039
21040 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21041         
21042         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21043         Makes the output much easier to read
21044
21045 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21046
21047         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21048         prevents another huge leak when compiling with ssa. Secondly, the
21049         performance of doing this rather than freeing the lists is much
21050         better. GList does a lock every time you allocate a list link,
21051         so that it can use a memory pool. So, it is better to just use
21052         a memory pool of our own.
21053         
21054         * ssa.c, linear-scan.c: replace g_list_remove_link with
21055         g_list_delete.  The remove one does not free the GList, so we were
21056         leaking memory. On -O=all --compile-all with corlib, this cut down
21057         3 MB of allocations.
21058
21059 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21060
21061         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21062
21063         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21064
21065         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21066         into a new function mono_create_jit_trampoline ().
21067
21068 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21069
21070         * trace.c (get_spec): Allow tracing of classes without a namespace.
21071
21072 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21073
21074         * mini.c: Fix pointer overwrite in mini_method_compile.
21075
21076 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21077
21078         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21079         The darwin ABI needs some special handling for 1 and 2 byte structs
21080         Lets use lbz/lhz instead of lwz everywhere.
21081         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21082         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21083         Use stb/sth for the former, and put the latter always on stack instead of in
21084         argument registers.
21085
21086 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21087
21088         * trace.c (is_filenamechar): Add '_'.
21089
21090 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21091
21092         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21093
21094         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21095
21096 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21097
21098         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21099         depends on libmonogc. Fixes #68805.
21100
21101 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21102
21103         * mini.c (mono_jit_free_method): Provide extra information for
21104         this error.  Currently this leaks, but will be turned into a
21105         developer option in the future.
21106
21107 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21108
21109         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21110
21111 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21112
21113         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21114         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21115         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21116
21117 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21118
21119         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21120         trampolines for AOT code.
21121
21122 2004-10-22    <vargaz@freemail.hu>
21123
21124         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21125         constructed types. Fixes #68136.
21126
21127 2004-10-21  Martin Baulig  <martin@ximian.com>
21128
21129         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21130         if it returns true, unwind the stack to the call instruction.
21131
21132 2004-10-21    <vargaz@freemail.hu>
21133
21134         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21135
21136         * mini.h: Bump AOT version number.
21137
21138         * objects.cs: Add another test for unbox trampolines.
21139
21140         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21141         valuetype methods.
21142
21143 2004-10-20    <vargaz@freemail.hu>
21144
21145         * driver.c: Add SHARED to the set of optimizations tested.
21146
21147         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21148
21149         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21150         used by CEE_NEWARR.
21151
21152         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21153
21154 2004-10-20  Martin Baulig  <martin@ximian.com>
21155
21156         * mini-exceptions.c (mono_handle_exception): Call
21157         mono_debugger_handle_exception() to tell the debugger about
21158         catch/finally clauses.
21159
21160 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21161
21162         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21163
21164         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21165         #68447.
21166
21167 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21168
21169         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21170         methods as their native size, fixed bug #57543, #57545.
21171         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21172         This saves a temporary register and mullw call down into 1 (minor perf
21173         increase for cases like sum = sum * 5;  This use to translate into:
21174             li r11,5
21175             mullw r28,r28,r11
21176         It now translates to
21177             mulli r28,r28,5
21178
21179 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21180
21181         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21182         #68388.
21183
21184 2004-10-11  Martin Baulig  <martin@ximian.com>
21185
21186         * mini.c (mono_method_to_ir): If we're a generic method, get the
21187         MonoGenericContainer from our MonoMethodNormal and create a
21188         MonoGenericContext from it.
21189
21190 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21191
21192         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21193
21194         * basic-long.cs: Add test for checked i8->i2 cast.
21195
21196 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21197
21198         * inssel-ppc.brg: added a couple of speedup rules.
21199
21200 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21201
21202         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21203         to speed up rebuilds.
21204
21205 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21206
21207         * mini-s390.c: Minor fix to OP_OR_IMM.
21208
21209 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21210
21211         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21212         better. Fixes appdomain-unload.exe on sparc.
21213
21214 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21215
21216         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21217         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21218         see bug 67324.
21219
21220 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21221
21222         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21223
21224 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21225
21226         * mini.c: Always generate a field read/write wrapper for members
21227         of the class MarshalByRefObject since the actual instance could
21228         be a CBO.
21229
21230 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21231
21232         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21233
21234 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21235
21236         * driver.c mini.h trace.c: Move the setting of the main assembly into
21237         a separate function called mono_trace_set_assembly () and call it after
21238         actually loading the main assembly. Fixes #66872.
21239
21240 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21241
21242         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21243         using the code manager.
21244
21245 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21246
21247         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21248
21249 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21250
21251         * cpu-amd64.md: Fix bug in previous patch.
21252         
21253         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21254         #66650.
21255
21256 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21257
21258         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21259         mini-exceptions.c: updates for changed stack walk interface.
21260
21261 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21262
21263         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21264
21265 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21266
21267         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21268
21269 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21270
21271         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21272         since assemblies can't be unloaded.
21273         
21274 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21275
21276         * cpu-amd64.md: Fix more instruction lengths.
21277
21278         * cpu-amd64.md: Fix lengths of some instructions.
21279
21280 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21281
21282         * inssel.brg: Make the array ldelema check aot friendly.
21283
21284 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21285
21286         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21287
21288         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21289
21290 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21291
21292         * mini-x86.c: Fix build.
21293
21294         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21295         mono_type_get_underlying_type () helper function to simplify code.
21296         
21297 2004-09-09  Martin Baulig  <martin@ximian.com>
21298
21299         * mini-amd64.c: Don't access `type->data.klass' directly, call
21300         mono_class_from_mono_type() instead since the type may be a
21301         generic instance.
21302
21303 2004-09-09  Martin Baulig  <martin@ximian.com>
21304
21305         * mini-amd64.c (get_call_info): Fix support for generic instances.
21306         (add_valuetype): Use mono_class_from_mono_type() to get the class
21307         since we can be a generic instance.
21308
21309 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21310
21311         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21312
21313 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21314
21315         * liveness.c: reset spill costs on each scan: bug 62107
21316
21317 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21318
21319         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21320         unnecessary line that doesn't compile
21321
21322 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21323
21324         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21325         trampolines, make them call an error function so people can fix their
21326         code.
21327
21328 2004-09-06  Martin Baulig  <martin@ximian.com>
21329
21330         * mini.c (mono_method_to_ir): When initializing locals, handle a
21331         generic instances like a valuetype if it's a valuetype and like a
21332         class if it's a class.
21333
21334 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21335
21336         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21337         stack. Fixes #64674.
21338
21339         * exceptions.cs: Add test for unwinding of call arguments.
21340
21341 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21342
21343         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21344         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21345         set the carry/borrow flag). The sparc and s390 implementations
21346         can now use optimized versions (and simplify the code). ppc bugfixes.
21347
21348 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21349
21350         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21351
21352 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21353
21354         * inssel-amd64.brg: Remove leftover 32 bit rule.
21355
21356         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21357
21358 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21359
21360         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21361         mono_arch_find_jit_info functions into a new function. Fix a memory
21362         leak.
21363
21364         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21365         refactored code.
21366         
21367 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21368
21369         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21370         as well.
21371         
21372         * exceptions.cs: Add array size tests.
21373
21374         * mini.c: Allocate a separate icall wrapper for each arity of 
21375         mono_array_new_va. Fixes #59509.
21376
21377         * exceptions.cs: Add testcase for 64578.
21378
21379         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21380
21381         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21382         
21383 2004-09-02  Martin Baulig  <martin@ximian.com>
21384
21385         * mini.c (mono_method_to_ir): When initializing the locals, call
21386         handle_initobj() on the generic instance itself, not its
21387         underlying type.
21388
21389 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21390
21391         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21392         MonoJitInfo for dynamic methods.
21393
21394         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21395
21396         * mini.c: Add support for freeing JIT data for dynamic methods.
21397         
21398 2004-09-01  Martin Baulig  <martin@ximian.com>
21399
21400         * mini-x86.c (is_regsize_var): Added support for generic
21401         instances.
21402         (mono_arch_emit_prolog): Make this compile again, use
21403         `x86_push_imm_template (code)'.
21404
21405 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21406
21407         * mini-x86.c: make all push_imm instructions that get
21408         patched always emit the long form
21409
21410 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21411
21412         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21413         in a per-domain hash.
21414
21415         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21416         types.
21417
21418 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21419
21420         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21421         work.
21422         
21423         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21424         work.
21425
21426         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21427         Beginnings of SSE2 support.
21428
21429         * exceptions.cs: Add more tests for checked int<->uint casts.
21430
21431 2004-08-28  Martin Baulig  <martin@ximian.com>
21432
21433         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21434         generic instances.
21435
21436         * mini.c
21437         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21438         Handle generic instances recursively.
21439
21440 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21441
21442         * iltests.il: test for conv.u8 on a constant
21443
21444 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21445
21446         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21447         LCONV_x4 (shrun_32 (membase)).
21448
21449 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21450
21451         * inssel-x86.brg: c&p rules for push/setret of long
21452
21453 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21454
21455         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21456         compare (regvar, base)
21457
21458         * inssel-x86.brg: more burg love
21459
21460         * inssel.brg: more cleanup
21461
21462         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21463
21464 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21465
21466         * basic-long.cs, basic-calls.cs: new tests for optimization.
21467
21468 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21469
21470         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21471         patch.
21472
21473 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21474
21475         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21476         
21477 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21478
21479         * inssel.brg (mini_emit_memcpy): use 
21480         NO_UNALIGNED_ACCESS to disable memcpy optimization
21481
21482 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21483
21484         * mini-amd64.c: Handle generic types in various places.
21485
21486         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21487
21488 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21489
21490         * mini.c (handle_box): Fix warning.
21491
21492         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21493
21494         * mini-amd64.h: Enable the emit_state optimization.
21495
21496         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21497
21498         * mini-amd64.c: Add some new 64 bit peephole opts.
21499
21500         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21501
21502         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21503
21504         * mini-amd64.c: Register allocator fixes.
21505
21506         * mini.c: Add an optimization to emit_state to avoid allocation of new
21507         registers on some platforms.
21508
21509 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21510
21511         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21512
21513         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21514         allocation. Fixes #63085.
21515
21516         * basic-long.cs: Add new regression test.
21517
21518         * mini-amd64.c: Register allocator improvements.
21519
21520 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21521
21522         * mini-amd64.c (read_tls_offset_from_method): Add another code
21523         sequence.
21524
21525         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21526         instruction sequence for nullifying class init trampolines.
21527
21528         * objects.cs: Add new regalloc test.
21529
21530         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21531
21532 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21533
21534         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21535         
21536         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21537         arguments.
21538
21539         * driver.c: Fix profiling after TLS changes.
21540         
21541         * driver.c (mono_main): Set mono_stats.enabled if needed.
21542
21543         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21544         CEE_BOX.
21545
21546 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21547
21548         * mini-x86.c: use a 1 op rather than a 2 op tls access
21549         instruction -> faster.
21550
21551 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21552
21553         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21554         x86 backend.
21555
21556 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21557
21558         * exceptions-sparc.c (throw_exception): fix typo
21559
21560 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21561
21562         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21563         set tree->dreg correctly with tls. Allow any
21564         register to be used.
21565
21566         * mini-x86.c (read_tls_offset_from_method): add new code
21567         generation pattern seen with GCC.
21568
21569
21570 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21571
21572         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21573         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21574         exceptions-sparc.c: fix some performance issues in exception
21575         handling and setting of the stack trace for exceptions that were
21576         already thrown.
21577
21578 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21579
21580         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21581         x86 backend.
21582         
21583         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21584         registers.
21585
21586 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21587
21588         This patch inlines tls access, when possible.
21589         
21590         * mini.h: new arch functions for TLS intrinsics.
21591         All platforms updated with a stub.
21592
21593         * mini.c: use the new intrinsics
21594
21595         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21596         arch specific intrinsic for tls variables
21597
21598 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21599
21600         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21601         under windows.
21602
21603 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21604
21605         * mini.c: thread local allocation
21606
21607 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21608
21609         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21610
21611         * Makefile.am: Link against the static version of libmonogc.
21612         
21613         * Makefile.am: Link the static versions of the convenience libraries
21614         into the mono executable.
21615
21616         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21617
21618 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21619
21620         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21621         on integer overflow.
21622
21623         * mini-amd64.c: Reorganize function call code.
21624
21625         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21626
21627 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21628
21629         * inssel-x86.brg: use xor eax,eax.
21630         
21631         * basic.cs: new tests
21632
21633 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21634
21635         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21636         in exception throwing code.
21637         
21638 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21639
21640         * inssel-x86.brg: use xor esi,esi.
21641
21642 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21643
21644         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21645         can trace methods compiled during mini_init () too.
21646
21647         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21648         CEE_CONV_U4.
21649
21650 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21651
21652         * Makefile.am: static link on x86 (r=zoltan)
21653
21654 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21655
21656         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21657         code since it causes some programs to fail.
21658
21659 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21660
21661         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21662
21663 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21664
21665         * mini.c: ovfops_op_map - add STACK_OBJ case for
21666         CONV_I 
21667         * basic.cs: add test_0_pin_string as test
21668         case for above.
21669
21670 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21671
21672         * Makefile.am: build C# if srcdir != builddir
21673
21674 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21675
21676         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21677         fall-through blocks.
21678
21679 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21680
21681         * driver.c: enable loop by default again and include abcrem in -O=all.
21682
21683 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21684
21685         * iltests.il: Add some localloc tests.
21686
21687         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21688
21689         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21690         Fixes #62574.
21691
21692         * inssel-amd64.brg: Add some optimizations.
21693
21694         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21695         for gcc-3.4.
21696
21697         * Makefile.am: Statically link mono against libmono on AMD64.
21698         
21699         * mini-amd64.c inssel-amd64.brg: Optimizations.
21700
21701 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21702
21703         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21704
21705         * tramp-amd64.c: Patch calling code in trampolines.
21706
21707 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21708
21709         * mini-amd64.c: pinvoke struct passing fixes.
21710
21711 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21712
21713         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21714         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21715
21716 2004-08-05  Duncan Mak  <duncan@ximian.com>
21717
21718         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21719         CEE_LDELEM_ANY.
21720
21721 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * mini-amd64.c (emit_move_return_value): Move return value for normal
21724         calls too.
21725
21726 2004-08-05  Martin Baulig  <martin@ximian.com>
21727
21728         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21729         `type->type'; just modify `type' itself when dealing with enums
21730         and generic instances.
21731         (check_call_signature): Make `simple_type' a `MonoType *'.
21732
21733 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21734
21735         * mini.c: Use OP_PADD to add offsets to addresses.
21736
21737         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21738
21739 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21740
21741         * mini-sparc.c (mono_arch_emit_epilog): fix check
21742         for folding last op into restore instruction
21743
21744 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21745
21746         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21747         helper methods using the code manager.
21748         
21749         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21750
21751         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21752
21753 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21754         
21755         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21756           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21757
21758         * mini-s390.c: fix tail processing
21759
21760 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21761
21762         * mini-ppc.c: mul.ovf.un exception name fix.
21763
21764 2004-08-03  Martin Baulig  <martin@ximian.com>
21765
21766         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21767         instances; before jumping to `handle_enum', also modify `ptype'.
21768
21769 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21770
21771         * cpu-sparc.md: fcall maximal length too small.
21772
21773 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21774
21775         * mini-amd64.c mini.h: Add initial support for passing/returning 
21776         structures to/from pinvoked methods.
21777
21778 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21779
21780         * mini-ppc.c: reg allocator fix.
21781
21782 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21783
21784         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21785
21786         * inssel.brg: Optimize memset on 64 bit machines.
21787
21788         * mini-amd64.c: Fix some vararg cases.
21789
21790 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21791
21792         * mini-s390.c: Corrected macro in emit_float_to_int
21793
21794         * s390-abi.cs: Tests to exercise the s390 ABI
21795
21796 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21799         caller saved regs.
21800
21801         * basic.cs: Add a test for add.ovf.un.
21802
21803 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21804
21805         * mini-sparc.c: add case for OP_IDIV_UN
21806
21807 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21808
21809         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21810         
21811         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21812
21813 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21814
21815         * basic.cs: regression tests.
21816
21817         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21818         regressions.
21819
21820 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21821
21822         * basic.cs: Add a new test.
21823
21824         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21825         and AOT. Various fixes and optimizations.
21826
21827         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21828
21829 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21830
21831         * mini-ppc.c: make sure temp regs are not used for global reg
21832         allocation.
21833
21834 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21835
21836         * cpu-sparc.md: conv_i8 fix for 64bits
21837
21838         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21839
21840 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21841         
21842         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21843         add opcode for cmp BYTE PTR [eax], imm.
21844
21845         * inssel.brg: Make memcpy and memset takes bases.
21846
21847 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21848
21849         * *-amd64.*: More AMD64 work.
21850         
21851 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21852
21853         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21854         add a compare-not-equal opcode.
21855         
21856 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21857
21858         * mini.c: Use mono_init_from_assembly instead of mono_init.
21859         
21860 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21861
21862         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21863
21864         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21865
21866         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21867
21868         * inssel.brg: 64 bit fixes.
21869
21870         * mini.h (MonoCallInst): Add some AMD64 specific data.
21871
21872         * mini.h: Add some OP_P opcodes.
21873
21874 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21875
21876         * basic.cs: tests for 61797 and 61740
21877
21878 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21879
21880         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21881         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21882
21883 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21884
21885         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21886
21887         * *-amd64*.*: Ongoing AMD64 work.
21888
21889 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21890
21891         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21892
21893         * *-amd64*: Ongoing AMD64 work.
21894
21895         * mini-arch.h: Add AMD64 support.
21896
21897         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21898
21899         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21900
21901         * mini-ops.h: Add new opcodes.
21902
21903         * Makefile.am: Add AMD64 support.
21904
21905         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21906         rules into the inssel-long*.brg files.
21907
21908         * *-amd64.*: Add beginnings of AMD64 backend.
21909
21910 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21911
21912         * mini.c (print_dfn): commenting out the code that prints
21913         the cil. With -O=deadce, this makes -v -v crash.
21914         
21915         * cpu-pentium.md: make checkthis have a length of 2
21916
21917 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21918
21919         * mini-sparc.h: fix implementations of __builtin
21920         functions for Sun compiler for V9.
21921
21922 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21923
21924         * mini.c: use the new stelem.ref wrapper
21925         * exceptions.cs, arrays.cs: new stelem.ref tests
21926
21927 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21928
21929         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21930         new XSP should work with these changes).
21931
21932 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21933         
21934         * inssel-{long32,x86,}.brg: trivial optimizations.
21935         
21936 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21937
21938         * mini.c: load value when emitting box operation in
21939         constrained calls.
21940
21941 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21942
21943         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21944         is one byte shorter than cmp DWORD PTR [eax], 0.
21945
21946 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21947
21948         * inssel-ppc.brg: arguments on the stack are always
21949         relative to the stack pointer (spotted by Neale Ferguson).
21950
21951 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21952
21953         * exceptions-x86.c: delay appending the method name to the trace until
21954         after mono_jit_info_table_find is called, as this gets the real
21955         MonoMethod.
21956
21957 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21958
21959         * aot.c: register roots
21960
21961 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21962
21963         * aot.c : I could just use PLATFORM_WIN32 flag.
21964
21965 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21966
21967         * aot.c : Reverting the previous fix. This time it broke linux build.
21968
21969 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21970
21971         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21972
21973 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21974
21975         * mini.c (handle_stack_args): Remove some more debugging code.
21976         
21977         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21978
21979         * driver.c mini.h aot.c: Allow additional options to be specified with
21980         --aot and pass them to mono_compile_assembly.
21981
21982         * aot.c: Add experimental code to AOT compile all loaded assemblies
21983         on demand and save the code into a cache in the filesystem.
21984
21985         * aot.c: Add support for more wrapper methods.
21986         
21987         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
21988         58863.
21989
21990         * cpu-*.md: Remove removed opcodes.
21991
21992         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
21993         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
21994         related icalls to marshal.c.
21995
21996 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
21997
21998         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
21999
22000         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22001
22002         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22003
22004 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22005         * liveness.c: If liveness is recomputated we need to reset the information
22006         for each variable. This way, if the liveness range has been narrowed
22007         by optimizations that happened after the last computation, we can return
22008         a smaller range.
22009         
22010         For example, if you have
22011         
22012         {
22013                 int i = 0;
22014                 
22015                 // Tons of code that does not affect i
22016                 
22017                 i = foo ();
22018                 ...
22019         }
22020         
22021         i = 0 is dead code and will be removed by SSA. However, when
22022         linear scan gets to the code, i will still appear to be live
22023         throughout the entire block. This prevents good register allocation.
22024
22025 2004-07-06  Martin Baulig  <martin@ximian.com>
22026
22027         * debug-mini.c (mono_debug_init_method): Allow
22028         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22029         (mono_debug_add_icall_wrapper): New method.
22030
22031         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22032
22033 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22034
22035         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22036         optimization.
22037
22038 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22039
22040         * aot.c (mono_aot_load_method): Fix loading of debug info.
22041
22042 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22043
22044         * aot.c: Add logging support.
22045
22046 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22047
22048         * mini.h: Add prototype for mono_print_method_from_ip.
22049
22050         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22051
22052         * inssel.brg: 64 bit fixes.
22053
22054         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22055         inssel-long32.brg.
22056
22057         * Makefile.am: Add SPARC64 support.
22058
22059 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22060
22061         * aot.c: Fix alignment problems on 32 bit platforms.
22062
22063 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22064
22065         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22066         SPARC64.
22067
22068         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22069         problems.
22070
22071         * mini.h: Bump AOT file version. Some 64 bit fixes.
22072
22073 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22074
22075         * inssel-sparc.brg: Add new rule to avoid register moves.
22076
22077         * inssel.brg: Add ldind_to_load_membase helper function.
22078
22079 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22080
22081         * mini.c: OffsetToStringData intrinsic.
22082         
22083 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22084
22085         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22086
22087         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22088         regression tests.
22089
22090         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22091 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22092
22093         * mini.c: reinstated mono_compile_get_interface_var()
22094         on x86, too, since the change breaks the Gtk# build there as well.
22095
22096 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22097
22098         * driver.c: remove loop from the default optimizations: it seems to
22099         interact badly with some of the other options (see bug #60613).
22100
22101 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22102
22103         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22104         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22105
22106 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22107
22108         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22109         vararg-using methods.
22110
22111 2004-06-21  Martin Baulig  <martin@ximian.com>
22112
22113         * mini/mini-exceptions.c
22114         (mono_handle_exception): Added `gpointer original_ip' argument.
22115         After calling mono_unhandled_exception(), call
22116         mono_debugger_unhandled_exception() and if that returns true,
22117         restore the context and return.
22118
22119 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22120
22121         * mini-ppc.c: prefer the use of relative branches so
22122         they won't need to be patched in aot code (patch from Patrick Beard).
22123
22124 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22125
22126         * aot.c: patch from Patrick Beard to make the output assembly
22127         more correct for the MacOSX assembler. Small tweak to
22128         generate sane images on Linux/PPC, too.
22129
22130 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22131
22132         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22133         case until bug #59509 is fixed (shows up in #60332).
22134
22135 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22136
22137         * mini.c: make sure the needed wrappers are compiled, too, with
22138         precomp.
22139
22140 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22141
22142         * driver.c: remove NPTL reference in --version output.
22143
22144 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22145
22146         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22147         generate valid assembly for the Mach-O assembler.
22148
22149 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22150
22151         * driver.c: don't include abcrem in the all optimization specifier
22152         since it slows down jit compilation too much for now.
22153
22154 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22155
22156         * mini.c: use BIGMUL only if both operands have the same signage.
22157         * iltests.il: Test for bug 60056. (errors related to signage in
22158         BIGMUL).
22159
22160         r=lupus.
22161
22162 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22163
22164         * mini.c, aot.c: memory leak fixes.
22165
22166 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22167
22168         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22169
22170 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22171
22172         * Makefile.am: remove the -static hack completely, it links in
22173         statically glib as well.
22174
22175 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22176
22177         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22178         * exceptions.cs: make it compile with new mcs/csc.
22179
22180 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22181         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22182         and added relevant test case.
22183
22184 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22185
22186         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22187         regressions in gtk-sharp.
22188
22189 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22190
22191         * exceptions.cs: New regression tests.
22192
22193         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22194
22195 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22196
22197         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22198
22199 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22200
22201         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22202
22203         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22204
22205 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22206
22207         * mini.c (mono_jit_runtime_invoke): Init class in this
22208         method instead of trusting mono_jit_compile_method to
22209         do the work (because wrappers can be in object class)
22210
22211 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22212
22213         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22214
22215         * basic-long.cs: New regression test.
22216
22217 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22218
22219         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22220         and div/rem checks.
22221
22222 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22223
22224         * Makefile.am: fix miguel's change to build mono statically against
22225         libmono (track build dependencies).
22226
22227 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22228
22229         * cfold.c: Some glib versions do not have G_MININT32.
22230
22231 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22232
22233         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22234         with precision of tan, atan, sin and cos, and implemented related
22235         regressions tests (fixes bug 54467, but one new problem appeared and
22236         is not fixed yet).
22237
22238 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22239
22240         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22241
22242         * exceptions.cs: Add test for constant folding && division by zero.
22243
22244         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22245         since driver.c is in libmono too, so the optimization was useless.
22246
22247         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22248         variable to driver.c so the compiler can emit more efficient code to
22249         access them.
22250
22251 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22252
22253         * Makefile.am: don't distribute generated inssel.[ch] files.
22254
22255 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22256
22257         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22258         into the default appdomain. Fixes #58707.
22259
22260         * jit-icalls.c: Remove the broken approximation for truncl, doing
22261         no conversion is better.
22262
22263         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22264         Fixes #58863.
22265
22266 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22267
22268         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22269         of the mcrxr instruction which is not available on some processors
22270         even if it's documented to be. Implement add and sub overflow correctly
22271         (still not complete for long unsigned). Speed up icalls a bit.
22272
22273 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22274
22275         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22276         we run .cctor in the current domain instead of target_domain.
22277         
22278         Fixes bug #58558, .cctor not being called in -O=shared.
22279
22280 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22281
22282         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22283
22284 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22285
22286         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22287         which can be done with an imm8, do it that way.
22288         (mono_arch_output_basic_block): ditto for a jmp
22289         (mono_arch_emit_prolog): Computate maximum offset of a label.
22290
22291 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22292
22293         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22294         now tries to allocate prefered physical reg's for virtual
22295         regs. This reduces the number of emited spills/loads with
22296         20-30% on our core assemblies.
22297
22298 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22299
22300         * jit-icalls.c: truncl() is not needed and trunc() is
22301         the correct thing to do anyway (bug #58287).
22302
22303 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22304
22305         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22306         if available.
22307
22308 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22309
22310         * driver.c: enable loop optimizations by default.
22311
22312 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22313
22314         * mini-x86.c: fix calc of max loop size when aligning loops start.
22315
22316 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22317
22318         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22319         the stack.
22320
22321 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22322
22323         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22324         should set carry.
22325
22326         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22327
22328         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22329         
22330         * mini.c (inline_method): Allways inline some wrappers even if the cost
22331         is too large. Fixes #58785.
22332
22333         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22334         
22335 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22336
22337         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22338         (crichton@gimp.org). Beginning of support for sparc/linux.
22339
22340         * mini-sparc.c: Optimize retrieval of LMF address.
22341
22342 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22343
22344         * exceptions-ppc.c:  handle alloca in methods with clauses.
22345
22346 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22347
22348         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22349
22350 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22351
22352         * mini.c: Delegate most of the abort signal work to 
22353           mono_thread_request_interruption, which also handles Stop and Suspend
22354           states.
22355
22356 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22357
22358         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22359         supports the save/restore lmf opcodes.
22360
22361 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22362
22363         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22364         by gcc-3.4 as well.
22365
22366         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22367
22368 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22369
22370         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22371         methods which contain array accesses.
22372
22373         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22374         boundaries. Fixes #58537.
22375
22376         * iltests.il: Add regression test for #58537.
22377
22378 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22379
22380         * mini-x86.c (mono_arch_local_regalloc): Last part of
22381         fix for bug #58633 (releasing register to early).
22382
22383 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22384
22385         * basic-long.cs: Add new regression test.
22386
22387 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22388
22389         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22390         register too early on the chain.
22391
22392 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22393
22394         * mini.c (create_helper_signature): Use a helper function to reduce
22395         the code which needs to be written. Also set the calling convention of
22396         icalls on windows. Fixes #57840.
22397
22398 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22399
22400         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22401         exceptions-ppc.c: added helper function to get the instruction address
22402         from a signal handler context.
22403
22404 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22405
22406         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22407         from gonzalo.
22408
22409 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22410
22411         * helpers.c: Add new env variable to pass args to objdump.
22412         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22413
22414 2004-05-17  Radek Doulik  <rodo@ximian.com>
22415
22416         * Makefile.am (common_sources): added abcremoval.h so it get
22417         disted and daily mono packages on go-mono.com will build again
22418
22419 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22420
22421         * abcremoval.c: Fixed coding style, added copyright header.
22422
22423         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22424
22425         * mini.h: Added prototype for abc removal main function.
22426
22427         * build_relations_propagation_table.pl: Added copyright header.
22428
22429 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22430
22431         * basic-long.cs: reg test for complex ceq_long bug.
22432
22433 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22434
22435         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22436         reg in long and clob case (bug #58343). Fixed/added comments.
22437
22438 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22439
22440         * mini.c (mono_jit_runtime_invoke): Follow new convention
22441         of calling the invoke method with an function pointer.
22442
22443 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22444
22445         * ChangeLog: Fix author of memory leak patch.
22446
22447 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22448
22449         * Makefile.am: fix make dist as well...
22450
22451
22452 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22453
22454         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22455         on archs where pointers are 4 bytes long.
22456
22457         * Makefile.am: Added abcremoval.c source file.
22458
22459         * abcremoval.c: Added abcremoval.c.
22460
22461         * abcremoval.h: Added abcremoval.h.
22462
22463         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22464
22465         * inssel.brg: Enabled bounds check removal.
22466
22467         * mini.c: Added support for abcrem optimization.
22468
22469         * mini.h: Added abcrem optimization label.
22470
22471         * driver.c: Added support for abcrem optimization.
22472
22473         * propagated_relations_table.def: Added propagated_relations_table.def.
22474
22475 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22476
22477         * mini.c, cfold.c: fix style.
22478
22479 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22480
22481         * mini.c: handle issue with the low-level implementation of
22482         some long opcodes (bug #54209).
22483
22484 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22485
22486         * basic.cs: test for my new cmov stuff.
22487
22488 2004-05-13      Patrik Torstensson
22489
22490         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22491         opt and added peephole documentation.
22492
22493 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22494
22495         * tramp-ppc.c: rewrote the generic trampoline code.
22496
22497 2004-05-11      Patrik Torstensson
22498
22499         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22500
22501 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22502
22503         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22504
22505         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22506         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22507
22508         * mini.c: Add new icalls for AsAny marshalling.
22509
22510 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22511
22512         * tramp-ppc.c, mini-ppc.c: more cleanups.
22513
22514 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22515
22516         * mini.c: no warnings.
22517
22518 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22519
22520         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22521
22522 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22523
22524         * mini.c: In the thread abort signal handler, if the thread is in the
22525         process of being stoped, don't throw the Abort exception, just stop the
22526         thread.
22527
22528 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22529
22530         * tramp-ppc.c: removed old code.
22531
22532 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22533
22534         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22535         do some simple speed optimizations on ppc.
22536
22537 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22538
22539         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22540         and large offsets in load/store.
22541
22542 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22543
22544         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22545         it causes regressions.
22546
22547 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22548
22549         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22550         support.
22551
22552 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22553
22554         * jit-icalls.c: remove warnings.
22555         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22556         speedups for unsafe code.
22557
22558 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22559
22560         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22561
22562 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22563
22564         * basic-calls.cs: Add new regression test.
22565
22566         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22567         more portable.
22568
22569         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22570
22571         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22572         is no longer used.
22573
22574 2004-05-06      Patrik Torstensson
22575
22576         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22577         long reg allocation in any reg (not only eax:edx) and implemented 
22578         long shl/shr ops in asm instead of helpers.
22579
22580 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22581
22582         * mini-sparc.h: Fix warnings.
22583
22584         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22585         stack.
22586
22587         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22588         separate statement for clarity.
22589
22590         * mini-sparc.c: Update status.
22591
22592 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22593
22594         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22595         here.
22596
22597 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22598
22599         * inssel-ppc.brg: another small pre-release workaround:
22600         we don't do overflow detection for long_sub_un.
22601
22602 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22603
22604         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22605         (also works around a weird ppc bug: 57957).
22606
22607 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22608
22609         * tramp-ppc.c: trampoline fixes.
22610
22611 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22612
22613         * mini-ppc.c: fixed typos.
22614
22615 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22616
22617         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22618         at the top of the stack. Fixed typos. Use a frame registers
22619         for all the methods with exception clauses.
22620
22621 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22622
22623         * exceptions-ppc.c: restore fp registers.
22624
22625 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22626
22627         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22628         order from the stack top (moved the stack room to save the
22629         return value for trace after the param area). Fixed corruption
22630         in restoring registers on unwind.
22631
22632 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22633
22634         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22635
22636 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22637
22638         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22639         and prolog/epilog for methods that use it. Allow
22640         enough param area room for varargs methods. Fix miguel's
22641         breakage in exception handling.
22642
22643 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22644
22645         * Makefile.am: run genmdesc only on current arch.
22646
22647 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22648
22649         * exceptions-x86.c:
22650         * mini-x86.h: fix the build on windows.
22651
22652 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22653
22654         * 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.
22655
22656         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22657
22658         * mini-exceptions.c: New file.
22659         
22660         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22661         Move some parts of the x86 exception handling code to an 
22662         arch-independent file so it can be shared with other ports.
22663
22664 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22665
22666         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22667
22668 2004-04-26  David Waite  <mass@akuma.org>
22669
22670         * driver.c: remove comma from end of enumeration declaration
22671
22672 2004-04-26  Jackson Harper  <jackson@ximian.com>
22673
22674         * driver.c: parse config file before loading first assembly. This
22675         allows the user gac to be enabled/disabled. 
22676         
22677 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22678
22679         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22680         simpler mechanism: we do not care what is encoded initially
22681         (branch absolute or relative), we care about the code and its
22682         target.  I kept the old code for reference for now.
22683
22684         The new code tries first to determine if the jump is anywhere in
22685         the -/+32 absolute meg range, if it succeeds, it encodes using the
22686         absolute branch;  If not, it tried to find something in the
22687         relative range, if not, it uses the handle_thunk code. 
22688
22689 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22690
22691         * exceptions-ppc.c: use the correct ip register on macosx.
22692
22693 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22694
22695         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22696
22697 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22698
22699         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22700         Raise exception on integer divide by zero by hand since the hw
22701         doesn't support it. Handle NaNs in FP compares.
22702
22703 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22704
22705         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22706         code reducing duplication between the platforms and enabled
22707         signal exception handling (on linux for now).
22708
22709 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22710
22711         * exceptions-ppc.c: more macosx support.
22712
22713 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22714
22715         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22716
22717 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22718
22719         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22720
22721 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22722
22723         * iltests.il: more tests.
22724
22725 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22726
22727         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22728         vars as well.
22729
22730 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22731
22732         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22733
22734 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22735
22736         * liveness.c: Mark variables as volatile in all basic blocks reachable
22737         from exception clauses.
22738
22739 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22740
22741         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22742         inlining.
22743
22744 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22745
22746         * iltests.il, basic.cs: more tests for regalloc.
22747
22748 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22749
22750         * iltests.il: Some tests for register allocation modifications
22751         I have locally.
22752
22753 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22754
22755         * exceptions.cs: Add regression test for bug #56782.
22756
22757         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22758         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22759         the beauty of fixing the same thing in 5 different files...
22760
22761 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22762
22763         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22764         methods.
22765
22766 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22767
22768         * mini.c: Add support for STRWLPARRAY marshalling convention.
22769
22770 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22771
22772         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22773         to init the context to setup the regs pointer).
22774
22775 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22776
22777         * exceptions-ppc.c: more exceptions work.
22778
22779 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22780
22781         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22782         not allowed.
22783
22784 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22785
22786         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22787         can use the memory directly.
22788
22789         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22790
22791         add x86_add_membase, x86_sub_membase, x86_mul_membase
22792
22793 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22794
22795         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22796         GENERAL_REGS they were also hardcoded for all PPC ports.
22797
22798         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22799
22800         Remove hard-coded limit for floating point registers, use
22801         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22802
22803         Notice that in MacOS X calling conventions you can fit a lot more
22804         floating point values in registers, so I should update the PInvoke
22805         test to excercise the passing of floating point values on the
22806         stack (currently broken).
22807         
22808 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22809
22810         * tramp-ppc.c (create_trampoline_code): Added
22811         JUMP_TRAMPOLINE_SIZE. 
22812         (ppc_magic_trampoline): Follow the pattern from
22813         x86_magic_trampoline: if code is set to zero, return. 
22814         (create_trampoline_code): Always pass MonoMethod to the jump
22815         trampoline, before it was passing a null.
22816         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22817         share the code with mono_arch_create_jit_trampoline. 
22818
22819         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22820         implemented.
22821         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22822         implemented.  
22823
22824         * cpu-g4.md: Added length for jmp instruction, the worst case
22825         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22826         for save_lmf).
22827
22828 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22829
22830         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22831
22832 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22833
22834         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22835         before each IL instruction.
22836
22837         * mini.c (CEE_BOX): Fix warnings.
22838
22839 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22840
22841         * mini.c: removed a few unused vars and extra whitespace.
22842
22843 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22844
22845         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22846         checks.
22847         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22848         index.
22849         (OP_GETCHR): use the above
22850         (CEE_LDELEMA): use the above.
22851
22852         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22853         version of the generic impl.
22854         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22855         (CEE_LDELEMA): use the above.
22856
22857 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22858
22859         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22860         Fixes #56317.
22861
22862         * iltests.il: Added new regression test for #56317.
22863
22864 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22865
22866         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22867         under NetBSD. Fixes #56450.
22868
22869         * liveness.c (update_gen_kill_set): Fix previous patch.
22870
22871 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22872
22873         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22874
22875 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22876
22877         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22878         ldsfld and ldsflda.
22879
22880         * inssel-sparc.brg: Add more optimizations.
22881
22882         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22883
22884 2004-04-01  Martin Baulig  <martin@ximian.com>
22885
22886         * mini.c (handle_box): New static function; moved the
22887         implementation of CEE_BOX here.
22888         (mono_method_to_ir): Added `constrained_call' variable.
22889         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22890         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22891         mono_method_get_constrained() to get the method.
22892
22893 2004-04-01  Martin Baulig  <martin@ximian.com>
22894
22895         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22896         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22897         (mono_method_to_ir): We don't need these macros anymore since
22898         mono_class_get_full() already takes care of it. 
22899
22900 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22901
22902         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22903         use @function (as doesn't accept #function here) and check the return
22904         value of system and stop if fails.
22905
22906 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22907
22908         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22909
22910 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22911
22912         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22913
22914         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22915
22916         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22917         #56223.
22918
22919         * basic-long.cs: Add test for negation of Int64.MinValue.
22920
22921 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22922
22923         * mini-sparc.c: Update status.
22924
22925         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22926
22927         * exceptions-sparc.c: Fix return value in filters.
22928
22929         * inssel-sparc.brg: Fix register allocation in some rules.
22930
22931 2004-03-28  Martin Baulig  <martin@ximian.com>
22932
22933         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22934         if neccessary.  
22935
22936 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22937
22938         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22939         
22940         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22941         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22942         remove unused conv_u4 opcode.
22943
22944         * mini-x86.c: Remove valgrind workaround since it slows down things
22945         even when mono is not run under valgrind.
22946
22947 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22948
22949         * mini-sparc.c: Update status.
22950
22951         * inssel-sparc.brg: Add some optimizations.
22952
22953         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22954         future delay slot filling. Add support for varargs, tail calls and JMP.
22955
22956         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22957         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22958
22959         * inssel.brg: Fix register allocation in OP_ARGLIST.
22960
22961         * inssel.brg: Fix warnings.
22962
22963 2004-03-25  Martin Baulig  <martin@ximian.com>
22964
22965         * mini.c (inflate_generic_field): Removed.
22966         (mini_get_method): Removed, use mono_get_method_full(),
22967         (mini_get_class): Removed, use mono_class_get_full().
22968         (mono_method_to_ir): Pass our generic context to
22969         mono_field_from_token().        
22970
22971 2004-03-25  Martin Baulig  <martin@ximian.com>
22972
22973         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22974         of a `MonoMethod *'.
22975         (mini_get_method): Take a `MonoGenericContext *' instead
22976         of a `MonoMethod *'.
22977         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22978         a new local variable called `generic_context' which holds the
22979         current `MonoGenericContext *'; use it to lookup things.
22980
22981 2004-03-24  Martin Baulig  <martin@ximian.com>
22982
22983         * mini.c (mini_get_class): New static method; if we're inside a
22984         generic instance, inflate the class if neccessary.
22985         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
22986
22987 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
22988
22989         * iltests.il: New regression test for #55976.
22990
22991         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
22992         #55976.
22993
22994 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
22995
22996         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
22997         output.
22998
22999 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23000
23001         * liveness.c: Consider SSA stores as well as loads when making vars
23002         volatile.
23003
23004         * exceptions.cs: New regression tests for register allocation.
23005         
23006 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23007
23008         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23009         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23010           domain lock only to protect puntual access to data structures.
23011           Added access lock for sighash, jit_icall_hash_name, 
23012           jit_icall_hash_addr and domain->code_mp.
23013
23014 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23015
23016         * driver.c: Print SIGSEGV handling method.
23017
23018         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23019
23020         * mini.c (setup_jit_tls_data): Handle case when this is called
23021         multiple times for a thread.
23022
23023         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23024         is different from fbxx_un. Fixes #54303. Also use constants instead of
23025         magic numbers in a lot of places.
23026
23027 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23028
23029         * exceptions.cs: Fix cctor test when --regression is used.
23030
23031 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23032
23033         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23034         for Linux/ppc.
23035
23036 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23037
23038         * inssel-ppc.brg: fixed register assignments for some rules.
23039
23040 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23041
23042         * exceptions.cs: Add test for exceptions in static constructors.
23043
23044         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23045         static constructors outside the domain lock. Fixes #55720.
23046
23047 2004-03-17  Martin Baulig  <martin@ximian.com>
23048
23049         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23050         (inflate_generic_field): Take the `MonoMethod *' instead of the
23051         `MonoClass *' and added support for generic method.
23052         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23053         have a `field->parent->gen_params', only inflate the field if it's
23054         an open constructed type.
23055
23056 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23057
23058         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23059         exception object instead of the preconstructed ones.
23060
23061 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23062
23063         * mini.c: reverted changed to sigsegv_signal_handler commited
23064         accidentally in the previous patch.
23065
23066 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23067
23068         * mini.c:
23069         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23070         running --aot with an old assembly.
23071
23072 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23073
23074         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23075         point values.
23076
23077         * mini-sparc.c: Add support for v9 branches with prediction.
23078
23079 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23080
23081         * mini.c (mini_init): #warning is GNUC only
23082
23083         * mini-sparc.h: implement __builtin_frame_address
23084         and __builtin_return_address for Sun C compiler
23085
23086 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23087
23088         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23089
23090 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23091
23092         * basic-calls.cs: Add test for unaligned byref long argument passing.
23093
23094         * mini-ops.h: Add sparcv9 compare and branch instructions.
23095
23096         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23097         v9 instructions if we have a v9 cpu.
23098
23099         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23100         registers for global allocation.
23101
23102         * exceptions-sparc.c: Fixes.
23103         
23104 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23105
23106         * liveness.c (mono_analyze_liveness): Optimized version.
23107
23108         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23109
23110         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23111         sparc work.
23112
23113         * basic-float.cs basic-calls.cs: New regression tests.
23114
23115 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23116
23117         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23118         sigaltstack implementation.
23119
23120         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23121         
23122         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23123         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23124
23125 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23126
23127         * mini.c: Fix warnings.
23128         
23129         * mini.c (mono_resolve_patch_target): New function which contains the
23130         arch independent part of the patching process.
23131
23132         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23133         patching code to a separate function.
23134
23135 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23136
23137         * mini.c (add_signal_handler): ifdef out on Windows
23138
23139 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23140
23141         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23142         cpu-sparc.md: Add exception handling support + other fixes.
23143
23144         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23145         typed GC detection in --version.
23146
23147         * basic.cs exceptions.cs: New regression tests.
23148
23149         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23150         the arch specific code can store data during a compilation.
23151
23152         * mini-ops.h: Add OP_SETFRET.
23153
23154         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23155         function, register a separate icall for each arity, so the icalls can
23156         get a wrapper.
23157         
23158         * mini.c (mono_print_tree): Print negative offsets in a more readable
23159         form.
23160         
23161         * mini.c: Make signal handling work on sparc.
23162         
23163         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23164
23165         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23166
23167         * jit-icalls.c: Emulate truncl by aintl on solaris.
23168
23169         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23170
23171 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23172
23173         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23174
23175 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23176
23177         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23178         a MarshalByRef type, inline a method that performs the check, taking into
23179         account that the object can be a proxy. Also implemented tow new opcodes:
23180         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23181         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23182         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23183
23184 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23185
23186         * mini-ppc.c: if a relative branch displacement is too big
23187         but it points to and area reachable with an absolute branch, 
23188         avoid the thunks.
23189
23190 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23191
23192         * mini.c: optimize small copies in cpblk.
23193
23194 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23195
23196         * basic-calls.cs basic-float.cs: New regression tests.
23197
23198         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23199         negative offsets from %fp. Implement localloc. Fix local register 
23200         allocation. Fix the case when the this argument needs to be saved to
23201         the stack. Implement some missing opcodes.
23202
23203 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23204
23205         * mini.c (mini_method_compile): Reenable global regalloc in methods
23206         with exception handlers.
23207
23208         * linear-scan.c (mono_varlist_sort): Fix warning.
23209
23210         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23211
23212         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23213         regalloc costs.
23214
23215         * liveness.c: Make all variables uses in exception clauses volatile, to
23216         prevent them from being allocated to registers. Fixes #42136.
23217
23218 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23219
23220         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23221         causes regressions.
23222
23223         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23224         argument to mono_arch_regalloc_cost.
23225
23226         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23227         precisely.
23228
23229 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23230
23231         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23232         Make the cost of allocating a variable to a register arch dependent.
23233
23234         * basic-calls.cs: Fix compilation of tests.
23235         
23236         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23237         helper function to cut back on the number of #ifdefs needed.
23238
23239         * mini-ppc.c: Fix compilation.
23240
23241         * basic-calls.cs: New regression tests.
23242
23243         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23244
23245         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23246         of l0 since that is callee saved.
23247
23248         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23249         to virtual calls.
23250
23251         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23252         of delay instruction.
23253
23254         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23255
23256         * mini.h (MonoCallInst): Add 'virtual' flag.
23257
23258         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23259
23260 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23261
23262         * *.cs: New regression tests.
23263
23264         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23265         work.
23266
23267         * mini.c (mono_runtime_install_handlers): Fix build.
23268
23269         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23270         'signal_stack_size' members.
23271
23272         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23273         alternate signal stack.
23274
23275         * exceptions-x86.c: Add stack overflow handling.
23276
23277         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23278         functions to arch independent code.
23279
23280         * mini.c (mono_print_tree): Print more detailed info for load_membase
23281         opcodes.
23282         
23283 2004-02-23  Martin Baulig  <martin@ximian.com>
23284
23285         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23286
23287 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23288
23289         * mini-x86.c: fixed reg allocation for div/rem.
23290
23291 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23292
23293         * driver.c (mono_main): Report some configuratio options on --version.
23294
23295 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23296
23297         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23298         low in the address space. Correctly flush memory in thunks where we
23299         output native code.
23300
23301 2004-02-20  Martin Baulig  <martin@ximian.com>
23302
23303         * mini.c (mini_get_method): New static method; inflate all generic
23304         methods and methods in open generic instances.
23305         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23306         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23307
23308 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23309
23310         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23311
23312         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23313
23314 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23315
23316         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23317
23318         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23319         it compile using Sun's compiler.
23320
23321 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23322
23323         * 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.
23324
23325         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23326
23327 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23328
23329         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23330         code.
23331         * mini-ppc.c: handle calls outside of the allowed range with thunks
23332         allocated using the code manager.
23333         * tramp-ppc.c: use the code manager to hold generated native code.
23334         Fixed the magic trampoline to just patch vtable entries.
23335
23336 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23337
23338         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23339         independent file.
23340
23341 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23342
23343         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23344         PPC.
23345
23346         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23347         if we have a working __thread implementation.
23348
23349         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23350         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23351
23352 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23353
23354         * mini-x86.c: Fix compilation under gcc 2.
23355         
23356 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23357
23358         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23359         contains a call to the wrapped function.
23360
23361         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23362         OP_<CALL>_IMM opcodes, and use them under X86.
23363         
23364         * mini.c (mono_jit_find_compiled_method): Fix warning.
23365
23366         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23367
23368         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23369
23370         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23371         functionality to mini.c.
23372
23373         * mini.c (mono_create_jump_trampoline): New function to create a jump
23374         trampoline. Return a compiled method instead of a trampoline if it
23375         exists. Add a cache for jump trampolines.
23376
23377         * mini.c (mono_jit_find_compiled_method): New function to return a
23378         compiled method if it exists.
23379
23380         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23381         mono_arch_create_jit_trampoline.
23382
23383         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23384         a jump trampoline. Fixes #52092.
23385         
23386 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23387
23388         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23389         which is not up-to-date. Add check_corlib_version () instead.
23390
23391         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23392         have to call it.
23393         
23394         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23395         since newer valgrind versions do not need it.
23396
23397         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23398         compile a method with a given set of optimizations.
23399
23400         * mini.c: Compile icall wrappers on-demand instead of at startup.
23401
23402         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23403         wrapper for an icall.
23404
23405 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23406
23407         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23408         #54063.
23409
23410         * iltests.il: Add test for non-empty stack before switch instruction.
23411
23412 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23413
23414         * mini.c: Add support for new stringbuilder marshalling conventions.
23415
23416         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23417
23418 2004-02-01  Martin Baulig  <martin@ximian.com>
23419
23420         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23421         in `ginst->mtype_argv'.
23422
23423 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23424
23425         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23426         facilitate grepping.
23427
23428 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23429
23430         * mini.c: fixed buglet in initobj generic implementation for references.
23431
23432 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23433
23434         * Makefile.am: make the version script conditional.
23435         * jit-icalls.c: handle missing truncl().
23436
23437 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23438
23439         * exceptions.cs: Add more tests for double->int conversion.
23440
23441         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23442         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23443
23444 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23445
23446         * driver.c: make --verbose --version emit an error
23447         if the loaded corlib doesn't match the runtime version.
23448
23449 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23450
23451         * mini-ppc.h: export ppc_patch().
23452         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23453         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23454         on par or better than on MacOSX.
23455
23456 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23457
23458         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23459         mono_lookup_pinvoke_call.
23460
23461         * mini-x86.c: Under windows, the default pinvoke calling convention is
23462         stdcall. Fixes #52834.
23463
23464         * mini.c (optimize_branches): Add an upper bound to the number of
23465         iterations to prevent infinite loops on strange loops. Fixes #53003.
23466
23467 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23468
23469         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23470         and ISINST. Fixes #52093.
23471
23472         * objects.cs (test_0_vector_array_cast): New tests.
23473         
23474 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23475
23476         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23477         checking in Array.Set ().
23478
23479         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23480         #52590.
23481
23482         * object.cs (test_0_multi_array_cast): New regression test.
23483
23484 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23485
23486         * exceptions-ppc.c: fix build on Linux/PPC.
23487
23488 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23489
23490         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23491         running under valgrind.
23492         (x86_magic_trampoline): Fix build bustage.
23493
23494         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23495         negative values as well. This is needed for the encoding of the line number
23496         info, since sometimes the line numbers are not in increasing order.
23497
23498 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23499
23500         * cpu-pentium.md (localloc): Increase the size of the localloc 
23501         instruction since it is a loop under Win32.
23502
23503         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23504         allocation.
23505
23506 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23507
23508         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23509         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23510         Max Horn (max@quendi.de). Fix file names in comments.
23511
23512 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23513
23514         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23515         avoid stack overflow.
23516         (replace_usage): Avoid uninitialized variable warnings.
23517
23518         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23519         and taking the address of valuetype variables.
23520
23521 2004-01-03  Patrik Torstensson
23522
23523         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23524         for other purposes than FP later on.
23525
23526 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23527
23528         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23529         of tail calls.
23530
23531 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23532
23533         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23534
23535 2003-12-30  Patrik Torstensson <p@rxc.se>
23536
23537         * mini-x86.h: Decreased number of availiable fp regs.
23538         Solves corner cases with FP spilling.
23539
23540 2003-12-23  Patrik Torstensson <p@rxc.se>
23541
23542         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23543         for floating point stack tracking / spilling on x86. 
23544         Fixes bug #49012.
23545         
23546         * basic-float.cs: added float mul overflow test.
23547
23548 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23549
23550         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23551
23552 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23553
23554         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23555         supports for cond branches that overflow the immediate
23556         overflow offset. mcs can compile simple programs.
23557
23558 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23559
23560         * exceptions-ppc.c: exception handling support wip:
23561         finally handlers get run on exception.
23562
23563 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23564
23565         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23566         profiling.
23567
23568 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23569
23570         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23571         initial support for stack walking and unwinding.
23572
23573 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23574
23575         * driver.c (mono_main): Make corlib-out-of-sync message more 
23576         descriptive. Also remove verify_corlib call.
23577
23578 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23579
23580         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23581         not overlap with other call's arguments, too.
23582
23583 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23584
23585         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23586         move to arch-specific code the choice of arch-specific
23587         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23588         * mini.c: ensure emulation calls will not interleave
23589         with other calls.
23590
23591 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23592
23593         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23594         the magic trampoline stack frame is dropped before executing
23595         the new method.
23596
23597 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23598
23599         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23600         and integer to fp conversions. Added support for overflowing
23601         arguments on the stack. Reserve a couple more registers as temps.
23602         Added support for aot compilation (as output still needs to be
23603         tweaked, though).
23604
23605 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23606
23607         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23608         Don't overwrite return register in some corner cases.
23609
23610 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23611
23612         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23613         static constructors when AOT compiling.
23614
23615         * driver.c (mono_main): Call mono_check_corlib_version.
23616
23617 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23618
23619         * cpu-g4.md, basic.cs: fixed div target register.
23620
23621 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23622
23623         * mini-ppc.c, basic.cs: shl_imm fix with test.
23624
23625 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23626
23627         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23628         structures by value. Misc fixes.
23629         * objects.cs: more tests.
23630
23631 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23632
23633         * mini-ppc.c: lconv.ovf.i implemented.
23634
23635 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23636
23637         * mini.c:
23638         (mini_init): don't error out if someone already called g_thread_init.
23639
23640 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23641
23642         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23643         to be any type per the spec. Fix abnormal memory usage when
23644         the same object is repeatedly thrown.
23645
23646 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23647
23648         * mini.c: check for overruns in IL code.
23649
23650 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23651
23652         * TODO: Add/remove some todo entries.
23653
23654 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23655
23656         * driver.c (mono_main): Call mono_verify_corlib.
23657
23658 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23659
23660         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23661         This has been moved to mini.c
23662         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23663         type being casted is marshalbyref it could be a proxy, so instead of
23664         emitting the type check code, emit a call to a runtime method that will
23665         perform the check by calling CanCastTo if needed.
23666
23667 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23668
23669         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23670         methods with large stack frames under Win32.
23671
23672 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23673
23674         * Makefile.am: Distribute regression tests.
23675
23676         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23677         at the end instead of inserting each variable into the sorted list.
23678
23679         * linear-scan.c (mono_varlist_sort): New helper function.
23680         
23681 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23682
23683         * mini.c: ensure arguments and locals are within bounds.
23684
23685 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23686
23687         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23688         related fixes.
23689
23690 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23691
23692         * mini.c (mono_cprop_copy_values): Fix crash.
23693
23694         * aot.c: Set verbosity back to 0.
23695         
23696 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23697
23698         * regalloc.c: complete memory leak fix by Laurent Morichetti
23699         (l_m@pacbell.net).
23700
23701 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23702
23703         * driver.c (main_thread_handler): Revert the previous patch.
23704
23705         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23706         under valgrind.
23707
23708         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23709         memory from the memory pool.
23710
23711         * driver.c (main_thread_handler): Turn on all optimizations when
23712         --aot is used.
23713
23714         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23715         an array for better performance.
23716
23717         * regalloc.c (mono_regstate_assign): Fix memory leak.
23718
23719         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23720         serialize the debug info.
23721
23722         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23723         debug info from the serialized representation.
23724
23725         * aot.c: Save debug info into the generated file and load it when 
23726         loading a method.
23727
23728         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23729
23730 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23731
23732         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23733         More FP-related fixes.
23734
23735 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23736
23737         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23738         and register allocation buglet. Hello world now runs.
23739
23740 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23741
23742         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23743         * tramp-ppc.c: fixed class init trampoline.
23744         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23745
23746 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23747
23748         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23749         mini.c: more ppc changes/fixes.
23750
23751 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23752
23753         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23754         Also optimize the case when the arguments are the same in the caller 
23755         and in the callee.
23756
23757         * iltests.il: Add tests for tail calls with valuetype arguments.
23758
23759 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23760
23761         * mini-ppc.c: fixes for struct return type.
23762
23763 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23764
23765         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23766         mono_spillvar_offset() to arch-specific code.
23767
23768 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23769
23770         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23771
23772 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23773
23774         * exceptions-x86.c: Fix stack space leaks.
23775         
23776         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23777         registers from the lmf if the method has save_lmf set.
23778
23779 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23780
23781         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23782         of icall wrappers into InvokeInDomain, since these are now per-domain.
23783
23784 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23785
23786         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23787         make some opcode emulation and intrinsic ops enabled/disabled 
23788         according to the architecture. More fixes.
23789
23790 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23791
23792         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23793
23794 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23795
23796         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23797         arch-specific handling for 'this' and struct return type to
23798         arch-specific code.
23799
23800 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23801
23802         * aot.c: prevent divide by zero error when reporting (it happened with
23803         Accessibility.dll).
23804
23805 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23806
23807         * mini.h (inst_switch): Remove unused macro.
23808
23809 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23810
23811         * aot.c:
23812         (load_aot_module): free 'info->methods' and 'info' properly. No more
23813         "free(): invalid pointer blah" messages when you have an old aot
23814         compiled assembly.
23815
23816 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23817
23818         * jit-icalls.c, mini.c: Added support for context static fields.
23819
23820 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23821
23822         * mini.c (mono_method_blittable): Methods which set LastError are not 
23823         blittable either. Fixes #51108.
23824         
23825 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23826
23827         * mini.c: flush icache.
23828         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23829
23830 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23831
23832         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23833
23834 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23835
23836         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23837         safe on IA32.
23838
23839         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23840         vararg calls.
23841
23842         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23843
23844 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23845
23846         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23847         instruction when the result is discarded.
23848
23849         * iltests.il (test_0_div_regalloc): New regression test.
23850
23851         * arrays.cs: Fix compilation error.
23852
23853 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23854
23855         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23856         float rules to inssel-x86.brg: sane architectures with FP registers
23857         don't need to implement these rules.
23858
23859 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23860
23861         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23862
23863 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23864
23865         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23866         implementation of 32 bit systems.
23867
23868 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23869
23870         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23871         (Jeroen Zwartepoorte).
23872
23873 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23874
23875         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23876         the caller and the callee matches.
23877         
23878         * mini.c (mono_method_to_ir): Add comment.
23879
23880         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23881         signbit is missing on some platforms.
23882
23883 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23884
23885         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23886
23887         * mini.c (setup_jit_tls_data): Call the new function.
23888         
23889         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23890
23891         * mini-x86.c: Add experimental support for fast access to the lmf
23892         structure under NPTL/Linux 2.6.x.
23893
23894 2003-11-06  Martin Baulig  <martin@ximian.com>
23895
23896         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23897         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23898         the debugger.
23899
23900 2003-11-02  Martin Baulig  <martin@ximian.com>
23901
23902         * mini.c (inflate_generic_field): New static method.
23903         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23904         generic instance and the field is declared in a generic type, call
23905         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23906
23907 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23908
23909         * mini.h mini.c (mono_method_same_domain): New function to return
23910         whenever the caller and the callee are in the same domain.
23911
23912         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23913
23914 2003-10-30  Martin Baulig  <martin@ximian.com>
23915
23916         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23917         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23918         method parameters.
23919         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23920         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23921
23922 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23923
23924         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23925         propagation.
23926
23927         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23928         object here, so it is in the correct appdomain etc.
23929
23930 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23931
23932         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23933         already done.
23934         (mono_method_to_ir): Avoid freeing the type created returned from
23935         mono_type_create_from_typespec, since it is put into an internal cache
23936         by the function. Fixes pointer.exe.
23937
23938         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23939         trampolines for icalls and pinvokes as well. Fixes #33569.
23940
23941 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23942
23943         * mini.c: Update after appdomain changes.
23944
23945         * mini.c (mono_jit_compile_method_inner): Allways compile native
23946         method wrappers in the root domain, since there can only be one
23947         instance of them, whose address is stored in method->info.
23948
23949 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23950
23951         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23952         environment variable. Instead detect automatically whenever running
23953         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23954         valgrind.h.
23955
23956 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23957
23958         * trace.c, trace.h: New files that implement the new trace option
23959         parsing. 
23960
23961         * driver.c: Document new --trace options.
23962
23963         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23964         mini-x86.c: Apply:
23965
23966         -       if (mono_jit_trace_calls)
23967         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23968
23969         * mini.h: prototypes.
23970         
23971 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23972
23973         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23974
23975         * mini.c inssel.brg: Implement typedefbyref opcodes.
23976
23977         * mini.c (mono_jit_compile_method): Remove unused local variable.
23978
23979         * mini.c (mono_jit_compile_method_inner): Ditto.
23980         
23981 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23982
23983         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23984         
23985         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
23986
23987 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
23988
23989         * mini.c (mono_no_aot): Remove unused global variable.
23990
23991         * mini.c: Thread safety fixes.
23992
23993 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
23994
23995         * mini.c (mono_create_class_init_trampoline): Add a lock around
23996         class_init_hash_addr.
23997
23998         * arrays.cs (test_0_newarr_emulation): Add new regression test for
23999         #30073.
24000
24001         * mini.c: Decompose the NEWARR instruction before decomposing its
24002         arguments. Fixes #30073.
24003
24004 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24005
24006         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24007         convention.
24008
24009 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24010
24011         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24012
24013         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24014
24015         * driver.c: Add support for compiling icall wrappers to --compile.
24016
24017 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24018
24019         * inssel.brg: The empty value in class->interface_offsets is -1, not
24020         0. Fixes #49287.
24021
24022 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24023
24024         * objects.cs: New test for 'is' operator on an array of interfaces.
24025
24026 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24027
24028         * tramp-ppc.c: update trampoline code to support jumps
24029         and class initialization.
24030
24031 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24032
24033         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24034
24035         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24036
24037         * inssel.brg (OP_UNBOX): Remove unused rule.
24038
24039         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24040         region instead of one for each method. Fixes #47813.
24041
24042 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24043
24044         * exceptions.cs (test_0_nested_finally): New regression test for
24045         nested exception handlers.
24046
24047         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24048
24049         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24050
24051         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24052         inlining.
24053
24054         * mini.c (mono_method_check_inlining): Make the inlining limit 
24055         configurable by an environment variable.
24056         
24057         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24058
24059         * mini.h: Bump AOT file version.
24060
24061         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24062         token, store the image along with the token, since the token might not 
24063         refer to the same image as the method containing the relocation, 
24064         because of inlining.
24065
24066 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24067
24068         * mini.c (mono_precompile_assemblies): New function to compile
24069         all methods in all loaded assemblies.
24070
24071         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24072
24073         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24074         iassign and fassign to int*, since they can contain large negative
24075         values if the register is spilled. Also added some comments. Fixes
24076         #45817.
24077
24078         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24079         under Win32. Fixes #42964.
24080
24081 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24082
24083         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24084
24085         * aot.c: Added support for AOT compiling methods which contain calls
24086         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24087         handled.
24088         
24089         * driver.c (compile_all_methods): Run the compilation in a thread
24090         managed by mono. Fixes #44023.
24091
24092         * mini.c (mono_codegen): Print full method name in verbose output.
24093
24094         * mini-x86.c (mono_arch_patch_code): Fix warning.
24095         
24096         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24097         jumps, since the method we are jumping to might be domain-specific.
24098
24099         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24100
24101 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24102
24103         * inssel.brg: string chars are unsigned.
24104
24105 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24106
24107         * TODO: New todo item.
24108
24109         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24110         which calls mono_runtime_class_init and patches the call site to
24111         avoid further calls.
24112         (mono_arch_create_class_init_trampoline): New arch specific function 
24113         to create a class init trampoline.
24114         (create_trampoline_code): Generalized so it can create
24115         class init trampolines as well.
24116
24117         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24118         (mono_create_class_init_trampoline): New function to create and cache
24119         class init trampolines.
24120         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24121         vtable given the address of a class init trampoline. Used by the
24122         patching process.
24123         (mono_codegen): Generate a call to a trampoline instead of
24124         mono_runtime_class_init in LDSFLD[A].
24125         (mono_codegen): Add relocations for the new trampoline.
24126         
24127         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24128         MONO_PATCH_INFO_CLASS_INIT.
24129
24130         * mini.h: Bump AOT version number.
24131
24132         * aot.c: Create a copy of the loaded code instead of using the original
24133         so methods which call each other will be close in memory, improving
24134         cache behaviour.
24135         
24136         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24137         patch since it breaks the regression tests.
24138         
24139         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24140         for the register saving instruction sequence since the 
24141         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24142
24143 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24144
24145         * TODO: Fix todo item && remove another.
24146
24147 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24148
24149         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24150         previous checkin.
24151
24152         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24153         function of the module.
24154
24155         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24156         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24157         --no-aot command line option.
24158
24159 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24160
24161         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24162         by Bernie Solomon (bernard@ugsolutions.com).
24163
24164         * inssel.brg: Refactor the interface offset table related code into
24165         its separate functions and add support for the AOT case.
24166
24167 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24168
24169         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24170         
24171         * aot.c: Added mono_aot_verbose variable and made all debugging
24172         output depend on the value of this variable.
24173
24174         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24175         method_label and info_label.
24176
24177         * mini.h mini-x86.c aot.c: Added a new relocation type 
24178         MONO_PATCH_INFO_IID for klass->interface_id.
24179
24180         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24181         the MonoJitInfo structure.
24182
24183         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24184         a non-root appdomain in shared mode.
24185
24186 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24187
24188         * aot.c: make aot loader less verbose. Remove free of unused variable.
24189
24190 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24191
24192         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24193
24194         * .cvsignore: Added *.dll.
24195
24196         * mini.c (mono_print_tree_nl): New function callable while debugging.
24197
24198         * mini.c (mono_print_code): Export this.
24199
24200         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24201         patched code.
24202
24203 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24204
24205         * mini.h (MonoCompile): Added 'jit_info' field.
24206
24207         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24208         the cfg structure, since it is needed by the AOT compiler.
24209
24210         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24211
24212         * aot.c: A major rewrite. Changes include:
24213         - save exception tables for methods which have them.
24214         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24215         to g_module_symbol.
24216         - reworked the file format so it is now much smaller and needs
24217         fewer relocation entries.
24218         
24219 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24220
24221         * aot.c (load_aot_module): Fix build bustage on platforms without
24222         Boehm GC.
24223
24224 2003-09-04  Martin Baulig  <martin@ximian.com>
24225
24226         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24227
24228 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24229
24230         * TODO: Some new optimization ideas.
24231
24232         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24233
24234         * aot.c: Save the optimization flags used to compile the code into
24235         the AOT module.
24236
24237         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24238         support emitting domain specific code.
24239         
24240         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24241         no longer domain neutral. It can be made domain neutral by compiling 
24242         with --optimize=shared.
24243
24244         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24245         between appdomains.
24246
24247         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24248         loading of AOT code.
24249
24250         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24251         
24252         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24253         if there is no domain neutrality information.
24254
24255 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24256
24257         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24258         format version into the generated library.
24259
24260         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24261         callee method into the caller since one of them could be shared.
24262
24263         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24264         system exceptions from AOT code now works.
24265
24266         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24267         method if it is domain neutral and the callee is not.
24268
24269         * graph.c (cfg_emit_one_loop_level): Fix warning.
24270
24271 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24272
24273         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24274         last checkin.
24275
24276 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24277
24278         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24279         is needed  by code which is executed before mono_runtime_init ().
24280         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24281         
24282         * mini.c (mono_thread_abort): Fix warning.
24283         (mono_jit_compile_method): Call static constructor in the AOT case too.
24284
24285         * aot.c (mono_compile_assembly): Fix warning.
24286
24287 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24288
24289         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24290
24291 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24292
24293         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24294
24295         * cpu-pentium.md: Fix the length of call opcodes so they include the
24296         ESP restoring instruction. Fixes #47968.
24297
24298 2003-08-28  Martin Baulig  <martin@ximian.com>
24299
24300         * mini-x86.c (mono_arch_call_opcode): Added support for
24301         MONO_TYPE_GENERICINST.
24302
24303         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24304
24305 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24306
24307         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24308         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24309
24310         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24311         metadata_section.
24312
24313 2003-08-26  Martin Baulig  <martin@ximian.com>
24314
24315         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24316         when reporting an error, set this to the actual error location.
24317         (mono_method_to_ir): Report the correct error location if
24318         get_basic_blocks() returned an error.
24319
24320 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24321
24322         * mini.c (mono_type_blittable): OBJECT is not blittable.
24323         (mono_method_blittable): Methods which have marshalling descriptors
24324         are not blittable either. Fixes #47842.
24325
24326 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24327
24328         * driver.c mini.c: Use an environment variable instead of a global 
24329         variable. Also fix the build.
24330
24331         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24332         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24333         reporting this. 
24334
24335         * driver.c mini.c: Added --with-valgrind option to turn off some
24336         code which prevents mono from running under valgrind.
24337
24338         * mini.c (mono_emit_call_args): Fixed warning.
24339
24340         * mini.c (mono_emulate_opcode): Fixed warning.
24341
24342 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24343
24344         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24345         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24346         regalloc.c, regalloc.h: specify available registers in arch-specific
24347         code and support floats in the regallocator (patch by Laurent Morichetti 
24348         <l_m@pacbell.net>)
24349
24350 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24351
24352         * mini.c: mono_thread_current() can be called only after
24353         mono_runtime_init(): rearrange code to not call it early on.
24354
24355 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24356
24357         * mini.c: allocate jump tables in the code mempools.
24358
24359 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24360
24361         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24362         freed.
24363
24364 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24365
24366         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24367         12 to 16.  This fixes bug #47453.
24368
24369
24370 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24371
24372         * mini-ppc.c: fixed indexed load and unsigned compares.
24373
24374 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24375
24376         * mini.c: reenabled installation of handler for
24377           thread abort signal.
24378
24379 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24380
24381         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24382         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24383         until it's fixed and actually useful.
24384
24385 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24386
24387         * inssel-long32.brg: couple more opcodes implemented.
24388
24389 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24390         
24391         * mini-sparc.c: Even more opcodes implemeted.
24392
24393 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24394
24395         * mini-sparc.c: More opcodes implemented.
24396
24397 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24398
24399         * mini-sparc.c: More opcodes implemented.
24400
24401 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24402
24403         * inssel-sparc.brg: Add some needed rules.  Direct
24404         copy from PPC.
24405         * Makefile.am: Use inssel-sparc.brg
24406         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24407         an assert happy for now.
24408
24409 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24410
24411         * mini-sparc.c: Fixed compile errors.
24412         * exceptions-sparc.c: Same.  We now produce a mono binary 
24413         on sparc-linux.  Yea.
24414
24415 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24416
24417         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24418         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24419         They compile, but do not work.
24420
24421 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24422
24423         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24424         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24425         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24426         (ct@gentoo.org).
24427
24428 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24429
24430         * mini.c: more opcodes implemented and better support for generics.
24431
24432 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24433
24434         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24435         * mini.c, mini.h: first cut at generics support: some new instructions 
24436         added and changed the behaviour of some of the existing ones.
24437
24438 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24439
24440         * mini.c: Removed definition of metadata_shared mutex here.
24441
24442 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24443
24444         * mini-x86.c: make vararg calls work for instance methods.
24445
24446 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24447
24448         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24449         returns the arguments in a separte list, now.
24450
24451 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24452
24453         * aot.c, mini.c: updates for array type representation changes.
24454
24455 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24456
24457         * mini.c: register function to perform jit shutdown.
24458
24459 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24460
24461         * mini.c: use a faster allocator if possible.
24462
24463 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24464
24465         * aot.c: some cleanups and portability changes.
24466
24467 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24468
24469         * mini.c: use faster allocation for CEE_BOX if possible.
24470
24471 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24472
24473         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24474         Moved inlined mempcy code to its own function so that is can be
24475         reused. Added an inline memset function as well (optimized initobj).
24476         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24477
24478 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24479
24480         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24481
24482 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24483
24484         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24485         arch code can setup the cpu for CLR execution, if needed.
24486         We use it on x86 to set the precision of FP operations.
24487
24488 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24489
24490         * mini.c: disable some optimizations if we can guess they'll cost too
24491         much for a given method.
24492
24493 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24494
24495         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24496         
24497 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24498         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24499         info collection support.
24500
24501 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24502
24503         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24504         is now implemented in the profiling API. Get rid of a couple of
24505         unnecessary global variables.
24506
24507 2003-06-15  Nick Drochak <ndrochak@gol.com>
24508
24509         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24510         * cpu-g4.md: add op_bigmul and op_bigmul_un
24511         * cpu_pentium.md: add op_bigmul_un
24512         * inssel-long32.brg: add rule for unsigned bigmul
24513         * mini-ops.h: define OP_BIGMUL_UN
24514         * mini-x86.c: THE BUG: handle (un)signed properly
24515         * mini.c: choose unsigned opcode if needed.
24516         This set of patches fixes bug #44291
24517
24518 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24519
24520         * mini.c (optimize_branches): improved to handle all kinds of
24521         conditional branches.
24522
24523 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24524
24525         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24526         don't raise exceptions.
24527
24528 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24529
24530         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24531         to arch-specific files.
24532
24533 2003-06-09  Martin Baulig  <martin@ximian.com>
24534
24535         * Makefile.am (libs): Added $(LIBGC_LIBS).
24536
24537 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24540         and OP_ATAN (fixes bug#44293).
24541
24542 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24543
24544         * Makefile.am, mini-x86.c: rename cpu description array to
24545         pentium_desc, since some compilers define the 'pentium' preprocessor
24546         symbol.
24547
24548 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24549
24550         * mini.c (mini_select_instructions): add explicit branch if the
24551         following block is not the false target of a conditional branch -
24552         we need this with any optimization that reorder or remove bblocks
24553
24554         * mini.c (optimize_branches): bug fixes
24555
24556 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24557
24558         * mini.c (mono_method_to_ir): inline static readonly fields
24559
24560         * ssa.c (fold_tree): start cfold support for long (very simple
24561         cases only)
24562
24563         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24564
24565 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24566
24567         * inssel.brg: fixed memcpy (bug #44219).
24568
24569 2003-06-05  Dick Porter  <dick@ximian.com>
24570
24571         * driver.c: Set the glib log levels to not abort if g_message
24572         recurses.
24573
24574         g_set_prgname() has to happen before mini_init() so that the
24575         process handle gets the info.
24576         
24577 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24578
24579         * driver.c: add intrins to the default optimizations to get wider
24580         exposure.
24581
24582 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24583
24584         * mini.h: some large basic blocks will overflow a 16-bit
24585         integers for symbolic registers.
24586
24587 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24588
24589         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24590         (mono_arch_output_basic_block): fix bug 43499 
24591
24592 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24593
24594         * mini.c: kill duplicated definition of mono_debug_format.
24595
24596 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24597
24598         * mini-x86.c, arrays.cs: fixed register allocation bug.
24599
24600 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24601
24602         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24603
24604         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24605
24606 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24607
24608         * mini.c:
24609         (print_method_from_ip): also print source location information if
24610         available.
24611
24612 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24613
24614         * mini.c (mono_find_block_region): bug fix in region code
24615         (mini_method_compile): enable removing unreachable code again, but
24616         only in methods without exception clauses.
24617
24618 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24619
24620         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24621         Implemented arglist opcode and handling of TypedReference type.
24622         Fixed x86 call convention when a structure is returned.
24623         Minimal support for calling static vararg methods.
24624
24625 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24626
24627         * mini.c (mini_method_compile):  always remove unreachable code,
24628         because the code in them may be inconsistent  (access to dead
24629         variables for example).
24630
24631 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24632
24633         * driver.c, debug-mini.c: warning fixes.
24634
24635 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24636
24637         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24638
24639 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24640
24641         * mini.c: thread-static fields are registered in mono_class_vtable(),
24642         so ensure the function is called before checking for them.
24643
24644 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24645
24646         * mini.c (optimize_branches): fix for bug 43586
24647
24648         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24649         overflow (fixes Bug #43639)
24650
24651 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24652
24653         * mini.c, objects.cs: allow the use of stobj for primitive types.
24654
24655 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24656
24657         * mini.c: be less strict about argument checking until we support
24658         running the verifier.
24659
24660 2003-05-27  Nick Drochak <ndrochak@gol.com>
24661
24662         * basic-long.cs: tests for (ulong)int * (ulong)int also
24663         * mini.c: use the same trick for (ulong)int * (ulong)int
24664
24665 2003-05-27  Nick Drochak <ndrochak@gol.com>
24666
24667         * basic-long.cs: add regression test for (long)int * (long)int
24668         * cpu-pentium.md: add op_bigmul specification
24669         * inssel-long32.brg: add OP_BIGMUL rule
24670         * mini-ops.h: add OP_BIGMUL
24671         * mini-x86.c: register allocator: handle case where src1 needs to be
24672         in EAX.
24673         * mini.c: substitute special BIGMUL opcode in the tree for 
24674         (long)int * (long)int
24675
24676 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24677
24678         * jit-icalls.c: call the type ctor on field access if needed.
24679
24680 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24681
24682         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24683         to a method (including results of ldelema, bug#43207).
24684
24685 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24686
24687         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24688         colors to show exception handler blocks.
24689
24690         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24691         (fix for pinvoke7.cs).
24692
24693 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24694
24695         * mini.h, mini.c: ensure correct initialization order for types that
24696         require it. Prepare for lazy compilation of jit icall wrappers.
24697         Provide a name for opcode emulation to reduce unneeded mallocing.
24698
24699 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24700
24701         * mini-x86.c: better register restoring code and profiling
24702         support for tail calls.
24703
24704 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24705
24706         * mini.h, driver.c: prepare for leaf methods optimization.
24707
24708 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24709
24710         * mini.c: get targets of branches before converting a method.
24711
24712 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24713
24714         * mini.c (optimize_branches): added some experimental code (disbaled) 
24715
24716 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24717
24718         * mini.c (optimize_branches): fix branch to branch optimization 
24719
24720         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24721
24722         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24723
24724         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24725
24726         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24727         if needed.
24728
24729 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24730
24731         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24732         enable use of interface variables again.
24733
24734         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24735         I1 to registers because there is no simply way to sign extend 8bit
24736         quantities in caller saved registers on x86.
24737
24738         * inssel-float.brg: set costs of some rules to 2 so
24739         that monobure always select the arch. specific ones if supplied,
24740         regardless of the order we pass the files to monoburg.
24741
24742 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24743
24744         * mini.c, mini-x86.c: since the magic trampoline for jumps
24745         can't patch the code directly, we do it as soon as the
24746         method gets compiled.
24747
24748 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24749
24750         * mini-x86.c, mini.h: introduce a new patching method
24751         to support CEE_JMP and tail calls.
24752         * mini.c: obey tail.call. Don't precompile methods target
24753         of CEE_JMP.
24754         * tramp-x86.c: new trampoline code to handle methods
24755         reached through a jump.
24756
24757 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24758
24759         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24760         bit values to registers
24761
24762 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24763
24764         * mini.c (mono_compile_get_interface_var): share interface
24765         variables if possible.
24766
24767 2003-05-16  Martin Baulig  <martin@ximian.com>
24768
24769         * debug-mini.c (mono_init_debugger): New function to initialize
24770         the debugger.  This is not in the debugger since it needs to
24771         access some of mini's internals.
24772
24773 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24774
24775         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24776
24777 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24778
24779         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24780         for value type handling.
24781
24782 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24783
24784         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24785         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24786
24787 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24788
24789         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24790           the constructor through a proxy.
24791
24792 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24793
24794         * jit-icalls.c, inssel.brg: fixes to array element address
24795         calculations.
24796
24797 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24798
24799         * mini-x86.c (is_regsize_var): allocate pointer to registers
24800
24801 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24802
24803         * driver.c: fixed typo, added intrins to the set of optimizations
24804         tested with regressions.
24805
24806 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24807
24808         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24809         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24810         test case.
24811
24812 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24813
24814         * inssel.brg: remove some common pop instructions without side effects
24815
24816 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24817
24818         * inssel-x86.brg: fixed thinko in int to double conversions.
24819
24820 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24821
24822         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24823
24824 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24825
24826         * inssel-long32.brg: two more missing instructions.
24827
24828 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24829
24830         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24831         if not already set.
24832
24833 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24834
24835         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24836         correctly.
24837
24838         * basic-float.cs: Added tests for negative zero.
24839
24840 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24841
24842         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24843         a couple of missing operations for long casts, with test cases.
24844
24845 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24846
24847         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24848
24849 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24850
24851         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24852         code size estimation.
24853
24854 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24855
24856         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24857         abstract methods (fix bug 42542)
24858
24859         * aot.c: add ability to handle array types
24860         
24861 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24862
24863         * mini.c: Call the _specific versions of the object allocation
24864         functions if possible.
24865
24866 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24867
24868         * driver.c: call setlocale ().
24869
24870 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24871
24872         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24873         windows build.
24874
24875 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24876
24877         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24878
24879         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24880         wrappers (fix bug 42122)
24881
24882 2003-05-04  Martin Baulig  <martin@ximian.com>
24883
24884         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24885
24886         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24887         s/mini_set_defaults/mono_set_defaults/g.
24888
24889 2003-05-04  Martin Baulig  <martin@ximian.com>
24890
24891         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24892
24893 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24894
24895         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24896         (reported by Don Roberts).
24897
24898 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24899
24900         * mini.c: temporarily work around two bugs for this release.
24901
24902 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24903
24904         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24905         that contains -export-dynamic and it makes using the ld script
24906         useless.
24907         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24908
24909 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24910
24911         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24912         specific cpu.
24913
24914 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24915
24916         * mini.c: make sure leave calls all the needed finally blocks,
24917         even when the target jumps out of multiple exception clauses.
24918
24919 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24920
24921         * ldscript, Makefile.am: add linker script to reduce the number of
24922         exported symbols (should also fix the issues with libwine defining
24923         some of the same symbols in io-layer).
24924
24925 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24926
24927         * driver.c (mini_main): Avoid assertion when no file name is given on 
24928         the command line.
24929
24930 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24931
24932         * driver.c: added --version/-V command line option.
24933         Added the inline optimization in the regression tests.
24934
24935 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24936
24937         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24938         to the type in the method signature (fixes bug#42134).
24939
24940 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24941
24942         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24943
24944 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24945
24946         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24947
24948 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24949
24950         * driver.c: fixed bug #42100.
24951
24952 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24953
24954         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24955
24956 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24957
24958         * mini.c: moved most of the code required to do inlining to its own
24959         function so it can be reused. Inline also ctors if appropriate.
24960
24961 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24962
24963         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24964         the runtime can call mono API functions.
24965
24966 2003-04-27  Martin Baulig  <martin@ximian.com>
24967
24968         * debug-mini.c (mono_debug_init_method): Added
24969         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24970         send a notification to the debugger.
24971
24972         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24973         running in the Mono Debugger, just pass the breakpoint number to
24974         mono_debug_init_method().
24975
24976         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24977
24978 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24979
24980         * mini.c: allow some more unsafe compares.
24981
24982 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24983
24984         * mini-x86.c, Makefile.am: make distcheck works (partially from
24985         a patch by Richard Lee <r.h.lee@attbi.com>).
24986         * regset.c, regset.h: removed, they are unused.
24987
24988 2003-04-25  Dick Porter  <dick@ximian.com>
24989
24990         * driver.c: Usage reports the name as 'mono' not 'mini'
24991         * exceptions-x86.c: Build and run on freebsd
24992
24993 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
24994
24995         * Makefile.am: install the program with the 'mono' name and
24996         the library as libmono instead of mini and libmini.
24997
24998 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24999
25000         * driver.c: provide the APIs for the embedding interface of the old jit.
25001
25002 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25003
25004         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25005
25006 2003-04-23  Martin Baulig  <martin@ximian.com>
25007
25008         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25009
25010         * driver.c: Added `--debug' command line argument to enable
25011         debugging support.
25012
25013 2003-04-23  Martin Baulig  <martin@ximian.com>
25014
25015         * debug.[ch]: Removed.  The code is now in
25016         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25017
25018         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25019         last six months.
25020
25021 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25022
25023         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25024
25025 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25026
25027         * mini.c:
25028         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25029         mono_domain_finalize.
25030         (mini_method_compile): use mono_method_profile* if the the option is
25031         enabled.
25032
25033 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25034
25035         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25036         methods with their wrapper.
25037
25038         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25039         methods with their wrapper.
25040
25041         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25042         their wrapper.
25043
25044         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25045         wrapper.
25046
25047         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25048         methods.
25049
25050 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25051
25052         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25053
25054 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25055
25056         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25057         of the mempool. This is slightly faster and uses less memory
25058
25059 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25060
25061         * mini.c: avoid O(n) allocation for variables.
25062
25063 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25064
25065         * mini.c: handle items on the stack after inlining methods.
25066
25067 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25068
25069         * mini.c: make the method->opcode optimization dependent
25070         on MONO_OPT_INSTRINS and do it lazily.
25071
25072 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25073
25074         * driver.c: print overall results at the end of regression run.
25075
25076 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25077
25078         * inssel.brg: don't overwrite symbolic registers.
25079
25080 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25081
25082         * inssel-x86.brg: fix conversion from long to float.
25083
25084 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25085
25086         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25087
25088 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25089
25090         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25091
25092         * driver.c: Added --print-vtable option as in the old JIT.
25093
25094 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25095
25096         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25097
25098 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25099
25100         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25101
25102 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25103
25104         * mini.c regalloc.c regalloc.h: Fix memory leak.
25105
25106 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25107
25108         * aot.c (mono_aot_get_method): register all used strings
25109
25110 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25111
25112         * mini.c: always intern strings references with ldstr at compile time.
25113
25114 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25115
25116         * Makefile.am: add BUILT_SOURCES.
25117
25118 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25119
25120         * driver.c: give a better error message when the assembly to execute
25121         doesn't have an entry point.
25122
25123 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25124
25125         * Makefile.am: added hack for automake
25126
25127         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25128         correct sematics.
25129
25130         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25131
25132 22003-04-07  Martin Baulig  <martin@ximian.com>
25133
25134         * Makefile.am: Added Makefile.am.
25135
25136         * debugger-main.c: Removed, this is now in the debugger where it
25137         belongs.
25138
25139         * mini.pc.in: Call this package `mini' for the moment.
25140
25141
25142
25143
25144
25145
25146
25147
25148
25149
25150
25151
25152
25153
25154