2010-05-13 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / ChangeLog
1 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
2
3         (mono_arch_handle_exception): Fix the cross-compile case.
4
5 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
6
7         * exceptions-arm.c (mono_arch_handle_exception): Resume from the signal handler
8         and do most of the work on the normal stack.
9
10 2010-05-13  Zoltan Varga  <vargaz@gmail.com>
11
12         * exceptions-amd64.c (mono_arch_handle_exception): Resume from the signal handler
13         and do most of the work on the normal stack even if sigaltstack is disabled.
14
15 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
16
17         * exceptions-amd64.c (mono_arch_sigctx_to_monoctx): Simplify this now that
18         UCONTEXT_REG_ constants are available on linux as well.
19         (mono_arch_monoctx_to_sigctx): Ditto.
20         (mono_arch_ip_from_context): Ditto.
21
22 2010-05-12  Zoltan Varga  <vargaz@gmail.com>
23
24         * debugger-agent.c (set_breakpoint): Fix setting of pending breakpoints in
25         other domains.
26
27 2010-05-11  Zoltan Varga  <vargaz@gmail.com>
28
29         * aot-compiler.c (emit_plt): Don't align the plt to a pagesize on x86, it is
30         no longer needed.
31
32 2010-05-10  Zoltan Varga  <vargaz@gmail.com>
33
34         * debugger-agent.c (insert_breakpoint): Print a more descriptive error message
35         if a breakpoint cannot be inserted.
36
37 2010-05-08  Zoltan Varga  <vargaz@gmail.com>
38
39         * aot-compiler.c (emit_and_reloc_code): Fix a warning.
40
41 2010-05-07  Zoltan Varga  <vargaz@gmail.com>
42
43         * debugger-agent.c (frame_commands): Return an error instead of asserting if
44         no JIT info is found for the method.
45
46 2010-05-05 Jonathan Chambers  <joncham@gmail.com>
47
48         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Protect against a NULL sigctx
49         in debug printf.
50
51 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
52
53         * mini-amd64.c (mono_arch_get_trampolines): New arch specific function returning
54         a list of arch specific trampolines.
55
56         * aot-compiler.c (emit_trampolines): Use it.
57
58 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
59
60         * tramp-<ARCH>.c exceptions-<ARCH>.c mini-trampolines.c mini-exceptions.c
61         aot-compiler.c: Use the _full trampoline creation functions on all platforms,
62         get rid of the _full from their name.
63
64 2010-05-05  Zoltan Varga  <vargaz@gmail.com>
65
66         * tramp-x86.c (mono_arch_create_generic_trampoline): Call
67         get_nullified_class_init_trampoline to remove some code duplication.
68
69 2010-05-03  Zoltan Varga  <vargaz@gmail.com>
70
71         * mini-x86.c (mono_arch_emit_prolog): Fix full-aot support for thread
72         attach.
73
74 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
75
76         * mini-amd64.c (mono_arch_emit_load_aotconst): New arch-specific function.
77
78         * tramp-amd64.c: Use emit_load_aotconst to remove some code duplication.
79
80         * aot-runtime.c (init_plt): Make the default entries point to the AOT trampoline,
81         there is no need to jump through the first plt entry.
82
83         * aot-runtime.c (mono_aot_get_named_code): Rename to mono_aot_get_trampoline.
84
85         * aot-runtime.c (mono_aot_get_plt_entry): Move the arch specific parts to an
86         arch-specific function.
87         (mono_aot_get_plt_info_offset): Ditto.
88
89         * aot-runtime.c (mono_aot_register_jit_icall): New helper function called from
90         mono_arch_init () to register jit icalls called from full-aot trampolines.
91         (load_function): Get rid of the arch specific #ifdefs, move the relevant code
92         to mini-<ARCH>.c.
93
94         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception_full): Get rid of
95         the specialized throw corlib exception trampoline, use a variant of the normal
96         trampoline along with a new C function which does the call to
97         mono_exception_from_token (), just like on x86.
98
99 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
100
101         * mini-trampolines.c aot-compiler.c tramp-<ARCH>.c exceptions-<ARCH>.c:
102         Reorganize the full aot trampoline creation functions, instead of taking a bunch
103         of out arguments, they will now take a MonoTrampInfo** out argument. Simplify
104         some code in aot-compiler.c because of this. Remove the non-full aot trampoline
105         creation functions on architectures which have the full-aot ones.
106
107 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
108
109         * mini-ppc.c (mono_arch_decompose_long_opts): Fix LNEG.
110
111 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
112
113         * mini-ppc.c (mono_arch_emit_exceptions): Initialize exc_throw_pos/found
114         explicitly, this seems to be required by some gcc versions at -O2.
115
116         * mini-arm.c: Ditto.
117
118 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
119
120         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Fix full-aot support for
121         has_target delegate invokes.
122
123 2010-05-01  Zoltan Varga  <vargaz@gmail.com>
124
125         * mini.h (MonoAotTrampInfo): Rename this to MonoTrampInfo, add patches/unwind
126         info fields.
127
128         * aot-compiler.c (mono_aot_tramp_info_create): Rename to mono_tramp_info_create,
129         add patches/unwind info arguments, move to mini.c.
130
131         * mini-<ARCH>.c aot-compiler.c: Update after the above changes.
132
133 2010-04-30  Zoltan Varga  <vargaz@gmail.com>
134
135         * debugger-agent.c (type_commands): Add a new CMD_TYPE_GET_SOURCE_FILES_2
136         command which returns full path names.
137
138 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
139
140         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline_full): Set the
141         code_size output variable.
142
143         * mini-x86.c (mono_arch_emit_prolog): Compute the GOT addr before calling
144         mono_get_lmf_addr.
145         
146 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
147
148         * mini-x86.c (mono_arch_emit_prolog): Remove a disable_aot which is not needed.
149         (mono_arch_cpu_optimizazions): Make this a no-op when running with full aot.
150         (mono_arch_cpu_enumerate_simd_versions): Ditto.
151
152 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
153
154         * image-writer.c (asm_writer_emit_alignment): Use ilog2 for alignments for the
155         apple assembler.
156
157 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
158
159         * mini-x86.c (mono_arch_emit_prolog): Avoid an assert in full-aot mode.
160
161 2010-04-29  Zoltan Varga  <vargaz@gmail.com>
162
163         * aot-runtime.c (load_function): Use TARGET_X86 instead of __i386__.
164
165 2010-04-28  Zoltan Varga  <vargaz@gmail.com>
166
167         * aot-compiler.c (emit_got_info): Double the buffer size to avoid an assert.
168
169 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
170
171         * dwarfwriter.c (emit_line_number_info): Get rid of the usage of GArray, so
172         line number support works with eglib.
173
174 2010-04-27  Miguel de Icaza  <miguel@novell.com>
175
176         * driver.c, mini.c: Since linking with LLVM makes the default Mono
177         dirty an extra 70kb pages on startup we are now going to choose a
178         different strategy: ship mono and mono-llvm binaries, with the
179         second being the one that links with LLVM and defaults to LLVM
180         being enabled.
181
182 2010-04-27  Zoltan Varga  <vargaz@gmail.com>
183
184         * tramp-x86.c exceptions-x86.c mini-x86.c aot-compiler.c aot-runtime.c: 
185         Implement full-aot support on x86.
186
187         * method-to-ir.c: Always use a got var on x86 too, just like on ppc, because the
188         trampolines depend on it. Use MONO_ARCH_GOT_REG as the got register, instead of
189         the first register returned by get_global_int_regs ().
190
191         * cpu-x86.md: Fix the length of insertx_u1_slow.
192
193         * iltests.il.in: Disable tail call tests when running with full-aot.
194
195 2010-04-26  Zoltan Varga  <vargaz@gmail.com>
196
197         * method-to-ir.c (mono_op_to_op_imm_noemul): Fix a warning.
198
199 2010-04-24  Mark Probst  <mark.probst@gmail.com>
200
201         * mini.c, driver.c: Initialize mono_use_llvm in mono_main(), not
202         in the initializer, because it's non-constant.
203
204 2010-04-23  Miguel de Icaza  <miguel@novell.com>
205
206         * mini.c: Use MONO_USE_LLVM as an environment flag to turn the use
207         of LLVM on by default.   Used for buildbots and other setups.
208
209 2010-04-24  Zoltan Varga  <vargaz@gmail.com>
210
211         * mini.c: Set mono_use_llvm to FALSE even if mono is compiled with LLVM.
212
213 2010-04-23  Kornel Pal  <kornelpal@gmail.com>
214
215         * method-to-ir.c (mono_method_to_ir): Enable inlining of pointer-sized unmanaged
216         initonly static fields when using moving GC.
217
218         Contributed under MIT/X11 license.
219
220 2010-04-23  Geoff Norton  <gnorton@novell.com>
221
222         * mini-amd64.h: Darwin x86_64 support.
223
224 2010-04-20  Jonathan Pryor  <jpryor@novell.com>
225
226         * exceptions-arm.c: Remove platform checks in favor of configure checks.
227
228 2010-04-19  Jonathan Pryor  <jpryor@novell.com>
229
230         * exceptions-arm.c: Add Android support for sigcontext structure.
231
232 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
233
234         * mini.c (mono_jit_compile_method_inner): Implement the check for native func
235         wrappers correctly now that their wrapper info is NULL.
236
237 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
238
239         * mini.c (mono_jit_compile_method_inner): Avoid calling
240         mono_marshal_method_from_wrapper () for native func wrappers. Fixes #597189.
241
242 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
243
244         * genmdesc.c (inst_name): Define this as a copy of mono_inst_name in helpers.c,
245         so the latter can be #ifndef DISABLE_JIT-ed.
246
247         * helpers.c: Comment out the opstr array if DISABLE_JIT is set.
248
249 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
250
251         * method-to-ir.c driver.c: Disable a few more things when DISABLE_JIT is set.
252
253 2010-04-16  Zoltan Varga  <vargaz@gmail.com>
254
255         * mini-llvm.c (emit_entry_bb): Fix support for simd arguments passed on the
256         stack.
257
258 2010-04-15  Zoltan Varga  <vargaz@gmail.com>
259
260         * debugger-agent.c (type_commands): Call mono_class_setup_methods () before
261         calling mono_class_num_methods (). Fixes #592244.
262
263 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
264
265         * mini-x86.c (mono_arch_get_llvm_call_info): Handle empty structures correctly.
266
267         * mini-llvm.c: Disable LLVM for calls with non-default calling conventions.
268
269 2010-04-14  Zoltan Varga  <vargaz@gmail.com>
270
271         * method-to-ir.c (handle_box_inst): Merge into handle_box, simplify the merged
272         version.
273         * (handle_alloc): Ditto.
274         (mono_method_to_ir): Remove the constrained call restriction added by a previous
275         change, its not needed anymore.
276
277 2010-04-12 Rodrigo Kumpera  <rkumpera@novell.com>
278
279         * mini-posix.c (sigusr1_signal_handler): Fix build on
280         non x86/amd64 systems.
281
282 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
283
284         * method-to-ir.c (mono_method_to_ir): Disable generic sharing for constrained
285         calls where the constrained class needs a context. Fixes #595863.
286
287         * iltests.il.in: Add a test.
288
289 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
290
291         * mini.c (mini_method_compile): Disable llvm+methods with clauses again, llvm
292         2.6/SVN seems to have broken support for them.
293
294 2010-04-13  Zoltan Varga  <vargaz@gmail.com>
295
296         * mini-llvm.c: Fix support for LLVM 2.6.
297
298 2010-04-10  Zoltan Varga  <vargaz@gmail.com>
299
300         * debugger-agent.c (thread_commands): Add a GET_ID command to get the
301         MonoInternalThread belonging to the thread.
302
303 Fri Apr 9 15:28:01 CEST 2010 Paolo Molaro <lupus@ximian.com>
304
305         * driver.c, optflags-def.h, ir-emit.h: introduce an unsupported
306         unsafe optimization that will remove bound checks.
307
308 2010-04-08  Kornel Pal  <kornelpal@gmail.com>
309
310         * method-to-ir.c (mini_emit_inst_for_method): Fix a typo that caused
311         CompareExchange not to be inlined for I8.
312
313         Contributed under MIT/X11 license.
314
315 2010-04-07 Rodrigo Kumpera  <rkumpera@novell.com>
316
317         * array.cs: Add tests for cast between primitive array types.
318
319 2010-04-07 Andreia Gaita  <avidigal@novell.com>
320
321         * Makefile.am: create a convenience library for moon to link with
322
323 2010-04-07 Paolo Molaro <lupus@ximian.com>
324
325         * method-to-ir.c: optimize array accesses from generic interfaces.
326
327 2010-04-06  Zoltan Varga  <vargaz@gmail.com>
328
329         * mini-llvm.c: Update after the memset/memcpy intrinsics changes in LLVM SVN.
330
331 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
332
333         * method-to-ir.c (mono_method_to_ir): Handle call to virtual final methods
334         of marshalbyref classes.
335
336         Fixes #515884.
337
338 2010-04-05 Rodrigo Kumpera  <rkumpera@novell.com>
339
340         * aot-compiler.c (emit_exception_debug_info): Encode try holes
341         information.
342
343         * aot-runtime.c (decode_exception_debug_info): Decode try holes
344         information.
345
346         * mini.h: Increase AOT version.
347
348 2010-04-04  Andreas Faerber  <andreas.faerber@web.de>
349
350         * mini-x86.h: Only enable soft debugger when using sigaction or on
351         Windows. Fixes build on Haiku (lacks siginfo_t).
352
353         Code is contributed under MIT/X11 license.
354
355 2010-04-02  Andreas Faerber  <andreas.faerber@web.de>
356
357         * mini.h, mini-x86.h: Suppress sigaction for Haiku, add support for
358         BeOS-style signal handlers.
359
360         Code is contributed under MIT/X11 license.
361         
362 2010-04-02  Zoltan Varga  <vargaz@gmail.com>
363
364         * mini-posix.c (sigusr1_signal_handler): Fix openbsd support.
365
366 2010-04-01 Rodrigo Kumpera  <rkumpera@novell.com>
367
368         * mini-exceptions.c: Fix win32 build.
369
370 2010-04-01  Mark Probst  <mark.probst@gmail.com>
371
372         * mini.c, driver.c: Call mono_gc_base_init() before
373         mono_debug_init().
374
375 2010-04-01  Sebastien Pouliot  <sebastien@ximian.com>
376
377         * method-to-ir.c (ensure_method_is_allowed_to_[access_field|
378         call_method]): Delegate the actual work in security-core-clr.c
379         to ease code sharing.
380
381 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
382
383         * decompose.c (mono_decompose_opcode): Set the cfg exception if the unsupported
384         float conv.ovf.un opcodes are encountered, instead of asserting later.
385         Fixes #566296.
386
387 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
388
389         * decompose.c (mono_decompose_opcode): Add OP_ICONV_TO_U4_UN as a no-op.
390
391         * iltests.il.in: Add a test.
392
393 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
394
395         * mini-amd64.c (mono_arch_emit_call): Fail compilation if an argument is too
396         large. Fixes #567040.
397
398         * method-to-ir.c: Call CHECK_CFG_EXCEPTION after emitting a call.
399
400 2010-04-01  Zoltan Varga  <vargaz@gmail.com>
401
402         * method-to-ir.c (handle_ccastclass): Call save_cast_details (). Fixes
403         #592711.
404
405 2010-03-31 Rolf Bjarne Kvinge <RKvinge@novell.com>
406
407         * mini-trampolines.c: Surround mono_handler_block_guard_trampoline and
408         mono_create_handler_block_trampoline with the proper #ifdef so that it
409         compiles on amd64.
410
411 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
412
413         * mini-exceptions.c: Introduce mono_walk_stack_full, which
414         allows to select if it's new or old context that is passed to 
415         the callback.
416
417         * mini-exceptions.c (mono_handle_exception_internal): Handle the
418         case when executing a guarded handler from the EH machinery.
419
420         * mini-exceptions.c (mono_install_handler_block_guard): New function
421         responsible for checking for handler blocks, installing the guard and
422         clearing abort state.
423
424         * mini-posix.c (sigusr1_signal_handler): Call mono_install_handler_block_guard
425         to check for handler blocks and skip interruption logic if one was found.
426
427         * mini-trampolines.c (mono_handler_block_guard_trampoline): Function called
428         by the handler block guard trampoline. Resumes interruption by raising the
429         pending ThreadAbortException.
430
431         * mini.c (create_jit_info): Calculate the end address of a finally block.
432
433         * mini-x86.c (mono_arch_install_handler_block_guard): Patch the return address
434         of a finally block to a specified address and return the old one.
435
436         * tramp-x86.c (mono_arch_create_handler_block_trampoline): The handler block
437         trampoline patches the original return address and calls the trampoline function.
438
439 2010-03-30  Zoltan Varga  <vargaz@gmail.com>
440
441         * mini-trampolines.c (mono_aot_trampoline): Remove some dead code.
442
443         * aot-runtime.c (mono_aot_patch_plt_entry): New helper function, which only
444         does the patching if the callee is in the same domain.
445
446         * aot-runtime.c mini-trampolines.c: Call mono_aot_patch_plt_entry instead
447         of mono_arch_patch_plt_entry ().
448
449 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
450
451         * mini.c (create_jit_info): Fix try block hole length encoding.
452
453 2010-03-30 Rodrigo Kumpera  <rkumpera@novell.com>
454
455         * mini.c (create_jit_info): Emit saner debug spew. Now it doesn't
456         duplicate information and print offsets instead of absolute addresses.
457
458 2010-03-29  Zoltan Varga  <vargaz@gmail.com>
459
460         * debugger-agent.c (jit_end): Send type loads for types loaded before the VMStart
461         event is sent. Fixes #591733.
462
463 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
464
465         * mini-posix.c (SIG_HANDLER_SIGNATURE): Handle the case when ctx is NULL on
466         OpenBSD.
467
468 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
469
470         * debugger-agent.c (mono_debugger_agent_init): Set the GC type of the
471         thread_to_tls hash table.
472
473         * image-writer.c (bin_writer_emit_writeout): Fix the size of the got.plt
474         section. Fixes #591000.
475
476 2010-03-26  Andreas Faerber  <andreas.faerber@web.de>
477
478         * Makefile.am (version.h): Check for pure .git directory only,
479         fixes SVN revision when using git without git-svn.
480
481         Contributed under MIT/X11 license.
482
483 2010-03-26  Zoltan Varga  <vargaz@gmail.com>
484
485         * aot-runtime.c: Apply some openbsd changes from openbsd ports.
486
487 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
488
489         * basic-simd.cs: Test for vector x scalar binary operators.
490
491 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
492
493         * simd-intrincs.c (simd_intrinsic_emit_binary): Support binary
494         intrinsics with expanded scalar arguments.
495
496 2010-03-24 Rodrigo Kumpera  <rkumpera@novell.com>
497
498         * mini-exceptions.c (get_exception_catch_class): Non catch clauses
499         don't have an exception class, so don't decode it. This would crash
500         with filter clauses.
501
502 2010-03-24  U-anarquia\miguel  <miguel@anarquia>
503
504         Make sure that trunk builds with DISABLE_JIT, an update to the
505         PlayStation 3 port.
506         
507         * mini.c (mini_get_shared_method): this code seems to be necessary
508         regardless of whether DISABLE_JIT has been defined.
509
510         (mono_jit_compile_method_inner): it seems that this method is
511         required even in full AOT mode, so ifdef out only the pieces that
512         try to genrate code (the body of code that applies patches to the
513         code).  
514
515         (mini_method_compile): do not compile when using DISABLE_JIT.
516
517         * mini-ppc.c (mono_arch_get_allocatable_int_vars)
518         (mono_arch_output_basic_block, mono-arch_emit_exceptions): Do not
519         compile when DISABLE_JIT is set.
520
521 2010-03-24  Mark Probst  <mark.probst@gmail.com>
522
523         * mini.c (mono_create_tls_get): Only create a TLS operation if the
524         arch really supports it.
525
526 2010-03-24  Mark Probst  <mark.probst@gmail.com>
527
528         * mini-x86.c, mini-x86.h, mini.c: CEE_MONO_TLS support for Darwin/x86.
529
530 2010-03-23  Neale Ferguson <neale@sinenomine.net>
531
532         * exceptions-s390x.c: Add support for
533         mono_arch_get_throw_corlib_exception and fix throw by name.
534
535         * mini-s390x.c: Add IMT support; Fix stack parameter passing
536         logic (especially for varargs); Correct localloc sizing; Add
537         mono_arch_get_this_arg_from_call and
538         mono_arch_get_this_arg_from_call.
539
540         * mini-s390x.h: Add support for facility list extraction;
541         Correct/update MONO_ARCH_xxx settings.
542
543         * mini-s390.c: Minor corrections to instruction output for
544         varargs. No IMT implementation - I think it's time to deprecate
545         s390 and just leave s390x.
546
547         * tramp-s390x.c: Correct creation of trampoline instruction
548
549
550         * cpu-s390x.md: Update some instruction lengths
551
552 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
553
554         * mini-generic-sharing.c (fill_in_rgctx_template_slot): Remove an assert which
555         can be hit with partial sharing.
556
557         * mini-generic-sharing.c (get_shared_class): Handle partially shared methods
558         in non-shared classes correctly.
559         (generic_inst_is_sharable): Allow all primitive types in partial sharing.
560         Turn on partial sharing.
561
562 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
563
564         * mini-amd64.h: Put back MONO_ARCH_NOMAP32BIT for OpenBSD which was removed
565         by mistake.
566
567 2010-03-23  Zoltan Varga  <vargaz@gmail.com>
568
569         * method-to-ir.c (mono_method_to_ir): Handle the failure of
570         mono_method_signature ().
571
572         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
573
574         * mini.c (mini_method_compile): Get the signature of cfg->method early with
575         error checking, so later calls do not need error checking.
576
577 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
578
579         * exceptions-amd64.c: Add support for OpenBSD which has no UCONTEXT_GREGS.
580
581         * mini-amd64.h: Enable MONO_ARCH_USE_SIGACTION on OpenBSD as well.
582
583 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
584
585         * mini-exceptions.c (mono_handle_exception_internal): Don't
586         check try_end for archs different than s390. 
587
588         * mini.c (create_jit_info): Don't crash if the finallt block is the
589         last one.
590
591 2010-03-22 Rodrigo Kumpera  <rkumpera@novell.com>
592
593         * driver.c (mono_main): Don't free global codeman under linux since
594         glic now peeks at code on stack for more archs than just amd64.
595
596 Mon Mar 22 18:09:09 CET 2010 Paolo Molaro <lupus@ximian.com>
597
598         * mini.c, method-to-ir.c: changes to support compressed interface
599         bitmaps.
600
601 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
602
603         * mini-x86.h: Applied patch from Robert Nagy (Robert@openbsd.org).
604         Use sigaction on OpenBSD too.
605
606 2010-03-22  Zoltan Varga  <vargaz@gmail.com>
607
608         * debugger-agent.c (event_req_matches_assembly): Handle request modifiers too.
609
610 2010-03-21  Andreas Faerber  <andreas.faerber@web.de>
611
612         * debugger-agent.c: #include sys/select.h for fd_set.
613
614         Code is contributed under MIT/X11 license.
615
616 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
617
618         * mini.c (SIG_HANDLER_SIGNATURE): Fix the build on platforms without sigaction
619         (openbsd+amd64 ?).
620
621 2010-03-21  Zoltan Varga  <vargaz@gmail.com>
622
623         * mini-ppc.c (mono_arch_emit_exceptions): Avoid an assert in ppc_patch () for
624         some large methods with lots of exception handlers. Fixes #440924.
625
626 Sat Mar 20 11:56:24 CET 2010 Paolo Molaro <lupus@ximian.com>
627
628         * method-to-ir.c: remove code duplication for interface checks.
629
630 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
631
632         * debugger-agent.c (clear_event_requests_for_assembly): New helper function.
633         (assembly_unload): Clear all event requests referencing the to-be unloaded
634         assembly.
635
636
637 Fri Mar 19 16:45:20 CET 2010 Paolo Molaro <lupus@ximian.com>
638
639         * mini.h, mini-exceptions.c: restore the state of the stack
640         guard page permissions.
641
642 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
643
644         * mini-trampolines.c (common_call_trampoline): Remove the condition guarding the
645         call site patching code, it doesn't appear to be needed.
646
647 2010-03-19  Zoltan Varga  <vargaz@gmail.com>
648
649         * mini-generic-sharing.c: Add infrastructure for partial sharing, ie.
650         sharing generic methods whose type arguments are a mix of reference and
651         non-reference types. Not yet turned on.
652
653         * mini.c (mini_get_shared_method): New helper function to return
654         the method which will be compiled/registered in the JIT tables when doing
655         generic sharing.
656         (mono_domain_lookup_shared_generic): Moved to mini.c from mini-generic-sharing.c,
657         use mini_get_shared_method ().
658
659         * mini.c (mini_method_compile): Register the same method which is compiled when
660         doing generic sharing.
661
662         * mini.c aot-compiler.c aot-runtime.c: Add support for partial sharing.
663
664         * generics.cs: Add partial sharing tests.
665
666 2010-03-17 Jerry Maine  <crashfourit@gmail.com>
667
668         * mini.h : Changed the SIMD_VERSION* enum values to match those in Mono.Simd.AccelMode.
669                    Add an enum value that or's all possable values together. Add an enum value
670                    that marks the end of the used bit indexes.
671
672         * mini-amd64.c : Make changes to match the changes in mini.h 
673
674         * mini-x86.c : Make changes to match the changes in mini.h
675
676         * simd-intrinsics.c : Reorder the SimdIntrinsc struct to add more bits to
677                    simd_version to support more simd versions. Changed the name of
678                    simd_version to simd_version_flags to make it more intuitive that
679                    it now contains bit flags. Reordered the *_intrinsics arrays to
680                    match the changes above. Changed emit_intrinsics() to use the new
681                    setup mentioned above.
682
683         Code is contributed under MIT/X11 license.
684
685 2010-03-17 Rodrigo Kumpera  <rkumpera@novell.com>
686
687         * mini-*.c (mono_arch_output_basic_block): Record try block holes on all
688         remaining archs. Alpha and hppa maintainers, please stand up.
689
690 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
691
692         * mini-ppc.c (mono_arch_build_imt_thunk): Always save and restore r11 since it
693         is needed even when fail_tramp!=NULL.
694
695 2010-03-17  Zoltan Varga  <vargaz@gmail.com>
696
697         * debugger-agent.c (insert_breakpoint): Write a log message.
698
699 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
700
701         * iltests.il.in: Add a few tests for LEAVE going over multiple
702         finally clauses.
703
704 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
705
706          * mini-x86.c (mono_arch_output_basic_block): Record try block holes.
707
708 2010-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
709
710         * mini.h (MonoBasicBlock): Add native_length field.
711         * mini.h (MonoCompile): Add try_block_holes field.
712         * mini.h (MonoInst): Add exception_clause pointer to
713         the data union.
714
715         * mini.c (mono_codegen): Calculate MonoBasicBlock::native_length.
716         * mini.c (mono_cfg_add_try_hole): New function to register possible
717         holes in try blocks.
718         * mini.c (create_jit_info): Fill in the holes information.
719
720         * mini-exceptions.c: Verify for holes when checking if an IP is covered
721         by a try block.
722
723         * method-to-ir.c: Add the EH clause to the CALL_HANDLE instruction.
724
725 Tue Mar 16 13:16:16 CET 2010 Paolo Molaro <lupus@ximian.com>
726
727         * jit-icalls.c: adjusted for the array API changes.
728
729 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
730
731         * iltests.il.in: Disable the fconv_to_i test on sparc too.
732
733 2010-03-16  Zoltan Varga  <vargaz@gmail.com>
734
735         * debugger-agent.c: Simplify the way breakpoints are processed by removing
736         the 'pending' flag. This fixes support for appdomains too.
737
738
739 Mon Mar 15 18:25:49 CET 2010 Paolo Molaro <lupus@ximian.com>
740
741         * mini-amd64.c, mini-ia64.c: remove direct access to method->header.
742
743 2010-03-12  Zoltan Varga  <vargaz@gmail.com>
744
745         * simd-intrinsics.c (simd_intrinsic_emit_getter): Don't emit shuffle opcodes
746         when using LLVM, LLVM generates it itself when needed.
747
748         * mini-llvm-cpp.cpp (mono_llvm_build_aligned_load): New helper function.
749
750         * mini-llvm.c: Use an unaligned load for OP_LOADX_MEMBASE. Add zero extension
751         to some OP_EXTRACT_ opcodes. Fix the naming of some sse intrinsics. Fix
752         OP_ANDNPS/OP_ANDNPD.
753
754 2010-03-11  Zoltan Varga  <vargaz@gmail.com>
755
756         * tramp-x86.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code' for
757         the pc instead of 'buf'. Fix the call to mono_arch_flush_icache ().
758         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
759
760 2010-03-11  Martin Baulig  <martin@ximian.com>
761
762         * debugger-agent.c (type_commands): Add NULL check to
763         `CMD_TYPE_GET_SOURCE_FILES'.
764
765 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
766
767         * mini-ppc.c (mono_arch_decompose_opts): Fix OP_ICONV_TO_R_UN when cross-compiling.
768
769 2010-03-09  Zoltan Varga  <vargaz@gmail.com>
770
771         * mini-codegen.c (mono_peephole_ins): Fix the OP_FMOVE optimization. Fixes
772         #586664.
773
774         * iltests.il.in: Add a test.
775
776 2010-03-05  Martin Baulig  <martin@ximian.com>
777
778         Add support for aborting invocations.
779
780         * debugger-agent.c
781         (InvokeData): Added `InvokeData *last_invoke'.
782         (DebuggerTlsData): Renamed `invoke' into `pending_invoke' and
783         added a new `invoke' field to keep the `InvokeData *' throughout
784         the invocation.
785         (ErrorCode): Added `ERR_NO_INVOCATION'.
786         (CmdVM): Added `CMD_VM_ABORT_INVOKE'.
787         (mono_debugger_agent_handle_exception): Don't report any exception
788         if an abort was requested.
789         (invoke_method): Store the `InvokeData *' in `tls->invoke'; reset
790         a thread abort if necessary.
791         (vm_commands): Implement `CMD_VM_ABORT_INVOKE'.
792
793 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
794
795         * method-to-ir.c: Store the initial basic block returned by mono_basic_block_split
796         so we can release the whole list and not just the first one. Free
797         it in more places as well.
798
799 2010-03-08  Rodrigo Kumpera  <rkumpera@novell.com>
800
801         * method-to-ir.c: Revert r153222 as it doesn't belong here.
802
803 Mon Mar 8 17:58:26 CET 2010 Paolo Molaro <lupus@ximian.com>
804
805         * mini.h, *.c: prepare for MonoMethodHeader to become a transient entity.
806
807 Mon Mar 8 17:35:26 CET 2010 Paolo Molaro <lupus@ximian.com>
808
809         * driver.c: report also other misc build options.
810
811 2010-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
812
813         * method-to-ir.c: Generate better code for the NewObject
814         intrinsic.
815         
816 2010-03-07  Zoltan Varga  <vargaz@gmail.com>
817
818         * branch-opts.c (mono_if_conversion): Disable one of the cases when deadce
819         is disabled. Fixes #582322.
820
821         * iltests.il.in: Add a test.
822
823 2010-03-06  Zoltan Varga  <vargaz@gmail.com>
824
825         * tramp-amd64.c (mono_arch_create_monitor_exit_trampoline_full): Delegate
826         the handling of obj->synchronization == null and owner != current thread to
827         mono_monitor_exit ().
828
829         * tramp-x86.c (mono_arch_create_monitor_exit_trampoline_full): Ditto.
830
831
832 Sat Mar 6 18:14:15 CET 2010 Paolo Molaro <lupus@ximian.com>
833
834         * mini.c: change the way emulated opcode info is stored and save about
835         4 KB of runtime memory.
836
837 2010-03-04  David S. Miller  <davem@davemloft.net>
838
839        * mini-sparc.h: Always use MONO_ARCH_USE_SIGACTION.  Linux kernels
840        that don't provide the siginfo in the second signal handler argument
841        are buggy, and this has been fixed for years.
842        * mini.h (GET_CONTEXT): Remove __sparc__ special case.
843        (SIG_HANDLER_SIGNATURE, SIG_HANDLER_PARMS): Likewise.
844
845 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
846
847         * aot-runtime.c (find_symbol): Fix a leak.
848         (decode_patch): Ditto.
849
850 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
851
852         * mini.h (MONO_INST_IS_TEMP): Kill this unused define.
853
854 2010-03-04  Zoltan Varga  <vargaz@gmail.com>
855
856         * mini.c (mono_resolve_patch_target): Fix an uninitialized variable.
857
858 Wed Mar 3 19:19:21 CET 2010 Paolo Molaro <lupus@ximian.com>
859
860         * method-to-ir.c: MONO_PROFILE_STRING_ALLOC is dead.
861
862 2010-03-03  Rodrigo Kumpera  <rkumpera@novell.com>
863
864         * method-to-ir.c (mono_method_to_ir): Don't create a runtime vtable
865         to check for errors, it's enough to create the metadata open.
866
867         Fixes #562150
868
869 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
870
871         * trace.c|h:
872         * mini-exceptions.c: Add support for printing stack traces when handling
873         exceptions, and when printing exceptions thrown while tracing also print
874         the exception message.
875
876 2010-03-03  Rolf Bjarne Kvinge  <RKvinge@novell.com>
877
878         * trace.c: We need to parse exclude tokens ('-') before string tokens,
879         since the exclude token is a valid string character.
880
881 2010-03-02  Levi Bard  <levi@unity3d.com>
882
883         * debugger-agent.c: Invalidate thread stacks on domain unload.
884
885 2010-03-02  Mark Probst  <mark.probst@gmail.com>
886
887         * method-to-ir.c: Emit dummy_use for stored reference after write
888         barriers to make sure the object is pinned if the GC interrupts
889         before the write barrier is done.
890
891 2010-03-02  Zoltan Varga  <vargaz@gmail.com>
892
893         * cpu-<ARCH>.md: dummy_use was missing src1:i.
894
895 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
896
897         * debugger-agent.c: Add a log message printing the protocol version.
898
899 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
900
901         * debugger-agent.c: Add a new command to communicate the protocol version used
902         by the client. This could be used to allow newer runtimes to communicate with
903         older clients.
904
905 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
906
907         * debugger-agent.c (domain_commands): Add a new command to create a boxed value.
908
909 2010-03-01  Zoltan Varga  <vargaz@gmail.com>
910
911         * debugger-agent.c (type_commands): Fix the setting of fields with a reference
912         type.
913
914 Mon Mar 1 15:20:44 CET 2010 Paolo Molaro <lupus@ximian.com>
915
916         * mini-arm.c: make the arm cpu arch configurable with the
917         MONO_CPU_ARCH env var (for example: "armv4 thumb").
918         Bug #584198.
919
920 Mon Mar 1 14:48:35 CET 2010 Paolo Molaro <lupus@ximian.com>
921
922         * mini.c, mini.h, driver.c: added the --jitmap option to enable
923         support for the perf tool on Linux.
924
925 Mon Mar 1 14:43:55 CET 2010 Paolo Molaro <lupus@ximian.com>
926
927         * method-to-ir.c: make string.InsertenalSetChar() specialization
928         effective.
929
930 2010-03-01  Robert Jordan  <robertj@gmx.net>
931
932         * Makefile.am: fix the non-static build.
933
934 2010-02-26  Zoltan Varga  <vargaz@gmail.com>
935
936         * mini-generic-sharing.c: Move the contents of ../metadata/generic-sharing.c
937         here.
938
939 2010-02-26  Robert Jordan  <robertj@gmx.net>
940
941         * tasklets.c (continuation_store): Return from an error condition
942         immediately.
943
944 2010-02-26  Martin Baulig  <martin@ximian.com>
945
946         * debug-debugger.c (MonoDebuggerInfo): Added `abort_runtime_invoke'.
947
948         * debug-mini.c
949         (MonoDebuggerThreadInfo): Added `internal_flags'.
950         (MonoDebuggerInternalThreadFlags): New enum.
951         (_mono_debugger_throw_exception): Don't signal the debugger if a
952         type abort was requested.
953         (_mono_debugger_unhandled_exception): Likewise.
954         (mono_debugger_abort_runtime_invoke): New method to abort an invocation.
955         (mono_debugger_runtime_invoke): If the debugger requested a thread
956         abort during the invocation, reset it here.
957
958 2010-02-26  Martin Baulig  <martin@ximian.com>
959
960         * debug-mini.c (MonoDebuggerThreadInfo): Use `MonoInternalThread *'
961         instead of `MonoThread *'.
962
963 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
964
965         * aot-runtime.c (mono_aot_find_jit_info): Use a merge sort for sorting the
966         code offsets table, as it is mostly sorted.
967
968 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
969
970         * debugger-agent.c (do_invoke_method): Fix invoking of static methods on vtypes.
971         Fixes #582991.
972
973 2010-02-25  Zoltan Varga  <vargaz@gmail.com>
974
975         * driver.c (mono_main): Get rid of mono_setup_vtable_in_class_init.
976
977 Wed Feb 24 15:58:03 CET 2010 Paolo Molaro <lupus@ximian.com>
978
979         * Makefile.am: build the new ABI version of the libmono library.
980         * debugger-agent.c, mini.c: fix warnings with the new API.
981         * jit.h: don't depend on glib.h being included.
982
983 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
984
985         * method-to-ir.c (mono_method_to_ir): Implement AOT support for fast TLS access.
986
987 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
988
989         * method-to-ir.c (mono_method_to_ir): Implement support for fast access to
990         ThreadStatic variables.
991
992 2010-02-24  Zoltan Varga  <vargaz@gmail.com>
993
994         * debugger-agent.c (notify_thread): Skip terminated threads, since their tls
995         data is not freed yet. Fixes #582460.
996
997 2010-02-23  Zoltan Varga  <vargaz@gmail.com>
998
999         * debugger-agent.c: Add support for the caught/uncaught flags on exception
1000         event requests. Bump protocol minor version.
1001
1002 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1003
1004         * decompose.c (mono_decompose_long_opts): Handle OP_LCONV_TO_OVF_I8 here too.
1005
1006 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1007
1008         * decompose.c (mono_decompose_opcode): Handle OP_LCONV_TO_OVF_I8. Fixes
1009         #581950.
1010
1011         * iltests.il.in: Add a test.
1012
1013 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1014
1015         * mini.c (inline_method): Check for loader errors.
1016
1017 2010-02-22  Rodrigo Kumpera  <rkumpera@novell.com>
1018
1019         * mini.c (mono_method_check_inlining): Use !mono_method_get_header_summary
1020         instead of mono_method_get_header as it doesn't decode locals
1021         so the called method can have unresolved dependencies that will only
1022         be satisfied after the current method is JIT'd.
1023
1024         Fixes #550968.
1025
1026 2010-02-22  Zoltan Varga  <vargaz@gmail.com>
1027
1028         * basic.cs (test_0_div_opt): Speed this up a bit.
1029
1030 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1031
1032         * mini-amd64.c: Fix DISABLE_JIT support after the latest changes.
1033
1034         * mini.c (mono_jit_create_remoting_trampoline): Call
1035         mono_create_specific_trampoline () instead of
1036         mono_arch_create_specific_trampoline ().
1037
1038         * mini-trampolines.c tramp-arm.c: Disable more stuff when DISABLE_JIT is set.
1039
1040 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1041
1042         * unwind.c (mono_unwind_get_cie_program): New function, moved here from
1043         aot-compiler.c, so it can be found even if DISABLE_JIT is set.
1044
1045         * aot-compiler.c xdebug.c: Update callers of mono_arch_unwind_get_cie_program ().
1046
1047         * mini-amd64.c: Fix DISABLE_JIT support.
1048
1049 2010-02-20  Geoff Norton  <gnorton@novell.com>
1050
1051         * aot-runtime.c: Ensure we dont leak a held lock when unwinding exceptions.
1052
1053 2010-02-20  Zoltan Varga  <vargaz@gmail.com>
1054
1055         * debugger-agent.c (mono_debugger_agent_handle_exception): Receive two contexts,
1056         one for the throw and one for the catch. Mark uncaught exceptions by a NULL
1057         CATCH_TXT. Send normal exception events for unhandled exceptions too.
1058         (mono_debugger_agent_handle_unhandled_exception): Remove this, merged into
1059         handle_exception.
1060
1061 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1062
1063         * exceptions-x86.c (mono_arch_get_restore_context): Changes this so it restores
1064         edx/ecx too. This is needed to support OP_SEQ_POINT.
1065
1066 2010-02-18  Zoltan Varga  <vargaz@gmail.com>
1067
1068         * exceptions-amd64.c (get_throw_trampoline): Add xdebug info.
1069
1070         * method-to-ir.c (mono_method_to_ir): Fix SIZEOF in dynamic methods.
1071
1072 2010-02-16  Zoltan Varga  <vargaz@gmail.com>
1073
1074         * mini-llvm.c aot-compiler.c aot-runtime.c unwind.c: Finish support
1075         LLVM+AOT+exceptions, not enabled yet.
1076
1077 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1078
1079         * mini.c (SIG_HANDLER_SIGNATURE): Fix the windows build.
1080
1081 2010-02-15  Zoltan Varga  <vargaz@gmail.com>
1082
1083         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Emit
1084         xdebug info for these.
1085
1086         * mini-trampolines.c (common_call_trampoline): Use mini_jit_info_table_find ()
1087         in a few places.
1088
1089         * mini.c (mini_get_vtable_trampoline): Make this take a 'slot_index' argument,
1090         not used yet.
1091
1092 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1093
1094         * aot-compiler.c (load_profile_files): Update after the profiler changes.
1095
1096 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1097
1098         * mini.c (mono_jit_compile_method_inner): Avoid passing icall wrappers to
1099         mono_profiler_method_end_jit, since the profiler has no way to process wrappers.
1100
1101         * aot-runtime.c mini.c: Resurrect the aot pagefault profiling stuff, it is useful
1102         for mtouch.
1103
1104 2010-02-13 Gonzalo Paniagua Javier <gonzalo@novell.com>
1105
1106         * debugger-agent.c: handle incomplete reads and EINTR in
1107         recv()/send(). This could have been causing random
1108         disconnections.
1109
1110 2010-02-13  Zoltan Varga  <vargaz@gmail.com>
1111
1112         * aot-runtime.c (decode_exception_debug_info): Fix aot support for sequence
1113         points.
1114
1115         * mini-arm.c (mono_arch_allocate_vars): Allocate the seq point related vars first
1116         so they have small offsets. Fixes #566311.
1117
1118 2010-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
1119
1120         * method-to-ir.c (mono_method_check_inlining): Check for loader errors.
1121
1122 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1123
1124         * mini-amd64.c: Remove the special casing of byref in a few places now that
1125         mini_type_get_underlying_type () handles it.
1126
1127         * mini-generic-sharing.c (mini_type_get_underlying_type): Handle byref as well
1128         by returning native int. Fixes #577984.
1129
1130 2010-02-11  Zoltan Varga  <vargaz@gmail.com>
1131
1132         * method-to-ir.c (handle_isinst): Factor out the is_complex_isinst check into
1133         a macro.
1134
1135         * mini-llvm.c (exception_cb): Put the clause index into the type info instead
1136         of putting the clause itself.
1137
1138         * mini-arm.c mini.c linear-scan.c: Disable more stuff when DISABLE_JIT is used.
1139
1140 2010-02-09  Zoltan Varga  <vargaz@gmail.com>
1141
1142         * unwind.c (mono_unwind_frame): Use read32 for reading a 32 bit value, since it
1143         might be unaligned.
1144
1145 2010-02-10  Geoff Norton  <gnorton@novell.com>
1146
1147         * aot-compiler.c: Make the number of IMT trampolines configurable as well.
1148
1149 2010-02-08  Zoltan Varga  <vargaz@gmail.com>
1150
1151         * aot-compiler.c (emit_code): Create the ut trampolines here, so they work for
1152         llvm methods too.
1153
1154         * aot-compiler.c (emit_code): Don't add the llvm label prefix to 'methods', since
1155         it is not an LLVM generated symbol.
1156
1157         * mini-llvm.c (emit_entry_bb): Fix the handling of simd types.
1158
1159         * method-to-ir.c (handle_castclass): Turn off the more efficient isinst/castclass
1160         implementation in gshared mode because it causes regressions.
1161
1162         * mini-trampolines.c: Add a stat for the number of calls to trampolines.
1163
1164         * image-writer.c (asm_writer_emit_global): Don't prepend the global prefix, it
1165         should be done by the caller.
1166
1167         * mini-llvm.c (mono_llvm_emit_method): Don't make the debug symbols global.
1168
1169         * aot-compiler.c (emit_code): Add the llvm label prefix before 'methods'.
1170
1171         * mini-exceptions.c (mini_jit_info_table_find): Search the root domain as well,
1172         since mono_jit_info_table_find () doesn't do it anymore.
1173
1174         * mini-generic-sharing.c debugger-agent.c: Call mini_jit_info_table_find ()
1175         instead of mono_jit_info_table_find ().
1176
1177 2010-02-07  Zoltan Varga  <vargaz@gmail.com>
1178
1179         * aot-compiler.c aot-runtime.c: Add support for MONO_WRAPPER_WRITE_BARRIER.
1180
1181         * aot-compiler.c (encode_method_ref): Update after the removal of
1182         mono_gc_get_managed_allocator_type ().
1183
1184         * method-to-ir.c (mono_method_to_ir): Place a seq point just before a RET.
1185         Fixes #564538.
1186
1187 2010-02-06  Zoltan Varga  <vargaz@gmail.com>
1188
1189         * method-to-ir.c (handle_castclass): Use the icall for classes with variant
1190         generic params as well.
1191         (handle_isinst): Ditto.
1192
1193         * method-to-ir.c: Make isninst/castclass checks in gshared code more efficient
1194         instead of always calling an icall.
1195
1196         * aot-compiler.c (emit_llvm_file): Take into account trampolines etc when
1197         computing the size of the got.
1198
1199         * aot-compiler.c (emit_code): Change the way the 'methods' symbol is emitted
1200         when using LLVM. Instead of emitting it as an LLVM method, emit it using
1201         the assembly directive '.set' so it points to the first LLVM emitted method.
1202
1203 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1204
1205         * mini.c (mini_method_verify): Report the method which failed to verify.
1206
1207 2010-02-04  Rodrigo Kumpera  <rkumpera@novell.com>
1208
1209         * method-to-ir.c (mono_method_to_ir): Use the new basic block formation pass
1210         to avoid JIT'ng dead basic blocks. This is the same behavior as the
1211         runtime MS verifier.
1212
1213 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1214
1215         * debugger-agent.c (decode_value): Fix decoding of vtype instances. Fixes
1216         #561962.
1217
1218 2010-02-04  Zoltan Varga  <vargaz@gmail.com>
1219
1220         * mini-llvm.c: Init the jit module only when first JITting.
1221
1222         * aot-compiler.c (emit_plt): Fix the naming of plt entries of llvm+darwin.
1223
1224         * mini-llvm.c (get_plt_entry): Make the plt entries have hidden visibility.
1225
1226         * mini-llvm.c (mono_llvm_emit_aot_module): Remove the dummy got after it is
1227         replaced with the real got.
1228
1229         * debugger-agent.c (type_commands): Return the enumness if the type as well.
1230
1231         * image-writer.c: Reduce the amount of #ifdefs a bit.
1232
1233         * aot-compiler.c: Reduce the amount of #ifdefs. Add beginnings of support for
1234         llvm on darwin/arm.
1235
1236         * aot-compiler.c (mono_compile_assembly): Handle asmonly+llvm mode.
1237
1238         * mini-llvm.c (mono_llvm_emit_method): Don't make the 'type_info' symbols
1239         global.
1240
1241 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1242
1243         * mini-llvm.c (mono_llvm_emit_method): Add support for unaligned loads.
1244         (mono_llvm_emit_method): Fix unaligned stores too.
1245
1246         * mini-amd64.c (mono_arch_emit_prolog): Initialize lmf->rsp in the prolog too
1247         so async stack walks don't crash.
1248
1249 2010-02-02  Zoltan Varga  <vargaz@gmail.com>
1250
1251         * mini-trampolines.c (common_call_trampoline): Fix a problem where the callsite
1252         was not patched if the callee needed an rgctx trampoline.
1253
1254 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1255
1256         * mini-ppc.c (mono_arch_get_global_int_regs): Reserve r29 for holding the
1257         vtable address in AOT code.
1258
1259 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1260
1261         * mini-codegen.c: Remove support for CEE_ opcodes which cannot occur in
1262         MonoInst's.
1263
1264 Mon Feb 1 16:29:10 CET 2010 Paolo Molaro <lupus@ximian.com>
1265
1266         * genmdesc.pl: remove dependency on external cpp.
1267
1268 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1269
1270         * method-to-ir.c (mini_emit_ldelema_1_ins): Avoid emitting an OP_SEXT_I4 when
1271         using LLVM, its not needed, and abcrem can't handle it.
1272
1273 Mon Feb 1 14:29:43 CET 2010 Paolo Molaro <lupus@ximian.com>
1274
1275         * genmdesc.c, genmdesc.pl, cpu-x86.md: introduced templates to make
1276         it easier to group instructions and reduce duplication.
1277
1278 2010-02-01  Zoltan Varga  <vargaz@gmail.com>
1279
1280         * decompose.c: Move the array/soft float decompose routines here from
1281         method-to-ir.c.
1282
1283         * method-to-ir.c: Export a few functions so they can be used from decompose.c.
1284
1285 2010-01-31  Zoltan Varga  <vargaz@gmail.com>
1286
1287         * mini-llvm.c (mono_llvm_emit_method): Add a call to llvm.invariant.start
1288         to tell LLVM that the got is constant, not used yet.
1289
1290         * aot-compiler.c: Pass more optimization flags to llvm's 'opt'.
1291
1292 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1293
1294         * mini-ppc.c (mono_arch_emit_prolog): Fix full aot support for native to
1295         managed wrappers.
1296
1297 2010-01-30  Zoltan Varga  <vargaz@gmail.com>
1298
1299         * aot-compiler.c (add_wrappers): Commit the hack which generates
1300         native-to-managed wrappers for methods decorated with the MonoPInvokeCallback
1301         custom attribute.
1302
1303 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1304
1305         * mini.h (MONO_INST_FAULT): New instruction flag for loads which can cause
1306         a fault, only used by the LLVM backend.
1307
1308         * ir-emit.h: Add _FAULT variants of the LOAD_MEMBASE macros. Mark
1309         OP_CHECK_THIS with OP_IMPLICIT_EXCEPTION.
1310
1311         * method-to-ir.c: Use the new LOAD_MEMBASE_FAULT opcodes, get rid of the
1312         calls to MONO_EMIT_NULL_CHECK which is automatically done by the new macros.
1313
1314         * mini-llvm.c: Only generate volatile loads from load instructions which have
1315         the MONO_INST_FAULT flag set.
1316
1317 2010-01-29  Zoltan Varga  <vargaz@gmail.com>
1318
1319         * unwind.c (mono_unwind_decode_fde): Fix the decoding of the LSDA offset on
1320         64 bit platforms.
1321
1322 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1323
1324         * mini.c (mono_save_seq_point_info): Fix the handling of bblocks without
1325         sequence points. Fixes #571236.
1326
1327 2010-01-28  Zoltan Varga  <vargaz@gmail.com>
1328
1329         * debugger-agent.c (mono_debugger_agent_init): Call appdomain_unload at the
1330         end of the appdomain unload process, after assemblies have been unloaded.
1331         Fixes #574842.
1332
1333 2010-01-27  Zoltan Varga  <vargaz@gmail.com>
1334
1335         * abcremoval.c (process_block): Fix the if (region) check so abcrem actually
1336         works.
1337
1338         * mini-amd64.c: Make the soft debugger work on platforms without MAP_32BIT.
1339         Fixes #573988.
1340
1341 2010-01-26  Zoltan Varga  <vargaz@gmail.com>
1342
1343         * dwarfwriter.c (emit_type): Treat MONO_TYPE_PTR as 'I' not 'I4'.
1344
1345 2010-01-26  Geoff Norton  <gnorton@novell.com>
1346
1347         * aot-compiler.c: Fix a logic error introduced when guarding against enums
1348         with struct marshalability.
1349
1350 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1351
1352         * mini.c (mini_method_compile): Improve the processing MONO_VERBOSE_METHOD so
1353         it supports class names as well.
1354
1355         * mini.h (MonoCompile): Add a few flags to control JIT behavior which are
1356         needed by the GC map code.
1357
1358         * mini.c (mini_method_compile): Call a function in mini-gc.c to set the new
1359         flags if needed.
1360
1361         * method-to-ir.c (mono_method_to_ir): Emit initialization code for ref variables
1362         if cfg->init_ref_vars is set.
1363
1364         * liveness.c (optimize_initlocals): Disable the initlocals opt for ref vars if
1365         cfg->disable_initlocals_op_refs is set.
1366
1367         * method-to-ir.c (mono_spill_global_vars): Compute more precise live ranges
1368         using liveness info if cfg->compute_precise_live_ranges is set.
1369
1370         * mini-gc.c: Ongoing work. Improve logging and debugging support. Handle
1371         volatile variables correctly. Add comments about the live ranges. Not enabled
1372         yet.
1373
1374 2010-01-24  Zoltan Varga  <vargaz@gmail.com>
1375
1376         * mini.h (MonoDebugOptions): Add an option to init stack frames by writing
1377         0x2a into them in method prologs.
1378
1379         * mini-amd64.c (mono_arch_emit_prolog): Implement it.
1380
1381 2010-01-22  Zoltan Varga  <vargaz@gmail.com>
1382
1383         * mini-llvm-cpp.cpp: Remove uses of dynamic_cast, it no longer works with llvm
1384         classes, since llvm is compiled with -fno-rtti.
1385
1386         * mini.h (COMPILE_SOFT_FLOAT): New macro, similar to COMPILE_LLVM.
1387
1388         * method-to-ir.c ir-emit.h: Use if (COMPILE_SOFT_FLOAT) in a few places since
1389         llvm does not require it.
1390
1391         * aot-runtime.c (load_method): Print the full name of the last aot method.
1392
1393 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1394
1395         * exceptions-amd64.c (mono_arch_notify_pending_exc): Avoid a crash if the
1396         thread has not fully started yet.
1397
1398 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1399
1400         * aot-compiler.c (can_marshal_struct): Allow marshalling enums.
1401
1402 2010-01-21  Miguel de Icaza  <miguel@novell.com>
1403
1404         * driver.c: Do not abort if LLVM is not supported, print a
1405         warning and add the information to the Mono JIT information.
1406
1407 2010-01-21  Zoltan Varga  <vargaz@gmail.com>
1408
1409         * ir-emit.h (MONO_EMIT_NULL_CHECK): Don't emit an OP_IMPLICIT_EXCEPTION when
1410         using explicit null checks.
1411
1412 2010-01-20  Zoltan Varga  <vargaz@gmail.com>
1413
1414         * xdebug.c: New file extracted from aot-compiler.c, containing the XDEBUG
1415         related code.
1416
1417         * aot-compiler.c (encode_method_ref): Use mono_marshal_wrapper_info_from_wrapper
1418         () in one place.
1419         (mono_aot_wrapper_name): Remove the special handling of delegate invoke wrappers,
1420         its no longer needed.
1421
1422         * method-to-ir.c (mono_method_to_ir): Fix a warning.
1423
1424         * exceptions-<ARCH>.c: Introduce a MONO_ARCH_HAVE_THROW_EXCEPTION_BY_NAME
1425         define for platforms still using it (s390). Get rid of the
1426         mono_arch_get_throw_exception_by_name () routines on all other platforms.
1427
1428         * exceptions-x86.c: Rework the throw trampolines so there is only one function
1429         which can generate throw/rethrow/corlib trampolines for llvm/not llvm code.
1430
1431         * exceptions-x86.c: Add LLVM specific throw trampolines which doesn't assume
1432         the caller pushed the arguments.
1433
1434         * mini-llvm.c: Enable throwing exceptions on x86.
1435
1436         * mini-posix.c (SIG_HANDLER_SIGNATURE): Avoid
1437         "Thread (nil) may have been prematurely finalized" messages if this is called
1438         on a thread not registered with the runtime.
1439
1440         * mini-exceptions.c (mono_handle_native_sigsegv): Ditto.
1441
1442 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1443
1444         * jit-icalls.c (mono_array_new_3): New jit icall.
1445
1446         * aot-compiler.c aot-runtime.c: Add support for ElementAddr wrappers.
1447
1448         * arrays.cs: Add a test for 3 dimensional arrays.
1449
1450 2010-01-19  Zoltan Varga  <vargaz@gmail.com>
1451
1452         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Emit xdebug info.
1453         (mono_arch_find_jit_info_ext): Disable the popping of arguments when LLVM is
1454         used.
1455
1456         * mini-llvm.c (emit_cond_system_exception): Abort when an implicit exception is
1457         thrown on x86.
1458
1459         * unwind.c (mono_unwind_decode_fde): Fix an assert on x86.
1460
1461         * mini-x86.h (MONO_CONTEXT_SET_LLVM_EXC_REG): Define this for x86.
1462
1463         * mini-llvm.c: Disable OP_THROW on x86, it doesn't work yet.
1464
1465 2010-01-18  Bill Holmes  <billholmes54@gmail.com>
1466
1467         * debugger-agent.c : Changing the PLATFORM_WIN32 preprocessor check to
1468           HOST_WIN32.  Also including winsock2. to define struct in_addr.
1469
1470         * mini-amd64.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1471
1472         * mini-x86.h : Changing the PLATFORM_WIN32 preprocessor check to HOST_WIN32.
1473
1474         Code is contributed under MIT/X11 license.
1475
1476 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1477
1478         * mini.h (MonoCompile): Add 'disable_out_of_line_bblocks' flag.
1479
1480         * branch-opts.c (mono_optimize_branches): Honor the new flag.
1481
1482         * mini.c (mini_method_compile): Set the new flag when running under the
1483         debugger.
1484
1485 2010-01-18  Zoltan Varga  <vargaz@gmail.com>
1486
1487         * mini-gc.c: Change the GC map to use a ref/noref/pin value instead of just
1488         a ref/noref value + a global pin flag, so parts of stack frames can still be
1489         precisely marked even if they include stuff which needs pinning. Improve logging.
1490         Fix many bugs. Not enabled yet.
1491
1492         * gc-test.cs: Add a few tests.
1493
1494         * liveness.c (mono_analyze_liveness): Make the debug output controllable by
1495         the normal -v options. Avoid propagating liveness information through bblocks
1496         which end with a NOT_REACHED opcode.
1497
1498         * mini.c (mono_jit_compile_method_inner): Avoid reading cfg->prof_options
1499         after cfg has been freed.
1500
1501 2010-01-17  Zoltan Varga  <vargaz@gmail.com>
1502
1503         * branch-opts.c (mono_branch_optimize_exception_target): Stop the optimization
1504         if a clause is skipped because it uses the exception object, since it could
1505         have caught the exception.
1506
1507         * exceptions.cs: Add a test.
1508
1509 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1510
1511        * mini-trampolines.c (mono_create_static_rgctx_trampoline): Add an assert.
1512
1513         * aot-runtime.c (mono_aot_get_method): Handle ftnptr's correctly for the
1514         ICollection<T> wrappers.
1515
1516 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1517
1518         * debugger-agent.c (decode_value): Fix the decoding of I/U/PTR.
1519
1520 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1521
1522         * mini-amd64.c (emit_call_body): Always use near calls when AOTing even if
1523         NOMAP32BIT or optimize_for_xen is set.
1524
1525 2010-01-16  Zoltan Varga  <vargaz@gmail.com>
1526
1527         * aot-compiler.c aot-runtime.c: Get rid of mono_aot_str_hash (), use
1528         mono_metadata_str_hash () instead.
1529
1530 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1531
1532         * ir-emit.h (MONO_EMIT_NEW_ICOMPARE_IMM): Use sizeof (mgreg_t) instead of
1533         sizeof (void*).
1534
1535         * unwind.c (mono_unwind_frame): Use mgreg_t instead of gssize.
1536
1537 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1538
1539         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): Emit an explicit null check if the
1540         flag is set.
1541
1542         * mini-ppc.c (mono_arch_emit_exceptions): Compute the size of the exception
1543         throwing code correctly.
1544
1545         * mini.h (MONO_AOT_FILE_VERSION): Bump this because of the IMT hashing changes.
1546
1547 2010-01-15  Zoltan Varga  <vargaz@gmail.com>
1548
1549         * aot-runtime.c (mono_aot_plt_resolve): Reenable the previous assert for
1550         ftnptrs created by us, handle RGCTX_FETCH correctly.
1551         (mono_aot_get_lazy_fetch_trampoline): Add an ftnptr.
1552
1553         * mini-trampolines.c (mono_create_generic_class_init_trampoline): Remove the
1554         ftnptr added by mono_aot_get_named_code ().
1555
1556 2010-01-14  Zoltan Varga  <vargaz@gmail.com>
1557
1558         * mini-arm.c: Fix a few LLVM problems.
1559
1560         * mini-llvm.c (simd_class_to_llvm_type): Fix compilation on !x86/amd64.
1561
1562 2010-01-13  Mark Probst  <mark.probst@gmail.com>
1563
1564         * method-to-ir.c (mini_emit_stobj): Use EMIT_NEW_CLASSCONST when
1565         AOT compiling.
1566
1567 Wed Jan 13 15:54:53 CET 2010 Paolo Molaro <lupus@ximian.com>
1568
1569         * jit.h, method-to-ir.c: added ability to set the policy for
1570         inserting breakpoints from the break IL instruction or the
1571         Debugger.Break () API call.
1572
1573 2010-01-13  Zoltan Varga  <vargaz@gmail.com>
1574
1575         * aot-runtime.c (load_aot_module): Add more comments to explain why referenced
1576         assemblies need to be eagerly loaded.
1577
1578 2010-01-12  Zoltan Varga  <vargaz@gmail.com>
1579
1580         * dwarfwriter.c (emit_line_number_info): Fix the eglib case so it doesn't crash.
1581
1582 2010-01-11  Zoltan Varga  <vargaz@gmail.com>
1583
1584         * debugger-agent.c (mono_debugger_agent_parse_options): Allow onthrow without
1585         an argument which matches any exception.
1586
1587 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1588
1589         * method-to-ir.c (mono_emit_method_call_full): Avoid the virt->nonvirt
1590         optimization if the called method is gshared and marshalbyref, since gshared
1591         methods can' have wrappers. Fixes #569390.
1592
1593         * generics.cs: Add a test.
1594
1595 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1596
1597         * mini-exceptions.c (mono_print_thread_dump_from_ctx): New helper function
1598         callable from gdb.
1599
1600 2010-01-10  Zoltan Varga  <vargaz@gmail.com>
1601
1602         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
1603
1604 2010-01-09  Zoltan Varga  <vargaz@gmail.com>
1605
1606         * debugger-agent.c (transport_connect): comment out freeaddrinfo calls under win32,
1607         since it is not supported in win2000.
1608
1609 2010-01-08  Zoltan Varga  <vargaz@gmail.com>
1610
1611         * aot-runtime.c (load_image): Add a SET_ERROR argument to set the loader
1612         error if loading an assembly fails.
1613         (mono_aot_plt_resolve): Return NULL instead of asserting if loading fails.
1614
1615         * mini-trampolines.c (mono_aot_plt_trampoline): Throw a pending loader error
1616         if exists.
1617
1618         * aot-runtime.c (decode_exception_debug_info): Set jinfo->from_llvm for LLVM
1619         compiled methods.
1620
1621         * mini-llvm-cpp.cpp: Remove the unused ctx variable.
1622
1623         * mini-llvm.c (mono_llvm_emit_method): Add some comments about why aot+clauses
1624         is not supported yet.
1625
1626         * unwind.c (DW_EH_PE_absptr): Add more DW_EH_PE_ constants.
1627
1628 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1629
1630         * method-to-ir.c: All types with variant arguments must fallback to the
1631         slow path. This makes cast of variant delegates work.
1632
1633         * mini-trampolines.c (mono_get_vcall_slot_addr): Add new variance_used out
1634         argument that is set to TRUE is the returned vtable slot is for a variant
1635         interface. Changed a g_print + g_assert_not_reached to a g_error.
1636
1637         * mini-trampilines.c (common_call_trampoline): Handle variant interfaces in
1638         a similar fashion of generic virtual methods.
1639
1640 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1641
1642         * helpers.c (mono_disassemble_code): Fix a g_hash_table warning
1643         when cfg is null.
1644
1645         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Convert a given
1646         method using a variance aware function.
1647
1648         * mini-x86.c: Add support for dumping IMT thunks if DEBUG_IMT is defined.
1649
1650 2010-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
1651
1652         * method-to-ir.c (mono_method_to_ir): Casts to variant interfaces
1653         do an icall for now.
1654
1655 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1656
1657         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add an ugly hack to fix #564695.
1658         If LLVM decides to set the code model to Large, reset it to Default.
1659
1660 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1661
1662         * aot-compiler.c (mono_xdebug_flush): Export it so it is present in
1663         stripped binaries as well.
1664
1665 2010-01-07  Zoltan Varga  <vargaz@gmail.com>
1666
1667         * mini-trampolines.c (common_call_trampoline): Add an rgctx trampoline if a shared
1668         method is called from LLVM compiled code, as that code can't pass an rgctx arg.
1669
1670         * mini-llvm.c (mono_llvm_emit_method): Enable calls to methods needing an rgctx
1671         reg.
1672
1673 2010-01-06  Zoltan Varga  <vargaz@gmail.com>
1674
1675         * mini.c (mini_method_compile): Extract the JIT info creation code into a
1676         separate function.
1677
1678         * mini-llvm.c (mono_llvm_emit_method): Pass the info in MonoExceptionClause
1679         as the type info to llvm.eh.selector.
1680         (exception_cb): Use the type info for filling out some fields of
1681         MonoJitExceptionInfo like the flags and the exception class. This is needed
1682         because the LLVM produced exception handling clauses might not match the original
1683         IL clauses, i.e. there might be more than one LLVM clause for one IL clause.
1684
1685         * unwind.c (mono_unwind_decode_fde): Extract the LSDA decoding code into a
1686         separate function. Add an extra argument which returns the type infos
1687         corresponding to the exception clauses.
1688
1689         * mini.c (mini_method_compile): Enable LLVM compilation of methods having
1690         exception handling clauses.
1691
1692 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1693
1694         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call
1695         mono_method_get_vtable_slot () instead of accessing imt_method->slot directly,
1696         to fix an AOT case.
1697
1698 2010-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1699
1700         * mini.c (mono_compile_is_broken): Skip methods from serialization's
1701         internal assembly.
1702
1703 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1704
1705         * mini.c (mini_method_compile): Fix a few memory leaks introduced by the
1706         llvm code.
1707
1708 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
1709
1710         * mini.c (mini_method_compile): Verify the method before calling
1711         mono_compile_create_vars as this might crash since it uses method
1712         information.
1713
1714         Fixes #560196.
1715
1716 2010-01-04  Zoltan Varga  <vargaz@gmail.com>
1717
1718         * method-to-ir.c (mono_method_to_ir): Avoid calling mono_class_vtable () in
1719         one case if AOTing, since the class might not be a concrete class.
1720
1721 2010-01-03  Zoltan Varga  <vargaz@gmail.com>
1722
1723         * mini-codegen.c abcremoval.c: Remove the duplicate g_slist_append_mempool
1724         functions which are now defined in mempool-internals.h.
1725
1726         * mini.c (mini_free_jit_domain_info): Free the seq point hash tables.
1727
1728         * mini-llvm.c (mono_llvm_emit_method): Handle OP_ABS.
1729
1730 2009-12-30  Rodrigo Kumpera  <rkumpera@novell.com>
1731
1732         * mini.c:
1733         * method-to.ir.c:
1734         * mini-*.c: Properly handle generic enums.
1735
1736         Fixes #566294
1737
1738 2009-12-28  Zoltan Varga  <vargaz@gmail.com>
1739
1740         * method-to-ir.c (mono_method_to_ir): Handle the failure of mono_class_vtable ()
1741         in a few more places.
1742
1743 2009-12-27  Zoltan Varga  <vargaz@gmail.com>
1744
1745         * aot-compiler.c (add_wrappers): Don't use dyn runtime invoke for methods with
1746         nullable parameters. Fixes #567351.
1747
1748 2009-12-26  Rodrigo Kumpera  <rkumpera@novell.com>
1749
1750         * mini-trampolines.c (common_call_trampoline): Add assert for NULL resolved generic method.
1751
1752 2009-12-26  Zoltan Varga  <vargaz@gmail.com>
1753
1754         * mini-trampolines.c: Use mono_arch_get_this_arg_from_call () to avoid the slow
1755         mono_get_generic_context_from_code () call.
1756
1757         * mini-<ARCH>.c: Get rid of mono_arch_find_this_arg (), it is no longer used.
1758
1759 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1760
1761         * aot-runtime.c (decode_klass_ref): Don't call mono_class_init (), its not
1762         needed.
1763
1764 2009-12-24  Sebastien Pouliot  <sebastien@ximian.com>
1765
1766         * method-to-ir.c (mono_method_to_ir): Avoid SIGSEGV when
1767         mono_method_get_signature returns NULL. Fix #567084
1768
1769 2009-12-25  Zoltan Varga  <vargaz@gmail.com>
1770
1771         * aot-runtime.c (find_extra_method): Call mono_aot_wrapper_name only once,
1772         instead of once for each module.
1773
1774 2009-12-22  Zoltan Varga  <vargaz@gmail.com>
1775
1776         * debugger-agent.c (ss_start): Implement step over for the last sequence
1777         point in methods.
1778
1779         * mini.c (mono_save_seq_point_info): Don't link sequence points which don't
1780         have the STEP_LOC flag set.
1781
1782         * aot-runtime.c (decode_klass_ref): Avoid a crash if a decode_klass_ref () call
1783         fails. Fixes #566689.
1784
1785 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1786
1787         * mini.c (mono_add_seq_point): New helper function.
1788         (mono_save_seq_point_info): New function to save sequence point info, extracted
1789         from mini_method_compile ().
1790
1791         * mini-<ARCH>.c: Call mono_add_seq_point to remember sequence points.
1792
1793         * mini.h (MonoSeqPointInfo): New structure containing information about
1794         the sequence points of a JITted method.
1795         (MonoBasicBlock): Add 'seq_points' and 'last_seq_point' fields. Remove unused
1796         'bucket' field.
1797
1798         * mini.c debugger-agent.c aot-compiler.c aot-runtime.c: Change the way sequence
1799         point information is stored, use a MonoSeqPointInfo structure instead of a
1800         GPtrArray. For each seq point, compute a list of successor seq points.
1801
1802         * debugger-agent.c: Use the successor list to implement step-over more
1803         efficiently: instead of single stepping until a different line/IL offset is
1804         reached, place breakpoints into all successor seq points.
1805
1806         * mini.h: Bump AOT file format version.
1807
1808 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1809
1810         * Makefile.am (AM_CFLAGS): Include LLVM_CFLAGS.
1811
1812         * mini-llvm.c: Avoid defining the __STDC_... macros if already defined.
1813
1814 2009-12-21  Zoltan Varga  <vargaz@gmail.com>
1815
1816         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): Fix the cross-compiler
1817         build.
1818
1819 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1820
1821         * mini-x86.c (mono_arch_get_argument_info): Allocate memory for CallInfo using
1822         alloca as g_malloc is not signal safe.
1823
1824 2009-12-18  Zoltan Varga  <vargaz@gmail.com>
1825
1826         * tramp-x86.c (mono_arch_patch_callsite): Fix the call to
1827         VALGRIND_DISCARD_TRANSLATIONS.
1828
1829         * *.c: Include mono/utils/memcheck.h, and remove #ifdef HAVE_VALGRIND_MEMCHECK_H
1830         checks, they are no longer needed.
1831
1832         * exceptions-ppc.c (mono_ppc_set_func_into_sigctx): New helper function to set
1833         a function into a sigctx which can handle function pointers.
1834
1835         * mini-ppc.c: Implement soft debugger support on ppc64.
1836
1837         * mini-ppc.c: Implement soft debugger support.
1838
1839 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1840
1841         * mini-llvm.c: Handle OP_LADD_OVF_UN. Place all alloca's into the entry bb.
1842
1843 2009-12-17  Marek Habersack  <mhabersack@novell.com>
1844
1845         * mini.c (mono_get_runtime_build_info): include Mono version in
1846         the returned value.
1847
1848         * driver.c (mono_main): VERSION is now included in the string
1849         returned from mono_get_runtime_build_info()
1850
1851 2009-12-17  Zoltan Varga  <vargaz@gmail.com>
1852
1853         * method-to-ir.c (mono_method_to_ir): Add support for CALLI with unmanaged
1854         signatures. Fixes #565143.
1855
1856         * jit-icalls.c (mono_get_native_calli_wrapper): New JIT icall.
1857
1858 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1859
1860         * aot-compiler.c (arch_emit_autoreg): Align code to 4 in the ppc case.
1861
1862 2009-12-16 Rodrigo Kumpera  <rkumpera@novell.com>
1863
1864         * mini-x86.h: Forgot to add a 0x to MONO_ARCH_MAX_FRAME_SIZE define
1865         making max stack 10x smaller.
1866
1867 2009-12-16  Zoltan Varga  <vargaz@gmail.com>
1868
1869         * mini.c (mono_resolve_patch_target): Comment out an assert which could be hit.
1870
1871 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1872
1873         * method-to-ir.c (mini_emit_memcpy): Assert if size is too big.
1874
1875 2009-12-15 Rodrigo Kumpera  <rkumpera@novell.com>
1876
1877         * mini-x86.c (mono_arch_allocate_vars): Fail compilation if the frame size is
1878         bigger than MONO_ARCH_MAX_FRAME_SIZE.
1879
1880         * mini-x86.c (mono_arch_emit_prolog): Handle huge frames.
1881
1882         * mini-x86.h: Define MONO_ARCH_MAX_FRAME_SIZE to be 1Mb.
1883
1884         * mini-amd64.c / mini-amd64.h: Same fixes as of above.
1885
1886         * mini.c (mini_method_compile): Check if mono_arch_allocate_vars failed
1887         the compilation.
1888
1889 2009-12-14  Miguel de Icaza  <miguel@novell.com>
1890
1891         * method-to-ir.c (mono_method_to_ir): CEE_UNUSUED opcodes now
1892         raise an invalid program exception.   
1893
1894         For other opcodes that we might not handle use a g_warning and
1895         raise the exception.   Beats termination.
1896
1897         Fixes #561724
1898
1899 2009-12-14  Zoltan Varga  <vargaz@gmail.com>
1900
1901         * method-to-ir.c (mono_emit_rgctx_method_call_full): Fix a warning.
1902
1903         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix the LLVM support
1904         by merging the LLVM and !MAP_32BIT cases.
1905
1906 2009-12-13 Jonathan Chambers <joncham@gmail.com>
1907
1908         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Handle a NULL
1909         sigctx being passed in, as we have no CONTEXT available in the APC.
1910
1911         (mono_debugger_agent_cleanup): Use explicit cond wait implementation
1912         for now.
1913
1914         Code contributed under MIT/X11 license.
1915
1916 2009-12-13  Zoltan Varga  <vargaz@gmail.com>
1917
1918         * method-to-ir.c mini-llvm.c: Fix support for monitor enter/exit trampolines
1919         in the LLVM backend on AMD64.
1920
1921         * aot-runtime.c (decode_eh_frame): Initialize the clauses from the info in the
1922         FDE.
1923
1924         * unwind.c (mono_unwind_decode_fde): Implement decoding of a couple more formats.
1925
1926         * mini-llvm.c: Export mono_personality for AOT.
1927
1928         * mini.c (mini_method_compile): Fix some problems with llvm+aot+clauses.
1929
1930         * mini-ops.h (OP_IMPLICIT_EXCEPTION): New opcode marking the place where an
1931         implicit exception can occur.
1932
1933         * ir-emit.h (MONO_EMIT_NEW_IMPLICIT_EXCEPTION): New macro to emit an
1934         OP_IMPLICIT_EXCEPTION instruction.
1935
1936         * ir-emit.h (MONO_EMIT_NEW_CHECK_THIS): New macro.
1937
1938         * method-to-ir.c: Use MONO_EMIT_NEW_CHECK_THIS in a few places.
1939
1940         * mini-llvm.c: Handle OP_IMPLICIT_EXCEPTION by disabling llvm if it occurs
1941         inside a protected block.
1942
1943         * mini-llvm.c: Revert the last change, the signature of monitor entry/exit
1944         trampolines doesn't include the argument.
1945
1946         * mini-llvm.c (mono_llvm_emit_method): Enable calls to monitor entry/exit
1947         trampolines on amd64.
1948
1949         * mini-amd64.h (MONO_ARCH_MONITOR_OBJECT_REG): Use MONO_AMD64_ARG_REG1 instead
1950         of RDI.
1951
1952         * mini.c (mini_method_compile): Add some comments as to why LLVM is currently
1953         disabled for methods with clauses.
1954
1955         * mini-llvm.c: Enable support for catch clauses.
1956
1957         * mini-exceptions.c (mono_resume_unwind): New function to resume unwinding at the
1958         end of an LLVM compiled finally clause.
1959         (mono_handle_exception_internal): Save the exception handling state in TLS
1960         before calling an LLVM compiled finally clause, so mono_resume_unwind () can
1961         resume unwinding from that point.
1962
1963         * unwind.c (mono_unwind_get_ops_from_fde): Rename this to
1964         mono_unwind_decode_fde, decode the Language Specific Data Area (LSDA) too,
1965         to obtain the addresses of the exception handling regions.
1966
1967         * mini-llvm.c: Add beginnings of support for exception handling, currently only
1968         finally clauses are supported.
1969
1970         * mini.c (mini_method_compile): Add support for LLVM code with exception
1971         handlers.
1972
1973 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1974
1975         * mini-llvm.c (mono_llvm_emit_method): Allocate the 'pindexes' array with the
1976         proper size.
1977
1978 2009-12-12  Zoltan Varga  <vargaz@gmail.com>
1979
1980         * debugger-agent.c: Encode the this argument of vtype methods as a struct, not
1981         as a primitive type.
1982
1983 2009-12-11  Zoltan Varga  <vargaz@gmail.com>
1984
1985         * driver.c: Applied patch from Matt McClellan (matt@mc-c.net). Add a check
1986         for 2 parameter sched_setaffinity in older glibc versions. Fixes
1987         #564000.
1988
1989 2009-12-11  Marek Habersack  <mhabersack@novell.com>
1990
1991         * method-to-ir.c (mini_redirect_call): do not redirect the
1992         InternalAllocateStr internal call if string profiling is enabled.
1993
1994 2009-12-10  Zoltan Varga  <vargaz@gmail.com>
1995
1996         * aot-compiler.c (add_wrappers): Avoid generating synchronized wrappers for
1997         generic methods.
1998
1999         * unwind.h: Rename this to mini-unwind.h to avoid conflicts with the gcc
2000         unwind.h header file.
2001
2002         * tramp-x86.c (mono_arch_patch_callsite): Patch the code when using valgrind,
2003         newer valgrind versions seems to handle this fine.
2004
2005 2009-12-09  Zoltan Varga  <vargaz@gmail.com>
2006
2007         * debugger-agent.c (start_runtime_invoke): Fix a crash if this is called
2008         on the debugger thread.
2009
2010 2009-12-08  Zoltan Varga  <vargaz@gmail.com>
2011
2012         * mini-llvm.c (mono_llvm_emit_method): Add more SIMD opcodes.
2013
2014         * mini.c (mono_print_method_from_ip): Fix the lookup of trampolines.
2015
2016         * mini-codegen.c (mono_local_regalloc): Allow non-call opcodes with cloc:c.
2017
2018         * cpu-<ARCH>.md: Make call_handler clob:c.
2019
2020         * mini.c: Reenable SSA for methods with clauses.
2021
2022         * mini.c (mini_method_compile): Disable SSA for now for methods with clauses,
2023         as it causes failures on x86.
2024
2025 2009-12-08  Sebastien Pouliot  <sebastien@ximian.com>
2026
2027         * driver.c: Fail gracefully with --compile-all if mono_method_signature
2028         returns NULL (e.g. a bad assembly).
2029
2030 2009-12-08  Geoff Norton  <gnorton@novell.com>
2031
2032         * debugger-agent.c:  Refactor the mono_runtime_invoke guarding against
2033         stepping out into native code.  There were issues with nested invokes
2034         like .cctors.
2035
2036 2009-12-07  Zoltan Varga  <vargaz@gmail.com>
2037
2038         * mini.c (mini_method_compile): Do the disable_llvm checks early
2039         and avoid the LLVM compile pass if the checks fail.
2040
2041         * mini.c ssa.c abcremoval.c: Enable SSA for methods with exception clauses.
2042
2043         * mini-llvm.c: Put our methods/globals into the 'llvm.used' array, so the
2044         LLVM optimizations don't try to remove them.
2045
2046         * aot-compiler.c (emit_llvm_file): Save the result of opt into a
2047         different file so the original remains.
2048
2049 2009-12-06  Zoltan Varga  <vargaz@gmail.com>
2050
2051         * mini-llvm.c mini.c: Fix alignment issues with SIMD vars.
2052
2053         * aot-runtime.c (decode_arm_exidx): Handle most descriptors created by gas.
2054
2055         * aot-runtime.c (decode_arm_exidx): Refactor this into two functions, add
2056         support for non-inline unwind descriptors.
2057
2058 2009-12-07  Geoff Norton  <gnorton@novell.com>
2059
2060         * debugger-agent.c:  Darwin can colesce signals, so we need to handle
2061         the interrupt_count slightly differently.  Native threads were never
2062         marked as resumed.
2063
2064 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2065
2066         * aot-runtime.c (decode_arm_exidx): New function to initialize a MonoJitInfo
2067         based on the contents of the ARM .exidx section. Not yet used since llvm doesn't
2068         yet generate this info.
2069
2070         * mini-llvm.c: Fix the conversion of call results if they are unsigned.
2071
2072         * debugger-agent.c (buffer_add_value): Treat I/U as a valuetype, so the
2073         client can distinguish between intptrs and longs.
2074
2075 2009-12-05  Zoltan Varga  <vargaz@gmail.com>
2076
2077         * aot-compiler.c (emit_trampoline): Emit the trampoline info into the global
2078         blob.
2079
2080         * aot-runtime.c (load_function): Update after the change above.
2081
2082         * mini.h: Bump AOT file format version.
2083
2084         * method-to-ir.c (mono_method_to_ir): Disallow the delegate optimization
2085         if the delegate class is dynamic.
2086
2087         * method-to-ir.c (handle_delegate_ctor): Allow the method_code optimization
2088         in gshared code too using the new rgctx info type
2089         MONO_RGCTX_INFO_METHOD_DELEGATE_CODE.
2090
2091 2009-12-04  Geoff Norton  <gnorton@novell.com>
2092
2093         * debugger-agent.c: When doing a func-eval invoke on a suspended runtime,
2094         we need to track the original suspend count so the thread properly
2095         wakes up in resume_thread.
2096
2097 2009-12-04  Zoltan Varga  <vargaz@gmail.com>
2098
2099         * method-to-ir.c (handle_delegate_ctor): Add support for using this from gshared
2100         code.
2101
2102         * generics.cs: Add a test.
2103
2104         * method-to-ir.c (emit_get_rgctx_method): Make this work even if context_used
2105         is 0. Simplify a lot of code using this.
2106
2107         * mini-trampolines.c (mono_delegate_trampoline): Call
2108         mono_create_static_rgctx_trampoline () before saving the final address in
2109         delegate->method_code, to avoid calling it each time a delegate is first called.
2110
2111         * method-to-ir.c (mono_method_to_ir): Allow fast delegate creation for methods
2112         which need static rgctx trampolines.
2113
2114         * mini-trampolines.c (mono_create_static_rgctx_trampoline): Use a cache
2115         keyed on the method+addr pair, since addr could be either the method addr or
2116         an unbox trampoline in the AOT case. Fixes #560246.
2117
2118 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2119
2120         * mini.c (mini_method_compile): Call handle_exception_clauses () in the same
2121         place it was called before too.
2122
2123 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2124
2125         * mini.c (mono_jit_runtime_invoke): Avoid the call to mono_class_setup_vtable ()
2126         if no security manager is present, to speed up the AOT case. Call
2127         mono_class_vtable () full with raise_on_error == TRUE instead.
2128
2129 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2130
2131         * mini.c (mini_method_compile): Call handle_exception_clauses earlier so
2132         the local optimization passes can take its result into account. Fixes
2133         #559876.
2134
2135         * exceptions.cs: Add a test.
2136
2137 2009-01-24  Steven Munroe  <munroesj@us.ibm.com>
2138
2139         This patch is contributed under the terms of the MIT/X11 license
2140
2141         * cpu-ppc64.md (load_memindex): Add loadi8_memindex.
2142
2143 2009-12-03  Zoltan Varga  <vargaz@gmail.com>
2144
2145         * mini.h (MonoInst): Remove unused 'ssa_op' field.
2146
2147         * debugger-agent.c: Rework the handling of stack traces of running threads to
2148         avoid crashes if compute_frames () tries to walk the stack of running thread.
2149
2150         * mini.c (mono_print_method_from_ip): Use mini_jit_info_table_find.
2151
2152         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): Set frame->lmf.
2153
2154         * mini.h (StackFrameInfo): Add an 'lmf' field.
2155
2156 2009-12-02  Zoltan Varga  <vargaz@gmail.com>
2157
2158         * debugger-agent.c (suspend_current): Always set really_suspended.
2159
2160         * debugger-agent.c (clear_event_request): Clear method entry/exit requests too.
2161
2162         * exceptions-x86.c (mono_arch_get_restore_context): Restore EAX too.
2163
2164 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2165
2166         * debugger-agent.c (vm_commands): Don't allow invokes on threads which are not
2167         really suspended.
2168
2169 2009-12-01  Zoltan Varga  <vargaz@gmail.com>
2170
2171         * cpu-ppc64.md (store_memindex): Add storei8_memindex.
2172
2173 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2174
2175         * mini-trampolines.c: Fix MSVC build.
2176
2177 2009-12-01 Rodrigo Kumpera  <rkumpera@novell.com>
2178
2179         * mini-trampolines.c: Check for mono_method_get_vtable_slot failures.
2180
2181 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2182
2183         * mini-arm.c (mono_arch_lowering_pass): Fix an assert which is hit when
2184         the instruction following an OP_FCOMPARE is optimized away.
2185
2186 2009-11-30  Zoltan Varga  <vargaz@gmail.com>
2187
2188         * aot-compiler.c (arch_emit_autoreg): Extract the auto-registration code from
2189         emit_autoreg () into this arch-specific function.
2190
2191         * aot-compiler.c (emit_exception_debug_info): Don't emit the length of the
2192         code, it is no longer needed.
2193
2194         * aot-runtime.c (decode_exception_debug_info): Don't read the code length.
2195
2196         * mini.h: Bump AOT file format version.
2197
2198         * aot-runtime.c (mono_aot_find_jit_info): Compute the length of the method
2199         using the sorted_code_offsets array, instead of reading it from the
2200         exception debug info.
2201         (load_method): Call mono_aot_find_jit_info instead of
2202         decode_exception_debug_info ().
2203
2204         * aot-compiler.c (emit_exception_debug_info): Emit whenever the method was
2205         LLVM compiled as a flag.
2206
2207 2009-11-29  Zoltan Varga  <vargaz@gmail.com>
2208
2209         * debugger-agent.c (resume_thread): Fix a warning.
2210
2211         * aot-compiler.c: Add an option to set the number of static rgctx trampolines
2212         generated.
2213
2214 2009-11-28  Zoltan Varga  <vargaz@gmail.com>
2215
2216         * aot-compiler.c aot-runtime.c: Get rid of a few global symbols, move their
2217         contents to MonoAotFileInfo.
2218
2219 2009-11-27  Zoltan Varga  <vargaz@gmail.com>
2220
2221         * aot-compiler.c aot-runtime.c: Reorganize the AOT file format once again.
2222         Put all binary data into a giant blob, similarly to the way .net assemblies
2223         store binary data. Emit offset tables in a compact form to reduce their size.
2224
2225         * mini.h: Bump AOT file format version.
2226
2227         * aot-compiler.c (emit_globals_table): Use temp_prefix instead of .L in a few
2228         places.
2229
2230         * aot-compiler.c (emit_globals_table): Emit a hash table for the globals, to
2231         avoid linear searches at runtime.
2232
2233         * aot-runtime.c (find_symbol): Update this to use the hash.
2234
2235         * mini.h: Bump AOT file format version.
2236
2237 2009-11-26  Zoltan Varga  <vargaz@gmail.com>
2238
2239         * aot-compiler.c (emit_klass_info): Save whenever the class has a generic
2240         container.
2241
2242         * aot-runtime.c (decode_cached_class_info): Set the is_generic_container field
2243         too.
2244
2245         * aot-compiler.c (mono_compile_assembly): Add a 'stats' option to print out
2246         the distribution of got slot types.
2247
2248         * mini.h (MonoDebugOptions): Add 'explicit_null_checks' option.
2249
2250         * method-to-ir.c: Add support for generating explicit null checks.
2251
2252 2009-11-25  Zoltan Varga  <vargaz@gmail.com>
2253
2254         * debugger-agent.c (vm_commands): Implement EXIT by invoking Environment.Exit ()
2255         on a random thread if possible.
2256
2257         * aot-runtime.c (mono_aot_plt_resolve): Clean up the handling of function
2258         descriptors a bit, add comments, handle RGCTX_FETCH/GENERIC_CLASS_INIT_TRAMPOLINE
2259         correctly.
2260
2261         * exceptions-ppc.c (mono_arch_find_jit_info_ext): Use mgreg_t as the type of
2262         regs. Pass the real size of the regs array to mono_unwind_frame ().
2263
2264         * unwind.c (mono_unwind_frame): Remove an incorrect assert, add more correct
2265         ones instead.
2266
2267 2009-11-24  Geoff Norton  <gnorton@novell.com>
2268
2269         * mini-darwin.c: Work around apple bug rdar://7209349  See
2270         http://openradar.appspot.com/7209349 for details.  Synopsis,
2271         CoreFoundation SIGTRAP's if you dlopen it off the main thread if its
2272         never been initialized before.
2273
2274 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2275
2276         * tramp-arm.c: Use blx instead of mov pc, reg to improve support for thumb.
2277
2278         * mini-arm.c (mono_arm_thumb_supported): New helper function.
2279
2280 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2281
2282         * cfold.c (mono_constant_fold_ins): Fix a problem in the previous change,
2283         OP_SHL_IMM is not 32 bit.
2284
2285 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2286
2287         * aot-compiler.c (encode_patch): Fix the encoding of R8 on big-endian systems.
2288
2289 2009-11-24  Zoltan Varga  <vargaz@gmail.com>
2290
2291         * aot-compiler.c: Avoid infinite recursion when generic virtual recursion is
2292         encountered.
2293
2294         * debugger-agent.c (resume_vm): Signal the suspend_cond even if suspend_count
2295         > 0 since some threads can resume if their resume_count is > 0.
2296         (invoke_method): Avoid reading freed memory.
2297
2298         * debugger-agent.c (process_suspend): Extract the suspend code from
2299         process_single_step_inner () to a separate function. Rework the code to prevent
2300         races between this function and thread interrupts.
2301
2302         * debugger-agent.c (suspend_current): Check the resume_count field instead
2303         of resume_one so suspends+resumes during single threaded invokes work
2304         correctly.
2305
2306 2009-11-23  Zoltan Varga  <vargaz@gmail.com>
2307
2308         * aot-compiler.c (emit_llvm_file): Enable some llvm optimizations which seem
2309         to make the generated code smaller.
2310
2311         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Add a code
2312         sequence generated by recent LLVM versions.
2313
2314         * mini-llvm.c: Add support for a few simple cases which weren't supported
2315         before.
2316
2317         * mini-trampolines.c (mono_magic_trampoline): Don't call
2318         mono_arch_get_vcall_slot () when llvm is enabled.
2319
2320         * aot-compiler.c (emit_llvm_file): Add code to run the 'opt' llvm tool.
2321
2322         * mini-trampolines.c (mono_magic_trampoline): Extract the bulk of this function
2323         into a new function called common_call_trampoline () which is used by the
2324         llvm vcall trampoline as well.
2325
2326         * debugger-agent.c: Implement single threaded invokes.
2327
2328         * debugger-agent.c: Revert change which broke the agent on linux.
2329
2330         * method-to-ir.c (inline_method): Prevent infinite recursion. Fixes
2331         #557606.
2332
2333         * generics.cs: Add a test.
2334
2335 2009-11-22  Zoltan Varga  <vargaz@gmail.com>
2336
2337         * debugger-agent.c: Fix the cygwin build.
2338
2339 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2340
2341         * cprop.c: Remove this unused file.
2342
2343 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2344
2345         * cfold.c (mono_constant_fold_ins): Fix constant folding of shr_imm. Fixes
2346         #557262.
2347
2348         * basic.cs: Add a test.
2349
2350 2009-11-21  Zoltan Varga  <vargaz@gmail.com>
2351
2352         * method-to-ir.c (mono_method_to_ir): Use mono_use_llvm instead of ENABLE_LLVM
2353         in one more place.
2354
2355 2009-11-20  Zoltan Varga  <vargaz@gmail.com>
2356
2357         * mini.c mini-trampolines.c driver.c: Add a 'mono_use_llvm' flag to control
2358         whenever the runtime uses LLVM code. Add a '--llvm' command line option to set
2359         it. Use this flag to control llvm related code paths instead of #ifdef
2360         ENABLE_LLVM, so a runtime configured without --enable-llvm can use LLVM compiled
2361         AOT code.
2362
2363         * aot-runtime.c aot-compiler.c: Add a 'flag' field to MonoAotFileInfo.
2364
2365         * mini.h: Bump AOT file format version.
2366
2367         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline_full): These
2368         receive their argument in MONO_ARCH_VTABLE_REG, not in the first argument reg.
2369
2370         * debugger-agent.c (create_event_list): Fix a crash if an empty assembly list
2371         was used as an assembly filter.
2372
2373 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2374
2375         * unwind.c: Fix support for ppc.
2376
2377         * exceptions-ppc.c (mono_arch_find_jit_info): Change this to use dwarf frame
2378         unwind info. Change to the mono_arch_find_jit_info_ext () interface.
2379
2380 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2381
2382         * mini-ppc.c (mono_arch_emit_prolog): Fix a copy-paste error to fix the ppc64
2383         port.
2384         (mono_arch_cpu_init): Don't set cpu_hw_flags to 0 at the end, this was somehow
2385         added by the ps3 changes.
2386
2387 2009-11-19  Zoltan Varga  <vargaz@gmail.com>
2388
2389         * mini-gc.c: Resurrect this, so at least it compiles.
2390
2391         * debugger-agent.c (assembly_commands): Implement GET_NAME command.
2392
2393 2009-11-18  Zoltan Varga  <vargaz@gmail.com>
2394
2395         * debugger-agent.c (mono_debugger_agent_handle_exception): Pass a MonoJitInfo to
2396         create_event_list () so assembly filters can be used.
2397
2398         * exceptions-ppc.c (mono_arch_find_jit_info): Fix the restoration of registers
2399         from the LMF.
2400
2401 2009-11-17  Zoltan Varga  <vargaz@gmail.com>
2402
2403         * debugger-agent.c (mono_debugger_agent_breakpoint_hit): Fix a warning.
2404         (mono_debugger_agent_thread_interrupt): Make this return FALSE if the agent
2405         is disabled.
2406
2407         * aot-compiler.c (add_generic_instances): Emit instances of common generic
2408         classes for char/bool too.
2409
2410         * debugger-agent.c (DebuggerTlsData): Honor the DISABLE_SOFT_DEBUG option.
2411
2412         * debugger-agent.c (DebuggerTlsData): Add a 'really_suspended' flag, not yet
2413         used.
2414
2415         * debugger-agent.c: Add some definitions to make backporting to 2.6 easier.
2416         Fix warnings.
2417
2418 2009-11-15  Andreas Faerber  <andreas.faerber@web.de>
2419
2420         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Signature fix.
2421         
2422         Code contributed under MIT/X11 license.
2423
2424 2009-11-14  Zoltan Varga  <vargaz@gmail.com>
2425
2426         (mono_debugger_agent_thread_interrupt): Save the context so stacktraces for
2427         threads in native code work.
2428
2429         * debugger-agent.c: Pass the 'flags' argument to VM_INVOKE_METHOD earlier in
2430         the parameter list, so it can be acted upon by vm_commands (). Bump protocol
2431         version.
2432
2433 2009-11-13 Jonathan Chambers <joncham@gmail.com>
2434
2435         * debugger-agent.c: Implementation for Windows platform.
2436
2437         * mini-x86.c: Add support for Windows. Use mono-* synchronization
2438         primitives. Use SEH to implement breakpoints and single stepping.
2439
2440         * mini-x86.h: Enable soft debugger on Windows.
2441
2442         Code contributed under MIT/X11 license.
2443
2444 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2445
2446         * mini-amd64.c (emit_call_body): Disable usage of near calls when running
2447         under XEN. Fixes #522894.
2448
2449         * patch-info.h: Add LLVM_IMT_TRAMPOLINE.
2450
2451         * mini-llvm.c aot-compiler.c aot-runtime.c mini.c: Add support for making
2452         interface calls in LLVM AOT code.
2453
2454         * aot-compiler.c mini-llvm.c: Abort llvm compilation if a non-encodable patch
2455         is found.
2456
2457         * mini-llvm.c: Add support for OP_VPHI.
2458
2459         * objects.cs: Add a test.
2460
2461 2009-11-13  Zoltan Varga  <vargaz@gmail.com>
2462
2463         * debugger-agent.c (mono_debugger_agent_single_step_event): Avoid a crash if
2464         this is called on the debugger thread.
2465
2466 2009-11-12  Zoltan Varga  <vargaz@gmail.com>
2467
2468         * mini-llvm.c: Add soft-float support.
2469
2470         * method-to-ir.c (mono_decompose_soft_float): Restart after decomposing an
2471         FCALL which returns an R4.
2472
2473         * driver.c (mono_main): Add a missing '\n'.
2474
2475         * mini-trampolines.c (mono_create_llvm_imt_trampoline): Fix the build on
2476         platforms which doesn't support the LLVM IMT trampoline.
2477
2478 2009-11-11  Zoltan Varga  <vargaz@gmail.com>
2479
2480         * mini-llvm.c (mono_llvm_emit_method): Fix LOCALLOC.
2481
2482         * mini-llvm-cpp.cpp: Update to latest LLVM SVN.
2483
2484         * mini-llvm.c (mono_llvm_emit_method): Avoid creating plt entries for
2485         virtual calls.
2486
2487         * aot-runtime.c: Don't define HAVE_DL_ITERATE_PHDR, configure now does that.
2488
2489 2009-11-10  Zoltan Varga  <vargaz@gmail.com>
2490
2491         * aot-compiler.c aot-runtime.c: Change how mono_arch_find_jit_info () works.
2492         Instead of emitting a method_order table, sort the contents of the code_offsets
2493         table and do a binary search in the sorted table. The previous approach doesn't
2494         work with LLVM which emits methods in a arbitrary order.
2495
2496         * aot-runtime.c: Add support for creating MonoJitInfo structures by searching
2497         in the .eh_frame section in ELF files.
2498
2499         * mini.h: Bump corlib file format version.
2500
2501         * mini-llvm.c aot-compiler.c: Add support for AOT to the LLVM back end.
2502
2503         * exceptions-arm.c (mono_arch_get_call_filter_full): Update after the
2504         LDMIA->LDM macro name change.
2505
2506 2009-11-09  Zoltan Varga  <vargaz@gmail.com>
2507
2508         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Fix and enable this for
2509         x86.
2510
2511         * mini-llvm-cpp.cpp (JITMemoryManager): Fix compilation with LLVM 2.7
2512         SVN.
2513
2514         * aot-compiler.c: Ditto.
2515
2516         * mini-arm.c (mono_arch_allocate_vars): Fix the previous change by passing
2517         &align to mini_type_stack_size_full ().
2518
2519         * mini-arm.c (mono_arch_emit_prolog): Implement support for varargs.
2520
2521         * mini-ops.h: Add documentation for the OP_ARGLIST opcode.
2522
2523 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2524
2525         * mini-arm.c: Compute the stack space used by arguments using
2526         mini_type_stack_size_full ().
2527
2528 2009-11-08  Zoltan Varga  <vargaz@gmail.com>
2529
2530         * optflags-def.h: Remove dead TREEPROP optimization.
2531
2532 2009-11-08  Rodrigo Kumpera  <rkumpera@novell.com>
2533
2534         * mini-ppc.h: Make mono compiler under FreeBSD/ppc64. 
2535
2536         Patch by Justin Hibbits <chmeeedalf@gmail.com>.
2537
2538 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2539
2540         * driver.c (mono_jit_parse_options): New public API function to parse options
2541         as done by the runtime executable.
2542
2543         * debugger-agent.c (buffer_add_cattrs): Fix reading an uninitialized variable
2544         when handling named arguments.
2545
2546 2009-11-07  Zoltan Varga  <vargaz@gmail.com>
2547
2548         * mini-arm.c: Implement support for returning vtypes in registers, fix support
2549         for passing small vtypes in registers, make the CallInfo structures more
2550         similar to the code on the other platforms.
2551
2552         * mini-arm.c (mono_arch_allocate_vars): Align small vtypes to 4 bytes too since
2553         the code in the prolog requires it.
2554
2555 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2556
2557         * mini-arm.c debugger-agent.c: Android changes from Koushik K. Dutta
2558         (koush@koushikdutta.com).
2559
2560         * mini-arm.c (handle_thunk): Add a domain argument to control the domain
2561         where the thunk memory should be allocated from. Fixes appdomain unloading
2562         on arm.
2563
2564 2009-11-06  Zoltan Varga  <vargaz@gmail.com>
2565
2566         * mini-arm.c exceptions-arm.c: Make ctx->regs map directly to the 16 hardware
2567         registers, instead of r4..r11,ip,lr. Make restore_context () restore r0..r3 too.
2568
2569 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2570
2571         * mini-amd64.c (mono_arch_output_basic_block): Don't allow OP_SEQ_POINT in
2572         AOT, as it is not implemented yet.
2573
2574         * mini-x86.c (mono_arch_output_basic_block): Ditto.
2575
2576 2009-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
2577
2578         * debugger-agent.c: Fix windows build.
2579
2580 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2581
2582         * debugger-agent.c (debugger_thread): Call mono_set_is_debugger_attached ()
2583         after the client connects/disconnects.
2584
2585         * debugger-agent.c: Add an 'onthrow' option to start the debugger agent
2586         when an exception of a given type is thrown.
2587
2588         * debugger-agent.c: Add a 'onuncaught' option to start the debugger agent
2589         only on an uncaught exception.
2590
2591         * mini-exceptions.c: Notify the debugger agent on an uncaught exception.
2592
2593         * debugger-agent.c: Add a 'launch' option.
2594
2595 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2596
2597         * debugger-agent.c: Add a 'timeout' option.
2598
2599 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2600
2601         * debugger-agent.c: Implement the 'server' and 'suspend' options supported by
2602         the JDWP agent.
2603
2604 2009-11-05  Zoltan Varga  <vargaz@gmail.com>
2605
2606         * debugger-agent.c (set_breakpoint): Emit a log message.
2607
2608 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2609
2610         * mini-arm.c: Fix the arm build.
2611
2612 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2613
2614         * aot-compiler.c: don't leak the value returned from
2615         mono_type_full_name().
2616
2617 2009-11-04 Gonzalo Paniagua Javier <gonzalo@novell.com>
2618
2619         * debugger-agent.c: defer including mono-mutex.h until we know the
2620         agent is supported.
2621
2622 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2623
2624         * debugger-agent.c: Changes to build on windows. Use mono-mutex instead
2625         of pthreads directly.
2626
2627         * mini.c (mono_sigfpe_signal_handler): Changed signature of Windows
2628         exception handlers. Pass info argument.
2629
2630         * mini.h: Adjust signatures of soft debugger functions to pass void*
2631         instead of siginfo_t. Adjust SIG_HANDLER_SIGNATURE on Windows.
2632
2633         * mini-amd64.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2634         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2635         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2636         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2637
2638         * mini-amd64.h: Adjust MonoW32ExceptionHandler signature.
2639
2640         * mini-x86.c (mono_arch_is_single_step_event): Adjust signature to pass void*
2641         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2642         (mono_arch_is_breakpoint_event): Adjust signature to pass void*
2643         instead of siginfo_t. Value is EXCEPTION_RECORD on Windows.
2644
2645         * mini-x86.h: Adjust MonoW32ExceptionHandler signature.
2646
2647         * exceptions-x86.c: Adjust W32_SEH_HANDLE_EX for new signature.
2648
2649         * exceptions-amd64.c: Adjust W32_SEH_HANDLE_EX for new signature.
2650
2651         * mono-semaphore.h: Skeleton implementation for Windows.
2652
2653         Code contributed under MIT/X11 license.
2654
2655 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2656
2657         * simd-intrinsics.c (simd_intrinsic_emit_setter): Unfix my fix.
2658
2659         Code contributed under MIT/X11 license.
2660
2661 2009-11-04 Jonathan Chambers <joncham@gmail.com>
2662
2663         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix windows build.
2664
2665         Code contributed under MIT/X11 license.
2666
2667 2009-11-04  Zoltan Varga  <vargaz@gmail.com>
2668
2669         * aot-compiler.c (mono_save_xdebug_info): Bump the threshold for flushing
2670         debug info to 100 because 10 still slows down gdb too much.
2671
2672         * method-to-ir.c (mono_method_to_ir): Avoid rethrowing thread abort exceptions
2673         inside runtime invoke wrappers. This avoids the need to call ResetAbort () on
2674         them in the wrappers.
2675
2676 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2677
2678         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
2679
2680         * simd-intrinsics.c (simd_intrinsic_emit_setter): Fix a warning.
2681
2682         * aot-runtime.c (mono_aot_get_method): Refactor some code into a new helper
2683         function mono_aot_get_array_helper_from_wrapper ().
2684
2685         * aot-compiler.c (add_generic_class): Refactor the code a bit, really emit
2686         array helper methods.
2687
2688 2009-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
2689
2690         * simd-intrinsics.c (load_simd_vreg): Add extra argument to signal if
2691         the value was loaded from memory.
2692
2693         * simd-intrinsics.c (simd_intrinsic_emit_setter): Store back to memory if
2694         the value was loader from there.
2695
2696         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Fail correctly for Shuffle
2697         without constant swizzle.
2698
2699 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2700
2701         * mini-amd64.c: Put soft debugger functions behind a
2702         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2703
2704         * mini-amd64.h: disable the soft debugger in windows.
2705
2706         Code contributed under MIT/X11 license.
2707
2708 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2709
2710         * mini-x86.c: Put soft debugger functions behind a
2711         #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED.
2712
2713         Code contributed under MIT/X11 license.
2714
2715 2009-11-02 Jonathan Chambers <joncham@gmail.com>
2716
2717         * exceptions-x86.c (win32_handle_stack_overflow): Fix parameters
2718         to mono_arch_find_jit_info_ext.
2719
2720         Code contributed under MIT/X11 license.
2721
2722 2009-11-03  Zoltan Varga  <vargaz@gmail.com>
2723
2724         * debugger-agent.c: Include netinet/in.h to fix the bsd build.
2725
2726         * debugger-agent.c: Add support for filtering events by assemblies.
2727
2728         * debugger-agent.c (mono_debugger_agent_thread_interrupt): Return false if
2729         the agent is not enabled.
2730
2731 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2732
2733         * exceptions-x86.c: hopefully last change to fix the windows build.
2734         This one courtesy of Jonathan Chambers.
2735
2736 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2737
2738         * debugger-agent.c: remove unused function.
2739
2740 2009-11-02 Gonzalo Paniagua Javier <gonzalo@novell.com>
2741
2742         * debugger-agent.c: add #ifdefs for a few header files.
2743         * mini-x86.h: disable the soft debugger in windows.
2744         Step 1 of 2 to make this compile on windows with gcc.
2745
2746 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2747
2748         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Comment this out for now
2749         as it breaks the build.
2750
2751 2009-07-01  Zoltan Varga  <vargaz@gmail.com>
2752
2753         Merge the soft debugger branch.
2754
2755         * debugger-agent.h debugger-agent.c: New files containing the soft
2756         mode debugger module.
2757
2758         * method-to-ir.c (mono_method_to_ir): Generate OP_SEQ_POINT opcodes
2759         at the appropriate locations.
2760
2761         * mini-<ARCH>.c (mono_arch_output_basic_block): Handle OP_SEQ_POINT
2762         opcode.
2763
2764         * mini-<ARCH>.c: Add new arch-specific functions to set/clear breakpoints,
2765         enable/disable single stepping.
2766
2767         * exceptions-<ARCH>.c (mono_arch_find_jit_info_ext): New stack unwinding api
2768         which returns all information in a StackFrameInfo structure, and can handle the
2769         LMF frames added by the debugger.
2770
2771         * mini-<ARCH>.h (MonoLMFExt): New structure containing additional information
2772         about an LMF frame.
2773
2774         * mini-exceptions.c (mono_jit_walk_stack_from_ctx_in_thread): New stack
2775         walker function which works on a specific thread and passes a StackFrameInfo
2776         structure to its callback.
2777
2778         * mini.c (mini_init): Initialize the debugger agent.
2779
2780         * aot-compiler.c aot-runtime.c: Add soft-debug support.
2781
2782         * mini-ops.h: Add OP_SEQ_POINT opcode.
2783
2784         * driver.c (mono_main): Add new '--debugger-agent' option for passing
2785         arguments to the debugger agent.
2786
2787 2009-11-02  Zoltan Varga  <vargaz@gmail.com>
2788
2789         * mini.c (mini_method_compile): Disable llvm for methods with an lmf here to
2790         speed things up.
2791
2792         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOCALLOC.
2793
2794         * tramp-x86.c (mono_arch_get_llvm_imt_trampoline): Implement this for x86.
2795
2796         * mini.c (mini_init): Avoid using the IMT trampoline in the LLVM case.
2797
2798         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add a static rgctx trampoline
2799         if needed.
2800         (mono_create_llvm_imt_trampoline): New function to create a trampoline which
2801         sets the IMT argument and makes a virtual call.
2802
2803         * mini-llvm.c: Enable interface calls using the llvm imt trampoline.
2804
2805 2009-11-01  Zoltan Varga  <vargaz@gmail.com>
2806
2807         * Makefile.am (llvm_sources): Enable the llvm option since it no longer breaks
2808         the windows build.
2809
2810 2009-10-30  Zoltan Varga  <vargaz@gmail.com>
2811
2812         * mini.c (mini_cleanup): Call profiler shutdown before shutting down the
2813         runtime. Fixes #551228.
2814
2815 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
2816
2817         * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
2818
2819         * basic.cs: Add a test.
2820
2821         * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
2822         load vtypes instead if OP_LOADV_MEMBASE in the implementation of
2823         CONSTRAINED. Fixes #550964.
2824
2825         * generics.cs: Add a test.
2826
2827 2009-10-28  Mark Probst  <mark.probst@gmail.com>
2828
2829         * mini-posix.c (add_signal_handler): Use
2830         mono_gc_get_suspend_signal() instead of GC_get_suspend_signal().
2831
2832 2009-10-28 Jerry Maine <crashfourit@gmail.com>
2833
2834         Contributed under the terms of the MIT/X11 license by
2835         Jerry Maine <crashfourit@gail.com>.
2836
2837         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2838         sse4a for simd intrinsics.
2839
2840         * mini-amd64.c (mono_arch_cpu_enumerate_simd_versions): Added code to detect
2841         sse4a for simd intrinsics.
2842
2843 2009-10-27  Zoltan Varga  <vargaz@gmail.com>
2844
2845         * ir-emit.h method-to-ir.c: Change a few _IMM macros to assign to inst_imm
2846         instead of inst_p1 which is not the same on ILP32 platforms.
2847
2848 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2849
2850         * mini-ppc.c (mono_arch_emit_prolog): Load the current got address,
2851         not the mscorlib one before calling mono_get_lmf_addr.
2852
2853         * tramp-ppc.c (mono_arch_create_trampoline_code_full): Fix the storing
2854         of the ip to the LMF.
2855
2856         * method-to-ir.c (mono_method_to_ir): Fix the handling of the
2857         immediate in the op->op_imm optimization.
2858
2859         * mini-ppc.c: Add a 'vtregs' field to ArgInfo to make the code easier to
2860         understand. VTypes now work, but are not abi compliant, as they are
2861         split into 4 byte parts instead of 8.
2862         (emit_memcpy): Fix the unrolled case to work on the PS3.
2863
2864         * mini-ppc.c (get_delegate_invoke_impl): Fix this for the PS3.
2865
2866         * aot-compiler.c (mono_compile_assembly): Make the autoreg option
2867         the default when static linking.
2868
2869         * mini-ppc.c (mono_arch_emit_prolog): Fix handling of I8 arguments.
2870
2871         * aot-compiler.c: Add an autoreg option to automatically register
2872         statically linked aot modules using ELF .ctors.
2873
2874         * genmdesc.pl: Add __ppc64__ to allowed defines.
2875
2876 2009-10-25  Zoltan Varga  <vargaz@gmail.com>
2877
2878         * mini-posix.c (add_signal_handler): Delay the GC suspend signal while
2879         executing a SIGSEGV handler on an altstack, since libgc can't handle that.
2880
2881 2009-10-24  Mark Probst  <mark.probst@gmail.com>
2882
2883         * exceptions-x86.c (mono_arch_find_jit_info): Fix build.
2884
2885 2009-10-24  Zoltan Varga  <vargaz@gmail.com>
2886
2887         * mini-exceptions.c (mini_jit_info_table_find): Add an 'out_domain' argument
2888         which will contain the domain where the method was found.
2889
2890         * exceptions-<ARCH>.c mini-exceptions.c: Update callers of
2891         mini_jit_info_table_find ().
2892
2893         * aot-compiler.c (xdebug_end_emit): Remove so stray debug code.
2894
2895         * branch-opts.c (mono_if_conversion): Avoid running deadce if it is disabled.
2896
2897 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2898
2899         * mini-x86.c (mono_arch_emit_prolog): Disable aot for methods with save_lmf
2900         set, its not supported yet.
2901
2902 2009-10-22  Zoltan Varga  <vargaz@gmail.com>
2903
2904         * aot-runtime.c (mono_aot_get_method): Avoid asserting if a array generic
2905         iface wrapper is not found.
2906         (mono_aot_get_method): Ditto for GetGenericValueImpl.
2907
2908 2009-10-21  Zoltan Varga  <vargaz@gmail.com>
2909
2910         * aot-runtime.c (mono_aot_get_method): Fix support for the IList<T> wrappers,
2911         which have a different name.
2912
2913         * aot-runtime.c (mono_aot_get_method): Special case the array generic iface
2914         wrappers and Array.GetGenericValueImpl ().
2915
2916         * aot-compiler.c: Avoid emitting some wrappers which are not needed anymore
2917         because of the change above.
2918
2919         * generics.cs: Add a test for full aot + generic array ifaces.
2920
2921 2009-10-19  Sebastien Pouliot  <sebastien@ximian.com>
2922
2923         * aot-compiler.c (emit_plt): Remove duplicate 'debug_sym' variable 
2924         that hides the previous one.
2925
2926 2009-10-18  Zoltan Varga  <vargaz@gmail.com>
2927
2928         * aot-compiler.c (can_marshal_struct): Allow some System.dll structs to be
2929         marshalled. Fixes #541623.
2930
2931 2009-10-16  Zoltan Varga  <vargaz@gmail.com>
2932
2933         * aot-compiler.c (emit_extra_methods): Remove some asserts which are not needed.
2934
2935 2009-10-15  Zoltan Varga  <vargaz@gmail.com>
2936
2937         * mini.c (mono_op_imm_to_op): Handle OP_AND/OR/XOR_IMM.
2938
2939 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2940
2941         * mini-posix.c (sigprof_signal_handler):
2942         Implemented support for building stat call chans in different ways.
2943
2944 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2945
2946         * mini-exceptions.c (mono_find_jit_info):
2947         Also check that a jit info has been found (fixes a profiler crash).
2948
2949 2009-10-14  Massimiliano Mantione  <massi@ximian.com>
2950
2951         * mini.c (mono_codegen):
2952         Call mono_profiler_code_buffer_new with correct code address.
2953
2954 2009-10-14  Zoltan Varga  <vargaz@gmail.com>
2955
2956         * driver.c (mono_main): Change the date in the copyright.
2957
2958 2009-10-14  Mark Probst  <mark.probst@gmail.com>
2959
2960         * method-to-ir.c (mono_method_to_ir): Don't use a managed array
2961         allocator in shared generic code for open classes, because we
2962         can't get those classes' vtables.  We need to make managed
2963         allocators not depend on the vtable at compile-time to solve this.
2964
2965 2009-10-13  Martin Baulig  <martin@ximian.com>
2966
2967         * debug-mini.c (mono_debugger_trampoline_compiled): Add
2968         `const guint8 *trampoline' argument; send both the old and the new
2969         notification.
2970
2971 2009-09-30  Zoltan Varga  <vargaz@gmail.com>
2972
2973         * aot-compiler.c (add_wrappers): Add a runtime invoke wrapper which is used by
2974         mono_runtime_capture_context () without calling mono_runtime_invoke ().
2975         (can_marshal_struct): Skip structures with auto layout.
2976
2977         * tramp-arm.c (GEN_TRAMP_SIZE): Increase this by 4.
2978
2979 2009-10-02  Zoltan Varga  <vargaz@gmail.com>
2980
2981         * mini-sparc.c (mono_arch_emit_setret): Emit long return values using OP_LMOVE.
2982         (mono_arch_create_vars): Instead of allocating a stack slot by hand, allocate
2983         a variable to hold the stack slot used by the int<->float conversion opcodes.
2984
2985         * mini-sparc.c (mono_arch_build_imt_thunk): Implement support for fail_tramp.
2986
2987 2009-10-04  Zoltan Varga  <vargaz@gmail.com>
2988
2989         * aot-compiler.c (add_generic_class): Only add GetGenericValueImpl wrappers
2990         when using full-aot.
2991
2992 2009-10-06  Zoltan Varga  <vargaz@gmail.com>
2993
2994         * aot-compiler.c (add_generic_class): Add an instance of GenericComparer<T> for
2995         each instance of Comparer<T>.
2996
2997         * generics.cs: Add a new test.
2998
2999 2009-10-09  Zoltan Varga  <vargaz@gmail.com>
3000
3001         * driver.c (parse_debug_options): Add a 'gdb' option.
3002
3003         * mini.c (mini_parse_debug_options): Add a 'gdb' option.
3004
3005         * image-writer.c: Add support for emitting the image into a memory buffer.
3006
3007         * dwarfwriter.c: Add support for sharing one IL file between multiple images.
3008
3009         * aot-compiler.c: Add support for registering debug info with GDB using the
3010         new JIT debugging interface in GDB 7.0. It can be turned on by setting
3011         MONO_XDEBUG to 'gdb'.
3012
3013 2009-10-10  Zoltan Varga  <vargaz@gmail.com>
3014
3015         * aot-compiler.c (mono_save_trampoline_xdebug_info): Implement this for the
3016         gdb mode.
3017
3018 2009-10-11  Zoltan Varga  <vargaz@gmail.com>
3019
3020         * aot-compiler.c (mono_save_xdebug_info): Emit a symbol for the method which
3021         can be used to set breakpoints in gdb.
3022
3023         * image-writer.c (bin_writer_emit_writeout): Add support for setting the text
3024         segment to an absolute address.
3025
3026 2009-10-13  Mark Probst  <mark.probst@gmail.com>
3027
3028         * method-to-ir.c: Use the managed array allocator method if
3029         available.
3030
3031 2009-10-13  Bill Holmes  <billholmes54@gmail.com>
3032
3033         * aot-compiler.c : Fix the MSVC builds
3034
3035         Code is contributed under MIT/X11 license.
3036
3037 2009-10-13  Zoltan Varga  <vargaz@gmail.com>
3038
3039         * aot-compiler.c (mono_save_xdebug_info): Group methods into groups of 10 to
3040         avoid registering 1 symbol file per method with gdb.
3041
3042 2009-09-29  Zoltan Varga  <vargaz@gmail.com>
3043
3044         * mini-sparc.c: Fix the handling of enums with base type long.
3045
3046         * mini-sparc.c (mono_arch_output_basic_block): Fix IREM_UN_IMM.
3047
3048         * mini-sparc.c (mono_arch_allocate_vars): Use mono_class_from_mono_type ()
3049         instead of using type->data.klass as the later doesn't work with generics.
3050
3051 2009-09-25  Mark Probst  <mark.probst@gmail.com>
3052
3053         * method-to-ir.c, mini.h, mini-alpha.c, mini-amd64.c, mini-arm.c,
3054         mini-hppa.c, mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c,
3055         mini-s390x.c, mini-sparc.c, mini-x86.c: Thread.get_CurrentThread
3056         works differently now and we don't handle it in the JIT anymore.
3057
3058         * mini.c, mini-exceptions.c, mini-posix.c, debug-debugger.c,
3059         debug-mini.c, tramp-amd64.c, tramp-x86.c: Changes resulting from
3060         the Thread class split.
3061
3062 2009-09-25  Zoltan Varga  <vargaz@gmail.com>
3063
3064         * driver.c: Don't run tests with the obsolete treeprop optimization.
3065
3066         * mini-sparc.c (mono_arch_create_vars): Make the component vars of a long ret
3067         variable volatile. Fixes #541577.
3068
3069         * basic-calls.cs: Add a new test.
3070
3071         * basic-long.cs: Remove tests which are now in basic-calls.cs.
3072
3073 2009-09-24  Zoltan Varga  <vargaz@gmail.com>
3074
3075         * dwarfwriter.c (emit_debug_info_end): Disable this as it doesn't seem to
3076         work/required with recent iphone sdk versions.
3077
3078         * aot-compiler.c (add_wrappers): Generate PtrToStructure wrappers for more
3079         structures.
3080
3081         * decompose.c (mono_decompose_vtype_opts): Avoid reading uninitialized memory
3082         in the VCALL decomposition code.
3083
3084 2009-09-22  Zoltan Varga  <vargaz@gmail.com>
3085
3086         * mini-ia64.c (mono_arch_output_basic_block): Fix ISHR/ISHR_IMM.
3087
3088         * basic.cs: Add a test.
3089
3090         * mini-ia64.c (mono_arch_build_imt_thunk): Implement support the virtual
3091         generic invokes.
3092
3093         * mini-exceptions.c (mini_jit_info_table_find): New helper function which
3094         searches all the domains of the current thread.
3095
3096         * exceptions-<ARCH>.c: Use it. Fixes #539394.
3097
3098 2009-09-21  Zoltan Varga  <vargaz@gmail.com>
3099
3100         * exceptions-arm.c (mono_arm_throw_exception): Set ctx->ebp to fp instead of sp
3101         so catching exceptions thrown in the same method works. Fixes exception17.exe.
3102
3103         * tramp-arm.c (mono_arch_create_trampoline_code_full): Store NULL into lmf->method
3104         for non-jit trampolines.
3105
3106         * mini.c (mono_jit_runtime_invoke): Allow string ctors with dyn runtime invoke.
3107
3108         * aot-compiler.c (add_wrappers): Ditto.
3109
3110         * mini-arm.c: Implement support for passing vtypes and floats, and increase
3111         the size of the param area used by dyn_call to 6 which covers the majority of
3112         methods.
3113
3114         * mini.c aot-compiler.c: Allow dyn_call for string methods except ctors.
3115
3116         * mini-arm.c: Implement support for passing/receiving
3117         longs and receiving floats in the dyn_call code.
3118
3119         * mini-amd64.c: Implement support for receiving vtypes in registers in
3120         the dyn_call code.
3121
3122         * mini.c mini-amd64.c: Implement partial support for passing vtypes in
3123         the dyn_call code.
3124
3125 2009-09-20  Zoltan Varga  <vargaz@gmail.com>
3126
3127         * mini-arm.c (get_call_info): Return more precise information in
3128         ArgInfo->regtype.
3129         (dyn_call_supported): Use the information in CallInfo.
3130
3131         * mini-arm.c: Enable support for returning vtypes in the dyn_call code.
3132
3133         * mini.c mini-amd64.c: Enable support for returning vtypes in the dyn_call
3134         code.
3135
3136         * mini-arm.c: Update after the dyn_call api changes.
3137
3138         * mini.c (mini_create_jit_domain_info): Register a destructor function
3139         for the runtime_invoke_hash.
3140
3141         * mini-amd64.c (mono_arch_get_dyn_call_args): Rename this to
3142         'mono_arch_dyn_call_start'. Pass the pointer to the return value buffer to
3143         this function.
3144         (mono_arch_get_dyn_call_ret): Rename this to 'mono_arch_dyn_call_finish'.
3145         (dyn_call_supported): Simplify this by using get_call_info ().
3146         (mono_arch_dyn_call_free): New destructor function.
3147
3148         * generics.cs: Remove a printf.
3149
3150         * method-to-ir.c (mono_method_to_ir): Allocate some param area for DYN_CALL.
3151
3152         * mini-arm.c: Add support for enum return values and passing a few arguments
3153         on the stack.
3154         
3155         * mini.c (mono_jit_runtime_invoke): Add support for enum return values to
3156         dyn invoke.
3157
3158         * mini-amd64.c (mono_arch_get_dyn_call_ret): Ditto.
3159
3160         * aot-compiler.c (add_wrappers): Add a few restrictions for the use of
3161         the dynamic invoke wrappers.
3162
3163         * mini-arm.c: Implement OP_DYN_CALL for arm.
3164
3165         * aot-compiler.c (add_wrappers): Avoid aot-ing runtime invoke wrappers
3166         supported by the dynamic runtime invoke wrapper.
3167
3168         * aot-compiler.c aot-runtime.c: Add support for encoding the dynamic
3169         runtime invoke wrapper.
3170
3171         * mini.c (mono_jit_runtime_invoke): Use the dynamic runtime invoke wrappers
3172         if possible when running with full-aot.
3173
3174         * mini-ops.h: Add OP_DYN_CALL opcode.
3175
3176         * mini-amd64.c method-to-ir.c: Add infrastructure for making method calls
3177         with dynamic arguments lists similar to libffi.
3178
3179 2009-09-19  Zoltan Varga  <vargaz@gmail.com>
3180
3181         * method-to-ir.c: Fix the previous change on 64 bit platforms.
3182         
3183         * method-to-ir.c: Applied patch from Rodrigo Kumpera. Allow an i8 argument
3184         to NEWARR.
3185
3186         * iltests.il.in: Add a new test.
3187         
3188 2009-09-18  Zoltan Varga  <vargaz@gmail.com>
3189
3190         * aot-compiler.c (add_generic_instances): Add more instances of
3191         GenericEqualityComparer.
3192
3193 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3194
3195         * mini.c: Add asserts for mono_class_vtable calls that are not meant to fail.
3196
3197 2009-09-18  Rodrigo Kumpera  <rkumpera@novell.com>
3198
3199         * method-to-ir.c: Handle failures from mono_class_vtable. Added some
3200         comments on some functions that now can fail.
3201
3202 2009-09-17  Andrew Jorgensen  <ajorgensen@novell.com>
3203
3204         * Makefile.am: Add Info.plist to EXTRA_DIST
3205
3206 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3207
3208         * method-to-ir.c (mono_method_to_ir): Allow AOT for CEE_LDTOKEN in
3209         static synchronized wrappers. Fixes #539500.
3210
3211 2009-09-14  Rodrigo Kumpera  <rkumpera@novell.com>
3212
3213         * jit-icalls.c (mono_class_static_field_address): handle vtable failure
3214         properly.
3215
3216 2009-09-16  Zoltan Varga  <vargaz@gmail.com>
3217
3218         * mini-exceptions.c (mono_handle_exception_internal): Store the computed
3219         lmf before calling filter clauses as well. Fixes #539550.
3220
3221         * exceptions.cs: Add a test.
3222         
3223 2009-09-14  Zoltan Varga  <vargaz@gmail.com>
3224
3225         * aot-compiler.c (add_generic_class): Add instances of
3226         Array.GetGenericValueImpl as well.
3227
3228         * Makefile.am (fullaotcheck): Copy and aot more assemblies so linq
3229         can be tested too.
3230
3231         * generics.cs: Add a fullaot linq test.
3232
3233 2009-09-10  Zoltan Varga  <vargaz@gmail.com>
3234
3235         * aot-compiler.c (arch_emit_static_rgctx_trampoline): Don't clobber argument
3236         reg r1 on arm.
3237
3238 2009-09-10  Bill Holmes  <billholmes54@gmail.com>
3239
3240         * mini-trampolines.c (mono_delegate_trampoline) : Call
3241           mono_cominterop_get_invoke if the delegate target object
3242           is a COM object.
3243
3244         Code is contributed under MIT/X11 license.
3245
3246 2009-09-09  Sebastien Pouliot  <sebastien@ximian.com>
3247
3248         * method-to-ir.c: For CoreCLR throw a SecurityException if an 
3249         internal call is defined outside platform code. Reduce code 
3250         duplication with existing [Method|Field]AccessException
3251
3252 2009-09-08  Rodrigo Kumpera  <rkumpera@novell.com>
3253
3254         * mini-x86.c (mono_arch_emit_call): Don't reduce stack usage by 4
3255         if the return value is a small struct passed on regs.
3256
3257 2009-09-09  Zoltan Varga  <vargaz@gmail.com>
3258
3259         * cpu-arm.md mini-arm.c: Remove unused opcodes.
3260
3261         * mini-codegen.c: Enable the cpu description validation for arm.
3262
3263 2009-09-08  Zoltan Varga  <vargaz@gmail.com>
3264
3265         * basic-calls.cs: Move the test_0_float_load_and_store_with_big_offset ()
3266         test which depends on structs to objects.cs.
3267         
3268         * basic-calls.cs: Remove calls to Console.WriteLine and throws, since those
3269         require object model related stuff working.
3270
3271         * cpu-x86.md mini-x86.c: Remove more unused opcodes.
3272
3273         * mini-ops.h: Fix OP_BIGMUL instruction descriptions.
3274
3275         * mini-codegen.c (mono_local_regalloc): Validate the cpu description 
3276         against the instruction metadata in mini-ops.h. amd64 only for now.
3277
3278         * mini-ops.h: Fix some instruction descriptions.
3279
3280         * mini-ops.h mini-x86.c mini-amd64.c cpu-<ARCH>.md: Remove some
3281         unused instructions.
3282
3283 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3284
3285         * exceptions.cs: Add a new test.
3286
3287 2009-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
3288
3289         * mini-x86.c (needs_stack_frame): OSX requires full frames to keep proper alignment.
3290
3291 2009-09-06  Zoltan Varga  <vargaz@gmail.com>
3292
3293         * mini-llvm.c (mono_llvm_emit_method): Add a few more missing casts,
3294         skip empty phi opcodes.
3295         
3296         * mini-llvm.c (mono_llvm_emit_method): Handle unsigned volatile variables
3297         correctly by zero extending after loads. Skip methods containing calls
3298         to the monitor enter/exit trampolines.
3299
3300         * tramp-x86.c (mono_arch_create_trampoline_code): Align the stack
3301         when calling mono_thread_force_interruption_checkpoint ().
3302
3303         * mini.c (mini_method_compile): Disable llvm when AOT compiling.
3304
3305         * tramp-amd64.c (mono_arch_patch_callsite): Add support for 32 bit ->
3306         64 bit thunks.
3307         (mono_arch_nullify_class_init_trampoline): Read 'buf' instead of 'code'.
3308
3309         * mini-llvm.c (mono_llvm_emit_method): Add a few missing conversions so a 
3310         bootstrap could run.
3311
3312 2009-09-04  Zoltan Varga  <vargaz@gmail.com>
3313
3314         * mini.c (mini_init): Set callbacks.get_runtime_build_info ().
3315
3316 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3317
3318         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass the start
3319         of the method to
3320         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3321         LLVM might be very short.
3322
3323         * mini-x86.c (mono_arch_output_basic_block): Maintain stack alignment
3324         in OP_THROW/RETHROW.
3325
3326         * exceptions-x86.c: Rewrite the throw trampolines so they maintain stack
3327         alignment on osx.
3328
3329 2009-09-03  Zoltan Varga  <vargaz@gmail.com>
3330
3331         * mini-amd64.c (mono_arch_get_vcall_slot): Pass the start of the method to
3332         mono_breakpoint_clean_code () when using LLVM as the prologues generated by
3333         LLVM might be very short.
3334
3335 2009-09-01  Zoltan Varga  <vargaz@gmail.com>
3336
3337         * exceptions-x86.c (throw_exception): Fix the previous change by substracting
3338         the alignment for the value of sp.
3339
3340 2009-09-01  Geoff Norton  <gnorton@novell.com>
3341
3342         * mini.c (mono_get_lmf_addr): Fix jit_thread_attach for native to 
3343         managed wrappers in full aot.
3344
3345 2009-08-31  Zoltan Varga  <vargaz@gmail.com>
3346
3347         * exceptions-x86.c (get_throw_exception): Align the stack on osx.
3348
3349 2009-08-28  Zoltan Varga  <vargaz@gmail.com>
3350
3351         * mini-llvm-cpp.cpp mini-llvm.c: Update to latest llvm api.
3352
3353 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3354
3355         * aot-compiler.c (emit_exception_debug_info): Emit ei->flags too.
3356
3357         * aot-runtime.c (decode_exception_debug_info): Decode ei->flags from the
3358         saved info.
3359
3360         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
3361
3362         * aot-runtime.c aot-compiler.c: Emit exception causes fully so we don't
3363         depend on the info MonoMethodHeader which could be missing in IL stripped
3364         assemblies.
3365
3366 2009-08-25  Zoltan Varga  <vargaz@gmail.com>
3367
3368         * mini-arm.c (add_general): Fix the passing of 64 bit values on darwin, where
3369         they are only 4 byte aligned.
3370
3371 2009-08-21  Zoltan Varga  <vargaz@gmail.com>
3372
3373         * mini-arm.c (mono_arch_allocate_vars): Use FP as the frame pointer as
3374         was done previously, since using SP causes too many problems.
3375
3376         * exceptions-arm.c: Fix the handling of sp/fp so unwinding through
3377         frames without a frame pointer works.
3378
3379         * mini-arm.c (mono_arch_get_global_int_regs): Avoid using V5 as a
3380         global register in methods with calls, since the calls can go through
3381         a static rgctx trampoline which doesn't save it.
3382
3383 2009-08-19  Zoltan Varga  <vargaz@gmail.com>
3384
3385         * mini-arm.c (mono_arch_context_get_int_reg): Handle SP as well.
3386
3387 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3388
3389         * aot-compiler.c (add_generic_instances): Fix the net 1.1 build.
3390
3391 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3392
3393         * method-to-ir.c: Fix warnings for uninitialized variables.
3394
3395 2009-08-18  Christian Hergert  <chris@dronelabs.com>
3396
3397         * mini-exceptions.c:
3398         * aot-compiler.c: Fix printf warnings.
3399
3400 2009-08-18  Zoltan Varga  <vargaz@gmail.com>
3401
3402         * aot-compiler.c (add_generic_instances): Add string[] wrapper methods.
3403         Add GetGenericValueImpl<string>.
3404         
3405         * aot-compiler.c (add_generic_instances): Add instances of
3406         GenericEqualityComparer<T> for primitive types. Only emit the array
3407         wrappers into the mscorlib image.
3408
3409 2009-08-15  Zoltan Varga  <vargaz@gmail.com>
3410
3411         * aot-runtime.c (load_method): Rename 'aot_module' -> 'amodule'. Allocate
3412         the methods_loaded array using amodule->info->nmethods.
3413
3414         * mini.h (MonoAotFileInfo): Add an 'nmethods' field.
3415         (MONO_AOT_FILE_VERSION): Bump this.
3416
3417         * aot-compiler.c: Emit more generic instances allowing some parts of linq
3418         to work.
3419
3420         * aot-runtime.c (mono_aot_get_unwind_info): Handle the case when the
3421         MonoJitInfo doesn't belong to its methods aot image.
3422
3423 2009-08-14  Zoltan Varga  <vargaz@gmail.com>
3424
3425         * mini-arm.c (mono_arch_allocate_vars): Use SP as the default frame reg.
3426
3427         * mini-arm.c: Fix warnings.
3428         
3429         * mini-arm.c (mono_arm_emit_load_imm): Only emit a movt if needed.
3430
3431         * mini-arm.c (mono_arm_emit_load_imm): Use movt/movw if the cpu
3432         supports it.
3433
3434 2009-08-12  Zoltan Varga  <vargaz@gmail.com>
3435
3436         * aot-compiler.c (arch_emit_imt_thunk): Rework the arm code to
3437         avoid clobbering IP.
3438
3439         * mini-trampolines.c (mono_magic_trampoline): Allocate a local to
3440         hold the trampoline argument, so its initial value is available during
3441         debugging.
3442
3443 2009-08-11 Gonzalo Paniagua Javier <gonzalo@novell.com>
3444
3445         * exceptions-arm.c:
3446         * exceptions-hppa.c:
3447         * mini.c:
3448         * exceptions-s390x.c:
3449         * exceptions-mips.c:
3450         * exceptions-ppc.c:
3451         * exceptions-sparc.c:
3452         * exceptions-alpha.c:
3453         * aot-runtime.c:
3454         * mini-trampolines.c:
3455         * exceptions-x86.c:
3456         * exceptions-s390.c: add and use #define's instead of sizeof()
3457         for MonoJitInfo and MonoJitInfoTable.
3458
3459 2009-08-10 Gonzalo Paniagua Javier <gonzalo@novell.com>
3460
3461         * tramp-arm.c:
3462         * tramp-amd64.c:
3463         * tramp-ppc.c:
3464         * tramp-x86.c: use a #define instead of sizeof() for a few
3465         structures that use a zero-length array.
3466
3467 2009-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
3468
3469         * method-to-ir.c (mono_method_to_ir/CEE_CONSTRAINED_): Handle the
3470         case when the method is dynamic. Fixes #529238.
3471
3472 2009-08-06  Zoltan Varga  <vargaz@gmail.com>
3473
3474         * mini.c (mono_jit_compile_method_inner): Throw an exception instead
3475         of asserting when a method is JIT compiled in full-aot mode.
3476
3477 2009-08-03  Jerry Maine  <crashfourit@gmail.com>
3478         
3479         Contributed under the terms of the MIT/X11 license by
3480         Jerry Maine <crashfourit@gail.com>.
3481         
3482         * fixed wrong dates in changelog.
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         * basic-simd.cs: added test for packed double square root.
3490         * cpu-amd64.md: added opcode info for packed double square root.
3491         * cpu-x86.md: added opcode info for packed double square root.
3492         * mini-ops.h: added IR opcode for packed double square root.
3493         * mini-x86.c: added IR to native translation code for packed double square root.
3494         * mini-amd64.c: removed todo for packed double square root.
3495         * simd-intrinsics.c: added method to IR opcode converstion for
3496         packed double square root.
3497
3498 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3499
3500         Contributed under the terms of the MIT/X11 license by
3501         Jerry Maine <crashfourit@gail.com>.
3502
3503         * mini-amd64.c: Added a change to help tell the difference as 
3504         to what perpose the xmm register is being used--mainly to help
3505         with debuging.
3506         * mini-amd64.h: Changed callee regs to use 15 out of 16 
3507         (one used for special cases) xmm registers for both fp
3508         and simd ops. Added define to turn on new feature in the regalloc
3509         that allows fp and simd ops to share the xmm regs happily.
3510         * codegen.c: Added code to detect for which perpose an xmm reg is
3511         being used (fp or simd) and to translate back and forth to the
3512         correct logical reg bank (fp or simd) for 'spill load's.
3513
3514 2009-08-03 Jerry Maine <crashfourit@gmail.com>
3515
3516         Contributed under the terms of the MIT/X11 license by
3517         Jerry Maine <crashfourit@gail.com>.
3518
3519         * basic-simd.cs: Added tests for stressing the regalloc when running with
3520         16 simd regs and when simd and fp ops share the same reg bank.
3521
3522 2009-08-01  Mark Probst  <mark.probst@gmail.com>
3523
3524         * method-to-ir.c (mini_emit_stobj): If we call mono_value_copy()
3525         in shared generic code, we might have to look up the class in the
3526         RGCTX.  If we use the class directly, compute its GC descriptor.
3527
3528 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3529
3530         * mini.c (mono_jit_runtime_invoke): Fix a warning.
3531
3532 2009-07-31  Rodrigo Kumpera  <rkumpera@novell.com>
3533
3534         * mini.c (mono_jit_runtime_invoke): Initialize the class and
3535         check for errors. Fixed the case when the class with the Main
3536         method is broken.
3537
3538 2009-07-31 Jerry Maine <crashfourit@gmail.com>
3539
3540         Contributed under the terms of the MIT/X11 license by
3541         Jerry Maine <crashfourit@gail.com>.
3542
3543         * cpu-amd64.md: Fixed simple bug in machine discrition file.
3544
3545 2009-07-31  Zoltan Varga  <vargaz@gmail.com>
3546
3547         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_IREM_UN_IMM.
3548
3549 2009-08-30  Rodrigo Kumpera  <rkumpera@novell.com>
3550
3551         * method-to-ir.c: Fix naming of stelem and ldelem.
3552
3553 2009-07-30  Zoltan Varga  <vargaz@gmail.com>
3554
3555         * driver.c (main_thread_handler): Check that the assembly loaded
3556         matches the filename when doing AOT.
3557
3558 2009-07-30  Mark Probst  <mark.probst@gmail.com>
3559
3560         * mini.c: get_ip_from_sigctx installer has been removed, so don't
3561         call it anymore.
3562
3563         * mini-x86.h, mini-amd64.h, mini-ppc.h: UCONTEXT macros moved (to
3564         utils/mono-sigcontext.h).
3565
3566         * exceptions-amd64.c: Use the UCONTEXT_GREGS macro instead of an
3567         #ifdef.
3568
3569 2009-07-29  Massimiliano Mantione  <massi@ximian.com>
3570
3571         * mini.c (mono_codegen):
3572         Call profiler hook to keep track of method code buffers.
3573
3574 2009-07-27  Mark Probst  <mark.probst@gmail.com>
3575
3576         * method-to-ir.c: Invoke write barriers for the
3577         Interlocked.(Compare)Exchange JIT intrinsics.
3578
3579 2009-07-26  Raja R Harinath  <harinath@hurrynot.org>
3580
3581         * Makefile.am (version.h): Fix issues when built out of tree.
3582         Remove some redundant 'grep's piped through 'sed's.
3583
3584 Fri Jul 24 17:28:37 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3585
3586         This patch is contributed under the terms of the MIT/X11 license
3587
3588         * mini-ppc.c (mono_arch_output_basic_block):
3589         (OP_STOREI1_MEMBASE_REG): Handle 32-bit offsets combining addis
3590         for bits 32-47 with signed load/store diplacements for bits
3591         48-63.  Use prefered base/offset order for indexed form.
3592         (OP_STOREI2_MEMBASE_REG, OP_STORE_MEMBASE_REG): Same.
3593         (OP_LOAD_MEMBASE, OP_LOADI4_MEMBASE, OP_LOADU4_MEMBASE,
3594         OP_LOADI1_MEMBASE, OP_LOADU1_MEMBASE, OP_LOADU2_MEMBASE,
3595         OP_LOADI2_MEMBASE): Same.
3596         (OP_STORER8_MEMBASE_REG, OP_LOADR8_MEMBASE,
3597         OP_STORER4_MEMBASE_REG, OP_LOADR4_MEMBASE): Same.
3598         (OP_STOREI1_MEMINDEX): Use prefered base/offset order for
3599         indexed form.
3600         (OP_STOREI2_MEMINDEX, OP_STORE_MEMINDEX): Same.
3601         (OP_LOAD_MEMINDEX, OP_LOADI4_MEMINDEX, OP_LOADU4_MEMINDEX,
3602         OP_LOADU2_MEMINDEX, OP_LOADI2_MEMINDEX, OP_LOADU1_MEMINDEX,
3603         OP_LOADI1_MEMINDEX): Same
3604         (OP_LOADR4_MEMINDEX, OP_LOADR8_MEMINDEX, OP_STORER4_MEMINDEX,
3605         OP_STORER8_MEMINDEX): Same
3606         (OP_JMP): Use addis/addi sequence for int cfg->stack_usage
3607         computations.
3608         (mono_arch_emit_prolog): Handle 32-bit offsets combining addis
3609         for bits 32-47 with signed load/store diplacements for bits
3610         48-63.  Use prefered base/offset order for indexed form.
3611
3612 Fri Jul 24 16:57:12 CEST 2009 Steven Munroe  <munroesj@us.ibm.com>
3613
3614 This patch is contributed under the terms of the MIT/X11 license
3615
3616         * mini-ppc.c: Define PPC_MOVE_FPR_GPR and PPC_ISA_64.
3617         (mono_arch_get_vcall_slot): Fx pointer to int cast warning.
3618         (mono_arch_decompose_opts): Make OP_ICONV_TO_R4 and
3619         OP_ICONV_TO_R8 decompose conditional on !PPC_ISA_64.
3620         (mono_arch_output_basic_block) [OP_JMP]: Use ppc_load32 for
3621         cfg->stack_usage to avoid size warnings.
3622         (mono_arch_output_basic_block) [__mono_ppc64__]: Replace
3623         store/load sequence with mffgpr if PPC_MOVE_FPR_GPR is true.
3624         (mono_arch_output_basic_block) [!__mono_ppc64__]: For
3625         OP_ICONV_TO_R4 or OP_ICONV_TO_R8 and PPC_ISA_64 use fcfid
3626         to convert.
3627         (mono_arch_emit_prolog): Move mono_emit_unwind_op_def_cfa 
3628         after code varible is initialized.
3629         Add g_assert ppc_is_imm16 for ainfo->offset. Handle
3630         ainfo->size == 8 when ainfo->offset !ppc_is_imm16.
3631         (mono_arch_emit_epilog): 
3632         Move Use ppc_load32 for cfg->stack_usage to avoid size
3633         warnings.
3634
3635 2009-07-24  Mark Probst  <mark.probst@gmail.com>
3636
3637         * method-to-ir.c: The write barrier doesn't do the store anymore,
3638         so we have always to emit it.  Also, emit the wbarrier after the
3639         store.
3640
3641 2009-07-24  Zoltan Varga  <vargaz@gmail.com>
3642
3643         * mini-arm.c (mono_arch_get_delegate_invoke_impls): Add a trampoline
3644         for argument count 3 too.
3645
3646 2009-07-23  Zoltan Varga  <vargaz@gmail.com>
3647
3648         * mini.c (mono_jit_compile_method_with_opt): Add an 'ex' argument to let
3649         the caller handle the exceptions.
3650         (mono_jit_runtime_invoke): Handle exceptions thrown while compiling the
3651         method. Fixes #524498.
3652
3653 2009-07-22  Geoff Norton  <gnorton@novell.com>
3654
3655         * mini-exceptions.c: Fix build on ia64.
3656
3657 2009-07-22  Mark Probst  <mark.probst@gmail.com>
3658
3659         * mini-exceptions.c (ves_icall_get_frame_info): Use write
3660         barriers.
3661
3662 2009-07-21  Zoltan Varga  <vargaz@gmail.com>
3663
3664         * mini-arm.c (mono_arch_emit_prolog): Fix thread attaching in aot
3665         code.
3666
3667 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3668
3669         * basic-simd.cs (Main): Pass args to the test driver.
3670
3671 2009-07-20  Geoff Norton  <gnorton@novell.com>
3672
3673         * mini-x86.h: Fix the x86 version guards to use Apple's
3674         properly defined macros.
3675
3676 2009-07-20  Geoff Norton  <gnorton@novell.com>
3677
3678         * mini-x86.c: Fix --trace on darwin-x86 and other systems which require
3679         aligned access.
3680
3681 2009-07-20  Zoltan Varga  <vargaz@gmail.com>
3682
3683         * mini.c (mono_jit_runtime_invoke): Speed this up by adding a hash to
3684         MonoJitDomainInfo which maps MonoMethod's to a structure containing all
3685         the information which is needed for invokes, so only one locking+hash table
3686         lookup is needed.
3687
3688         * aot-compiler.c: Add a 'tool-prefix' option to be used when cross-compiling.
3689         
3690         * aot-compiler.c (add_generic_instances): Emit instances of 
3691         GenericComparer<T> for primitive types.
3692
3693 2009-07-19 Rodrigo Kumpera  <rkumpera@novell.com>
3694
3695         * mini-posix.c: Fix linux build.
3696
3697 2009-07-19  Geoff Norton  <gnorton@novell.com>
3698
3699         * mini.h: Add prototypes for mono_runtime_syscall_fork and
3700         mono_gdb_render_native_backtraces
3701         * mini-darwin.c: Apple's syscall(SYS_fork) is very weird on x86,
3702         so we implement the sane semantics to the runtime here
3703         (mono_gdb_render_native_backtraces).  Apple also uses an ancient gdb
3704         so we need to call it differently (mono_gdb_render_native_backtraces)
3705         * mini-posix.c: Move the old semantics from mini.c to the prototypes
3706         here for default implementations.
3707         * mini.c: Refactor mono_handle_native_sigsegv so that we can properly
3708         support Apple's weird syscall (SYS_fork) implementation and not busy
3709         loop in abort() on native crashes on OSX anymore.
3710
3711 2009-07-18  Zoltan Varga  <vargaz@gmail.com>
3712
3713         * aot-runtime.c (load_method): Change the handling of the
3714         MONO_LASTAOT env variable so MONO_LASTAOT=0 means that no aot methods
3715         are used.
3716
3717         * mini.c (mono_patch_info_equal): Really fix the handling of RGCTX_FETCH.
3718
3719 2009-07-17  Zoltan Varga  <vargaz@gmail.com>
3720
3721         * mini.c (mono_patch_info_equal): Revert the last change for now as it
3722         seems to break the aot tests.
3723         
3724         * mini.c (mono_patch_info_equal): Fix the handling of 
3725         MONO_PATCH_INFO_RGCTX_FETCH.
3726
3727 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3728
3729         * unwind.c: Use TARGET_AMD64 instead of __x86_64__.
3730
3731         * mini.c (mono_patch_info_hash): Fix the handling of 
3732         MONO_PATCH_INFO_INTERNAL_METHOD.
3733         (mono_patch_info_equal): Ditto.
3734
3735 2009-07-16  Zoltan Varga  <vargaz@gmail.com>
3736
3737         * mini-llvm.c (mono_llvm_emit_method): Use module instead of ctx->module
3738         in a few places.
3739         
3740         * mini-llvm.c: Add some infrastructure for AOT support.
3741
3742 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3743
3744         * mini-llvm-cpp.c: Update to the latest llvm api.
3745         
3746         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Set the EnablePrettyStackTrace
3747         option to false to prevent llvm from installing signal handlers which
3748         trip up the gc.
3749         
3750 2009-07-15 Rodrigo Kumpera  <rkumpera@novell.com>
3751
3752         * cpu-x86.md:
3753         * cpu-amd64.md: Revert previous change as those instructions
3754         take 2 separate arguments. Remember to read the arch docs more
3755         carefully next time.
3756
3757 2009-07-15  Zoltan Varga  <vargaz@gmail.com>
3758
3759         * mini-llvm-cpp.cpp (mono_llvm_build_alloca): Update to latest llvm api.
3760
3761 Wed Jul 15 17:20:27 CEST 2009 Paolo Molaro <lupus@ximian.com>
3762
3763         * mini-ppc.c: exploit multiple load/store units if available (rest of
3764         the change from Steven Munroe (<munroesj@us.ibm.com>) first patch at 
3765         http://bugzilla.novell.com/show_bug.cgi?id=487846).
3766
3767 Wed Jul 15 16:24:57 CEST 2009 Paolo Molaro <lupus@ximian.com>
3768
3769         * mini-ppc.c: integrate most of Steven Munroe (<munroesj@us.ibm.com>)
3770         first patch at http://bugzilla.novell.com/show_bug.cgi?id=487846.
3771
3772 2009-07-14 Rodrigo Kumpera  <rkumpera@novell.com>
3773
3774         * cpu-x86.md: Fix missing clobbering from trancendental simd
3775         ops.
3776
3777         * cpu-amd64.md: Same.
3778
3779 2009-07-14 Jerry Maine <crashfourit@gmail.com>
3780
3781         Contributed under the terms of the MIT/X11 license by
3782         Jerry Maine <crashfourit@gail.com>.
3783
3784         * basic-simd.cs: Added tests for single and doulble indexers.
3785
3786         * cpu-amd64.md: Added simd opcode information.
3787
3788         * mini-amd64.c: Added IR to native simd generation code.
3789         Added simd register names and function that returns them.
3790
3791         * mini-amd64.h: Added marcos to turn on simd code compilation in
3792         amd64. Added max simd register count marco. Added caller/callee
3793         register mask marcos. Added marcos to use simd register bank.
3794
3795         * mini.h: Added helper marco for shufling dwords and simple
3796         floats.
3797
3798 2009-07-14  Zoltan Varga  <vargaz@gmail.com>
3799
3800         * mini-llvm-cpp.cpp: Update to latest llvm SVN api.
3801
3802         * Makefile.am (mono_LDADD): Pass LLVM_LDFLAGS to the linked.
3803
3804         * unwind.c (mono_unwind_get_ops_from_fde): Make this return
3805         the length of the native code as well.
3806
3807         * basic-simd.cs: Add a test for #521662.
3808
3809 Mon Jul 13 17:58:50 CEST 2009 Paolo Molaro <lupus@ximian.com>
3810
3811         * mini-ppc.c: fixed bug introduced by Steven's TLS changes.
3812
3813 2009-07-13  Mark Probst  <mark.probst@gmail.com>
3814
3815         * mini.c: Register function for getting the IP from a signal
3816         context with metadata.
3817
3818 2009-07-13  Zoltan Varga  <vargaz@gmail.com>
3819
3820         * method-to-ir.c (mono_method_to_ir): When calling a gshared method,
3821         call a generic class init trampoline if needed. Fixes #519336.
3822
3823         * generics.cs: Add a test.
3824         
3825 2009-07-09  Mark Probst  <mark.probst@gmail.com>
3826
3827         * method-to-ir.c: When doing a call which might be remote from
3828         shared generic code to other shared code with open type arguments,
3829         get the remoting invoke wrapper from the RGCTX and do an indirect
3830         call to it.
3831
3832 2009-07-03  Zoltan Varga  <vargaz@gmail.com>
3833
3834         * mini-trampolines.c (get_unbox_trampoline): Add an rgctx trampoline
3835         after the unbox trampoline in the full-aot case.
3836
3837 2009-07-02  jonas echterhoff <jonas@unity3d.com>
3838         
3839         * mini.c: Move initialization of jit_mutex before debugger initialization
3840         
3841         to avoid crashes.
3842         
3843         
3844         * Info.plist: added Info.plist and link flag to enable the mono executable
3845         to access other processes. Requires codesigning of the executable to work.
3846         
3847         * mdb-debug-info32-darwin.s: The same as mdb-debug-info32.s, changed to 
3848         
3849         compile on OS X.
3850         
3851
3852 2009-06-30  Zoltan Varga  <vargaz@gmail.com>
3853
3854         * driver.c (mini_regression): Handle loading errors. Fixes #508869.
3855
3856 2009-06-29  Zoltan Varga  <vargaz@gmail.com>
3857
3858         * mini-exceptions.c (get_generic_context_from_stack_frame): Fix the case
3859         when the generic instance is an instantiation of a subclass of the
3860         methods class. Fixes #517166.
3861
3862 2009-06-26  Zoltan Varga  <vargaz@gmail.com>
3863
3864         * mini-amd64.c (mono_arch_emit_prolog): Fix thread attaching in AOTed
3865         code.
3866
3867         * mini.c (mono_jit_thread_attach): Allow domain to be NULL for calls from
3868         AOTed code.
3869
3870         * CMakeLists.txt: Add minimal support for installation.
3871
3872 2009-06-25  Zoltan Varga  <vargaz@gmail.com>
3873
3874         * aot-compiler.c (emit_and_reloc_code): Factor out the code to
3875         determine whenever a method is directly callable to a separate function.
3876
3877         * mini-<ARCH>.c tramp-<ARCH>.c: Remove needless casts and add new
3878         needed ones as a result of the previous change.
3879
3880         * mini-<ARCH>.c tramp-<ARCH>.c: Use mgreg_t* as the
3881         type of register arrays.
3882
3883         * mini-trampolines.c tramp-<ARCH>.c aot-runtime.c: Use mgreg_t* as the
3884         type of register arrays.
3885
3886 2009-06-24  Jerry Maine  <crashfourit@gmail.com>
3887         
3888         Contributed under the terms of the MIT/X11 license by
3889         Jerry Maine <crashfourit@gail.com>.
3890
3891         * mini-amd64.c: Added code to convert simd IR to native amd64 sse.
3892
3893 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3894
3895         * aot-compiler.c (emit_plt): Define debug labels for most plt entries.
3896
3897 2009-06-24  Neale Ferguson <neale@sinenomine.net>
3898
3899         * mini-s390x.c: Correct LCONV_TO_Ix and ICONV_TO_Ix routines. Fix leave_method
3900         dump of structure return value. Fix some formatting.
3901         * cpu-s390x.md: Fix lengths of instruction sequences.
3902         * mini-s390.c: Minor formatting changes.
3903
3904 2009-06-24  Zoltan Varga  <vargaz@gmail.com>
3905
3906         * mini-x86.h: Applied patch from Romain Tartiere (romain@blogreen.org).
3907         Use sigaction on freebsd as well.
3908
3909 2009-06-23  Zoltan Varga  <vargaz@gmail.com>
3910
3911         * mini.h: Don't define MONO_ARCH_HAVE_TLS_GET to 0, as some code
3912         uses #ifdef on it.
3913         
3914         * mini.c (mini_init): Revert a change which breaks cross-compilation.
3915
3916 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3917
3918         * mini-ppc.c, cpu-ppc.md: Enable TLS on Darwin/G4.
3919
3920 2009-06-22  Mark Probst  <mark.probst@gmail.com>
3921
3922         * mini.c, mini.h: Tell the runtime whether we support MONO_TLS.
3923
3924 2009-06-20  Martin Baulig  <martin@ximian.com>
3925
3926         * debug-mini.c
3927         (MonoDebuggerThreadFlags): New enum typedef.
3928         (MonoDebuggerThreadInfo): Added `guint32 thread_flags'.
3929         (mono_debugger_thread_created): Added `gpointer func' argument;
3930         initialize the new `thread_flags' field.
3931
3932 2009-06-18  Martin Baulig  <martin@ximian.com>
3933
3934         * debug-debugger.h (MonoDebuggerRuntimeFlags): New enum typedef.
3935         (MonoDebuggerInfo): Renamed the `dummy' field info `runtime_info'.
3936
3937         * debug-debugger.c
3938         (mini_debugger_set_attach_ok): New function; sets the attach-ok
3939         flag in `MONO_DEBUGGER__info.runtime_info'.
3940
3941         * driver.c
3942         (mono_main): Call mini_debugger_set_attach_ok() if generics
3943         sharing is disabled.
3944
3945 2009-06-22  Zoltan Varga  <vargaz@gmail.com>
3946
3947         * aot-compiler.c (add_wrappers): Fix a warning.
3948
3949         * mini-ppc.c tramp-ppc.c exceptions-ppc.c aot-compiler.c: Update after
3950         the ppc load/store macro changes.
3951
3952 2009-06-21  Zoltan Varga  <vargaz@gmail.com>
3953
3954         * tramp-ppc.c (mono_arch_patch_plt_entry): Implement this.
3955
3956         * aot-compiler.c (mono_compile_assembly): Sanitize the plt symbol too,
3957         not just the got symbol.
3958
3959         * mini-ppc.c aot-compiler.c unwind.c: Implement generation of unwind info
3960         on ppc.
3961
3962         * aot-compiler.c unwind.c: Add infrastructure for unwind support on
3963         ppc.
3964         
3965         * aot-compiler.c: Remove some fixmes.
3966
3967         * driver.c (mono_main): Print a helpful message when cross-compiling.
3968
3969         * mini.c (mini_init): Disable signal handlers when cross-compiling.
3970
3971         * method-to-ir.c (initialize_array_data): Do the optimization if the
3972         target byte order is little endian, instead of the host byte order.
3973
3974         * aot-compiler.c: Emit sizes for most symbols, only emit runtime-invoke
3975         wrappers into the mscorlib image, Emit a unique plt symbol for each
3976         image, emit symbols for plt entries.
3977
3978         * image-writer.c (img_writer_emit_symbol_size): New function to emit
3979         a .size directive.
3980         
3981 2009-06-20  Zoltan Varga  <vargaz@gmail.com>
3982
3983         * aot-compiler.c (add_wrappers): Avoid calling 
3984         mono_marshal_get_type_info () since it can assert for some types.
3985
3986         * method-to-ir.c (mono_method_to_ir): Disable aot when some forms of 
3987         ldtoken are used inside wrappers.
3988
3989         * helpers.c: Add support for prefixing tools with the arch name.
3990
3991         * mini.h (OP_LOADR_MEMBASE): New opcodes to load/store pointer sized
3992         quantities when using ilp32.
3993
3994         * mini-codegen.c: Use OP_LOADR_MEMBASE/OP_STORER_MEMBASE for loading/storing
3995         spill slots. Use sizeof(mgreg_t) for the spill slot size.
3996
3997         * image-writer.c: Use .long on ilp32.
3998
3999         * aot-compiler.c: Use 32 bit loads on ilp32.
4000         
4001 2009-06-19  Zoltan Varga  <vargaz@gmail.com>
4002
4003         * tramp-ppc.c (mono_arch_create_trampoline_code): Fix the ppc build.
4004
4005         * mini-ops.h: Use TARGET_POWERPC define for consistency.
4006
4007         * patch-info.h: Add 'MSCORLIB_GOT_ADDR' patch type.
4008
4009         * aot-compiler.c aot-runtime.c: Put the mscorlib got address into the 
4010         second got slot of every aot image.
4011         
4012         * aot-compiler.c aot-runtime.c mini-trampolines.c: Add support for
4013         aot on platforms with function pointers.
4014
4015         * mini-ppc.h mini-ppp.c cpu-ppc.md exceptions-ppc.c tramp-ppc.c: Add
4016         support for aot/full aot on ppc/ppc64.
4017         
4018         * tramp-<ARCH>.c (mono_arch_patch_plt_entry): Add 'got' and 'regs'
4019         arguments which are needed on ppc.
4020
4021         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Add 'regs'
4022         argument.
4023
4024         * mini-trampolines.c aot-runtime.c: Update after the above changes.
4025         
4026         * liveness.c (BITS_PER_CHUNK): Use MONO_BITSET_BITS_PER_CHUNK.
4027
4028         * regalloc2.c (BITS_PER_CHUNK): Ditto.  
4029
4030         * aot-compiler.c (emit_got_info): Fix reading unused memory.
4031
4032         * ir-emit.h (alloc_dreg): Add a 'return -1' to quiet some compilers.
4033
4034 2009-06-17  Geoff Norton  <gnorton@novell.com>
4035
4036         * aot-compiler.c: Ensure we dont try to close a null dwarf writer.
4037
4038 2009-06-17  Zoltan Varga  <vargaz@gmail.com>
4039
4040         * dwarfwriter.c (mono_dwarf_writer_create): Add an 'appending' parameter
4041         to control whenever the dwarf writer is in xdebug or aot mode.
4042         (emit_class_dwarf_info): Use a separate abbrev for structures without
4043         children.
4044
4045         * aot-compiler.c: Pass the appending parameter to 
4046         mono_dwarf_writer_create ().
4047
4048         * branch-opts.c (mono_merge_basic_blocks): Fix the case when bbn
4049         falls through to its next bblock. Fixes #513931.
4050
4051         * iltests.il: Add a test.
4052
4053         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Emit some line number
4054         infor even if emit_line is FALSE, as the apple linker seems to require it.
4055
4056         * image-writer.c (asm_writer_emit_symbol_diff): Call get_label ().
4057
4058         * dwarfwriter.c (emit_cie): Emit a separate symbol for the cie start, as
4059         gcc does.
4060         (emit_fde): Ditto.
4061
4062 2009-06-15  Zoltan Varga  <vargaz@gmail.com>
4063
4064         * exceptions-mips.c (mono_arch_get_throw_exception_by_name): Fix the
4065         mips build.
4066
4067 2009-06-13  Zoltan Varga  <vargaz@gmail.com>
4068
4069         * mini.h (struct MonoBasicBlock): Add 'has_jump_table' and 
4070         'has_call_handler' fields.
4071
4072         * method-to-ir.c (mono_method_to_ir): Set them if needed.
4073
4074         * branch-opts.c (mono_merge_basic_blocks): Avoid iterating through the
4075         first bblock if not needed. Fixes #512790.
4076         
4077 2009-06-11  Zoltan Varga  <vargaz@gmail.com>
4078
4079         * aot-compiler.c (mono_compile_assembly): Fix a warning.
4080         
4081         * aot-compiler.c (add_wrappers): Don't emit remoting-invoke-with-check
4082         wrappers.
4083
4084         * aot-runtime.c (mono_aot_get_method): Use the original method's code for
4085         remoting-invoke-with-check wrappers, which are not needed when running with
4086         full-aot, since it doesn't support remoting.
4087         
4088 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4089
4090         * aot-compiler.c (emit_got_info): Don't emit offsets for the plt got entries.
4091
4092         * aot-compiler.c aot-runtime.c: Don't emit the first got offset in the
4093         method info, it is not used anymore.
4094
4095         * mini.h: Bump AOT file format version.
4096         
4097         * aot-compiler.c (arch_emit_plt_entry): Make the arm plt entries one
4098         word smaller.
4099
4100         * aot-runtime.c (mono_aot_get_plt_info_offset): Update after the
4101         change above.
4102         
4103         * tramp-arm.c (mono_arch_patch_plt_entry): Ditto.
4104
4105         * mini.h: Bump AOT file format version.
4106         
4107 2009-06-10  Zoltan Varga  <vargaz@gmail.com>
4108
4109         * image-writer.c (asm_writer_emit_symbol_diff): Disable the 
4110         TARGET_ASM_APPLE stuff for now, as it doesn't seem to work on the
4111         iphone.
4112
4113         * mini-arm.c (mono_arch_output_basic_block): Fix the implementation
4114         of CKFINITE and FBGE for VFP.
4115
4116 2009-06-09  Zoltan Varga  <vargaz@gmail.com>
4117
4118         * aot-compiler.c: Don't align code to 16 bytes on arm.
4119         
4120         * aot-compiler.c (emit_method_code): Emit the unbox trampolines right
4121         before the methods they belong to.
4122
4123         * aot-runtime.c (mono_aot_plt_resolve): Avoid creating trampolines in
4124         the full-aot case if possible, since the trampoline will be called right 
4125         away.
4126
4127         * aot-compiler.c (mono_compile_assembly): Decrease the number of full aot
4128         trampolines to 1024 after the change above.
4129
4130         * aot-compiler.c (arch_emit_specific_trampoline): Rework the arm
4131         trampoline to save 8 bytes per trampoline.
4132
4133         * tramp-arm.c (mono_arch_create_trampoline_code_full): Update after the
4134         change above.
4135
4136 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4137
4138         * aot-compiler.c: Use acfg->temp_prefix instead of .L to prefix labels.
4139
4140 2009-06-08  Martin Baulig  <martin@ximian.com>
4141
4142         * debug-mini.c
4143         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4144         (_mono_debugger_throw_exception): Don't make this static.
4145         (_mono_debugger_unhandled_exception): Likewise.
4146         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4147
4148         * debug-mini.c
4149         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4150         (_mono_debugger_throw_exception): Add function prototype.
4151         (_mono_debugger_unhandled_exception): Likewise.
4152
4153         * mini-exceptions.c
4154         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4155         arg; return the first exception handler if the exception is caught
4156         and we're running inside the debugger.
4157         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4158         improve exception handle inside runtime-invoke, check whether the
4159         exception is actually caught in the method being invoked and not
4160         by the runtime-invoke-wrapper.
4161
4162 2009-06-08  Zoltan Varga  <vargaz@gmail.com>
4163
4164         * image-writer.c: Improve support for the osx assembler.
4165
4166         * dwarfwriter.c: Avoid the usage of subsections if the assembler doesn't
4167         support them.
4168
4169 2009-06-08  Martin Baulig  <martin@ximian.com>
4170
4171         * debug-mini.c
4172         (MonoDebuggerExceptionAction): Moved into debug-mini.h.
4173         (_mono_debugger_throw_exception): Don't make this static.
4174         (_mono_debugger_unhandled_exception): Likewise.
4175         (mono_debugger_handle_exception): Moved to mini-exceptions.c
4176
4177         * debug-mini.c
4178         (MonoDebuggerExceptionAction): Moved here from debug-mini.c.
4179         (_mono_debugger_throw_exception): Add function prototype.
4180         (_mono_debugger_unhandled_exception): Likewise.
4181
4182         * mini-exceptions.c
4183         (mono_handle_exception_internal): Added `MonoJitInfo **out_ji'
4184         arg; return the first exception handler if the exception is caught
4185         and we're running inside the debugger.
4186         (mono_debugger_handle_exception): Moved here from debug-mini.c;
4187         improve exception handle inside runtime-invoke, check whether the
4188         exception is actually caught in the method being invoked and not
4189         by the runtime-invoke-wrapper.
4190
4191 2009-06-07  Zoltan Varga  <vargaz@gmail.com>
4192
4193         * image-writer.c (append_subsection): Don't align subsections of the
4194         debug_line section as a workaround.
4195
4196         * dwarfwriter.c: Emit line number info in the AOT case as well.
4197
4198 2009-06-06  Steven Munroe  <munroesj@us.ibm.com>
4199
4200         This patch is contributed under the terms of the MIT/X11 license
4201
4202        * mini-ppc.c (mono_arch_emit_exceptions): Change assert to
4203        code_len <= code_size
4204
4205 2009-06-06  Zoltan Varga  <vargaz@gmail.com>
4206
4207         * mini-mips.c (mips_emit_exc_by_name): Fix the mips build.
4208
4209 2009-06-04  Zoltan Varga  <vargaz@gmail.com>
4210
4211         * aot-compiler.c aot-runtime.c: Delete references to static rgctx
4212         invoke wrappers, we now use trampolines instead.
4213
4214 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4215
4216         * mini-darwin.c: The exception thread must not be registered with
4217         the GC.
4218
4219 2009-06-04  Mark Probst  <mark.probst@gmail.com>
4220
4221         * mini-gc.c: Disable the code because it makes SGen crash.
4222
4223 2009-06-03  Zoltan Varga  <vargaz@gmail.com>
4224
4225         * aot-compiler.c (mono_compile_assembly): Handle file open errors gracefully
4226         instead of asserting.
4227
4228 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4229
4230         * aot-compiler.c (mono_compile_assembly): Move the creation of the
4231         output file after the code has been compiled.
4232
4233 2009-05-30  Zoltan Varga  <vargaz@gmail.com>
4234
4235         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Fix 64 bit support.
4236
4237 2009-05-31  Zoltan Varga  <vargaz@gmail.com>
4238
4239         * aot-compiler.c aot-runtime.c: Get rid of the shared/non-shared got
4240         entries distinction to simplify the code.
4241
4242         * mini.h: Bump AOT file format version.
4243         
4244 2009-05-28  Zoltan Varga  <vargaz@gmail.com>
4245
4246         * objects.cs: Fix the signature of one of the tests.
4247
4248         * mini.c (mini_create_ftnptr): New helper function, moved here from
4249         object.c.
4250         (mini_get_addr_from_ftnptr): Ditto.
4251         (mini_init): Install the new helpers.
4252
4253 2009-05-28  Martin Baulig  <martin@ximian.com>
4254
4255         Correctly initialize the debugger when embedding Mono.
4256
4257         * mdb-debug-info32.s, mdb-debug-info64.s: Add a global variable
4258         `MONO_DEBUGGER__using_debugger' to the `.mdb_debug_info' section;
4259         see documentation in mini_debug_running_inside_mdb().
4260
4261         * debug-debugger.c
4262         (mini_debug_running_inside_mdb): New function to check whether
4263         we're running inside mdb.
4264
4265         * mini.c (mini_init): Call mini_debugger_init() if we're running
4266         inside the debugger.
4267
4268         * driver.c (mono_main): Moved the call to mini_debugger_init()
4269         into mini_init() to make this work when embedding Mono.
4270
4271         * debug-debugger.c (mini_debugger_init): Warn about duplicate
4272         calls to mini_debugger_init().
4273
4274         * mini.h: Rename mono_debugger_init() -> mini_debugger_init(),
4275         mono_debugger_main() -> mini_debugger_main() and put them inside a
4276         `MONO_DEBUGGER_SUPPORTED' conditional.
4277
4278 2009-05-26 Rodrigo Kumpera  <rkumpera@novell.com>
4279
4280         * mini-trampolines.c: Kill mono_find_delegate_trampoline_by_addr as
4281         this is no longer in use.
4282         * mini.h: Same.
4283
4284 2009-05-26  Zoltan Varga  <vargaz@gmail.com>
4285
4286         * mini-sparc.c (add_outarg_load): Fix the sparc build.
4287
4288         * aot-compiler.c (emit_method_code): Always write out C style symbols for
4289         methods.
4290
4291 2009-05-27  Martin Baulig  <martin@ximian.com>
4292
4293 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4294
4295         * mini-x86.c (mono_arch_output_basic_block): Fix the precision of
4296         long_conv_to_r_un to 64 bits.
4297
4298         * cpu-x86.md: Increase the instruction size due to the changes.
4299
4300         * iltests.il.in: Add regression test.
4301
4302         Fixes #467201.
4303
4304 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4305
4306         * objects.cs: Move the previous test from basic.cs to here.
4307
4308 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4309
4310         * basic.cs: Add regression test for #506915.
4311
4312 2009-05-25 Rodrigo Kumpera  <rkumpera@novell.com>
4313
4314         * method-to-ir.c (mono_method_to_ir): When doing the ldobj+stobj
4315         optimization we must check the bb of the first byte of stobj as
4316         it's the only one set in cil_offset_to_bb.
4317
4318         Fixes #506915.  
4319
4320 2009-05-25  Zoltan Varga  <vargaz@gmail.com>
4321
4322         * image-writer.c: Fix pointer directive on ppc64.
4323
4324 2009-05-24  Zoltan Varga  <vargaz@gmail.com>
4325
4326         * image-writer.c (asm_writer_emit_section_change): Avoid using
4327         .bss subsections on ppc too.
4328
4329 2009-05-23  Zoltan Varga  <vargaz@gmail.com>
4330
4331         * image-writer.c: Fix the definition of TARGET_ASM_....
4332         
4333         * image-writer.c: Fix the emission of assembler directives in the last
4334         change.
4335
4336         * mini-ppc.c (mono_arch_emit_exceptions): Increase the size of the
4337         exception throwing code to accomodate ppc64.
4338
4339         * tramp-ppc.c (mono_arch_get_nullified_class_init_trampoline): Increase the
4340         size to work on ppc64 too.
4341
4342         * mini-ppc.h (MonoCompileArch): Enable static rgctx trampolines on ppc64
4343         too.
4344
4345         * image-writer.c: Clean up the #ifdef hell a bit by adding defines for
4346         the assembler dialect instead of using platform specific defines.
4347
4348 2009-05-22  Geoff Norton  <gnorton@novell.com>
4349
4350         * mini-arm.c (get_call_info): If a structure is split between the stack
4351         and argument registers, we should not advance the stack pointer by the entire
4352         native size, but just by the amount that spilled.
4353
4354 2009-05-22  Zoltan Varga  <vargaz@gmail.com>
4355
4356         * mini-arm.c (get_call_info): Handle structures with alignment requirements
4357         correctly.
4358
4359 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4360
4361         * aot-compiler.c (emit_extra_methods): Encode direct runtime invoke
4362         wrappers normally.
4363         
4364         * aot-compiler.c (add_extra_method): Fix up the collection of extra
4365         methods so wrapper don't get added twice.
4366         (add_generic_instances): Don't add methods of arrays.
4367
4368         * generics.cs: Mark one test as !FULLAOT.
4369
4370 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4371
4372         * mini-x86.c (emit_move_return_value): Remove unused vars.
4373
4374 2009-05-21 Rodrigo Kumpera  <rkumpera@novell.com>
4375
4376         * mini-x86.c (mono_arch_emit_call): The decompose code now supports
4377         decomposing 8 bytes structs into a LCALL.
4378
4379         * mini-x86.c (emit_move_return_value): We no longer push the vtype
4380         pointer for where to store the returned regs.
4381
4382         * decompose.c (mono_decompose_vtype_opts): Fix the comment to properly
4383         state the concern.
4384
4385         Fixes #471747, #471751 and #4734530 (in fact, it's a bunch of dups).
4386
4387 2009-05-20  Miguel de Icaza  <miguel@novell.com>
4388
4389         * aot-runtime.c (mono_aot_init): Use g_getenv to work on systems
4390         without getenv.
4391
4392 2009-05-21  Zoltan Varga  <vargaz@gmail.com>
4393
4394         * aot-compiler.c (add_wrappers): Add StructureToPtr/PtrToStructure wrappers.
4395
4396         * basic.cs: Move the test_2_cprop_bug () test to generics.cs as it involves
4397         generics.
4398
4399 2009-05-20 Rodrigo Kumpera  <rkumpera@novell.com>
4400
4401         * local-propagation.c (mono_local_cprop): Avoid local propagation
4402         across paired add/sub if the first instruction dest reg is it's
4403         source reg. For example:
4404
4405         int_add_imm R12 <- R12 [1] clobbers: 1
4406         int_sub_imm R42 <- R12 [1] clobbers: 1
4407
4408         The cprop pass would wrongly const prop + 1 to int_sub_imm which doesn't
4409         maintain the math identify.
4410
4411         Fixes #505375.
4412
4413 2009-05-20  Andreia Gaita  <avidigal@novell.com>
4414
4415         * Makefile.am: avoid going on the network just to get the revision,
4416         use git log instead
4417
4418 2009-05-19  Massimiliano Mantione  <massi@ximian.com>
4419
4420         Fixed estimate for short branches on amd64 (they were off mark, and
4421         enabling call prolog-epilog instrumentations caused assertions).
4422         * mini.h (struct MonoBasicBlock): added max_length field to hold the
4423         estimate for the maximum length of this basic block.
4424         * mini-amd64.c:
4425         - mono_arch_emit_prolog: compute max_length for each basic block
4426           (instead of max_offset), and inflate size estimate also for entry bb
4427           in case of code instrumentation.
4428         - mono_arch_output_basic_block: get rid of "cpos" (the current
4429           estimated "position" in the code), and always use "offset" instead,
4430           which is accurate; at the beginning of the function quickly recompute
4431           max_offset for all the remaining blocks, starting from the current
4432           cfg->code_len (which is correct, and not estimated) and using the
4433           estimated block lengths computed previously.
4434
4435 2009-05-17  Zoltan Varga  <vargaz@gmail.com>
4436
4437         * exceptions-ppc.c: Remove the caching from the trampoline creation 
4438         functions, it is already done in the caller.
4439
4440         * mini-trampolines.c (mono_llvm_vcall_trampoline): Fix the llvm build.
4441
4442         * mini-ppc.h mini-arm.h mini-x86.h mini-amd64.h: Add 
4443         MONO_ARCH_GSHARED_SUPPORTED define.
4444
4445         * mini.c (mini_init): Use the MONO_ARCH_GSHARED_SUPPORTED define.
4446
4447         * mini-arm.c mini.c: Get rid of the unused mono_arch_fixup_jinfo ()
4448         function.
4449
4450 2009-05-16  Zoltan Varga  <vargaz@gmail.com>
4451
4452         * jit-icalls.c (mono_helper_compile_generic_method): Get rid of the 
4453         call to mono_marshal_get_rgctx_invoke ().
4454
4455         * mini.c method-to-ir.c mini-trampolines.c: Get rid of the usage of
4456         mono_marshal_get_static_rgctx_invoke (), all platforms which support
4457         gshared use the static rgctx trampolines now.
4458         
4459         * mini.c (mini_init): Call mono_set_generic_sharing_supported () if the
4460         platform supports it.
4461
4462 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4463
4464         * mini-arm.c (mono_arch_allocate_vars): Correctly save R5 when using AOT.
4465
4466         * aot-compiler.c (emit_method_code): Avoid duplicate labels for methods.
4467
4468 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4469
4470         * mini-ppc.c (mono_arch_emit_exceptions): Nullify the processed patches.
4471
4472         * tramp-ppc.c (mono_arch_nullify_class_init_trampoline): Implement this
4473         for ppc.
4474
4475 2009-05-15  Massimiliano Mantione  <massi@ximian.com>
4476
4477         Made it possible for mono_arch_instrument_epilog to preserve
4478         argument registers, otherwise instrumenting the "epilogue" before
4479         a tail call would clobber them.
4480         * mini.h: Added "mono_arch_instrument_epilog_full" prototype, which
4481         if like mono_arch_instrument_epilog but with an additional parameter
4482         that states if argument registers must be preserved.
4483         * mini.c: implemented mono_arch_instrument_epilog as a call to
4484         mono_arch_instrument_epilog_full without asking to preserve argument
4485         registers (this makes the existing code work as usual).
4486         * mini-amd64.c:
4487         - mono_arch_instrument_epilog: add parameter to transform it into
4488         mono_arch_instrument_epilog_full, and preserve argument registers
4489         when required.
4490         - mono_arch_output_basic_block, OP_TAILCALL case: call
4491         mono_arch_instrument_epilog_full.
4492         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
4493         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-x86.c:
4494         only transformed mono_arch_instrument_epilog into
4495         mono_arch_instrument_epilog_full.
4496
4497 2009-05-15  Geoff Norton  <gnorton@novell.com>
4498
4499         * mini-darwin.c: This works on arm now.
4500
4501 2009-05-14  Geoff Norton  <gnorton@novell.com>
4502
4503         * jit.h, driver.c: Allow full-aot to be decided programatically by the
4504         embedding api.
4505
4506 2009-05-15  Zoltan Varga  <vargaz@gmail.com>
4507
4508         * aot-compiler.c (emit_method_code): Skip a few more characters in the debug
4509         label names.
4510
4511         * mini-trampolines.c (mono_magic_trampoline): Handle static rgctx invoke
4512         wrappers during full aot mode correctly.
4513
4514         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle shared generic
4515         methods correctly.
4516
4517         * aot-compiler.c (mono_aot_method_hash): Use our internal version of
4518         mono_metadata_type_hash ().
4519
4520 2009-05-14  Massimiliano Mantione  <massi@ximian.com>
4521
4522         * mini.h, mini-codegen.c, mini-alpha.c, mini-amd64.c, mini-arm.c,
4523         mini-hppa.h, mini-hppa.c, mini-ia64.c, mini-mips.h, mini-mips.c,
4524         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c, mini-886.c:
4525         Removed MONO_INST_BRLABEL from the instruction flags, and the
4526         remaining code that used it, because we do not support branches inside
4527         basic blocks (and branch target labels) anymore.
4528         * Makefile.am: As part of the above cleanup, remove reference to
4529         BURG files which don't exist anymore.
4530
4531 2009-05-14  Zoltan Varga  <vargaz@gmail.com>
4532
4533         * image-writer.c (asm_writer_emit_local_symbol): Make this a nop on
4534         osx.
4535
4536         * mini-mips.c mini-mips.h exceptions-mips.c: Transition the mips backend
4537         to use mono_arch_throw_corlib_exception.
4538
4539         * mini-ppc.c mini-ppc.h exceptions-ppc.c: Use 
4540         mono_arch_throw_corlib_exception for throwing corlib exceptions.
4541
4542         * aot-runtime.c (decode_patch): Allocate the data for R4/R8 from the
4543         domain mempool.
4544
4545         * mini.c (mono_patch_info_dup_mp): Copy the table of switch targets too.
4546
4547         * aot-compiler.c: Emit a local symbol prefixed with the assembly name 
4548         for the got to make debugging easier and to avoid confusing it with the
4549         system got.
4550         
4551         * aot-compiler.c (emit_method_code): Emit a C style symbol for each
4552         method so a breakpoint can be set when using gdb.
4553
4554 2009-05-13  Zoltan Varga  <vargaz@gmail.com>
4555
4556         * aot-compiler.c (mono_aot_method_hash): Implement this properly based
4557         on mono_method_get_imt_slot ().
4558
4559         * aot-runtime.c (find_extra_method_in_amodule): Get rid of the
4560         num_decodes variables.
4561
4562         * aot-compiler.c (mono_aot_method_hash): Revert part of the last
4563         change as it doesn't seem to work.
4564         
4565         * aot-compiler.c (mono_aot_method_hash): Improve the hashing of
4566         wrappers.
4567
4568 2009-05-12  Zoltan Varga  <vargaz@gmail.com>
4569
4570         * aot-compiler.c mini.c mini-amd64.h mini-arm.h: Kill 
4571         MONO_ARCH_FULL_AOT_IMT_SUPPORTED define, both platforms now support imt.
4572
4573         * mini.c (mini_init): Install mono_aot_get_imt_thunk as the IMT thunk
4574         builder when using full aot.
4575
4576         * mini-amd64.c (mono_arch_build_imt_thunk): Don't handle the full-aot case
4577         here, it is already handled.
4578         
4579         * mini-arm.c (mono_arch_emit_imt_argument): Pass the dynamic imt arg
4580         correctly for IMT.
4581
4582         * aot-compiler.c (arch_emit_imt_thunk): Implement this for ARM.
4583
4584         * mini-arm.h: Enable IMT for full aot.
4585         
4586         * aot-compiler.c (mono_compile_assembly): Don't emit imt thunk if the
4587         arch doesn't support it.
4588
4589         * mini.c (mini_init): Don't disable IMT for full aot if the
4590         architecture supports it.
4591
4592         * mini.h (MonoAotTrampoline): New enum containing the different types
4593         of 'numerous' trampolines.
4594         (MONO_AOT_FILE_VERSION): Bump this.
4595
4596         * aot-compiler.c aot-runtime.c: Unify the handling of specific and
4597         static rgctx trampolines. Add support for full-aot IMT thunks.
4598
4599         * mini-amd64.h: Enable IMT for full aot.
4600
4601         * TestDriver.cs: Add a CategoryAttribute class and an --exclude option
4602         to exclude tests belonging to a category.
4603
4604         * generics.cs: Mark some tests with a !FULLAOT category.
4605
4606         * Makefile.am (fullaotcheck): Run tests with --exclude !FULLAOT. Include
4607         generics tests.
4608
4609 2009-05-11  Zoltan Varga  <vargaz@gmail.com>
4610
4611         * aot-compiler.c (emit_and_reloc_code): Move the implementation of
4612         MONO_PATCH_INFO_GOT_OFFSET to a separate arch-specific function.
4613         (emit_plt): Fix a warning.
4614
4615 2009-05-10  Zoltan Varga  <vargaz@gmail.com>
4616
4617         * aot-compiler.c aot-runtime.c: Fix the build by moving is_shared_got_patch
4618         back into aot-compiler.c to a place where the other functions shared by
4619         the runtime and aot compiler are.
4620         
4621         * aot-compiler.c aot-runtime.c: Emit the got addr using a separate symbol,
4622         as done previously, instead of in MonoAotFileInfo, since pointers might have
4623         alignment requirements.
4624
4625         * mini.h: Bump AOT file format version.
4626
4627 2009-05-10  Miguel de Icaza  <miguel@novell.com>
4628
4629         * aot-runtime.c (mono_aot_is_shared_got_patch): Move this routine
4630         that is used at runtime from the aot-compiler.c, this makes it
4631         work on setups that remove the AOT compiler from the output
4632         image. 
4633
4634 2009-05-09  Zoltan Varga  <vargaz@gmail.com>
4635
4636         * tramp-ppc.c (mono_arch_get_static_rgctx_trampoline): Implement this for
4637         PPC.
4638
4639         * mini-ppc.h: Enable static rgctx trampolines for ppc.
4640
4641         * mini-<ARCH>.h: Kill the MONO_ARCH_ENABLE_EMIT_STATE_OPT define.
4642
4643         * decompose.c (mono_decompose_long_opts): Move the ppc/sparc specific 
4644         stuff to mono_arch_decompose_long_opts ().
4645         (mono_decompose_opcode): Remove some dead code.
4646
4647 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4648
4649         * method-to-ir.c (mono_method_to_ir): Fix boostrap of non amd64 builds
4650         cmethod can be null for quite a some reasons.
4651
4652 2009-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
4653
4654         * method-to-ir.c (mono_method_to_ir): Fix non amd64 builds.
4655
4656 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4657
4658         * aot-compiler.c (arch_emit_got_access): Fix the aot-not-supported build.
4659
4660 2009-05-08  Zoltan Varga  <vargaz@gmail.com>
4661
4662         * method-to-ir.c (mono_emit_call_args): Add a 'tail' flag argument.
4663         (mono_method_to_ir): Use MONO_ARCH_USE_OP_TAIL_CALL macro to determine
4664         whenever to make tail calls using OP_TAIL_CALL. Enable support for tail
4665         calls returning structures by addr on amd64.
4666
4667         * mini-amd64.h (MONO_ARCH_USE_OP_TAIL_CALL): New arch-specific macro.
4668
4669         * iltests.il.in: Restructure the tail call tests a bit.
4670         
4671 2009-05-07  Zoltan Varga  <vargaz@gmail.com>
4672
4673         * aot-compiler.c (add_wrappers): Add remoting-invoke-with-check wrappers
4674         for virtual methods too.
4675
4676 2009-05-06  Raja R Harinath  <harinath@hurrynot.org>
4677
4678         * method-to-ir.c (mono_method_to_ir): Revert change of 2009-05-02
4679         due to regression in verifying System.dll.
4680
4681 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4682
4683         * debug-mini.c (mono_debugger_method_has_breakpoint): Allow breakpoints
4684         in dynamic methods.
4685
4686         * dwarfwriter.c (emit_class_dwarf_info): Add support for generic
4687         instances.
4688
4689         * aot-compiler.c aot-runtime.c: Use our own hash function instead of
4690         g_str_hash () which can change.
4691
4692         * driver.c (mini_regression): Disable optimizations not supported by
4693         the cpu. Fixes #500019.
4694
4695         * aot-runtime.c (mono_aot_get_unwind_info): Fix the --enable-minimal=aot
4696         build.
4697
4698 2009-05-06  Zoltan Varga  <vargaz@gmail.com>
4699
4700         * mini-llvm.c (mono_llvm_emit_method): Update the OP_TLS_GET implementation
4701         to the latest LLVM code.
4702
4703 2009-05-05  Zoltan Varga  <vargaz@gmail.com>
4704
4705         * genmdesc.pl (load_opcodes): Fix this after the TARGET_... changes.
4706
4707 2009-05-04  Zoltan Varga  <vargaz@gmail.com>
4708
4709         * mini-llvm.c (mono_llvm_emit_method): Implement TLS support on 
4710         x86/amd64.
4711
4712         * aot-compiler.c (encode_patch_list): Simplify this considerably as we are
4713         no longer saving offsets, so just save the patch types along with the other
4714         info.
4715         * aot-runtime.c (load_patch_info): Update after the changes to 
4716         encode_patch_list ().
4717         (decode_got_entry): Removed, merged into load_patch_info ().
4718         (is_shared_got_patch): Removed, call the same function from
4719         aot-compiler.c.
4720
4721         * mini.h: Bump aot file format version.
4722         
4723         * aot-compiler.c aot-runtime.c: Resurrect static linking support. Kill the
4724         half-finished no-dlsym code.
4725
4726         * aot-runtime.c (load_method): Kill the old and bit-rotten use_loaded_code
4727         option.
4728
4729         * mini-<ARCH>.h mini-trampolines.c aot-runtime.c: Kill the 
4730         MONO_ARCH_HAVE_CREATE_TRAMPOLINE_FROM_TOKEN define.
4731
4732 2009-05-02  Zoltan Varga  <vargaz@gmail.com>
4733
4734         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Increase the
4735         buffer length to work with AOT code.
4736
4737         * method-to-ir.c (mono_method_to_ir): Handle loading errors in the
4738         ldfld/stfld opcodes.
4739
4740         * exceptions-x86.c (mono_arch_get_throw_exception_by_name): Simplify this
4741         as it is not used.
4742
4743         * mini-llvm.c mini-x86.c: Implement 32 bit and x86 support.
4744
4745         * ssa.c (mono_ssa_compute): Don't skip I8 values when using LLVM.
4746
4747         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Update to the latest
4748         LLVM API.
4749
4750         * mini.c (mini_method_compile): Set the from_llvm flag in MonoJitInfo
4751         if needed. Don't decompose long operations when using llvm.
4752
4753 2009-05-01  Zoltan Varga  <vargaz@gmail.com>
4754
4755         * aot-compiler.c aot-runtime.c: Use mono_pagesize () instead of the
4756         PAGESIZE constant.
4757
4758         * aot-runtime.c (load_aot_module): Get rid of another mprotect call.
4759
4760 2009-05-03  Martin Baulig  <martin@ximian.com>
4761
4762         * debug-debugger.c (debugger_insert_source_breakpoint): Don't call
4763         mono_debugger_insert_method_breakpoint() since the class init
4764         handler we're inserting at the top of the method already gives us
4765         a notification.
4766
4767 2009-04-30  Zoltan Varga  <vargaz@gmail.com>
4768
4769         * decompose.c (mono_decompose_long_opts): Move the implementation of LNEG
4770         to mono_arch_decompose_long_opts () for x86 and arm.
4771
4772 2009-04-29  Zoltan Varga  <vargaz@gmail.com>
4773
4774         * mini-codegen.c (mono_regstate_alloc_int): Use __x86_64__ instead of
4775         TARGET_AMD64 here.
4776
4777 2009-04-28  Zoltan Varga  <vargaz@gmail.com>
4778
4779         * *.h *.c: Use TARGET_<ARCH> defines instead of __<arch>__ defines in the
4780         JIT code.
4781
4782 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4783
4784         * aot-runtime.c (mono_aot_create_specific_trampoline): Add a stat for the
4785         number of trampolines used in full-aot mode.
4786
4787         * aot-compiler.c: Add an ntrampolines option to set the number of 
4788         trampolines emitted in full-aot mode.
4789
4790 2009-04-27  Zoltan Varga  <vargaz@gmail.com>
4791
4792         * mini-llvm.c (mono_llvm_emit_method): Implement OP_CHECK_THIS using
4793         a volatile load. Get rid of get_tempname (), llvm assigns names
4794         automatically.
4795
4796         * mini-llvm-cpp.cpp (mono_llvm_build_volatile_load): New instruction
4797         builder function.
4798
4799         * mini-llvm.c (mono_llvm_emit_method): Don't call LLVMGetParam on
4800         a value.
4801
4802         * abcremoval.c (REPORT_ABC_REMOVAL): Don't output messages at verbose
4803         level 1.
4804
4805         * mini-codegen.c (mono_local_regalloc): Prevent sreg1/dreg to be allocated
4806         to the same register as a fixed sreg2. Fixes #497271.
4807
4808         * iltests.il.in: Add a new test.
4809
4810 2009-04-26  Zoltan Varga  <vargaz@gmail.com>
4811
4812         * mini-amd64.c: Use moves instead of pushes for passing arguments on the
4813         stack, since pushes complicate exception handling.
4814
4815         * exceptions-amd64.c (mono_arch_find_jit_info): Don't pop the arguments of
4816         the stack if they are passed using moves.
4817
4818         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add an assert.
4819
4820         * method-to-ir.c (mono_method_to_ir): Disable fast virtual generic methods
4821         when using llvm.
4822
4823         * mini-llvm.c (mono_llvm_emit_method): Call jit icall wrappers, not the 
4824         icalls themselves. Convert arguments of FCOMPARE. Convert the destination
4825         of FMOVE if it is an R4.
4826
4827 2009-04-25  Zoltan Varga  <vargaz@gmail.com>
4828
4829         * mini-ops.h: Add OP_LLVM_OUTARG_VT opcode.
4830
4831         * mini.h (LLVMCallInfo): New structure to store calling convention 
4832         information for the LLVM back end similar to the CallInfo structures in 
4833         the back-ends.
4834
4835         * mini-amd64.c (mono_arch_get_llvm_call_info): New arch function to return
4836         call information in a format usable by LLVM.
4837         (mono_arch_emit_call): Move the LLVM handling code to mono_llvm_emit_call ().
4838
4839         * method-to-ir.c (mono_emit_call_args): Emit calls using 
4840         mono_llvm_emit_call () when compiling using LLVM.
4841
4842         * mini-llvm.c: Implement support for passing/receiving valuetypes. Add
4843         comments to all functions. Fix memory leaks. Add a public init/cleanup
4844         function.
4845
4846         * mini.c: Call the llvm init/cleanup functions in mini_init()/cleanup().
4847
4848         * method-to-ir.c (handle_array_new): Disable llvm when calling the vararg
4849         mono_array_new_va () jit icall.
4850         
4851 Fri Apr 24 16:44:08 CEST 2009 Paolo Molaro <lupus@ximian.com>
4852
4853         * Makefile.am, genmdesc.c, genmdesc.pl: tiny refactor to allow
4854         multiple machine description files to be specified.
4855         * mini-ops.h: fixes for cross-compilation.
4856
4857 2009-04-22  Miguel de Icaza  <miguel@novell.com>
4858
4859         * aot-runtime.c (make_writable): Use mono_mprotect to simplify
4860         some porting work.
4861
4862 2009-04-22  Zoltan Varga  <vargaz@gmail.com>
4863
4864         * method-to-ir.c (mono_method_to_ir): Force init_locals to be TRUE
4865         to prevent asserts in various passes. Fixes #497220.
4866
4867 2009-04-21  Zoltan Varga  <vargaz@gmail.com>
4868
4869         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove
4870         a racy assert.
4871
4872         * aot-compiler.c aot-runtime.c: Emit the unwind info into a separate
4873         table to avoid duplicates.
4874
4875         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
4876         
4877         * aot-compiler.c (emit_method_code): Avoid writing symbols if the nodebug
4878         option is used.
4879
4880 2009-04-20 Rodrigo Kumpera  <rkumpera@novell.com>
4881
4882         * mini.c (mini_method_verify): Fail fulltrust code if the exception
4883         is for method or field access.
4884
4885 2009-04-20  Zoltan Varga  <vargaz@gmail.com>
4886
4887         * mini-llvm-cpp.cpp (mono_llvm_dump_value): New helper function to print
4888         a Value to stdout.
4889
4890         * mini-llvm.c (mono_llvm_emit_method): Use it.
4891         
4892         * mini-llvm.c (type_to_llvm_type): Fix the mapping of enums.
4893         (mono_llvm_emit_method): Add support for CAS. Fix handling of CSET opcodes
4894         on volatile values.
4895
4896         * mini-trampolines.c (mono_llvm_vcall_trampoline): Add support for 
4897         synchronized methods.
4898
4899         * mini.c (mini_method_compile): Disable LLVM for dynamic methods.
4900
4901         * mini.c (mini_method_compile): Enable ABCREM when running with LLVM.
4902
4903         * mini-llvm.c (mono_llvm_emit_method): Add support for OP_LOADI4_MEM/
4904         OP_LOADI8_MEM.
4905
4906         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Add a MONO_LLVM env variable
4907         allowing some options to be set dynamically.
4908
4909 2009-04-19  Zoltan Varga  <vargaz@gmail.com>
4910
4911         * mini-llvm.c (mono_llvm_emit_method): Handle compares followed by an
4912         unconditional branch.
4913
4914         * mini.h (MonoTrampolineType): Add new trampoline type 
4915         'MONO_TRAMPOLINE_LLVM_VCALL' which handles virtual calls made from LLVM
4916         compiled code.
4917
4918         * mini-trampolines.c (mono_llvm_vcall_trampoline): New C trampoline 
4919         function.
4920
4921         * mini-trampolines.c (mono_create_llvm_vcall_trampoline): New trampoline
4922         creation function.
4923
4924         * mini.c (mini_init): Avoid using the common vtable trampoline when LLVM
4925         is enabled. Instead, use the llvm vcall trampoline.
4926         
4927         * mini-trampolines.c (mono_get_vcall_slot_addr): New helper function.
4928
4929         * mini-trampolines.c tramp-amd64.c tramp-x86.c: Use it.
4930         
4931         * mini-<ARCH>.c: Get rid of the identical mono_arch_get_vcall_slot_addr ()
4932         functions.
4933
4934         * mini-<ARCH>.h mini-trampolines.c mini.c: Get rid of 
4935         MONO_ARCH_COMMON_VTABLE_TRAMPOLINE, it is supported by all archs.
4936
4937         * mini-ia64.c (mono_arch_lowering_pass): Null out the sregs of the
4938         OP_IA64_CSET opcode.
4939
4940         * mini.c: Fix a warning.
4941
4942         * mini-llvm.c (mono_llvm_emit_method): Convert arguments of SWITCH and
4943         THROW to the appropriate llvm type.
4944
4945 2009-04-18  Zoltan Varga  <vargaz@gmail.com>
4946
4947         * mini.c (mini_method_compile): Add statistics for methods JITted
4948         with/without LLVM.
4949
4950 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4951
4952         * method-to-ir.c: Fix the computation of ins_sreg_counts for ia64
4953         OP_IA64_CMP_<cond>_IMM opcodes.
4954
4955 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4956
4957         * mini-llvm.c (emit_cond_system_exception): Implement throwing of
4958         corlib exceptions.
4959
4960         * dwarfwriter.c (mono_dwarf_writer_emit_method): Handle --regression
4961         correctly.
4962
4963         * mini-llvm.c (type_to_llvm_type): Avoid accessing t->data.klass for
4964         GENERICINST.
4965
4966 2009-04-17  Atsushi Enomoto  <atsushi@ximian.com>
4967
4968         * mini-exceptions.c : add thread id to EXCEPTION trace message.
4969
4970 2009-04-17  Zoltan Varga  <vargaz@gmail.com>
4971
4972         * tramp-amd64.c (mono_arch_get_static_rgctx_trampoline): Fix AOT
4973         support.
4974
4975         * tramp-x86.c (mono_arch_get_unbox_trampoline): Implement static
4976         rgctx invoke trampolines for x86.
4977
4978         * mini-x86.c (mono_arch_output_basic_block): Add a few nops before
4979         indirect calls to simplify get_vcall_slot_addr (). Fixes #494567.
4980         (mono_arch_get_vcall_slot): Simplify this.
4981
4982 2009-04-16  Zoltan Varga  <vargaz@gmail.com>
4983
4984         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Move the calls to
4985         mono_debug_add_delegate_trampoline () to get_delegate_invoke_impl ().
4986
4987 2009-04-14  Zoltan Varga  <vargaz@gmail.com>
4988
4989         * aot-compiler.c tramp-arm.c mini-arm.c: Implement static rgctx 
4990         trampolines for ARM. Add full-aot support for delegate invokes for ARM.
4991
4992         * mini-trampolines.c (mono_magic_trampoline): Fix the build.
4993
4994         * liveness.c (visit_bb): Remove a needless assert.
4995
4996 2009-04-13  Zoltan Varga  <vargaz@gmail.com>
4997
4998         * mini-trampolines.c (mono_create_delegate_trampoline): Delegate the
4999         full aot support to the arch specific code.
5000
5001         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Add full-aot support.
5002
5003         * aot-compiler.c (emit_trampolines): Emit delegate invoke impl trampolines.
5004
5005         * aot-compiler.c (emit_named_code): Rename this to 'emit_trampoline'.
5006         
5007         * mini-amd64.c (mono_arch_get_delegate_invoke_impls): New function to
5008         collect information about the delegate invoke impl trampolines.
5009
5010         * mini.h (MonoAotTrampInfo): New structure collecting the information needed
5011         to save trampolines during full-aot mode.
5012
5013         * mini-trampolines.c (mono_create_static_rgctx_trampoline): New trampoline
5014         creation function which returns a trampoline which sets the rgctx
5015         argument.
5016         (mono_magic_trampoline): Use the rgctx trampoline instead of an rgctx
5017         wrapper if possible.
5018         (mono_delegate_trampoline): Ditto.
5019
5020         * mini.c (mono_jit_runtime_invoke): Ditto.
5021
5022         * tramp-amd64.c: Add an implemention of static rgctx trampolines for AMD64.
5023         
5024         * aot-compiler.c aot-runtime.c: Add support for static rgctx trampolines.
5025
5026         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5027         
5028 2009-04-12  Zoltan Varga  <vargaz@gmail.com>
5029
5030         * mini-ia64.c (mono_arch_lowering_pass): Use NULLIFY_INS instead of
5031         just setting the opcode to OP_NOP.
5032
5033 2009-04-11  Zoltan Varga  <vargaz@gmail.com>
5034
5035         * mini.c (mini_method_compile): Put the last change inside an 
5036         #ifdef MONO_ARCH_HAVE_LIVERANGE_OPS.
5037         
5038         * mini.c (mini_method_compile): Disable sharing of stack slots/registers
5039         and extend live ranges to cover the whole method when using xdb.
5040
5041         * jit-icalls.c (ldvirtfn_internal): Avoid creating rgctx wrappers here,
5042         do it in the trampolines.
5043
5044         * mini-trampolines.c (mono_magic_trampoline): Add an rgctx wrapper if
5045         needed.
5046
5047         * mini-trampolines.c (mono_delegate_trampoline): Ditto.
5048         
5049         * method-to-ir.c (mono_method_to_ir): Avoid using the fast virtual method
5050         call code in full-aot mode since IMT is disabled there.
5051         (mono_method_to_ir): Inline ldfld wrappers which return structures too, the
5052         new JIT no longer has that restriction.
5053
5054         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5055
5056         * aot-compiler.c (emit_extra_methods): Emit the wrapper method names in
5057         a more compact format.
5058         (mono_aot_wrapper_name): New function to return a unique name for a
5059         wrapper method, also used by the AOT runtime.
5060
5061         * aot-runtime.c (find_extra_method_in_amodule): Update after the changes to
5062         aot-compiler.c.
5063
5064         * aot-compiler.c (add_generic_class): Add the helper methods from T[]
5065         when a ICollection<T> etc is encountered.
5066         (add_generic_instances): Process method arguments/locals too.
5067         (emit_trampolines): Emit unbox trampolines for extra methods too. Shorten
5068         trampoline names.
5069
5070         * aot-runtime.c (mono_aot_get_unbox_trampoline): Handle extra methods too.
5071         
5072 2009-04-10  Zoltan Varga  <vargaz@gmail.com>
5073
5074         * aot-compiler.c: Disable the AOT compiler if the JIT is disabled.
5075
5076         * dwarfwriter.c (emit_type): Emit byref to reference types as 'int' for now.
5077
5078         * decompose.c (mono_decompose_opcode): Make this return a MonoInst*
5079         representing the result of the decomposition. Nullify instructions
5080         instead of setting them to OP_NOP since nops can't have registers
5081         set.
5082
5083 2009-04-09  Zoltan Varga  <vargaz@gmail.com>
5084
5085         * aot-compiler.c (mono_compile_assembly): Split this huge function into
5086         smaller parts. Add 'nodebug' option to prevent generation of DWARF debug
5087         info. Strip 'mapping symbols' on ARM.
5088
5089         * iltests.il.in (test_0_fconv_to_i): Disable this on ARM too.
5090         
5091         * genmdesc.pl: Applied patch by Martin Fuzzey (mfuzzey@parkeon.com). Sync
5092         this with the native genmdesc.
5093
5094 2009-04-08  Bill Holmes  <billholmes54@gmail.com>
5095
5096         * aot-runtime.c:  Fixing the MSVC build.
5097
5098         Code is contributed under MIT/X11 license.
5099
5100 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5101
5102         * mini-llvm.c (mono_llvm_emit_method): Pass i1/i2 arguments as i4 since 
5103         JITted code depends on it.
5104
5105 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5106
5107         * aot-compiler.c: Use new MonoGenericParam accessors.
5108
5109 2009-04-08  Raja R Harinath  <harinath@hurrynot.org>
5110
5111         Reduce memory usage and improve correctness wrt MonoGenericParam
5112         * aot-runtime.c (decode_klass_ref): Simplify generic parameter
5113         handing.  Avoid allocating MonoGenericParams, but use the ones in
5114         the container itself.
5115
5116 2009-04-07  Miguel de Icaza  <miguel@novell.com>
5117
5118         * tasklets.c: Return exceptions in the out argument.
5119
5120 2009-04-08  Zoltan Varga  <vargaz@gmail.com>
5121
5122         * mini-llvm.c (mono_llvm_emit_method): Fix alignment in the LOCALLOC_IMM
5123         opcode. Use pointer types in more places instead of casting them to 
5124         integers.
5125
5126         * mini-llvm-cpp.cpp (mono_llvm_create_ee): Create a pass manager to run
5127         optimizations.
5128         (mono_llvm_optimize_method): New helper function to optimize a method.
5129
5130         * method-to-ir.c (mono_emit_widen_call_res): Extract the call result 
5131         widening code so it could be called from more places.
5132         (mono_method_to_ir): Call mono_emit_widne_call_res () in several more
5133         code paths in the call opcodes.
5134
5135 Mon Apr 6 14:19:54 CEST 2009 Paolo Molaro <lupus@ximian.com>
5136
5137         * exceptions-amd64.c, mini-amd64.h: amd64 support code for continuations.
5138
5139 2009-04-06  Zoltan Varga  <vargaz@gmail.com>
5140
5141         * dwarfwriter.c: Use _ to separate class name 
5142         components as gdb can't handle '.'. Represent reference variables
5143         as 'class <NAME>&'.
5144         
5145         * mini.h (MonoCompile): Add locals_min_stack_offset/locals_max_stack_offset.
5146
5147         * mini-amd64.c (mono_arch_allocate_vars): Save min/max stack offset.
5148         
5149         * mini-gc.c: New file, contains the SGEN GC related parts of the JIT.
5150
5151         * gc-test.cs: New file with GC stack marking tests.
5152         
5153         * mini-arm.c (mono_arch_output_basic_block): Fix int->float conversion of
5154         negative numbers for vfp.
5155
5156         * basic-float.cs: Add a test.
5157         
5158 Mon Apr 6 14:12:10 CEST 2009 Paolo Molaro <lupus@ximian.com>
5159
5160         * exceptions-x86.c, mini-x86.h: x86 support code for continuations.
5161
5162 Mon Apr 6 14:09:53 CEST 2009 Paolo Molaro <lupus@ximian.com>
5163
5164         * tasklets.h, tasklets.c, mini.h, mini.c, Makefile.am: arch-indep
5165         part of tasklet/continuation support.
5166
5167 2009-04-05  Zoltan Varga  <vargaz@gmail.com>
5168
5169         * mini-llvm.c (mono_llvm_emit_method): Move the handling of
5170         amd64 opcodes inside an ifdef.
5171
5172         * dwarfwriter.c: Emit inheritance information for classes, emit fields
5173         of complex types.
5174         
5175         * dwarfwriter.c (emit_type): Emit the class info for classes.
5176
5177 2009-04-04  Zoltan Varga  <vargaz@gmail.com>
5178
5179         * Makefile.am (AM_CXXFLAGS): Add GLIB_CFLAGS to this.
5180
5181         * mini-llvm-cpp.h: New header file for mini-llvm-cpp.cpp.
5182
5183         * mini-llvm.c: Remove unused fields from EmitContext, fix memory leaks.
5184
5185         * ssa.c (mono_ssa_compute): Fix some memory leaks.
5186
5187 2009-04-03  Zoltan Varga  <vargaz@gmail.com>
5188
5189         * mini.c mini-amd64.c method-to-ir.c: Use COMPILE_LLVM in a few more places.
5190
5191         * mini-llvm.c: Update comments.
5192
5193         * mini.h (COMPILE_LLVM): New macro.
5194
5195         * decompose.c (mono_decompose_opcode): Use the COMPILE_LLVM macro.
5196
5197         * ssa.c (mono_ssa_compute): Ditto.
5198         
5199         * unwind.c (mono_unwind_get_ops_from_fde): New helper function to extract
5200         the unwind ops from a DWARF FDE.
5201
5202         * mini-llvm.c: Implement generation of unwind info for LLVM compiled
5203         methods by extracting the dwarf unwind ops from the unwind info generated
5204         by LLVM.
5205         
5206         * mini-llvm.c (mono_llvm_emit_method): Enable support for non-IMT virtual
5207         calls.
5208
5209         * mini-amd64.c (mono_arch_get_vcall_slot): Handle more kinds of the SIB
5210         addressing modes.
5211
5212 2009-04-02  Zoltan Varga  <vargaz@gmail.com>
5213
5214         * Makefile.am (llvm_sources): Enable this.
5215
5216         * mini.c (mini_method_compile): Add support for compiling with LLVM, 
5217         failing back to the JIT if something cannot be handled.
5218
5219         * mini-amd64.c (mono_arch_emit_call): Emit the arguments more simple when
5220         compiling with LLVM.
5221
5222         * decompose.c (mono_decompose_opcode): Avoid decomposing some opcodes when
5223         compiling with LLVM.
5224
5225         * method-to-ir.c (mono_method_to_ir): Avoid decomposing SWITCH when 
5226         compiling with LLVM.
5227
5228         * mini-ops.h: Add a few opcodes needed by LLVM.
5229
5230         * dwarfwriter.c (mono_dwarf_writer_emit_method): Avoid crashes if the method
5231         has no unwind info.
5232
5233         * mini-llvm.c mini-llvm-cpp.cpp: New files containing the experimental llvm
5234         backend.
5235
5236         * mini-arm.c (mono_arch_output_basic_block): Fix the ARM_FPU_NONE build.
5237
5238         * mini-arm.h mini-arm.c cpu-arm.md: Finish VFP support.
5239
5240 2009-04-01  Mark Probst  <mark.probst@gmail.com>
5241
5242         * regalloc.h, mini-codegen.c: Make vassign members gint32 to fix
5243         ridiculously large methods.
5244
5245 2009-03-31  Martin Baulig  <martin@ximian.com>
5246
5247         * debug-debugger.c (debugger_remove_breakpoint): Call
5248         mono_debugger_remove_class_init_callback ().
5249
5250 2009-03-31  Zoltan Varga  <vargaz@gmail.com>
5251
5252         * aot-compiler.c (mono_compile_assembly): Call img_writer_emit_start ()
5253         right before emitting code, not at the start.
5254
5255         * mini.c (mono_postprocess_patches): Extract this into a separate function
5256         from mono_codegen ().
5257
5258         * ssa.c (mono_ssa_compute): Set ins->klass for every PHI node, handle
5259         byref types correctly.
5260
5261 2009-03-30  Zoltan Varga  <vargaz@gmail.com>
5262
5263         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix a crash introduced
5264         by the last change.
5265
5266 2009-03-29  Zoltan Varga  <vargaz@gmail.com>
5267
5268         * mini-amd64.c (mono_arch_output_basic_block): Emit a few nops before 
5269         indirect calls, this avoids problems where get_vcall_slot () would get
5270         confused by the native code for the instruction preceeding the call.
5271         (mono_arch_get_vcall_slot): Simplify this.
5272         (mono_arch_emit_imt_argument): Remove this, it is no longer needed.
5273
5274         * mini-ops.h: Fix the definitions of the OP_IA64 opcodes, since the local
5275         register allocator now seems to depend on them instead of the data in
5276         cpu-<ARCH>.md.
5277
5278         * mini.c (mini_method_compile): Throw the correct type of exception if
5279         mono_method_get_header () fails because of a loading error.
5280
5281 2009-03-28  Zoltan Varga  <vargaz@gmail.com>
5282
5283         * mini.c (mini_method_compile): Clear the loader error if the method
5284         header cannot be decoded.
5285
5286         * mini-trampolines.c (mono_magic_trampoline): Handle generic virtual 
5287         interface methods on proxies correctly.
5288
5289         * dwarfwriter.c (mono_dwarf_writer_emit_method): Fix handling of the
5290         this argument for vtype methods. Add precise liveness info for arguments.
5291
5292         * mini-codegen.c (mono_print_ins_index): Print the vreg of the
5293         LIVERANGE_START/END opcodes.
5294
5295         * method-to-ir.c (mono_spill_global_vars): Fix liverange calculation
5296         for arguments and values in registers.
5297
5298 2009-03-27  Zoltan Varga  <vargaz@gmail.com>
5299
5300         * method-to-ir.c (mono_method_to_ir): Disable tail calls for calls which
5301         return a valuetype. Fixes #487518.
5302
5303         * iltests.il: Add a test.
5304         
5305         * aot-compiler.c: Use mono_thread_create () to create helper threads.
5306
5307         * mini-trampolines.c (mono_delegate_trampoline): Handle static delegates
5308         closed over a null reference correctly.
5309
5310 2009-03-26  Zoltan Varga  <vargaz@gmail.com>
5311
5312         * method-to-ir.c (mono_handle_global_vregs): Fix support for ternary ops.
5313
5314 2009-03-25  Mark Probst  <mark.probst@gmail.com>
5315
5316         * mini-codegen.c (mono_local_regalloc): Don't let sregs get
5317         allocated to the same registers as fixed sregs.
5318
5319 2009-03-24  Mark Probst  <mark.probst@gmail.com>
5320
5321         * mini-ops.h: New ternary ATOMIC_CAS ops replace the old
5322         ATOMIC_CAS_IMM ops.
5323
5324         * method-to-ir.c: Handle more cases for
5325         Interlocked.CompareExchange.
5326
5327         * cpu-x86.md, mini-x86.c, mini-x86.h, cpu-amd64.md, mini-amd64.c,
5328         mini-amd64.h, cpu-ppc.md, cpu-ppc64.md, mini-ppc.c, mini-ppc.h:
5329         ATOMIC_CAS implementations for x86, AMD64, PPC and PPC64.
5330
5331 2009-03-23  Zoltan Varga  <vargaz@gmail.com>
5332
5333         * aot-runtime.c (decode_method_ref): Fix a warning.
5334
5335         * unwind.c (mono_unwind_frame): Ditto.  
5336
5337 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5338
5339         * aot-compiler.c (arch_emit_unbox_trampoline): Fix the binary writer support.
5340         (mono_compile_assembly): Enable the binary writer for full-aot as well.
5341
5342         * image-writer.c (do_reloc): Add support for the JUMP24 relocation,
5343         fix the handling of large values in the ALU_PC_G0_NC relocation.
5344
5345 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5346
5347         * local-propagation.c method-to-ir.c local-propagation.c: Fix warnings.
5348
5349 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5350
5351         * method-to-ir.c (mono_spill_global_vars): Support for ternary
5352         ops.
5353
5354 2009-03-22  Mark Probst  <mark.probst@gmail.com>
5355
5356         * method-to-ir.c: MINI_OP3 needs a comma.
5357
5358         * method-to-ir.c, mini.h, mini.c: Remove
5359         mono_init_op_sreg_counts ().
5360
5361 2009-03-22  Zoltan Varga  <vargaz@gmail.com>
5362
5363         * mini-arm.c (mono_arch_output_basic_block): Fix aot support in
5364         OP_JMP.
5365         
5366         * mini-arm.c (mono_arch_build_imt_thunk): Disable the !fail_tramp
5367         assertion.
5368
5369         * mini-ops.h: Fix arguments of the MEMINDEX opcodes.
5370
5371         * mini-amd64.c (mono_arch_build_imt_thunk): Simplify the fail handling
5372         code somewhat.
5373
5374 2009-03-21  Mark Probst  <mark.probst@gmail.com>
5375
5376         * cfold.c, cprop.c, decompose.c, genmdesc.c, helpers.c, ir-emit.h,
5377         liveness.c, local-propagation.c, method-to-ir.c, mini-codegen.c,
5378         mini.c, mini.h, simd-intrinsics.c, ssa.c: Support for ternary IR
5379         operations.
5380
5381 2009-03-20  Zoltan Varga  <vargaz@gmail.com>
5382
5383         * driver.c: Change location of gc_wrapper.h.
5384
5385         * method-to-ir.c (mono_find_block_region): Handle try clauses nested
5386         inside finally clauses correctly. Fixes #485721.
5387
5388         * mini.c (mono_find_spvar_for_region): This needs to handle try regions
5389         after the change above.
5390
5391         * exceptions.cs: Add a test.
5392         
5393 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5394
5395         * unwind.c (mono_unwind_ops_encode): Increase the size of the encode buffer.
5396
5397         * mini-amd64.c (mono_arch_emit_epilog): Remove the encoding of stack size
5398         into cfg->used_int_regs, it is not needed with the dwarf unwinder.
5399         (mono_arch_compute_omit_fp): Remove the emit_epilog () workaround.
5400
5401         * mini-amd64.c (mono_arch_compute_omit_fp): Add another check to avoid hitting
5402         the stack_alloc_size < (1 << 16) assertion in emit_prolog ().
5403
5404 2009-03-19  Sebastien Pouliot  <sebastien@ximian.com>
5405
5406         * method-to-ir.c: Allow CoreCLR to throw FieldAccessException. 
5407         Simplify logic for ensure_method_is_allowed_to_call_method. 
5408         Handle wrappers on callers.
5409
5410 2009-03-19  Zoltan Varga  <vargaz@gmail.com>
5411
5412         * Makefile.am (fullaotcheck): Don't run the generics tests, some of
5413         them don't run yet.
5414
5415         * basic-simd.cs: Fix the names of some test methods.
5416
5417 2009-03-18  Geoff Norton  <gnorton@novell.com>
5418
5419         * mini.c: Only chain sigfpe if it wasn't generated in mangaed code.
5420
5421 2009-03-18  Zoltan Varga  <vargaz@gmail.com>
5422
5423         * dwarfwriter.c (token_handler): Fix a crash caused by the last change.
5424
5425 2009-03-17  Jb Evain  <jbevain@novell.com>
5426
5427         * driver.c: remove now uneeded call to mono_gc_base_init before
5428         mono_profiler_load.
5429
5430 2009-03-17  Jb Evain  <jbevain@novell.com>
5431
5432         * dwarfwriter.c (token_handler): handle more cases.
5433
5434 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com> 
5435
5436         * method-to-ir.c: Remove more dead code (that was required only
5437         because of method_is_safe). Fix compiler warnings.
5438
5439 2009-03-17  Sebastien Pouliot  <sebastien@ximian.com>
5440
5441         * method-to-ir.c: Remove unneeded/useless method_is_safe
5442         http://lists.ximian.com/archives/public/mono-devel-list/2009-March/031404.html
5443
5444 2009-03-16 Rodrigo Kumpera  <rkumpera@novell.com>
5445
5446         * mini.c (mini_method_compile): Print the method been compiled with
5447         verbose level 1 instead of 3 as this helps a lot debugging JIT crashes
5448         for people not familiar with the runtime.
5449
5450 2009-03-17  Zoltan Varga  <vargaz@gmail.com>
5451
5452         * mini-exceptions.c (get_generic_info_from_stack_frame): Avoid returning
5453         a managed object which is later put into a GList. Return its class instead.
5454
5455         * mini.c (mono_allocate_stack_slots_full): Avoid sharing ref and non-ref
5456         stack slots when using sgen.
5457
5458 2009-03-16  Zoltan Varga  <vargaz@gmail.com>
5459
5460         * dwarfwriter.c (emit_line_number_info): Really fix the eglib build.
5461
5462 2009-03-14  Zoltan Varga  <vargaz@gmail.com>
5463
5464         * local-propagation.c (reg_is_softreg_no_fpstack): Use >= instead of
5465         > so it works on the first vreg as well.
5466
5467 2009-03-13  Zoltan Varga  <vargaz@gmail.com>
5468
5469         * dwarfwriter.c (emit_line_number_info): Disable an assert which seems to
5470         trigger randomly.
5471
5472         * aot-compiler.c: Get rid of xdebug_lock (), use the loader lock instead.
5473         
5474         * dwarfwriter.c (emit_line_number_info): Fix eglib build as eglib doesn't
5475         implement GArray.
5476
5477 2009-03-12  Zoltan Varga  <vargaz@gmail.com>
5478
5479         * dwarfwriter.c (emit_line_number_info): Optimize the computation of the
5480         native->IL offset mapping.
5481
5482 2009-03-11  Zoltan Varga  <vargaz@gmail.com>
5483
5484         * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
5485
5486         * basic.cs: Add a test.
5487
5488 2009-03-11  Mark Probst  <mark.probst@gmail.com>
5489
5490         * mini-x86.c (mono_arch_output_basic_block): Use different
5491         registers in case the ones we want to overwrite are used by the
5492         other operand.  Fixes regression in #480807.
5493
5494 2009-03-10  Zoltan Varga  <vargaz@gmail.com>
5495
5496         * aot-compiler.c (mono_compile_assembly): Make the output less verbose.
5497
5498         * dwarfwriter.c (emit_line_number_info): The line number info for
5499         IL code was off by one. Fix that.
5500
5501         * mini-s390x.c: Fix support for vtypes whose addresses are passed on the
5502         stack.
5503
5504 2009-03-09  Mark Probst  <mark.probst@gmail.com>
5505
5506         Contributed under the terms of the MIT/X11 license by Steven
5507         Munroe <munroesj@us.ibm.com>.
5508
5509         * mini-ppc.c: Correct handling of OP_LOADI4_MEMINDEX for ppc64.
5510         Fixes #483462.
5511
5512 2009-03-08  Zoltan Varga  <vargaz@gmail.com>
5513
5514         * dwarfwriter.c (token_handler): Decode method references in non-wrappers
5515         as well.
5516
5517 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
5518
5519         * method-to-ir.c (mono_method_to_ir): Check for type load exceptions in
5520         the delegate ctor handling code. Fixes #482638.
5521         
5522         * method-to-ir.c (mini_emit_memset): Fix the handling of size '3'. Fixes
5523         #481458.
5524
5525         * iltests.il.in: Add a test.
5526         
5527         * mini-darwin.c (mono_chain_signal): Remove this, it is already in
5528         mini-posix.c.
5529
5530 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5531
5532         * mini-trampolines.c (mono_create_jump_trampoline): If the method
5533         is shared generic code, return the trampoline, even if the method
5534         has already been compiled.  Fixes #479763.
5535
5536         * mini.c, mini.h: New function
5537         mono_jit_find_compiled_method_with_jit_info() which is the same as
5538         mono_jit_find_compiled_method() but also returns the jit info.
5539
5540 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5541
5542         * method-to-ir.c (mono_method_to_ir): Only force the vtable var
5543         for methods which actually have one.  For all other methods, make
5544         sure the this argument var is live the whole method.
5545
5546         * mini.c (mini_method_compile): Every shared method has a
5547         this/vtable/mrgctx info.  Fixes #480807.
5548
5549 2009-03-05  Mark Probst  <mark.probst@gmail.com>
5550
5551         * mini-ppc.c (mono_arch_build_imt_thunk): Add support for mixed
5552         generic/imt thunks where some entries branch through the vtable,
5553         while other entries branch directly.
5554
5555 2009-03-05  Zoltan Varga  <vargaz@gmail.com>
5556
5557         * mini-darwin.c (mono_chain_signal): Define this to fix the build.
5558
5559         * mini-windows.c: Ditto.
5560         
5561         * mini.c (mono_jit_runtime_invoke): Speed up the invoking of parameterless
5562         ctors.
5563
5564 2009-03-04  Zoltan Varga  <vargaz@gmail.com>
5565
5566         * dwarfwriter.c (emit_line_number_info): Add some debug code to help track
5567         down an assert.
5568
5569 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5570
5571         * method-to-ir.c: Don't inline methods that use JMP.  Fixes
5572         #481403.
5573
5574 2009-03-04  Mark Probst  <mark.probst@gmail.com>
5575
5576         * exceptions-x86.c: Include debug-mini.h - fixes build.
5577
5578 2009-03-04  Martin Baulig  <martin@ximian.com>
5579
5580         * debug-mini.c: Clean up the exception API and add documentation.
5581         (mono_debugger_handle_exception): New public method; this is
5582         called when throwing an exception or encountering an unhandled one.
5583         (mono_debugger_call_exception_handler): Formerly known as
5584         mono_debugger_handle_exception(); this is used to tell the
5585         debugger that we're about to invoke an exception handler.
5586
5587 2009-03-04  Martin Baulig  <martin@ximian.com>
5588
5589         * debug-mini.c (mono_debugger_runtime_invoke): Moved here from
5590         ../metadata/mono-debug-debugger.c; save and reset exception state.
5591
5592 2009-03-02  Martin Baulig  <martin@ximian.com>
5593
5594         * debug-mini.c: Moved the debugger exception handling here from
5595         ../metadata/mono-debug-debugger.c.
5596
5597         * debug-mini.h
5598         (MonoDebuggerExceptionAction): New exception typedef.
5599
5600         * debug-mini.c
5601         (MonoDebuggerThreadInfo): Added `MonoObject *last_exception'.
5602
5603         * exceptions-amd64.c
5604         (mono_amd64_throw_exception): Use the new debugger exception
5605         handling code.
5606
5607         * mini-exceptions.c
5608         (mono_handle_exception_internal): Don't call
5609         mono_debugger_unhandled_exception() here.
5610
5611 2009-03-03  Zoltan Varga  <vargaz@gmail.com>
5612
5613         * mini.c aot-compiler.c: Update after the changes to 
5614         mono_marshal_get_runtime_invoke ().
5615
5616         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): 
5617         Virtual generic methods might not have method->slot set, work around
5618         that.
5619
5620         * generics.cs: Add a test.
5621
5622 2009-03-02  Geoff Norton  <gnorton@novell.com>
5623
5624         * mini.c:
5625         * driver.c: Allow signal chaining of SIGFPE as well.
5626
5627 2009-03-02  Zoltan Varga  <vargaz@gmail.com>
5628
5629         * mini-trampolines.c (mono_generic_virtual_remoting_trampoline): Update
5630         this since it now receives the method not its generic context in the
5631         IMT reg.
5632
5633         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for mixed
5634         generic/imt thunks where some entries branch through the vtable, while
5635         other entries branch directly.
5636
5637         * mini-x86.c (mono_arch_build_imt_thunk): Ditto.
5638
5639         * method-to-ir.c (mono_method_to_ir): Enable fast virtual generic call 
5640         support for interface methods as well.
5641
5642         * mini-trampolines.c: Add support for virtual generic methods in interfaces
5643         using the normal IMT thunks.
5644
5645         generics.cs: Add new tests.
5646         
5647         * method-to-ir.c (mono_method_to_ir): Pass the method instead of
5648         the generic inst to the generic imt thunks. This fixes AOT support, 
5649         improves consistency with the normal IMT thunks, and makes it easier to
5650         add support for interface generic virtual methods later.
5651
5652         * mini-trampolines.c (mono_magic_trampoline): Ditto.    
5653         
5654 2009-02-28  Zoltan Varga  <vargaz@gmail.com>
5655
5656         * driver.c (mono_set_signal_chaining): New public API function to enable
5657         signal chaining on POSIX platforms.
5658
5659         * mini-posix.c mini.c: Applied a variant of a patch by Simon Rowland 
5660         (si@lindenlab.com) to implement signal chaining. The original patch was
5661         contributed under the MIT X/11 license:
5662         https://bugzilla.novell.com/show_bug.cgi?id=318894
5663
5664 2009-02-27  Zoltan Varga  <vargaz@gmail.com>
5665
5666         * iltests.il.in (test_0_implicit_float_to_double_conversion): Disable this
5667         too until it can be made to run on amd64.
5668
5669 2009-02-26  Zoltan Varga  <vargaz@gmail.com>
5670
5671         * mini-x86.c (mono_arch_get_this_arg_from_call): Avoid expensive calls
5672         to  get_generic_context_from_code () + get_call_info () if possible.
5673
5674 2009-02-25  Zoltan Varga  <vargaz@gmail.com>
5675
5676         * mini-exceptions.c (mono_handle_native_sigsegv): Implement the
5677         suspend-on-sigsegv functionality.
5678
5679         * mini.c (mini_parse_debug_options): Add a new 'suspend-on-sigsegv' option
5680         to suspend when a native SIGSEGV is received. This is useful for debugging
5681         crashes which don't happen under gdb, since a live process contains more
5682         information than a core file.
5683
5684         * mini-exceptions.c (mono_print_thread_dump): Use 
5685         MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX instead of platform defines.
5686
5687         * mini-x86.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): New define.
5688
5689         * mini-amd64.h (MONO_ARCH_HAVE_SIGCTX_TO_MONOCTX): Ditto.
5690         
5691         * basic-float.cs: Disable the tests which currently fail on amd64.
5692
5693         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Pass a non-null 
5694         value to mono_arch_patch_callsite () to fix crashes.
5695         
5696         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix a warning.
5697
5698 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5699
5700         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Replace the
5701         nop code by patching the call address to point to the nullified class init
5702         trampoline, as the former does not seem to be safe on SMP machines.
5703
5704 2009-02-23  Mark Probst  <mark.probst@gmail.com>
5705
5706         * mini-ops.h: Fix the argument types for a few x86 opcodes where
5707         they were wrong.
5708
5709 2009-02-23  Zoltan Varga  <vargaz@gmail.com>
5710
5711         * basic-float.cs basic-calls.cs: Fix warnings.
5712
5713 2009-02-22  Mark Probst  <mark.probst@gmail.com>
5714
5715         * tramp-ppc.c (mono_arch_create_trampoline_code): Store the
5716         correct frame pointer in the LMF.  Should fix #478394.
5717
5718 2009-02-22  Zoltan Varga  <vargaz@gmail.com>
5719
5720         * Makefile.am (fullaotcheck): Copy Mono.Simd.dll as well.
5721
5722         * image-writer.c: Make the binary writer less verbose.
5723
5724 2009-02-21  Zoltan Varga  <vargaz@gmail.com>
5725
5726         * method-to-ir.c (mono_method_to_ir): Don't assert if string ctors
5727         are called from runtime invoke wrappers.
5728
5729 2009-02-20  Zoltan Varga  <vargaz@gmail.com>
5730
5731         * cpu-ppc.md (store_memindex): Increase the size of this.
5732
5733 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5734
5735         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5736
5737         * cpu-x86.md: Fix the sizes for long_conv_to_r_un and long_conv_to_r_un_2.
5738
5739         * mini-x86.c (mono_arch_output_basic_block): Use only 64bits of precision for
5740         OP_LCONV_TO_R_UN.
5741
5742         Last fix for of #467201.
5743
5744
5745 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5746
5747         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5748
5749         * cpu-x86.md: Fix the sizes for fcall(_reg,_membase), long_conv_to_r4_2
5750         and long_conv_to_r8_2:
5751
5752         Fixed part of #467201.
5753
5754 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5755
5756         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5757
5758         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of int to float
5759         conversion to 32 bits.
5760
5761         * cpu-x86.md: Increase the size of int_conv_to_r4.
5762
5763         * basic-float.cs: Add a test for this.
5764
5765         Fixed part of #467201.
5766
5767 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5768
5769         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5770
5771         * mini-x86.c (mono_arch_output_basic_block): Adjust precision of long to double
5772         conversion to 64 bits.
5773
5774         * basic-float.cs: Add a test for this.
5775
5776         Fixed part of #467201.
5777
5778 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5779
5780         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5781
5782         * mini-x86.c (emit_move_return_value): Don't reduce precision of functions returning float.
5783         This behavior is compatible with MS.
5784
5785         * iltest.il.in: Add a test for this.
5786
5787         Fixed part of #467201.
5788
5789 2009-02-20 Rodrigo Kumpera  <rkumpera@novell.com>
5790
5791         Extracted from a patch by Kornel Pal <kornelpal@gmail.com>.
5792
5793         * mini-x86.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_R4, it must
5794         change the precision of the value.
5795
5796         * cpu-x86.md: Define len for float_conv_to_r4.
5797
5798         * basic-float.cs: Add a test for this.
5799
5800         Fixed part of #467201.
5801
5802 2009-02-19 Rodrigo Kumpera  <rkumpera@novell.com>
5803
5804         * mini.c: Adjust locking order to the new semantics where the loader lock
5805         comes first.
5806
5807 2009-02-18  Rodrigo Kumpera  <rkumpera@novell.com>
5808
5809         * aot-runtime.c:
5810         * mini-amd64.c:
5811         * mini-arm.c:
5812         * mini-ia64.c:
5813         * mini-mips.c:
5814         * mini-ppc.c:
5815         * mini-sparc.c:
5816         * mini-trampolines.c:
5817         * mini-x86.c:
5818         * mini.c:
5819         * tramp-alpha.c:
5820         * tramp-amd64.c:
5821         * tramp-arm.c:
5822         * tramp-hppa.c:
5823         * tramp-ia64.c:
5824         * tramp-mips.c:
5825         * tramp-ppc.c:
5826         * tramp-s390.c:
5827         * tramp-s390x.c:
5828         * tramp-sparc.c:
5829         * tramp-x86.c: Use mono_domain_code_* functions instead of using MonoDomain::code_mp directly.
5830
5831 2009-02-18  Zoltan Varga  <vargaz@gmail.com>
5832
5833         * mini-codegen.c (mono_local_regalloc): Remove a ! from if (!dest_sreg1)
5834         as it is incorrect.
5835
5836 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5837
5838         * aot-compiler.c (add_generic_class): Only add rgctx invoke wrappers
5839         for cctors if needed.
5840
5841 2009-02-17  Mark Probst  <mark.probst@gmail.com>
5842
5843         * mini-ppc.c: Fix build on Darwin.
5844
5845 2009-02-17  Zoltan Varga  <vargaz@gmail.com>
5846
5847         * dwarfwriter.c (mono_dwarf_writer_emit_base_info): Use 2 as the DWARF
5848         version instead of 3 as valgrind doesn't like version 3.
5849
5850         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
5851
5852         * aot-compiler.c (mono_aot_method_hash): New function to return a hash
5853         usable for hashing methods.
5854         (emit_extra_methods): Use the new hash to avoid putting every method in the
5855         same hash bucket.
5856
5857         * aot-runtime.c (find_extra_method_in_amodule): Use the new hash.
5858
5859         * aot-runtime.c (can_method_ref_match_method): New function to quickly check
5860         whenever a method ref could match a method.
5861         
5862         * aot-runtime.c (load_image): Revert the previous change, it causes an AOT
5863         test to fail.
5864         
5865         * aot-runtime.c (find_extra_method_in_amodule): Add a cache for decoded 
5866         methods refs.
5867
5868         * aot-runtime.c (load_image): Pass our basedir to mono_assembly_load.
5869
5870         * aot-compiler.c (emit_exception_debug_info): Bump the maximum size of
5871         the encoding buffer.
5872
5873         * method-to-ir.c (mono_method_check_inlining): Avoid calling 
5874         mono_method_get_header () on inflated methods as an optimization.
5875
5876 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5877
5878         * ssa.c (fold_ins): Fix another crash if the instruction following the
5879         switch was optimized away.
5880
5881 2009-02-16  Mark Probst  <mark.probst@gmail.com>
5882
5883         Contributed under the terms of the MIT/X11 license by Steven
5884         Munroe <munroesj@us.ibm.com>.
5885
5886         * mini-ppc.c, mini-ppc.h: Implement TLS for PPC64.
5887
5888 2009-02-16  Zoltan Varga  <vargaz@gmail.com>
5889
5890         * mini.c method-to-ir.c mini-trampolines.c aot-runtime.c: Remove locking
5891         around the mono_domain_alloc calls, it is now done by the functions
5892         themselves.
5893
5894         * aot-compiler.c (compile_method): Only add wrappers referenced by
5895         the method if compiling with full AOT.
5896         (mono_compile_assembly): Error out if --aot=full is specified on
5897         a platform where it is not supported.
5898
5899         * aot-compiler.c (emit_trampolines): Emit generic class init trampolines
5900         on ARM too.
5901
5902         * tramp-arm.c (mono_arch_create_generic_class_init_trampoline_full): Add
5903         AOT support.
5904
5905         * aot-runtime.c (load_named_code): Handle 
5906         mono_arm_throw_exception_by_token.
5907
5908         * mini-arm.h: Add declaration of mono_arm_throw_exception_by_token.
5909
5910         * image-writer.c (asm_writer_emit_pointer_unaligned): Make this really
5911         unaligned.
5912
5913         * Makefile.am (fullaotcheck): Exit if a test fails.
5914
5915         * aot-compiler.c (mono_compile_assembly): Use the ASM writer for full aot
5916         on ARM.
5917         (mono_compile_assembly): Handle the assembler failing.
5918
5919         * image-writer.c (asm_writer_emit_section_change): Handle ARM gas not
5920         accepting subsections of .bss.
5921
5922         * ssa.c (visit_inst): Fix a crash if the instruction following a switch
5923         was optimized away.
5924
5925         * aot-compiler.c: Remove some unused includes.
5926         
5927         * aot-compiler.c (MonoAotCompile): Remove some unused fields which are
5928         now in MonoImageWriter.
5929
5930         * mini-x86.c (mono_arch_get_vcall_slot): Handle yet another
5931         code sequence which matches a non-virtual call. Fixes #472654.
5932
5933 2009-02-15  Zoltan Varga  <vargaz@gmail.com>
5934
5935         * aot-compiler.c: Use xdebug_lock ()/unlock () macros for locking in the
5936         xdebug code.
5937         
5938         * aot-compiler.c: Make the xdebug code not depend on the AOT compiler,
5939         use the image/dwarf writers directly.
5940
5941         * image-writer.c (struct _MonoImageWriter): Remove the unused 'image'
5942         field.
5943
5944         * aot-compiler.c (MonoAotCompile): Remove fields which are now in
5945         MonoDwarfWriter.
5946
5947         * image-writer.h: Fix some typos.
5948
5949         * dwarfwriter.h dwarfwriter.c: New files.
5950         
5951         * aot-compiler.c: Extract the DWARF info writing functionality into a 
5952         separate module.
5953
5954         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add a 'out_unwind_ops'
5955         argument to return unwind info.
5956
5957         * tramp-arm.c (mono_arch_create_trampoline_code_full): Ditto.
5958
5959         * aot-compiler.c: Emit unwind info for trampolines in full-aot mode.
5960         
5961         * aot-runtime.c (decode_method_ref): Add a case for 
5962         MONO_AOT_METHODREF_WRAPPER_NAME.
5963
5964         * mini.h: Add constants for the magic numbers used in encode_method_ref ()
5965         for AOT.
5966
5967         * aot-compiler.c (encode_method_ref): Use the new constants.
5968
5969         * aot-runtime.c (decode_method_ref): Ditto.
5970
5971         * aot-compiler.c (compile_method): For generic icalls, queue the wrapper to
5972         be compiled, not the icall itself.
5973
5974 2009-02-14  Zoltan Varga  <vargaz@gmail.com>
5975
5976         * aot-runtime.c (find_extra_method_in_amodule): Avoid decoding wrapper names
5977         using decode_method_ref ().
5978
5979         * method-to-ir.c (mini_emit_ldelema_1_ins): If the array index is a long,
5980         convert it to an in32. Fixes #475859.
5981
5982         * arrays.cs: Add a test.
5983
5984 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5985
5986         * mini-s390x.c (mono_arch_output_basic_block): Fix the shift amounts in 
5987         OP_LCONV_TO_U2.
5988
5989         * basic-long.cs: Add a test.
5990
5991 2009-02-12  Mark Probst  <mark.probst@gmail.com>
5992
5993         * mini-x86.c, mini-x86.h: Very simple frame pointer removal.  We
5994         remove the frame pointer in leaf methods which don't receive any
5995         arguments, don't throw exceptions and don't do dynamic stack
5996         allocations.
5997
5998 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
5999
6000         * mini-amd64.c (mono_arch_build_imt_thunk): Fix size calculation after
6001         the fail_tramp changes. Hopefully fixes #475132.
6002
6003 2009-02-12  Rodrigo Kumpera  <rkumpera@novell.com>
6004
6005         * method-to-ir.c (mono_emit_method_call_full): Use mono_metadata_signature_dup_mempool
6006         instead of mono_metadata_signature_dup_full.
6007
6008 2009-02-12  Zoltan Varga  <vargaz@gmail.com>
6009
6010         * ssa.c (fold_ins): Use MONO_IS_JUMP_TABLE () and MONO_JUMP_TABLE_FROM_INS ()
6011         for processing jump tables. Fixes #473787.
6012
6013 2009-02-11  Mark Probst  <mark.probst@gmail.com>
6014
6015         * mini-generic-sharing.c: mini_method_get_context() just calls
6016         mono_method_get_context_general() now.
6017
6018         * mini.c, mini.h: Moved get_object_generic_inst(),
6019         construct_object_context_for_method() and
6020         mono_domain_lookup_shared_generic() to metadata/generic-sharing.c.
6021
6022 2009-02-11  Zoltan Varga  <vargaz@gmail.com>
6023
6024         * branch-opts.c (mono_if_conversion): Handle the case where the merged 
6025         basic block fell through to its successor bblock without a branch. Fixes
6026         #474718.
6027
6028         * iltests.il.in: Add a test.
6029         
6030         * aot-compiler.c (encode_method_ref): Encode methods of array types.
6031         (can_encode_patch): We can now handle arrays of generic parameters and
6032         array methods.
6033
6034         * aot-runtime.c (decode_method_ref_2): Handle methods of array types.
6035
6036         * aot-compiler.c aot-runtime.c: Emit the size of specific trampolines into
6037         the AOT file to avoid some #ifdefs in aot-runtime.c
6038
6039         * mini.h: Bump AOT file format version.
6040
6041 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6042
6043         * Makefile.am (fullaotcheck): Make this run the tests.
6044
6045         * aot-compiler.c: Make the printing of skipped methods runtime configurable.
6046
6047 2009-02-10  Mark Probst  <mark.probst@gmail.com>
6048
6049         * mini-x86.c (mono_arch_context_get_int_reg): Handle all registers
6050         individually.  Fixes #473482.
6051
6052 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6053
6054         * mini-arm.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
6055
6056 2009-02-09  Jeffrey Stedfast  <fejj@novell.com>
6057
6058         * aot-compiler.c (arch_emit_plt_entry): Fixed to compile.
6059         (mono_compile_assembly): Hush compile warnings about
6060         uninitialized [tmp_]outfile_name variables in the !use_bin_writer
6061         code path.
6062
6063 2009-02-10  Zoltan Varga  <vargaz@gmail.com>
6064
6065         * exceptions-arm.c (mono_arch_find_jit_info): Fix aot support.
6066
6067         * mini-arm.c: Checkin unwind related changes missing from an earlier commit.
6068
6069         * aot-compiler.c: Fix arm support.
6070
6071         * image-writer.c: Move the R_ARM constants to image-writer.h. Export a
6072         img_writer_emit_unset_mode () function.
6073
6074         * unwind.c (mono_unwind_get_dwarf_data_align): New helper function.
6075         (mono_unwind_get_dwarf_pc_reg): Ditto.
6076
6077         * aot-compiler.c (emit_dwarf_abbrev): Another large reorganization.
6078         Move almost all platform specific code to a set of arch_ functions, 
6079         and document them to ease porting.
6080         
6081         * aot-compiler.c (mono_xdebug_init): Fix xdebug support.
6082
6083         * image-writer.h image-writer.c: New files, extracted from aot-compiler.c.
6084
6085         * aot-compiler.c: Extract the image writing functionality into a separate
6086         module to reduce the size of this file.
6087
6088 2009-02-09  Geoff Norton  <gnorton@novell.com>
6089
6090         * mini-s390.c: Fix the signature of emit_sig_cookie.
6091
6092 2009-02-09  Zoltan Varga  <vargaz@gmail.com>
6093
6094         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_IMAGE.
6095
6096         * aot-runtime.c (is_shared_got_patch): Ditto.
6097
6098         * aot-runtime.c (load_named_code): Cope with the fact that 
6099         decode_got_entry () won't decode the patch fully if its corresponding got
6100         entry is already filled.
6101         
6102         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): 
6103         Initialize *ji.
6104         (mono_arch_create_monitor_exit_trampoline_full): Ditto.
6105
6106         * tramp-amd64.c (mono_arch_create_monitor_enter_trampoline_full): Use 'code'
6107         as the moving pointer instead of 'buf' for consistency with the rest of the
6108         codebase.
6109         (mono_arch_create_monitor_exit_trampoline): Ditto.
6110
6111         * aot-compiler.c (emit_trampolines): Add throw_pending_exception/
6112         generic_class_init trampolines.
6113         (add_generic_class): Extract some code from add_generic_instances () into a
6114         separate function so it can be called from other places too.
6115         (compile_method): Call add_generic_class () for the classes of inflated methods
6116         referenced by the method.
6117         (can_encode_patch): Allow references to generic parameters.
6118
6119         * aot-runtime.c: Add support the patches required by the new trampolines.
6120         
6121         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Add full-aot
6122         support.
6123
6124         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline_full): Add
6125         full-aot support.
6126
6127         * exceptions-amd64.c (mono_arch_get_throw_pending_exception_full): Rename
6128         this from get_throw_pending_exception, make the signature full aot compatible.
6129
6130         * Makefile.am (fullaotcheck): New target to run full-aot tests.
6131
6132         * method-to-ir.c (inline_method): Save/Restore cfg->ret_var_set too.
6133
6134         * exceptions.cs: Add a test.
6135
6136 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6137
6138         * unwind.c (mono_unwind_frame): Eliminate the data_align_factor argument,
6139         use the DWARF_DATA_ALIGN constant instead.
6140
6141         * exception-<ARCH>.c: Update after the above change.
6142
6143         * exceptions-arm.c (mono_arch_find_jit_info): Transition this to use the
6144         dwarf unwinder.
6145
6146         * mini-arm.c: Enable the dwarf unwinder.
6147
6148         * mini-trampolines.c (mono_magic_trampoline): Use mono_class_get_vtable_entry ()
6149         instead of mono_class_setup_vtable ().
6150
6151 2009-02-07  Zoltan Varga  <vargaz@gmail.com>
6152
6153         * exceptions-x86.c (mono_arch_find_jit_info): Transition this to use the
6154         dwarf unwinder.
6155
6156         * mini-x86.h: Enable the dwarf unwinder.
6157
6158 2009-02-06  Raja R Harinath  <harinath@hurrynot.org>
6159
6160         Fix mcs/tests/test-7.cs
6161         * mini-amd64.c (mono_arch_allocate_vars): Revert change from
6162         2009-02-03.
6163
6164 2009-02-06  Zoltan Varga  <vargaz@gmail.com>
6165
6166         * mini.c (print_jit_stats): Remove some unused statistics.
6167
6168 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6169
6170         * aot-compiler.c (emit_klass_info): Update after MonoClass changes.
6171
6172 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6173
6174         * jit-icalls.c (mono_helper_compile_generic_method): Don't inflate
6175         the method we get from mono_object_get_virtual_method() because
6176         that function does it properly, now.
6177
6178 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6179
6180         * unwind.c (mono_unwind_ops_encode): Handle offsets greater than 32 between
6181         opcodes. Fixes #472775.
6182
6183 2009-02-05  Mark Probst  <mark.probst@gmail.com>
6184
6185         * mini-exceptions.c (ves_icall_get_frame_info): Account for the
6186         fact that mono_find_jit_info() sometimes returns the context
6187         corresponding to the jit info in new_ctx.  Fixes #472600.
6188
6189 2009-02-05  Zoltan Varga  <vargaz@gmail.com>
6190
6191         * method-to-ir.c mini-hppa.c mini.c trace.c mini-s390x.c aot-compiler.c
6192         mini-s390.c: Use mono_class_enum_basetype () instead of accessing
6193         klass->enum_basetype directly.
6194
6195         * aot-compiler.c (emit_class_dwarf_info): Add support for all possible
6196         enum subtypes.
6197
6198         * unwind.c: Avoid 0 sized arrays.
6199
6200 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6201
6202         * mini-exceptions.c (mono_setup_altstack): Use a more reasonable altstack
6203         size on systems with 64k pages. Fixes #471389.
6204
6205 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6206
6207         Contributed under the terms of the MIT/X11 license by Steven
6208         Munroe <munroesj@us.ibm.com>.
6209
6210         * mini-ppc.c (mono_arch_output_basic_block): Generate better code
6211         for LOADI4_MEMBASE.  Use addi instead of addic if it's not
6212         necessary.
6213
6214 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6215
6216         Contributed under the terms of the MIT/X11 license by Steven
6217         Munroe <munroesj@us.ibm.com>.
6218
6219         * exceptions-ppc.c (mono_arch_get_restore_context): Code size
6220         comparison fix.
6221
6222         * tramp-ppc.c (mono_arch_create_generic_class_init_trampoline):
6223         The trampoline can be longer on PPC64.
6224
6225 2009-02-04  Mark Probst  <mark.probst@gmail.com>
6226
6227         Contributed under the terms of the MIT/X11 license by Steven
6228         Munroe <munroesj@us.ibm.com>.
6229
6230         * mini-ppc.c: Compiler warning fixes and trivial code
6231         simplifications.
6232
6233 2009-02-04  Zoltan Varga  <vargaz@gmail.com>
6234
6235         * method-to-ir.c (mono_spill_global_vars): Fix problems caused by reading
6236         ins->dreg which could be a hardware register, not a vreg.
6237
6238         * aot-compiler.c (emit_method_dwarf_info): Ditto.
6239         
6240         * mini.h (MonoCompile): Remove vreg_to_var_num array, it is no longer used.
6241         (struct MonoMethodVar): Add a vreg field, holding the vreg of variable.
6242
6243         * mini.c (mono_compile_create_var_for_vreg): Set var->vreg.
6244         
6245         * mini-amd64.c (mono_arch_output_basic_block): Avoid reading cfg->varinfo[..]
6246         ->dreg, that is not the vreg we are looking for.
6247
6248         * mini-amd64.h mini-x86.h: Enable MONO_ARCH_LIVENESS_OPS again.
6249
6250         * mini-x86.c (mono_arch_output_basic_block): Add support for LIVERANGE_START/
6251         LIVERANGE_END.
6252
6253         * method-to-ir.c (mono_spill_global_vars): Add an assert to help track down
6254         strange crashes.
6255
6256 2009-02-03  Zoltan Varga  <vargaz@gmail.com>
6257
6258         * mini-x86.c (mono_arch_emit_prolog): Emit unwind info.
6259
6260         * aot-compiler.c (emit_line_number_info): Fix line number emission when
6261         the line diff is 0.
6262
6263         * aot-compiler.c: Add xdebug support on x86.
6264
6265         * unwind.c: Add x86 support.
6266         
6267         * aot-compiler.c (emit_exception_debug_info): Control the emission of
6268         unwind info using a new MONO_ARCH_HAVE_XP_UNWIND define.
6269
6270         * mini.c (mini_method_compile): Ditto.
6271         
6272         * mini-amd64.c (mono_arch_allocate_vars): Avoid setting cfg->ret->dreg to
6273         the variable index.
6274
6275         * aot-compiler.c: Add emit_push_section ()/emit_pop_section () helper functions
6276         which mimic .push_section/.pop_section in GAS.
6277         
6278         * aot-compiler.c: Emit precise live range information for variables.
6279
6280         * mini-amd64.c (mono_arch_output_basic_block): Add OP_LIVERANGE_START/END.
6281
6282         * method-to-ir.c (mono_spill_global_vars): Compute the instructions marking
6283         the live ranges of variables, and emit OP_LIVERANGE_START/END opcodes for
6284         them.
6285
6286         * mini-ops.h: Add OP_LIVERANGE_START/END opcodes to mark
6287         the live ranges of variables.
6288
6289         * mini.h (struct MonoMethodVar): Add two fields containing the live range
6290         of the variable in terms of native offsets.
6291
6292 2009-02-03  Rodrigo Kumpera  <rkumpera@novell.com>
6293
6294         * arrays.cs: Test for Get/SetValue of array with negate lower bounds.
6295         
6296 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6297
6298         Contributed under the terms of the MIT/X11 license by Steven
6299         Munroe <munroesj@us.ibm.com>.
6300
6301         * exceptions-ppc.c (restore_regs_from_context): Correct operand
6302         order (offset then base reg) for ppc_load_multiple_regs.
6303         (emit_save_saved_regs) Correct operand order for
6304         ppc_store_multiple_regs.
6305         (mono_arch_get_call_filter): Correct operand order for
6306         ppc_load_multiple_regs.
6307
6308         * mini-ppc.c (emit_memcpy): Fix operand order for
6309         ppc_load_reg_update and ppc_store_reg_update.
6310         (mono_arch_output_basic_block): Correct operand order for ppc_lha.
6311         (mono_arch_emit_epilog): Correct operand order for
6312         ppc_load_multiple_regs.
6313
6314         * tramp-ppc.c (mono_arch_create_trampoline_code): Correct operand
6315         order for ppc_store_multiple_regs and ppc_load_multiple_regs.
6316
6317 2009-02-02  Mark Probst  <mark.probst@gmail.com>
6318
6319         * cpu-ppc64.md: Fixed storer4_memindex length.
6320
6321 2009-02-02  Zoltan Varga  <vargaz@gmail.com>
6322
6323         * aot-compiler.c (emit_line_number_info): Optimize the size of the emitted
6324         line number info.
6325         
6326         * aot-compiler.c (emit_line_number_info): Optimize this.
6327
6328 2009-02-01  Zoltan Varga  <vargaz@gmail.com>
6329
6330         * aot-compiler.c: Disassemble tokens in the IL disassembly.
6331         
6332         * aot-compiler.c: Add debug info for methods without debug info by
6333         emitting an IL file and having the line number info referencing that file.
6334
6335         * aot-compiler.c: Optimize the size of the generated line number info.
6336
6337         * aot-compiler.c: Emit line number info in xdebug mode.
6338
6339         * aot-compiler.c (mono_save_xdebug_info): Receive a MonoCompile instead of a
6340         million arguments.
6341
6342 2009-01-31  Zoltan Varga  <vargaz@gmail.com>
6343
6344         * aot-compiler.c (emit_method_dwarf_info): Emit names for local variables.
6345
6346         * driver.c (mono_main): Enable debugging support automatically if XDEBUG
6347         is used.
6348
6349 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6350
6351         * basic-calls.cs: Test for the weird crash found on arm.
6352         
6353 2009-01-31  Rodrigo Kumpera  <rkumpera@novell.com>
6354
6355         * cpu-arm.md: Increase the size of storer8_membase_reg and
6356         loadr8_membase_reg to 24 bytes to accomodate the extra add.
6357
6358         * mini-arm.c (mono_arch_output_basic_block): Under FPA, when emitting
6359         OP_STORER8_MEMBASE_REG and OP_LOADR8_MEMBASE_REG, add the original
6360         reg to LR otherwise we'll be loading/storing from just the offset.
6361
6362 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6363
6364         Question: if we are storing gint32's inside the "*native_offset",
6365         should we change the signature to "gint32 *native_offset" to
6366         ensure that we do not have type definition problems?
6367         
6368         * mini-exceptions.c (ves_icall_get_frame_info): Cast the gint32 to
6369         an int * as this is what the other function expects, causes
6370         problems with Freescale's compiler that defined int32_t to be a
6371         long and makes int incompatible 
6372
6373 2009-01-30  Miguel de Icaza  <miguel@novell.com>
6374
6375         * Rename generic-sharing.c to mini-generic-sharing.c to avoid the
6376         filename conflict with bjam.
6377
6378 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6379
6380         * cpu-arm.md: Increase the size of storer8_membase_reg to 20 bytes
6381         as it might use decomposed ops.
6382
6383 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6384
6385         * jit-icalls.c (mono_imul_ovf): Fix one of the literals.
6386
6387         * mini.c (mini_init): Emulate mul.ovf opcodes if MONO_ARCH_EMULATE_MUL_OVF
6388         is defined.
6389
6390         * mini-arm.h (MONO_ARCH_EMULATE_MUL_OVF): New define.
6391
6392         * mini-arm.c (mono_arch_build_imt_thunk): Rewrite this to allow large vtable
6393         offsets.
6394
6395         * mini-arm.c (mono_arch_context_get_int_reg): Adapt this to the "clever"
6396         way registers are stored in MonoContext on arm.
6397
6398         * unwind.c: Rewrite the handling of the cached_info array to use hazard pointers
6399         instead of locking so mono_get_cached_unwind_info () becomes signal safe.
6400
6401         * mini.c (mini_init): Emuate OP_FCONV_TO_I when using soft float.
6402
6403         * mini-arm.c (emit_load_volatile_arguments): Avoid an unneccesary assert.
6404
6405         * mini.c (mini_init): Register mono_isfinite.
6406
6407         * jit-icalls.c (mono_isfinite): New jit icall.
6408
6409         * method-to-ir.c (mono_decompose_soft_float): Add support for OP_CKFINITE.
6410         
6411         * exceptions-arm.c (mono_arch_find_jit_info): When unwinding using the LMF,
6412         set esp to ARMREG_FP instead of R12, since R12 stores the value of sp for
6413         the parent frame.
6414
6415 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6416
6417         * exceptions-arm.c (mono_arch_find_jit_info): The frame layout on arm have
6418         separate frame and stack pointers, so we must use FP to find the register
6419         spill area.
6420         The FP reg is retrieved from the MonoContext::regs array.
6421
6422 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6423
6424         * mini-arm.c (mono_arch_output_basic_block): Emit two cond ops for OP_FBGE
6425         as FPA requires it.
6426
6427 2009-01-30  Rodrigo Kumpera  <rkumpera@novell.com>
6428
6429         * mini-arm.c (mono_arch_emit_setret): Emit OP_FMOVE for methods that
6430         return R4 and R8 when not running under softfloat.
6431
6432         Fixes basic-calls.exe
6433
6434 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6435
6436         * mini-arm.c: Implement some overflow opcodes.
6437
6438 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6439
6440         * ssa.c: handle another alloca.h
6441
6442         * mini-exceptions.c (mono_handle_native_sigsegv): Do not use
6443         PLATFORM_WIN32 for detecting if we have sigaction.   Instead use
6444         MONO_ARCH_USE_SIGACTION. 
6445
6446         * aot-runtime.c, mini-exceptions.c: Replace platform define with
6447         capability defines.
6448
6449         * method-to-ir.c (mono_method_to_ir): Type cast fix on some platforms.
6450
6451         * mini-ppc.h (MONO_ARCH_USE_SIGACTION): Do not define this for all
6452         PPC targets as sigaction does not exist on all platforms, define
6453         this on a per-platform basis.
6454
6455         Instead of erroring out if the platform is not defined, include
6456         mini-ppc-os.h, and expect that the OS specific setting provides
6457         the required information.   
6458
6459 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6460
6461         * aot-compiler.c: Fix --enable-minimal=aot.
6462
6463 2009-01-30  Zoltan Varga  <vargaz@gmail.com>
6464
6465         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Fix the
6466         previous change.
6467
6468 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6469
6470         * exceptions-arm.c: Fix warnings.
6471
6472         * tramp-arm.c aot-compiler.c unwind.h unwind.c: Implement xdebug support for
6473         ARM.
6474
6475         * mini-x86.c: Fix --enable-minimal=jit build.
6476
6477         * mini.c: Really fix --enable-minimal=jit build.
6478         
6479         * mini.c (construct_object_context_for_method): Move this outside
6480         the DISABLE_JIT block to fix the --enable-minimal=jit build.
6481
6482         "Backported" of r124984 from 2.0 branch.
6483         
6484         * aot-compiler.c aot-runtime.c: Add full-aot support delegate BeginInvoke/EndInvoke.
6485
6486         "Backport" of r124977 + r124978 from 2.0 branch.
6487         
6488         * exceptions-arm.c (mono_arm_throw_exception_by_token): New helper function
6489         to avoid calling mono_exception_from_token () from the throw trampoline.
6490         (mono_arch_get_throw_exception_generic): call throw_exception_by_token
6491         for throwing corlib exceptions, this fixes full-aot support for corlib
6492         exceptions.
6493
6494         * aot-compiler.c (compile_method): Make a copy of cfg->locals to fix the build.
6495
6496 2009-01-29  Miguel de Icaza  <miguel@novell.com>
6497
6498         * mini-darwin.c, mini-windows.c, mini-posix.c: Commit the first
6499         part of the changes to split the code in mini into operating
6500         system specific files.
6501
6502         This patch was done by copying mini.c to the respective files to
6503         preserve SVN history.
6504
6505 2009-01-29  Zoltan Varga  <vargaz@gmail.com>
6506
6507         * aot-compiler.c (emit_method_dwarf_info): Add minimal support for locals.
6508
6509 2009-01-28  Zoltan Varga  <vargaz@gmail.com>
6510
6511         * method-to-ir.c (mono_method_to_ir): Avoid generic sharing for calls made to
6512         remoting-invoke-with-check wrappers of shared methods.
6513
6514         * mini.c (print_jit_stats): Print out major gc count/time for libgc too.
6515
6516 2009-01-27  Mark Probst  <mark.probst@gmail.com>
6517
6518         * method-to-ir.c (emit_stloc_ir): Only apply the reg-reg move
6519         optimization if the top of stack is the last instruction in the
6520         bblock.  Otherwise it might have been used after its definition.
6521         Fixes #469742.
6522
6523 2009-01-27  Zoltan Varga  <vargaz@gmail.com>
6524
6525         * mini-trampolines.c (mono_magic_trampoline): Print out the caller
6526         method as well when get_vcall_slot () fails to match a code sequence.
6527
6528         * mini-arm.c: Fix the android build, which doesn't have
6529         __aeabi_read_tp.
6530
6531 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6532
6533         * mini-s390x.c: Remove a stray declaration of emit_sig_cookie () to fix
6534         the s390x build.
6535
6536 2009-01-26  Rodrigo Kumpera  <rkumpera@novell.com>
6537
6538         * unwind.c (mono_unwind_cleanup): Don't crash if cached_info is NULL.
6539
6540 2009-01-26  Zoltan Varga  <vargaz@gmail.com>
6541
6542         * mini.c (mini_method_compile): Save the unwind info generated by the JIT
6543         and put its id into jinfo->used_regs. This is only used on amd64,
6544         which is currently the only platform generating unwind info.
6545
6546         * exceptions-amd64.c: Instead of unwinding based on a register mask, use
6547         the dwarf unwinder. This is required to correctly handle async exceptions
6548         like thread abort and stack overflows, which can happen while a method
6549         is in the middle of its prolog or epilog.
6550         
6551         * aot-runtime.c (mono_aot_get_unwind_info): New helper function to obtain
6552         the unwind info belonging to an AOTed method.
6553
6554         * aot-compiler.c aot-runtime.c: Save/Load the unwind info emitted by the JIT
6555         into cfg->unwind_ops.
6556         
6557         * unwind.c (mono_unwind_frame): Use <= instead of < for the loop exit check.
6558
6559         * mini.c (mini_init): Call mono_unwind_init ().
6560         (mini_cleanup): Call mono_unwind_cleanup ().
6561
6562         * unwind.c: Add functions for managing a set of unwind info entries, allowing
6563         unwind info to be shared between methods.
6564
6565         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info for the registers
6566         saved in the LMF.
6567
6568         * exceptions-amd64.c (mono_arch_exceptions_init): Call 
6569         get_throw_pending_exception () to avoid initialization races.
6570
6571         * mini-exceptions.c (mono_exceptions_init): Call an arch specific
6572         mono_arch_exceptions_init () function.
6573
6574         * mini.h (MONO_INST_NEW): Remove duplicate setting of cil_code.
6575
6576 2009-01-25  Zoltan Varga  <vargaz@gmail.com>
6577
6578         * mini.c (mono_get_domain_intrinsic): New helper function.
6579         (mono_get_thread_intrinsic): Ditto.
6580
6581         * mini-arm.c mini-ia64.c: Use the new helper functions.
6582         
6583         * method-to-ir.c (mono_method_to_ir): Fix the comment for
6584         the last constrained_call change, since it is needed in the non-AOT
6585         case as well.
6586
6587         * mini-arm.c: Implement OP_TLS_GET on arm eabi linux.
6588         
6589         * mini-arm.c (mono_arch_emit_prolog): Add an inlined version of 
6590         mono_get_lmf_addr () on arm eabi linux.
6591
6592 2009-01-24  Zoltan Varga  <vargaz@gmail.com>
6593
6594         * mini-amd64.c (mono_arch_get_vcall_slot): Handle yet another
6595         code sequence which matches a non-virtual call.
6596
6597 2009-01-23  Mark Probst  <mark.probst@gmail.com>
6598
6599         * mini-ppc.c (mono_arch_context_get_int_reg): Allow access to the
6600         stack pointer (r1).
6601
6602 2009-01-23  Zoltan Varga  <vargaz@gmail.com>
6603
6604         * aot-compiler.c aot-runtime.c: Treat delegate-invoke wrappers similarly to
6605         runtime-invoke wrappers, since they are also shared based on signature.
6606
6607 2009-01-22  Mark Probst  <mark.probst@gmail.com>
6608
6609         * mini-exceptions.c (ves_icall_get_frame_info): Fetch the generic
6610         info from the (correct) context.
6611
6612 2009-01-22  Zoltan Varga  <vargaz@gmail.com>
6613
6614         * unwind.c (mono_unwind_frame): Remove a stray g_free ().
6615         
6616         * unwind.c (mono_unwind_frame): New function to unwind through a frame
6617         using dwarf unwinding info. Not yet used.
6618
6619         * mini.c (mini_init): When using xdebug, disable freeing of domains.
6620
6621 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6622
6623         * mini-ppc.c (mono_arch_delegate_invoke_impl): Return function
6624         descriptors.
6625
6626         * mini-trampolines.c (mono_delegate_trampoline): Remove the PPC64
6627         special case and handle mono_arch_delegate_invoke_impl() returning
6628         function descriptors.
6629
6630         * tramp-ppc.c (mono_arch_create_trampoline_code): Delegate
6631         trampolines return function descriptors, too.
6632
6633 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6634
6635         * method-to-ir.c (handle_alloc): Avoid generic instances in the
6636         out_of_line optimization.
6637
6638 2009-01-21  Martin Baulig  <martin@ximian.com>
6639
6640         * mini.h
6641         (MonoCompile): Added `disable_deadce_vars' to disable removing
6642         unused variables.
6643
6644         * mini.c
6645         (mini_method_compile): Set `cfg->disable_deadce_vars' when running
6646         inside the debugger.
6647
6648         * liveness.c (mono_analyze_liveness): Don't remove any unused
6649         variables if `cfg->disable_deadce_vars' is set.
6650
6651 2009-01-21  Mark Probst  <mark.probst@gmail.com>
6652
6653         * method-to-ir.c: Only apply exception constructor optimization if
6654         the the method actually belongs to an exception class.  Fixes
6655         #467456.
6656
6657 2009-01-21  Zoltan Varga  <vargaz@gmail.com>
6658
6659         * mini-trampolines.c (mono_delegate_trampoline): Put back the previous
6660         change inside a #ifdef __mono_ppc64__.
6661
6662         * aot-compiler.c (compile_method): Remove the previous limitation.
6663
6664         * method-to-ir.c (method-to-ir.c): Add support for the constrained prefix
6665         on type variables in AOTed code.
6666         
6667         * aot-compiler.c (compile_method): Skip generic methods having type 
6668         constraints on their generic parameters.
6669
6670         * aot-compiler.c (compile_method): Check for methods which cannot be
6671         encoded inside RGCTX_FETCH patches as well.
6672
6673         * mini-exceptions.c (mono_print_thread_dump): Fix the windows
6674         build.
6675
6676 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6677
6678         * method-to-ir.c: Force the vtable variable in shared generic code
6679         for the case that they might show up on a stack trace where they
6680         are needed.
6681
6682         * mini-exceptions.c: Save and use generic sharing info as well as
6683         IP in stack traces to resolve shared generic instantiations.
6684
6685 2009-01-20  Zoltan Varga  <vargaz@gmail.com>
6686
6687         * mini-trampolines.c (mono_delegate_trampoline): Revert the change which
6688         added a mono_get_addr_from_ftnptr () as it breaks the ia64 build.
6689
6690 2009-01-20  Mark Probst  <mark.probst@gmail.com>
6691
6692         * method-to-ir.c: Do generic sharing for array constructors.
6693
6694 2009-01-20  Rodrigo Kumpera  <rkumpera@novell.com>
6695
6696         * mini-exceptions.c (mono_print_thread_dump): Add information
6697         about the thread state using wapi_current_thread_desc.
6698
6699 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6700
6701         * basic-simd.cs: Tests for the new constructors. 
6702
6703 2009-01-19  Rodrigo Kumpera  <rkumpera@novell.com>
6704
6705         * mini-ops.h: Added OP_EXPAND_*
6706
6707         * cpu-x86.md: Same.
6708
6709         * mini-x86.c (mono_arch_output_basic_block): Same.
6710         
6711         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for single element constructors.
6712
6713 2009-01-19  Zoltan Varga  <vargaz@gmail.com>
6714
6715         * iltests.il.in: Add a test for #467385.
6716
6717 2009-01-18  Rodrigo Kumpera  <rkumpera@novell.com>
6718
6719         * mini.c (mini_thread_cleanup): Don't cleanup TLS storage if the
6720         thread been cleaned up is not the same currently in execution.
6721
6722         Fixes appdomain-unload crashes on windows, osx and linux variants
6723         without the __thread keyword.
6724
6725 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
6726
6727         * mini-arm.c (mono_arch_flush_icache): Applied patch from Koushik Dutta
6728         (koush@koushikdutta.com). Implement this for android.
6729
6730         * helpers.c (mono_disassemble_code): Avoid assembler errors if the id
6731         begins with a digit.
6732
6733         * method-to-ir.c: Call mono_gc_get_write_barrier () instead of
6734         mono_marshal_get_write_barrier ().
6735
6736 2009-01-17  Rodrigo Kumpera  <rkumpera@novell.com>
6737
6738         * decompose.c (mono_decompose_vtype_opts): Fix the decomposition
6739         of OP_VCALL_* ops for 8 bytes vtypes on 32 bits archs and platorms
6740         that pass them on a register pair.
6741
6742         This affects windows, OSX and FreeBSD. The mono/tests/handleref.exe
6743         test was crashing due to that.
6744
6745 Fri Jan 16 15:21:21 CET 2009 Paolo Molaro <lupus@ximian.com>
6746
6747         * exceptions-ppc.c: tweaks from malc (OV-Soft) to fix the size of the
6748         trampoline code. Include ucontext.h only if available.
6749
6750 2009-01-15  Mark Probst  <mark.probst@gmail.com>
6751
6752         * mini.c: mono_domain_lookup_shared_generic() takes an open method
6753         and doesn't check whether it's sharable, like it was before
6754         removing the shared generics hash.  This brings IronPython
6755         performance back to what it was before that change.
6756
6757 2009-01-14  Mark Probst  <mark.probst@gmail.com>
6758
6759         * method-to-ir.c: Handle delegate invocation optimization earlier,
6760         otherwise it would be handled (much more slowly) by the
6761         final/sealed optimization.
6762
6763 2009-01-13  Zoltan Varga  <vargaz@gmail.com>
6764
6765         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes when the current thread or
6766         domain is not set. Fixes #465864.
6767
6768 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6769
6770         * method-to-ir.c: Don't stop sharing of generic methods with catch
6771         clauses - we already handle those.
6772
6773 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6774
6775         * mini.c, mini.h: lookup_generic_method() is now
6776         mono_domain_lookup_shared_generic() and uses the jit_code_hash,
6777         making the shared_generics_hash obsolete.
6778
6779 2009-01-12  Mark Probst  <mark.probst@gmail.com>
6780
6781         * mini-ppc.c, exceptions-ppc.c, cpu-ppc.md, cpu-ppc64.md: Don't
6782         use the red zone.  Make room on the stack first and then use it,
6783         not the other way around.
6784
6785 2009-01-12  Zoltan Varga  <vargaz@gmail.com>
6786
6787         * mini.c (mini_init): Call mono_xdebug_init ().
6788
6789         * aot-compiler.c (mono_xdebug_init): Make this non-static.
6790
6791 2009-01-11  Zoltan Varga  <vargaz@gmail.com>
6792
6793         * TestDriver.cs: Add an --iter argument to run tests multiple times.
6794
6795         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Emit debug info for
6796         trampolines.
6797
6798         * aot-compiler.c (mono_save_trampoline_xdebug_info): New function to emit
6799         debug+unwind info for trampolines.
6800
6801         * mini.c (mono_create_unwind_op): New helper function.
6802
6803         * unwind.h: Add macros for emitting unwind ops without a MonoCompile.
6804
6805 2009-01-10  Zoltan Varga  <vargaz@gmail.com>
6806
6807         * aot-compiler.c: Fix the build.
6808
6809 2009-01-09  Zoltan Varga  <vargaz@gmail.com>
6810
6811         * Makefile.am: Update dtrace-prelink.sh location.
6812
6813 2009-01-08  Zoltan Varga  <vargaz@gmail.com>
6814
6815         * method-to-ir.c (mono_method_to_ir): Fix the check for the mscorlib ldstr 
6816         optimization. Fixes #464520.
6817
6818 2009-01-07  Bill Holmes  <billholmes54@gmail.com>
6819
6820         * mini-amd64.c : Adding code to save/restore non-volatile registers
6821            on Winx64.
6822
6823         * exceptions-amd64.c : Adding code to save/restore non-volatile 
6824           registers on Winx64.
6825
6826         Contributed under MIT/X11 license.
6827
6828 2009-01-07  Zoltan Varga  <vargaz@gmail.com>
6829
6830         * mini-arm.c (mono_arch_flush_icache): Use __GNUC_PREREQ instead of checking
6831         __GNUC_MINOR__ which can break when the major version changes.
6832
6833 2009-01-07  Rodrigo Kumpera  <rkumpera@novell.com>
6834
6835         * basic-simd.cs: Add tests for usage of the sizeof opcode.
6836
6837 2009-01-07  Geoff Norton  <gnorton@novell.com>
6838
6839         * helpers.c:  Allow mono -v -v -v to work on darwin.
6840
6841 2009-01-05  Bill Holmes  <billholmes54@gmail.com>
6842
6843         * mini-amd64.c (mono_arch_get_vcall_slot) : Handle an additional instruction
6844           pattern. 
6845
6846         Contributed under MIT/X11 license.
6847
6848 2009-01-05  Zoltan Varga  <vargaz@gmail.com>
6849
6850         * mini.c (mono_allocate_stack_slots_full2): Use mono_class_from_mono_type
6851         instead of directly accessing type->data.klass. Fixes #462016.
6852         (mono_allocate_stack_slots_full): Ditto.
6853
6854         * mini-arm.c (mono_arch_flush_icache): Applied patch from Riku Voipio 
6855         <novell@kos.to>. Fix cache flush on kernels without OLDABI compat option.
6856
6857         * aot-compiler.c (emit_plt): Fix ARM build.
6858
6859 2009-01-04  Zoltan Varga  <vargaz@gmail.com>
6860
6861         * branch-opts.c (mono_if_conversion): Optimize this using ins->prev.
6862         
6863         * branch-opts.c (mono_if_conversion): Fix an assert introduced by the last
6864         change.
6865
6866         * branch-opts.c (mono_if_conversion): Use branch->inst_true_bb/inst_false_bb
6867         instead of bblock->out_bb [0]/[1], the two might not be the same. Fixes
6868         #463357.
6869
6870         * iltests.il.in: Add a regression test.
6871
6872 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6873
6874         * mini-codegen.c (mono_print_ins_index): Pretty print XPHI and VPHI.
6875
6876 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6877
6878         * basic-simd.cs: Add a regression test for #462457.
6879
6880 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6881
6882         * mini-ops.h: Add a definition of XPHI.
6883
6884         * mini.h (MONO_IS_PHI): Make is aware of simd instrincs. 
6885
6886         * ssa.c (op_phi_to_move): Handle XPHI.
6887
6888         * ssa.c (mono_ssa_compute): Generate a XPHI for simd intrinsics instead of VPHI.
6889
6890         Fixes #462457
6891
6892 2009-01-04  Rodrigo Kumpera  <rkumpera@novell.com>
6893
6894         * method-to-ir.c (mono_emit_rgctx_calli): Fix a warning.
6895
6896 2008-12-31  Geoff Norton  <gnorton@novell.com>
6897
6898         * mini-ppc.c: The prolog size allocated can be too small for darwin
6899         ppc32 under certain circumstances.  Also fix a small logic bug.
6900
6901 2008-12-29  Zoltan Varga  <vargaz@gmail.com>
6902
6903         * mini.c (mono_jit_compile_method_inner): Avoid holding the domain lock
6904         while loading AOT methods.
6905
6906         * mini-exceptions.c: Check jit_tls->class_cast_from instead of class_cast_to
6907         since only the former is nulled out after a successful cast. This prevents
6908         crashes with rethrown exceptions when using --debug=casts.
6909
6910 2008-12-24  Mark Probst  <mark.probst@gmail.com>
6911
6912         * mini.h: New macro for checking whether a method is final,
6913         i.e. whether the method or its class is marked final.
6914
6915         * method-to-ir.c: Use the new macro for all final-checks
6916         consistently.  Fixes the crash in the System.ServiceModel tests.
6917
6918 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6919
6920         * mini-exceptions.c (get_exception_catch_class): Corrected another
6921         overly strict assertion.
6922
6923 2008-12-23  Mark Probst  <mark.probst@gmail.com>
6924
6925         * mini-ppc.c (mono_arch_build_imt_thunk): Save and restore r11.
6926         Clobbering it is not allowed because the caller might use it as
6927         the vtable register in the interface call.
6928
6929 2008-12-19  Mark Probst  <mark.probst@gmail.com>
6930
6931         * mini-exceptions.c (get_exception_catch_class): Corrected an
6932         overly strict assertion.
6933
6934 2008-12-18  Mark Mason  <mmason@upwardaccess.com>
6935         
6936         * method-to-ir.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P or sizeof(gpointer) when appropriate.
6937
6938         * mini.h: Move typedef to mgreg_t up above include of mini-arch.h
6939
6940         * local-propogation.c: use SIZEOF_REGISTER instead of SIZEOF_VOID_P when appropriate
6941
6942         * cpu-mips.md: correct lengths for certain long_ opcodes.
6943
6944         * mini-mips.h: Only emulate long operations when SIZEOF_REGISTER==4. Add missing func decl.
6945
6946         * 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().
6947         
6948 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6949
6950         * exceptions-mips.c (mono_arch_find_jit_info): decode sd instructions as well when looking for registers.
6951         
6952 2008-12-17  Mark Mason  <mmason@upwardaccess.com>
6953         
6954         * mini-mips.c (mono_arch_output_basic_block): OP_JUMP_TABLE stores patch type in inst_c1, not inst_i1.
6955         
6956 2008-12-16  Rodrigo Kumpera  <rkumpera@novell.com>
6957
6958         * branch-opts.c (remove_block_if_useless): Even if BB0 falls through, don't add a br to the
6959         next basic block.
6960         
6961 2008-12-16  Mark Mason  <mmason@upwardaccess.com>
6962
6963         * 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
6964
6965         * 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)
6966         
6967 2008-12-15  Mark Mason  <mmason@upwardaccess.com>
6968         
6969         * trace.c (mono_trace_enter_method): correctly handle arguments smaller than the stack slot size on big endian systems.
6970         
6971 2008-12-14  Zoltan Varga  <vargaz@gmail.com>
6972
6973         * liveness.c (mono_analyze_liveness): Avoid eliminating the 'this' var in
6974         gshared code. Fixes #458947.
6975
6976         * generics.cs: Add a test.
6977
6978 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6979         
6980         * method-to-ir.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6981         
6982         * mini-mips.c: first pass n32 code generation.
6983
6984         * mini-mips.h: datatypes and defines for n32 support.
6985
6986         * exceptions-mips.c: first pass n32 code generation.
6987         
6988         * tramp-mips.c: first pass n32 code generation.
6989         
6990         * cpu-mips.md: add long_ opcodes.
6991         
6992 2008-12-12  Mark Mason  <mmason@upwardaccess.com>
6993
6994         * liveness.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6995
6996         * cfold.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6997         
6998         * local-propogation.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
6999         
7000         * regalloc2.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7001
7002         * mini.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7003
7004         * mini-codegen.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7005
7006         * ssa.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7007
7008         * decompose.c: replace SIZEOF_VOID_P with SIZEOF_REGISTER where needed.
7009
7010         * helpers.c: for mips/n32, don't pass -mips32 to objdump
7011
7012 2008-12-12  Zoltan Varga  <vargaz@gmail.com>
7013
7014         * mini-arm.c tramp-arm.c: Fix calls to mono_arch_flush_icache.
7015
7016 2008-12-12  Andres G. Aragoneses  <aaragoneses@novell.com>
7017
7018         * driver.c: Sync --help-trace with man page (EXPR,EXPR).
7019
7020 2008-12-12  Mark Probst  <mark.probst@gmail.com>
7021
7022         * mini-ppc.h, exceptions-ppc.c, tramp-ppc.c: Create function
7023         descriptors for helper functions directly in front of the code.
7024
7025 2008-12-11  Mark Probst  <mark.probst@gmail.com>
7026
7027         * method-to-ir.c: Removed an unnecessary assertion.
7028
7029 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7030
7031         * method-to-ir.c: Merge SGEN changes from the old JIT.
7032
7033 2008-12-10  Zoltan Varga  <vargaz@gmail.com>
7034
7035         * driver.c (compile_all_methods_thread_main): Handle failure of
7036         mono_get_method ().
7037
7038 2008-12-10  Mark Probst  <mark.probst@gmail.com>
7039
7040         * mini-ppc.c: Merged with mini-ppc64.c.
7041
7042         * mini-ppc.h: Define PPC_MINIMAL_PARAM_AREA_SIZE on all targets.
7043
7044         * Makefile.am: Use the same sources for PPC and PPC64.
7045
7046         * mini-ppc64.c: Removed.
7047
7048 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7049
7050         * branch-opts.c (remove_block_if_useless): Extract fall through detection
7051         code to mono_bb_is_fall_through.
7052         
7053         * branch-opts.c (mono_remove_critical_edges): Same.
7054
7055 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7056
7057         * ssa.c (fold_ins): branch opt can kill dummy switch ops so we can't
7058         expect that an OP_BR_REG will be there.
7059
7060 2008-12-09  Rodrigo Kumpera  <rkumpera@novell.com>
7061
7062         * branch-opts.c (remove_block_if_useless): Use MONO_IS_BRANCH_OP instead of checking
7063         for the many branch ops. The original check miss OP_BR_REG.
7064
7065         Fixes #457574.
7066         
7067 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7068
7069         * mini-mips.h mini-mips.c exceptions-mips.c tramp-mips.c: first round of changes necessary to eventually support n32.
7070
7071 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7072
7073         * aot-runtime.c (load_method): Avoid calling decode_exception_debug_info
7074         while holding the aot lock.
7075
7076 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7077
7078         * mini-mips.c (mono_arch_output_basic_block): use mfc1/lwc1 instead of mfc1d/ldc1
7079         
7080 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7081
7082         * mini.c (mini_cleanup) : Adding a call to cominterop_release_all_rcws 
7083           to release all runtime callable wrappers held by the runtime.
7084
7085         Contributed under MIT/X11 license.
7086
7087 2008-12-09  Bill Holmes  <billholmes54@gmail.com>
7088
7089         * tramp-amd64.c (mono_arch_create_trampoline_code_full) : Increase the code size for
7090           for Winx64.
7091
7092         Contributed under MIT/X11 license.
7093
7094 2008-12-09  Zoltan Varga  <vargaz@gmail.com>
7095
7096         * aot-runtime.c (decode_exception_debug_info): Acquire the domain
7097         lock when calling mono_domain_alloc (). Hopefully fixes #415608.
7098
7099 2008-12-09  Mark Mason   <mmason@upwardaccess.com>
7100
7101         * cpu-mips.md: fix ckfinite length
7102
7103         * mini-mips.c: at least recognize n32 ABI when used (not yet supported)
7104         (mono_arch_lowering_pass): cleanup, rearrange for clarity
7105         (mono_arch_output_basic_block): implement OP_CKFINITE, add more asserts
7106         
7107 2008-12-08  Mark Mason   <mmason@upwardaccess.com>
7108
7109         * exceptions-mips.c (mono_arch_find_jit_info): init new_ctx with ctx, dont' call setup_context.
7110         
7111 2008-12-08  Geoff Norton  <gnorton@novell.com>
7112
7113         * tramp-amd64.c: r120895 stores RAX, so we need to increase the window
7114         size by 8 bytes as well.
7115
7116 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7117
7118         * basic-simd.cs: Fix method names for Vector16b.
7119         
7120 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7121
7122         * basic-simd.cs: Fix method names for Vector16sb.
7123
7124 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7125
7126         * basic-simd.cs: Fix method names for Vector8us.
7127         
7128 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7129
7130         * basic-simd.cs: Fix method names for Vector8s.
7131         
7132 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7133
7134         * basic-simd.cs: Fix method names for Vector4ui.
7135
7136 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7137
7138         * basic-simd.cs: Fix method names for Vector2l.
7139
7140 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7141
7142         * basic-simd.cs: Fix method names for Vector2d.
7143
7144 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7145
7146         * simd-intrinsics.c (mono_emit_simd_intrinsics): Add support for intrinsics
7147         that are extension methods.
7148
7149 2008-12-08  Rodrigo Kumpera  <rkumpera@novell.com>
7150
7151         * basic-simd.cs: Fix method names for Vector4f.
7152
7153 2008-12-08  Zoltan Varga  <vargaz@gmail.com>
7154
7155         * mini-exceptions.c (mono_print_thread_dump): Mark threadpool threads
7156         as such. Fixes #456669.
7157
7158 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7159
7160         * mini-mips.c (mono_arch_emit_call): narrow float arguments when passing as args.
7161         
7162 2008-12-07  Mark Mason   <mmason@upwardaccess.com>
7163
7164         * mini-mips.c (mono_arch_lowering_pass): don't handle OP_ICONV_TO_R* or OP_R*CONST
7165         (mono_arch_emit_setret): use OP_MIPS_CVTSD to return SP floats
7166         (mono_arch_output_basic_block): simplify FP load/store, handle OP_MIPS_FBLT_UN
7167         (mips_adjust_stackframe): handle FP spills
7168                 
7169         * mini-ops.h: add mips_mtc1_s2
7170         
7171         * cpu-mips.md: add mips_mtc1_s2
7172         
7173 2008-12-07  Zoltan Varga  <vargaz@gmail.com>
7174
7175         * unwind.c: New file, move the unwind info encoding functions here from
7176         aot-compiler.c, so they could be used at runtime too.
7177
7178 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7179
7180         * mini-mips.c (mono_arch_lowering_pass): handle OP_IMUL_IMM as well
7181         (mono_arch_output_basic_block): fix OP_LOCALLOC code generation
7182         
7183 2008-12-05  Mark Mason   <mmason@upwardaccess.com>
7184
7185         * mini-mips.c: cleanup warnings
7186         (mono_arch_lowering_pass): handle OP_LOCALLOC_IMM
7187         (mips_adjust_stackframe): handle case of taking the address of stack locals
7188         
7189 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7190
7191         * aot-compiler.c: Implement a few functions missing from the asm writer.
7192         (emit_method_code): Only write symbols for methods when using the bin
7193         writer, since the assembler can't deal with the characters in our method
7194         names.
7195
7196         * aot-compiler.c (is_plt_patch): ICALL_ADDR is also a plt patch.
7197
7198         * method-to-ir.c (mono_method_to_ir): Transform aotconst+calli into a direct
7199         call.
7200
7201         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Rework the code
7202         a bit to also restore %rax.
7203
7204 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7205
7206         * mini-ppc.c: Some simple merges from mini-ppc64.c.
7207
7208 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7209
7210         * ssa.c (mono_ssa_compute): Only add an implicit reference at start for
7211         arguments.
7212
7213 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7214
7215         * exceptions-ppc.c: Merged with exceptions-ppc64.c.
7216
7217         * mini-ppc.c, mini-ppc.h: Remove PPC_STACK_ALIGNMENT and use
7218         MONO_ARCH_FRAME_ALIGNMENT.  Struct for PPC64 function descriptors.
7219
7220         * exceptions-ppc64.c: Removed.
7221
7222         * Makefile.am: Use exceptions-ppc.c instead of exceptions-ppc64.c.
7223
7224 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7225
7226         * tramp-ppc.c, mini-ppc.c, mini-ppc.h: Merged tramp-ppc.c with
7227         tramp-ppc64.c.
7228
7229         * Makefile.am: Use tramp-ppc.c instead of tramp-ppc64.c.
7230
7231         * tramp-ppc64.c: Removed.
7232
7233 2008-12-05  Zoltan Varga  <vargaz@gmail.com>
7234
7235         * aot-compiler.c (add_generic_instances): Skip non-generic classes in
7236         the TYPESPEC table.
7237
7238 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7239
7240         * mini-ppc.h: Merged mini-ppc64.h with mini-ppc.h.
7241
7242         * exceptions-ppc64.c, tramp-ppc64.c, mini-arch.h, Makefile.am: Use
7243         mini-ppc.h instead of mini-ppc64.h.
7244
7245         * mini-ppc64.h: Removed.
7246
7247 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7248
7249         * mini-mips.c: introduce USE_LDC_SDC: use ldc1/sdc1 to load/store doubles, disabled by default
7250         
7251         * mini-mips.c (mono_arch_emit_outarg_vt): fix offset calculation for memcpy in structure passing.
7252         
7253 2008-12-05  Mark Probst  <mark.probst@gmail.com>
7254
7255         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c:
7256         Removed FIRST/LAST_[GF]REG macros, to make merging PPC64 with PPC
7257         code easier.
7258
7259 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7260
7261         * basic-simd.cs: Tests for operator == and != on  Vector8us and Vector16b.
7262
7263 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7264
7265         * simd-intrinsics.c: Add support for operator == and != to Vector8(u)s and Vector16(s)b.
7266
7267 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7268
7269         * basic-simd.cs: Tests for operator == and != on Vector4f.
7270
7271 2008-12-05  Rodrigo Kumpera  <rkumpera@novell.com>
7272
7273         * simd-intrinsics.c (simd_intrinsic_emit_equality): Adapt to support Vector4f.
7274
7275         * simd-intrinsics.c: Kill useless enum.
7276
7277 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7278
7279         * cpu-mips.md: add long_conv_to_ovf_i4_2
7280         * mini-mips.c: update/add various _OVF_ opcodes to fix test failures
7281
7282 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7283
7284         * mini-mips.c: ifdef protect automatic promotions of R4 to R8.
7285         
7286         * mini-mips.c (mono_arch_emit_setret): handle R4 case with FCONV_TO_R4 instead of FMOVE
7287
7288 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7289
7290         * mini-mips.c (mono_arch_output_basic_block): fix codegen for OP_OR_IMM/OP_IOR_IMM
7291         
7292 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7293
7294         * basic-simd.cs: Add tests for new methods.
7295
7296 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7297
7298         * simd-intrinsics.c: Add support for operator == and !=
7299         on Vector4(u)i.
7300
7301         * simd-methods.h: Add SN_op_Inequality and SN_op_Equality.
7302
7303 2008-12-04  Rodrigo Kumpera  <rkumpera@novell.com>
7304
7305         * simd-intrinsics.c: Remove ExtractByteMask intrinsics.
7306
7307 2008-12-04  Zoltan Varga  <vargaz@gmail.com>
7308
7309         * aot-compiler.c (add_wrappers): Add pinvoke wrappers.
7310
7311         * mini.c (mono_resolve_patch_target): Allow pinvoke methods in 
7312         MONO_PATCH_INFO_ICALL_ADDR.
7313
7314         * aot-runtime.c (MonoAotFileInfo): Correct order of fields.
7315
7316         * aot-compiler.c: Resurrect full-aot support.
7317
7318 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7319
7320         * mini-mips.c (mono_arch_lowering_pass): handle OP_COMPARE and OP_ICOMPARE
7321         
7322 2008-12-04  Mark Mason   <mmason@upwardaccess.com>
7323
7324         * mini-mips.c (mono_arch_output_basic_block): fix OP_IREM_UN code generation
7325         
7326 2008-12-03  Rodrigo Kumpera  <rkumpera@novell.com>
7327
7328         * basic-simd.cs: Fix tests to work under ppc.
7329         Remove tests for methods that will be removed.
7330
7331 2008-12-03  Mark Probst  <mark.probst@gmail.com>
7332
7333         * method-to-ir.c (mono_method_to_ir): Handle ldtoken of an open
7334         generic type (via a typedef or typeref) correctly.
7335
7336 2008-12-03  Zoltan Varga  <vargaz@gmail.com>
7337
7338         * mini-trampolines.c (mono_magic_trampoline): Add some debugging code to help
7339         diagnose an assertion failure.
7340
7341 2008-12-02  Mark Probst  <mark.probst@gmail.com>
7342
7343         * tramp-ppc64.c (mono_arch_create_rgctx_lazy_fetch_trampoline):
7344         Fix trampoline size.
7345
7346         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: A few floating point
7347         conversion opcodes are implemented natively instead via emulation.
7348
7349 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7350
7351         * cpu-mips.md: remove mips_xori
7352
7353         * mini-ops.h:  remove mips_xori
7354
7355         * mini-mips.h: replace OP_MIPS_XORI with OP_IXOR
7356
7357         * mini-mips.c (mono_arch_decompose_long_opts): Add ladd_imm, lsub, lsub_imm, lneg, lsub_ovf, lsub_ovf_un.
7358         
7359         * mini-mips.c (mono_arch_lowering_pass, mono_arch_output_basic_block): fix IXOR handling
7360         
7361 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7362
7363         * cpu-mips.md: fix instruction lengths.
7364
7365         * mini-mips.h: define MONO_ARCH_NO_IOV_CHECK
7366
7367         * mini-mips.c: move most instruction rewriting into decompose_ops. Implement conditional branches and exceptions. Fix jump table patch handling. Implement add/sub OVF.
7368
7369         * mini-ops.h: fix slti / sltiu op profiles.
7370         
7371 2008-12-02  Martin Baulig  <martin@ximian.com>
7372
7373         * method-to-ir.c (mono_method_to_ir): Disable debugging
7374         information for the init locals block to make the debugger stop
7375         after all locals have been initalized.
7376
7377 2008-12-02  Martin Baulig  <martin@ximian.com>
7378
7379         * mini.c (mini_method_compile): Disable MONO_OPT_DEADCE when
7380         running inside the debugger.
7381
7382 2008-12-01  Zoltan Varga  <vargaz@gmail.com>
7383
7384         * mini.c (mini_method_compile): Only run local deadce if MONO_OPT_DEADCE
7385         is enabled.
7386
7387         * method-to-ir.c (mono_method_to_ir): Fix invalid code generated by the 
7388         alu->alu imm optimization which only shows if deadce is disabled.
7389
7390         * aot-compiler.c: Rename the function names for the binary and asm writers
7391         so they can coexist in the same process. Rework the xdebug code to use the
7392         asm writer. This avoids the need to call into the runtime to dump the
7393         debugging info. Add more debugging info for types.
7394
7395         * mini-<ARCH>.h: Kill MONO_ARCH_HAVE_NORMALIZE_OPCODES define.
7396
7397         * genmdesc.c genmdesc.pl mini.h: Don't put the CEE_ opcodes into the
7398         cpu description tables, they can't occur in cpu-<ARCH>.md.
7399
7400         * method-to-ir.c (mono_method_to_ir): Set the type of the value pushed on
7401         the stack in CEE_LDFLDA. Fixes #450542.
7402
7403         * generics.cs: Add a new test.
7404
7405 2008-12-01  Mark Mason   <mmason@upwardaccess.com>
7406
7407         * mini-ops.h: updated MIPS opcodes
7408         * mini-mips.c: decompose long opts
7409         * mini-mips.h: decompose long opts
7410         
7411 2008-11-29  Mark Mason   <mmason@upwardaccess.com>
7412
7413         * cpu-mips.md: fix length on int_rem_un
7414         * mini-mips.c (mips_stackframe_adjust): fix insertion of spillvars region in MIPS stackframes.
7415         
7416 2008-11-29  Zoltan Varga  <vargaz@gmail.com>
7417
7418         * mini.h aot-runtime.c: Fix building with DISABLE_AOT.
7419
7420         * mini-codegen.c (mono_print_ins_index): Handle OP_VOIDCALL_MEMBASE.
7421
7422 2008-11-29  Martin Baulig  <martin@ximian.com>
7423
7424         * mini-exceptions.c (mono_handle_native_sigsegv): Check
7425         mono_debug_using_mono_debugger() in addition to the
7426         `no_gdb_backtrace' flag in the `MonoDebugOptions'.
7427
7428 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7429
7430         * mini-ops.h: updated more MIPS opcodes
7431         * mini-mips.c: FP compare/branch working again, clean up last of CEE_ -> OP_ mappings
7432         * cpu-mips.md: Added MIPS versions of new FP compare/branch opcodes.
7433         
7434 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7435
7436         * mini-ppc64.c: Patch the RGCTX fetch trampoline correctly.
7437
7438 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7439
7440         * mini-mips.c (mono_arch_emit_call): adding missing conversion to fp single when passing in integer arg register.
7441         * mini-mips.c (mips_adjust_stackframe): compensate for spill-down logic.
7442         * mini-ops.h: correct selected mips opcode entries
7443         
7444 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7445
7446         * mini-ppc64.c, mini-ppc64.h: Enable generalized IMT thunks and
7447         make them work.
7448
7449 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7450
7451         * mini-ppc64.h, tramp-ppc64.c: Make generic code sharing work.
7452
7453 2008-11-28  Mark Mason   <mmason@upwardaccess.com>
7454
7455         * method-to-ir.c, mini-trampolines.c: protect IMG code with #ifdef MONO_ARCH_HAVE_IMT to fix compile errors.
7456         * mini-mips.c: Fixup stackframe assignments after allocation of spillvars.
7457         * mini-mips.h: disable IMT
7458         * tramp-mips.c (mono_arch_get_vcall_slot): fix offset extraction
7459         
7460 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7461
7462         * mini-ppc64.c, mini-ppc64.h: Don't emulate long ops.
7463
7464 2008-11-28  Mark Probst  <mark.probst@gmail.com>
7465
7466         * mini-ppc64.c, exceptions-ppc64.c: Several fixes.
7467
7468 2008-11-28  Zoltan Varga  <vargaz@gmail.com>
7469
7470         * method-to-ir.c (handle_isinst): Use PCONST instead of ICONST for
7471         consistency.
7472
7473 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7474
7475         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7476         for Set/GetVector aligned versions.
7477
7478 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7479
7480         * basic-simd.cs: Add tests for Get/SetVector.
7481
7482 2008-11-27  Mark Probst  <mark.probst@gmail.com>
7483
7484         * mini.c: Removed g_slist_append_mempool().  Now in
7485         metadata/mempool.c.
7486
7487 2008-11-27  Rodrigo Kumpera  <rkumpera@novell.com>
7488
7489         * simd-intrinsics.c (mono_emit_vector_ldelema): Extract the element
7490         size properly and make the bounds check optional.
7491
7492         * simd-intrinsics.c (emit_array_extension_intrinsics): Add support
7493         for SetVector and IsAligned.
7494
7495 2008-11-27  Zoltan Varga  <vargaz@gmail.com>
7496
7497         * mini.c: Remove unused mono_normalize_opcodes () function.
7498
7499 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7500
7501         * method-to-ir.c (mini_emit_inst_for_method): Small fix: we're
7502         using the new atomic add ops now.
7503
7504         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Implemented atomic
7505         add.
7506
7507 2008-11-26  Mark Probst  <mark.probst@gmail.com>
7508
7509         * mini-ppc64.c: Several fixes.
7510
7511 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7512
7513         * cpu-mips.md: added jump_table
7514         * mini-mips.c: added jump_table. Eliminate compare-imm when lowering. Remove dead function.             
7515
7516 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7517
7518         * mini-mips.c, mini-mips.h, tramp-mips.c, cpu-mips.md: Initial upgrade of MIPS port to new IR.
7519
7520 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7521
7522         * mini-ops.h: corrected a handful of MIPS opcodes.
7523
7524 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7525
7526         * aot-compiler.c: MIPS to use ELF writer
7527
7528 2008-11-25  Mark Mason   <mmason@upwardaccess.com>
7529
7530         * mini-codegen.c: remove MIPS specific assert.
7531
7532 2008-11-25  Mark Probst  <mark.probst@gmail.com>
7533
7534         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Several
7535         fixes.  PPC64 now passes most of the runtime regressions.
7536
7537 2008-11-24  Zoltan Varga  <vargaz@gmail.com>
7538
7539         * regalloc2.c: Distinguish between use/def positions. Optimize the creation of
7540         volatile intervals a bit.
7541
7542 2008-11-24  Mark Probst  <mark.probst@gmail.com>
7543
7544         * basic-long.cs: New test case.
7545
7546 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7547
7548         * mini.c (mini_method_compile): Disable globalra for large methods for 
7549         now.
7550
7551         * regalloc2.c (order_moves): Add fp support.
7552
7553         * branch-opts.c (mono_remove_critical_edges): Split non-critical edges whose
7554         source bblock ends with an OP_BR_REG.
7555
7556         * ratests.cs: Add a new test.
7557
7558 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7559
7560         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c: Disable generic code
7561         sharing.  PPC64 now passes generics.exe.
7562
7563 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7564
7565         * mini-ppc64.c: Several fixes.  PPC64 now runs iltests.exe.
7566
7567 2008-11-23  Zoltan Varga  <vargaz@gmail.com>
7568
7569         * exceptions-x86.c (mono_arch_find_jit_info): Avoid reading uninitialized
7570         memory when mono_jit_info_table_find () can't find the method in the
7571         LMF case.
7572
7573         * aot-compiler.c (mono_save_xdebug_info): Emit complete debug info for
7574         AOTed code too.
7575         
7576         * aot-compiler.c (mono_save_xdebug_info): Make this work with the assembly
7577         writer too.
7578
7579 2008-11-23  Mark Probst  <mark.probst@gmail.com>
7580
7581         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, cpu-ppc64.md:
7582         Several fixes.  PPC64 now runs exceptions.exe and
7583         devirtualization.exe.
7584
7585 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7586
7587         * mini-ppc64.c, tramp-ppc64.c: Small fixes.  PPC64 now runs
7588         arrays.exe and basic-math.exe.
7589
7590 2008-11-22  Mark Probst  <mark.probst@gmail.com>
7591
7592         * mini-ppc64.c, mini-ppc64.h, exceptions-ppc64.c, tramp-ppc64.c,
7593         cpu-ppc64.md: Several fixes.  PPC64 now runs objects.exe.
7594
7595 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7596
7597         * simd-intrinsics.c: Add support ArrayExtension intrinsics.
7598
7599 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7600
7601         * method-to-ir.c: Move bounds checking macros to ir-emit.h
7602
7603         * ir-emit.h: Move macros from method-to-ir.c to here.
7604
7605 2008-11-21  Rodrigo Kumpera  <rkumpera@novell.com>
7606
7607         * mini-ops.h: Correct the long simd ops to use LREG.
7608
7609 2008-11-21  Zoltan Varga  <vargaz@gmail.com>
7610
7611         * mini-ops.h: Correct the dreg type of OP_LOADI8_MEMBASE.
7612         
7613         * mini-ops.h: Correct the dreg type of a few long opcodes.
7614
7615         * mini-amd64.h: Applied patch from Mihai Chelaru <kefren@ngnetworks.ro>.
7616         Add netbsd support.
7617
7618 Fri Nov 21 12:52:23 CET 2008 Paolo Molaro <lupus@ximian.com>
7619
7620         * mini-ppc.c: remove negative stack references in epilog
7621         for platforms that don't support the red zone.
7622
7623 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7624
7625         * mini-ppc64.h, cpu-ppc64.md: Fixed caller/callee saved floating
7626         point regs.  Now PPC64 passes basic-calls.exe.
7627
7628 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7629
7630         * basic-simd.cs: Add tests for accessors of Vector2l.
7631
7632 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7633
7634         * mini-ops.h: Added OP_INSERTX_I8_SLOW,.
7635
7636         * mini-x86.c (mono_arch_decompose_long_opts): Decompose OP_INSERTX_I8_SLOW.
7637         
7638         * simd-intrinsics.c: Add support for Vector2l and Vector2ul.
7639
7640 2008-11-21  Mark Probst  <mark.probst@gmail.com>
7641
7642         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Several fixes.  Now
7643         PPC64 passes basic-long.exe.
7644
7645 2008-11-20  Mark Probst  <mark.probst@gmail.com>
7646
7647         * decompose.c: Decompose carry and overflow add on PPC64 like on
7648         other 64 bit archs.  Don't decompose sub at all on PPC64.
7649
7650         * mini-ppc64.c, exceptions-ppc64.c, tramp-ppc64.c, cpu-ppc64.md:
7651         Several fixes and new opcodes.  Now PPC64 runs (but doesn't pass)
7652         basic-long.exe.
7653
7654 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7655
7656         * basic-simd.cs: Add tests for accessors of Vector2d.
7657
7658 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7659
7660         * mini-ops.h: Added OP_INSERTX_R8_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 Vector2d.
7667
7668 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7669
7670         * basic-simd.cs: Add tests for accessors of Vector4f.
7671
7672 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7673
7674         * mini-ops.h: Added OP_INSERTX_R4_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 Vector4f.
7681
7682 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7683
7684         * basic-simd.cs: Add tests for accessors of Vector4i and Vector4ui.
7685
7686 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7687
7688         * mini-ops.h: Added OP_INSERTX_I4_SLOW,.
7689
7690         * cpu-x86.md: Same.
7691
7692         * mini-x86.c (mono_arch_output_basic_block): Same.
7693         
7694         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector4i and Vector4ui.
7695
7696 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7697
7698         * cpu-x86.md: Use reasonable sizes for extractx_u2 and insertx_u1_slow.
7699
7700 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7701
7702         * simd-intrinsics.c: Enable setters for Vector16sb.
7703
7704 2008-11-20  Rodrigo Kumpera  <rkumpera@novell.com>
7705
7706         * mini-ops.h: Added OP_EXTRACTX_U2, OP_INSERTX_U1_SLOW.
7707
7708         * cpu-x86.md: Same.
7709
7710         * mini-x86.c (mono_arch_output_basic_block): Same.
7711         
7712         * simd-intrinsics.c (simd_intrinsic_emit_setter): Add support for Vector16b.
7713
7714 2008-11-19  Rodrigo Kumpera  <rkumpera@novell.com>
7715
7716         * simd-intrinsics.c: Implement setter for Vector8us.
7717
7718 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7719
7720         * aot-compiler.c (mono_save_xdebug_info): Emit correct location info
7721         for dead variables.
7722
7723 Wed Nov 19 18:27:41 CET 2008 Paolo Molaro <lupus@ximian.com>
7724
7725         * mini-ppc.c: remove references to the red zone in the prolog
7726         (for systems that don't support it).
7727
7728 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7729
7730         * cpu-ppc64.md: Fixed a few instruction lengths.
7731
7732         * mini-ppc64.c: Don't emit SETLRET.  PPC64 passes basic-float.exe,
7733         now.
7734
7735 2008-11-19  Mark Probst  <mark.probst@gmail.com>
7736
7737         * mini-ppc64.c, cpu-ppc64.md: Fixed some opcodes.  PPC64 passes
7738         basic.exe now.
7739
7740 2008-11-19  Zoltan Varga  <vargaz@gmail.com>
7741
7742         * aot-compiler.c (mono_save_xdebug_info): Add more parameter types.
7743
7744 2008-11-18  Rodrigo Kumpera  <rkumpera@novell.com>
7745
7746         * mini-ops.h: Added OP_INSERT_I2.
7747
7748         * cpu-x86.md: Same.
7749
7750         * mini-x86.c (mono_arch_output_basic_block): Same.
7751         
7752         * simd-intrinsics.c: Implement setter for Vector8s.
7753
7754         * simd-methods.h: Add the names of get setters of Vector8s.
7755
7756 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7757
7758         * aot-compiler.c (mono_save_xdebug_info): Add support for parameters.
7759         
7760         * aot-compiler.c (mono_save_xdebug_info): Add preliminary support for
7761         parameters.
7762
7763         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7764
7765 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7766
7767         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, cpu-ppc64.md: Changes
7768         for PPC64.  An empty program runs now.
7769
7770 2008-11-18  Zoltan Varga  <vargaz@gmail.com>
7771
7772         * unwind.h (MonoUnwindOp): Change the 'val' to a signed type.
7773
7774         * aot-compiler.c mini.c mini.h: Add a JIT debugging mode modelled after
7775         a similar mode in Kaffe: When the the MONO_XDEBUG env var is set, debugging
7776         info for JITted code is emitted into a shared library, loadable into gdb.
7777
7778 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7779
7780         * Makefile.am: Changes to build PPC64.
7781
7782         * mini-arch.h: Include mini-ppc64.h on PPC64.
7783
7784 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7785
7786         * mini-ppc64.c, mini-ppc64.h, cpu-ppc64.md: Updated with changes
7787         in PPC code up to r119147.
7788
7789 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7790
7791         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7792         cpu-ppc64.md: Changes for PPC64.
7793
7794         Based on code submitted by andreas.faerber@web.de at
7795         https://bugzilla.novell.com/show_bug.cgi?id=324134 under the
7796         X11/MIT license.
7797
7798 2008-11-18  Mark Probst  <mark.probst@gmail.com>
7799
7800         * mini-ppc64.c, mini-ppc64.h, tramp-ppc64.c, exceptions-ppc64.c,
7801         cpu-ppc64.md: Copied from the corresponding PPC files from
7802         r118846.
7803
7804 2008-11-18  Scott Peterson  <lunchtimemama@novell.com>
7805
7806         * mini-ops.h: Added OP_ROUND.
7807
7808         * cpu-x86.md: Added round.
7809
7810         * mini-x86.c: Added support for intrinsicing Math.Round (double).
7811
7812         * basic-math.cs: Added test_0_round to test rounding.
7813
7814         Contributed under MIT/X11 license.
7815
7816 2008-11-17  Bill Holmes  <billholmes54@gmail.com>
7817
7818         * aot-compiler.c : Fix the Winx64 build.
7819
7820         Contributed under MIT/X11 license.
7821
7822 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7823
7824         * mini-x86.c (mono_arch_output_basic_block): Use movsd instead of monvups
7825         in OP_EXTRACT_R8 to avoid possible stack corruption.
7826
7827 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7828
7829         * mini-ops.h: Added OP_EXTRACT_R8/I8.
7830
7831         * cpu-x86.md: Added extract_r8.
7832
7833         * mini-x86.c (mono_arch_output_basic_block): Emmit OP_EXTRACT_R8.
7834         
7835         * mini-x86.c: Added mono_arch_decompose_long_opts to break OP_EXTRACT_I8 into
7836         a couple of OP_EXTRACT_I4.
7837
7838         * mini-x86.h: Define MONO_ARCH_HAVE_DECOMPOSE_LONG_OPTS if simd is enabled.
7839
7840         * simd-intrinsics.c: Implement getters for Vector2l/2ul/2d.
7841
7842 2008-11-17  Rodrigo Kumpera  <rkumpera@novell.com>
7843
7844         * simd-intrinsics.c (vector2l_intrinsics): CompareGreaterThan requires sse 4.2
7845         and not 4.1. 
7846
7847 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7848
7849         * method-to-ir.c (handle_delegate_ctor): Emit the address of the delegate
7850         trampoline as an AOT const of the proper type instead of MONO_PATCH_INFO_ABS.
7851
7852         * mini.c (mono_codegen): Remove the handling of delegate trampolines, they
7853         are not needed any more.
7854
7855         * mini.h: Remove the unused INS_LIST macros.
7856
7857         * mini.c (mini_method_compile): Remove a disable globalra case which is no
7858         longer needed.
7859
7860         * *.h *.c: Remove duplicate MonoInst emission macros, use the ones in
7861         ir-emit.h.
7862
7863         * regalloc.h *.c: Remove references to mono_regstate_next_int (), use
7864         mono_alloc_ireg () instead.
7865
7866         * mini-<ARCH>.c: Include ir-emit.h. Remove duplicate MonoInst emission
7867         macros.
7868
7869         * mini-amd64.c (emit_load_volatile_arguments): Removed, not needed
7870         on amd64.
7871
7872         * aot-runtime.c (load_aot_module): Disable AOT when running under
7873         CAS.
7874
7875         * mini-amd64.h: Change the monitor fastpath defines to check for
7876         !PLATFORM_WIN32 so they work on *bsd too.
7877
7878         * mini.h mini.c mini-hhpa.c: Remove more unused code.
7879
7880         * mini-s390.c mini-s390x.c: Remove !cfg->new_ir code.
7881
7882         * mini.h (MonoCompile): Remove new_ir flag.
7883
7884         * regalloc.h regalloc.c: Remove unused code.
7885
7886         * cpu-*.md: Remove more unused opcodes.
7887
7888         * simple-cee-ops.h simple-mini-ops.h: Removed.
7889
7890         * mini-ops.h *.c cpu-<ARCH>.md: Remove more unused opcodes.
7891         
7892 2008-11-17  Zoltan Varga  <vargaz@gmail.com>
7893
7894         * aliasing.h: Removed.
7895
7896         * *.c: Remove references to aliasing.h and inssel.h.
7897
7898         * mini.c: Remove additional unused functions.
7899
7900         * mini-ops.h cpu-*.md: Remove unused opcodes.
7901
7902 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7903
7904         Remove the old JIT code.
7905
7906         * inssel*.brg: Removed.
7907
7908         * ssa.c abcremoval.c aliasing.c: Removed.
7909
7910         * ssa2.c: Renamed to ssa.c.
7911
7912         * abcremoval2.c: Renamed to abcremoval.c.
7913
7914         * *.c: Removed all !cfg->new_ir code.
7915
7916         * mini-<ARCH>.c: Removed mono_arch_call_opcode (), 
7917         mono_arch_emit_this_vret_args (), and mono_arch_get_inst_for_method ().
7918
7919         * mini.c: Removed the old mono_method_to_ir () and all the code used by it.
7920         
7921 2008-11-16  Zoltan Varga  <vargaz@gmail.com>
7922
7923         * aot-compiler.c aot-runtime.c: Emit most of the non-table data in a structure
7924         to simplify the code and cut back on the number of global symbols in the AOT
7925         file.
7926         
7927         * aot-compiler.c aot-runtime.c: Get rid of the unused plt_jump_table.
7928
7929 2008-11-15  Zoltan Varga  <vargaz@gmail.com>
7930
7931         * aot-runtime.c aot-compiler.c: Unify the plt_jump_table/plt_info tables
7932         with the got/got_info tables.
7933
7934         * mini.h: Bump AOT file format version.
7935         
7936         * unwind.h: New file, contains definitions for stack unwinding.
7937
7938         * mini.c (mono_emit_unwind_op): New helper function to append an unwind op
7939         to cfg->unwind_ops.
7940         
7941         * aot-compiler.c: Generalize the emitting of unwind information to use the
7942         information in cfg->unwind_ops.
7943
7944         * mini-amd64.c (mono_arch_emit_prolog): Emit unwind info.
7945
7946         * aot-compiler.c: Emit dwarf unwind information so gdb can unwind through
7947         AOT method frames. Enable writing symbols for methods by default.
7948
7949 2008-11-14  Rodrigo Kumpera  <rkumpera@novell.com>
7950
7951         * simd-intrinsics.c (simd_intrinsic_emit_getter): Generalize this code
7952         and make it work with vectors of element sizes 1, 2 and 4.
7953
7954         * simd-intrinsics.c: Enable getter for all vectors with element size
7955         1, 2 or 4.
7956
7957         * simd-methods.h: Add the names of other getters.
7958
7959         * mini-ops.h: Added OP_EXTRACT_I2/U2/I1/U1.
7960
7961         * cpu-x86.md: Same.
7962
7963         * mini-x86.c: Same.
7964
7965 Fri Nov 14 15:54:18 CET 2008 Paolo Molaro <lupus@ximian.com>
7966
7967         * mini-ppc.h: portability fix.
7968
7969 Fri Nov 14 15:39:50 CET 2008 Paolo Molaro <lupus@ximian.com>
7970
7971         * mini-ppc.h, mini-ppc.c: avoid using the red zone as some kernels are
7972         buggy and will overwrite it.
7973
7974 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7975
7976         * aot-compiler.c: Add functionality to emit local symbols to the elf writer.
7977         Use it to emit local symbols for all methods so AOTed methods show up with
7978         their full name in gdb/valgrind output.
7979
7980 Fri Nov 14 12:56:27 CET 2008 Paolo Molaro <lupus@ximian.com>
7981
7982         * mini-ppc.c: portability fixes.
7983
7984 2008-11-14  Zoltan Varga  <vargaz@gmail.com>
7985
7986         * mini-trampolines.c (mono_magic_trampoline): Move the patching of plt
7987         entries out of the if (!generic_shared...) code so it is always done.
7988         (mono_class_init_trampoline): Do the patching when running under valgrind
7989         too, newer versions of valgrind have no problems with it.
7990
7991 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
7992
7993         * aot-compiler.c (emit_writeout): Rework this to make it easier to add
7994         further sections.
7995
7996 2008-11-13  Mark Probst  <mark.probst@gmail.com>
7997
7998         * mini-ppc.c, cpu-ppc.md: Reserve space for the parameter area in
7999         filters.
8000
8001 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8002
8003         * simd-intrinsics.c: Add getter support for Vector4i and Vector4ui. 
8004
8005 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8006
8007         * mini-ops.h: Kill diplicated ops OP_SHUFLEPS.
8008
8009         * cpu-x86.md: Same.
8010
8011         * mini-x86.c: Same.
8012
8013         * simd-intrinsics.c: Same.
8014
8015 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8016
8017         * simd-intrinsics.c: Enable constructor intrinsics for all types.
8018
8019 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8020
8021         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Generalize this method
8022         to work with more Vector types.
8023
8024 2008-11-13  Rodrigo Kumpera  <rkumpera@novell.com>
8025
8026         * simd-intrinsics.c (simd_intrinsic_emit_ctor): If the target is already a pointer
8027         store the elemens directly instead of using and intermediate.
8028
8029 2008-11-13  Zoltan Varga  <vargaz@gmail.com>
8030
8031         * mini-amd64.c (emit_call_body): Avoid aligning call sites in AOTed code.
8032
8033         * tramp-x86.c (mono_arch_create_trampoline_code): Rework the return sequence
8034         to preserve %eax for aot plt trampolines.
8035
8036         * aot-compiler.c (compile_method): Don't skip synchronized methods.
8037         (encode_method_ref): Flag synchronized methods so they won't go through
8038         the AOT trampoline.
8039
8040         * aot-compiler.c: Additional work to support AOTing synchronized methods/
8041         wrappers.
8042
8043         * cpu-ia64.md (jmp): Increase max length.
8044
8045 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8046
8047         * aot-runtime.c (load_method): Avoid calling runtime_class_init () for
8048         open generic classes.
8049
8050         * aot-compiler.c: Enable the ELF writer on ELF platforms.
8051
8052         * method-to-ir.c (mono_method_to_ir2): Revert the last change to the
8053         box+brtrue optimization since it causes test failures on x86.
8054
8055 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8056
8057         * mini-ops.h: Remove OP_PUSH_R4 and OP_LOADX_STACK.
8058
8059         * cpu-x86.md: Same.
8060
8061         * mini-x86.c: Same.
8062
8063         * mini.h (struct MonoCompile): Add simd_ctor_var to be used as storage
8064         for simd ctor values. 
8065
8066         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Use simd_ctor_var for the constructor
8067         instead of directly pushing the values on stack. This saves about 15 bytes of generated code.
8068
8069 2008-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
8070
8071         * simd-methods.h: Rename SubWithSaturation, ArithmeticRightShift and
8072         LogicalRightShift.
8073
8074         * simd-instrincs.c: Same.
8075
8076         * basic-simd.cs: Same.
8077
8078 2008-11-12  Zoltan Varga  <vargaz@gmail.com>
8079
8080         * ratests.cs: Add more tests.
8081
8082         * regalloc2.c (add_spill_code): Handle more corner cases.
8083
8084 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8085
8086         * regalloc2.c (INS_POS_INTERVAL): Decrease this to 8 to avoid overflows.
8087         (update_liveness): Avoid holes in the liveness ranges of hregs if they are
8088         both the source an destination of an instruction.
8089
8090 Tue Nov 11 19:30:50 CET 2008 Paolo Molaro <lupus@ximian.com>
8091
8092         * jit-icalls.c, local-propagation.c, mini.c, ssa.c, ssapre.c, trace.c,
8093         wapihandles.c: more portability changes.
8094
8095 Tue Nov 11 18:56:33 CET 2008 Paolo Molaro <lupus@ximian.com>
8096
8097         * aot-compiler.c, aliasing.c, abcremoval.c: portability changes.
8098         * mini.c mini.h, aot-runtime.c: the aot segfault-handling code is not
8099         safe to execute in a signal handler and the kernel provides better
8100         the info in /proc/self/smaps. Avoid the assert on sigaction during
8101         cleanup.
8102
8103 2008-11-11  Zoltan Varga  <vargaz@gmail.com>
8104
8105         * method-to-ir.c (mono_method_to_ir2): In the box+brtrue optimization, only
8106         do the bblock linking hack if it is actually needed.
8107
8108         * Makefile.am (patch-libtool): New helper target to patch libtool to speed
8109         up linking.
8110
8111         * liveness.c (ENABLE_LIVENESS2): Reenable this for 64 bit archs as the
8112         crash problem is fixed.
8113
8114         * branch-opts.c (mono_remove_critical_edges): Link up newly added
8115         bblocks.
8116
8117         * mini.c (mini_method_compile): Compute unreachable bblocks properly even
8118         for catch clauses.
8119         (mini_method_compile): Set the starting value of next_vreg to 
8120         MAX_IREGS + MAX_FREGS when using globalra.
8121
8122         * method-to-ir.c (mono_method_to_ir2): Mark bblocks starting
8123         filter clauses with BB_EXCEPTION_HANDLER.
8124
8125         * regalloc2.c (assign_spill_slots): Set cfg->rgctx_var.
8126
8127 2008-11-10  Mark Probst  <mark.probst@gmail.com>
8128
8129         * mini-x86.c (mono_arch_get_argument_info): Don't align argument
8130         space for stdcall.  Fixes regressions on Win32.
8131
8132 2008-11-10  Zoltan Varga  <vargaz@gmail.com>
8133
8134         * regalloc2.c (handle_reg_constraints): Avoid adding code to unreachable
8135         bblocks.
8136         (linear_scan): Remove an assert which doesn't seem to be needed.
8137
8138         * local-propagation.c (mono_local_deadce): Avoid a call to
8139         MONO_DELETE_INS which would screw up the instruction linking.
8140
8141         * mini.c (mono_decompose_op_imm): Make this work with globalra.
8142
8143         * regalloc2.c: Upgrade to work the current JIT code.
8144
8145 2008-11-09  Zoltan Varga  <vargaz@gmail.com>
8146
8147         * method-to-ir.c (inline_method): Merge more basic blocks to help the AOT
8148         case.
8149
8150         * aot-runtime.c: Remove some dead code.
8151
8152         * tramp-arm.c: Use 'code' as the runnning pointer in code generation for
8153         consistency.
8154         (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Implement aot support.
8155
8156         * aot-runtime.c (load_named_code): Decode the offset of lazy fetch
8157         trampolines using sscanf since atoi doesn't work on large unsigned values.
8158
8159         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): 
8160         Initialize code_size.
8161
8162 2008-11-08  Mark Probst  <mark.probst@gmail.com>
8163
8164         * method-to-ir.c (mini_emit_inst_for_method): Make
8165         Interlocked.CompareExchange work for Int arguments on 32 bit
8166         archs, as well.
8167
8168 2008-11-07  Mark Probst  <mark.probst@gmail.com>
8169
8170         * method-to-ir.c (mono_method_to_ir2): Fixed a funny commit error.
8171
8172 2008-11-06  Bill Holmes  <billholmes54@gmail.com>
8173
8174         * main.c Fix MSVC build.
8175
8176         Contributed under MIT/X11 license.
8177
8178 2008-11-06  Mark Probst  <mark.probst@gmail.com>
8179
8180         * mini-x86.c (mono_arch_allocate_vars): Make sure locals that need
8181         alignment larger than 8 bytes are aligned correctly, too.
8182
8183         * mini.c: Honor the min_align field of MonoClass when laying out
8184         the stack.
8185
8186 2008-11-06  Zoltan Varga  <vargaz@gmail.com>
8187
8188         * method-to-ir.c (mono_method_to_ir2): Fix AOT support for CEE_SWITCH on arm.
8189
8190         * aot-compiler.c (emit_plt): Fix a warning.
8191         
8192         * aot-compiler.c: Implement ARM support in the binary writer.
8193
8194 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8195
8196         * basic-simd.cs: Add test for getter with byref arg.
8197         Fix the naming of a few tests.
8198         Add missing checks to a test.
8199
8200 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8201
8202         * aot-compiler.c (emit_plt): Make the arm code work with the binary writer.
8203
8204         * aot-compiler.c aot-runtime.c mini-trampolines.c tramp-amd64.c: Implement
8205         most of the full-aot support for monitor enter/exit trampolines.
8206
8207         * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
8208         enter/exit trampoline creation functions.
8209
8210         * Makefile.am: Fix the generation of buildver.h so it is not invoked during
8211         make dist.
8212
8213 Wed Nov 5 16:28:53 CET 2008 Paolo Molaro <lupus@ximian.com>
8214
8215         * mini.h, aot-compiler.c, method-to-ir.c, aot-runtime.c: remove the
8216         incorrectly added MONO_WRAPPER_MONITOR_* (in r117651-r117652) and
8217         implement the needed functionality without adding crap to the runtime.
8218
8219 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
8220
8221         * mini-trampolines.c (mono_create_monitor_enter_trampoline): Fix the
8222         non-x86 builds.
8223
8224         * mini.c (mono_build_date): New global version holding the build date in
8225         string format.
8226         
8227         * Makefile.am (buildver.c): Generate a file containing the build date.
8228
8229         * main.c: Set the build date from the generated file.
8230
8231         * mini.c (mono_get_runtime_build_info): New helper function returning build
8232         information in a string format.
8233         
8234         * driver.c (mono_main): Print the build date in --version.
8235
8236         * aot-compiler.c aot-runtime.c: Embed the build information into the AOT
8237         file when the bind-to-runtime-version option is used.
8238
8239 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8240
8241         * simd-intrinsics.c: Fix bug when using getters and byref args. 
8242
8243 2008-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
8244
8245         * simd-methods.h: Rename prefetch methods.
8246
8247         * simd-intrinsics.c: Same.      
8248
8249 2008-11-05  Mark Probst  <mark.probst@gmail.com>
8250
8251         * tramp-amd64.c: Enlarge the Monitor.Enter/Exit trampoline code
8252         sizes.
8253
8254 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8255
8256         * aot-compiler.c: Use the bundled elf header files instead of depending on
8257         the system one.
8258         
8259         * aot-compiler.c (emit_symbol_diff): Allocate memory from the acfg
8260         mempool.
8261
8262         * method-to-ir.c (mono_method_check_inlining): Avoid a getenv () call
8263         on every call.
8264
8265 2008-11-04  Rodrigo Kumpera  <rkumpera@novell.com>
8266
8267         * cpu-x86.md: Add store nta ops.
8268
8269         * mini-ops.h: Same.
8270
8271         * mini-x86.c: Same.
8272
8273         * mini.h: Add an enum for simd prefetch modes.
8274
8275         * simd-methods.h: Refactor the store_aligned code to handle multiple kinds
8276         of store. Use the changed code to support store nta.
8277
8278         * simd-intrinsics.c: Add prefetch ops for all vector types.
8279
8280 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8281
8282         * aot-compiler.c: Add an option for JIT compiling the methods by multiple 
8283         threads.
8284         
8285         * aot-compiler.c: Use statically allocated buffers for constructing symbol 
8286         names.
8287
8288         * aot-runtime.c aot-compiler.c: Add support for the MONITOR_ENTER/EXIT
8289         trampolines.
8290
8291 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8292
8293         * mini-x86.c: Fixed commit.
8294
8295 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8296
8297         * aot-compiler.c (emit_plt): Align the plt section only on x86.
8298
8299 2008-11-04  Mark Probst  <mark.probst@gmail.com>
8300
8301         * mini-trampolines.c, mini.h: Two new trampolines: MONITOR_ENTER
8302         and MONITOR_EXIT, for the ASM fastpaths.
8303
8304         * method-to-ir.c: Use the ASM fastpath for Monitor.Enter/Exit if
8305         available.
8306
8307         * mini.c, patch-info.h: Signature and patch infos for
8308         Monitor.Enter/Exit trampolines.
8309
8310         * mini-amd64.c, mini-x86.c: Make emit_tls_get() non-static.
8311
8312         * tramp-amd64.c, tramp-x86.c, mini-amd64.h, mini-amd64.h:
8313         Monitor.Enter/Exit ASM fastpath for Linux.
8314
8315 2008-11-04  Zoltan Varga  <vargaz@gmail.com>
8316
8317         * mini.c (mono_method_to_ir): Fix soft-float support in Array.Get/Set.
8318
8319         * objects.cs: Add a new test.
8320         
8321         * aot-compiler.c: Use mono_100ns_ticks () for computing the profiling info.
8322
8323         * aot-runtime.c (load_method): Run class initialization in the PLT case even
8324         if MONO_LOG_LEVEL is set.
8325
8326         * debug-mini.c (serialize_variable): Fix the encoding of dead variables.
8327
8328         * aot-runtime.c (mono_aot_get_method): Skip out-of-date AOT modules.
8329
8330         * aot-compiler.c (emit_and_reloc_code): Speed this up a little.
8331         
8332         * aot-compiler.c: Change the relocation code to use virtual addresses instead
8333         of file offsets. Align the sections belonging to the data segment to 
8334         PAGESIZE.
8335
8336 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8337
8338         * aot-compiler.c: Simplify the elf writer by depending on the definitions in
8339         elf.h. Port it to amd64.
8340
8341 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8342
8343         * driver.c: Enable SIMD by default.
8344
8345 2008-11-03  Rodrigo Kumpera  <rkumpera@novell.com>
8346
8347         * cpu-x86.md: Add prefetch op.
8348
8349         * mini-ops.h: Same.
8350
8351         * mini-x86.c: Same.
8352
8353         * mini.h: Add an enum for simd prefetch modes.
8354
8355         * simd-methods.h: Add prefetch function names.
8356
8357         * simd-intrinsics.c: Add prefetch ops for all vector types.
8358
8359 2008-11-03  Zoltan Varga  <vargaz@gmail.com>
8360
8361         * aot-compiler.c (emit_bytes): Speed this up a little.
8362
8363 2008-11-02  Zoltan Varga  <vargaz@gmail.com>
8364
8365         * aot-compiler.c: Add JIT time etc. statistics.
8366         
8367         * aot-compiler.c (compile_method): Fix the copying of the cfgs array.
8368
8369         * mini.h (MonoCompile): Add 'got_offset' field.
8370
8371         * aot-compiler.c: Store the got offset in MonoCompile, get rid of the
8372         method_got_offsets array.
8373
8374         * aot-compiler.c aot-runtime.c: Add support for the monitor enter/exit
8375         wrappers.
8376
8377         * aot-compiler.c (compile_method): Add generic method instances referenced
8378         by the method to the list of methods to be compiled, this is required so if
8379         A<T> references B<T>, and another assembly references A<int>, then it will
8380         also get a copy of B<int>.
8381
8382         * method-to-ir.c (mini_emit_inst_for_method): Use the proper wrapper type
8383         when checking for monitor enter/exit.
8384
8385 2008-10-30  Mark Probst  <mark.probst@gmail.com>
8386
8387         * method-to-ir.c (mini_emit_inst_for_method): Use the IL fastpaths
8388         for Monitor.Enter and Monitor.Exit if enabled.
8389
8390         * mini-x86.h, mini-amd64.h: Enable the IL fastpaths for Linux and
8391         Solaris.
8392
8393 2008-10-30  Zoltan Varga  <vargaz@gmail.com>
8394
8395         * method-to-ir.c (type_from_op): Convert CEE_CONV_U on OP_ICONV_TO_U instead
8396         of an OP_MOVE. Fixes #440046.
8397
8398         * basic-long.cs: Add a new test.
8399
8400 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8401
8402         * mini.h: Add synchronization note for the managed counter-part.
8403
8404         * simd-intrinsics.c: Add SimdRuntime.get_AccelMode intrinsic that
8405         returns the simd caps of the current cpu.
8406
8407 2008-10-29  Rodrigo Kumpera  <rkumpera@novell.com>
8408
8409         * basic-simd.cs: Remove Console.WriteLine.
8410
8411 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8412
8413         * basic-simd.cs: New tests for Vector2ul.
8414
8415 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8416
8417         * simd-intrinsics.c: Add new vector type Vector2ul.
8418
8419 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8420
8421         * basic-simd.cs: New tests for Vector2l.
8422
8423 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8424
8425         * cpu-x86.md: Add long version of most packed int ops.
8426
8427         * mini-ops.h: Same.
8428
8429         * mini-x86.h: Same.
8430
8431         * simd-intrinsics.c: Add new vector type Vector2l.
8432
8433 2008-10-28  Rodrigo Kumpera  <rkumpera@novell.com>
8434
8435         * simd-intrinsics.c: Replace SN_op_BitwiseXor with SN_op_ExclusiveOr.
8436
8437         * simd-methods.h: Remove SN_op_BitwiseXor.
8438
8439 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8440
8441         * mini.c (mono_allocate_stack_slots_full): Align the size of vtypes to their
8442         alignment.
8443
8444 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8445
8446         * basic-simd.cs: Test for Vector2d.
8447
8448         * basic-simd.cs (test_vector8s_pack_signed_sat): Fixed broken
8449         value.
8450
8451 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8452
8453         * cpu-x86.md: Add double version of all packed float ops.
8454
8455         * mini-ops.h: Same.
8456
8457         * mini-x86.h: Same.
8458
8459         * simd-intrinsics.c: Add new vector type Vector2d.
8460
8461         * simd-intrinsics.c (vector4f_intrinsics): Fix ordering.
8462
8463         * simd-methods.h: Add Duplicate.
8464
8465 2008-10-27  Rodrigo Kumpera  <rkumpera@novell.com>
8466
8467         * basic-simd.cs: Test for packing with signed saturation.
8468
8469 2008-10-28  Zoltan Varga  <vargaz@gmail.com>
8470
8471         * aot-compiler.c (add_generic_instances): Add all methods of generic instances
8472         found in the TYPESPEC table.
8473
8474 2008-10-26  Zoltan Varga  <vargaz@gmail.com>
8475
8476         * aot-runtime.c (mono_aot_get_method): Log not found methods for extra methods
8477         too.
8478
8479         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
8480
8481         * mini.c (mono_method_to_ir): For MONO_PATCH_INFO_RVA, save field the token
8482         instead of the RVA, since the RVA can be changed by tools like the cil 
8483         stripper.
8484
8485         * method-to-ir.c (mono_method_to_ir2): Ditto.
8486
8487         * debug-mini.c (serialize_variable): Handle ADDRESS_MODE_DEAD.
8488         (deserialize_variable): Ditto.
8489
8490 2008-10-25  Martin Baulig  <martin@ximian.com>
8491
8492         * debug-mini.c (write_variable): Use
8493         `MONO_DEBUG_VAR_ADDRESS_MODE_DEAD' for dead variables.
8494
8495 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8496
8497         * cpu-x86.md: Add unsigned variants of packd and packw.
8498
8499         * mini-ops.h: Same.
8500
8501         * mini-x86.h: Emit the right instruction for packd and packw.
8502         Add unsigned variants of packd and packw.
8503
8504         * simd-intrinsics.c: Packd and packw were used in place of their
8505         unsigned variants. Change that.
8506         Add intrinsics for (Signed)PackWithSignedSaturation.
8507
8508         * simd-methods.h: Add (Signed)PackWithSignedSaturation.
8509
8510 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8511
8512         * simd-intrinsics.c (vector4i_intrinsics): New table of intrinsic type.
8513
8514 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8515
8516         * mini-ops.h: Remove dword packed add/sub with saturation ops.
8517
8518         * cpu-x86.md: Remove dword packed add/sub with saturation ops.
8519
8520         * simd-intrinsics.c (vector4ui_intrinsics): Remove methods without
8521         sse instructions.
8522
8523         * simd-intrinsics.c (vector8s_intrinsics): Fix ordering.
8524
8525 2008-10-24  Mark Probst  <mark.probst@gmail.com>
8526
8527         * method-to-ir.c, mini.c: Special casing for the synchronized
8528         wrapper for the ldtoken+GetTypeFromHandle case.
8529
8530 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8531
8532         * mini.c (mono_replace_ins): Move this to branch-opts.c.
8533
8534         * mini.c (mono_replace_ins): Propagate has_array_access flag to the newly
8535         created/split bblocks.
8536
8537 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8538
8539         * mini-ops.h: Add packed signed mul high.
8540         
8541         * cpu-x86.md: Same.
8542
8543         * mini-x86.c (mono_arch_output_basic_block): Same.
8544
8545         * simd-methods.h: Add PackWithUnsignedSaturation and ShiftRightLogic.
8546
8547         * simd-intrinsics.c (vector8s_intrinsics): New table of intrinsic type.
8548
8549 2008-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
8550
8551         * basic-simd.cs: Tests for Vector16sb.
8552
8553 2008-10-24  Zoltan Varga  <vargaz@gmail.com>
8554
8555         * inssel.brg (stmt): Fix OP_HARD_NOP rule.
8556
8557 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8558
8559         * mini-ops.h: Add packed signed min, max and compare greater.
8560         
8561         * cpu-x86.md: Same.
8562
8563         * mini-x86.c (mono_arch_output_basic_block): Same. Add packed add/sub with
8564         saturation.
8565
8566         * simd-methods.h: Add CompareGreaterThan.
8567
8568         * simd-methods.h: Remove CompareEquals.
8569
8570         * simd-intrinsics.c: Add new TODO entry and some cosmetic changes.
8571
8572         * simd-intrinsics.c (vector16sb_intrinsics): New table of intrinsic type.
8573
8574         * simd-intrinsics.c (vector4f_intrinsics): Rename CompareEquals to
8575         CompareEqual.
8576
8577 2008-10-23  Rodrigo Kumpera  <rkumpera@novell.com>
8578
8579         * basic-simd.cs: Fix tests due to change in the API.
8580
8581 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8582
8583         * mini.c method-to-ir.c: Use mono_field_get_name () for accessing field->name.
8584
8585 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8586
8587         * basic-simd.cs: Fix name change in Vector4f::CompareEqual.
8588
8589         * simd-intrinsics.c (simd_intrinsic_emit_store_aligned): Don't use
8590         inst_offset as this has invalid values for LDADDR.
8591
8592 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8593
8594         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8595
8596         * simd-intrinsics.c (vector4ui_intrinsics): Add SignedPackWithUnsignedSaturation.
8597
8598 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8599
8600         * method-to-ir.c (initialize_array_data): Use mono_field_get_data ()
8601         for accessing field->data.
8602
8603 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8604
8605         * basic-simd.cs: Test for SignedPackWithUnsignedSaturation.
8606
8607 2008-10-21  Rodrigo Kumpera  <rkumpera@novell.com>
8608
8609         * simd-methods.h: Add SignedPackWithUnsignedSaturation.
8610
8611         * simd-intrinsics.c (vector8us_intrinsics): Add SignedPackWithUnsignedSaturation.
8612
8613 2008-10-21  Zoltan Varga  <vargaz@gmail.com>
8614
8615         * dominators.c (mono_compute_natural_loops): Allocate GList enties
8616         from the cfg mempool.
8617
8618 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8619
8620         * basic-simd.cs: Tests for new methods in Vector8us.
8621
8622 2008-10-20  Rodrigo Kumpera  <rkumpera@novell.com>
8623
8624         * mini-ops.h: Add multiply and store high.
8625         
8626         * cpu-x86.md: Same.
8627
8628         * mini-x86.c (mono_arch_output_basic_block): Same.
8629
8630         * simd-methods.h: Same.
8631
8632         * simd-intrinsics.c (vector8us_intrinsics): Add MultiplyStoreHigh
8633         and CompareEqual.
8634
8635 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8636
8637         * method-to-ir.c (mono_emit_method_call_full): Remove a needless call to
8638         mono_class_setup_vtable ().
8639
8640         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Use
8641         mono_class_get_vtable_entry () for accessing klass->vtable.
8642
8643         * aot-runtime.c (load_method): Avoid a crash when using MONO_LOG_LEVEL.
8644
8645         * aot-compiler.c (add_generic_instances): Avoid a crash if a class is not
8646         found.
8647
8648         * method-to-ir.c (mono_save_token_info): Don't save references made from
8649         wrappers.
8650
8651         * aot-compiler.c (add_generic_instances): Add static rgctx wrappers for cctors
8652         of generic instances.
8653
8654         * aot-runtime.c (find_extra_method): Search in all loaded AOT images.
8655
8656 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8657
8658         * cpu-ppc.md, mini-ppc.c: The length of the code generated for
8659         OP_JMP depends on the method signature.  Calculate it properly.
8660
8661 2008-10-19  Zoltan Varga  <vargaz@gmail.com>
8662         
8663         * aot-runtime.c (mono_aot_find_jit_info): Handle extra methods which are
8664         called directly.
8665
8666         * aot-compiler.c (emit_and_reloc_code): Allow direct calling of generic
8667         instances.
8668         (emit_extra_methods): Add another table mapping method indexes to 
8669         offsets in the extra_method_info table.
8670
8671         * mini.h: Bump AOT file format version.
8672         
8673         * aot-runtime.c: Merge most of the code from mono_aot_get_method
8674         and mono_aot_get_method_from_token () into one function.
8675
8676 2008-10-19  Mark Probst  <mark.probst@gmail.com>
8677
8678         * mini-ppc.c (emit_load_volatile_arguments): Inner loop needs a
8679         separate counter.
8680
8681 2008-10-18  Zoltan Varga  <vargaz@gmail.com>
8682
8683         * aot-compiler.c aot-runtime.c: Fix the hash function used for the extra
8684         methods.
8685
8686         * method-to-ir.c (mono_method_to_ir2): Change a !compile_aot assert to
8687         disable_aot.
8688
8689         * mini.c (mono_patch_info_equal): Compare the generic context as well.
8690
8691         * mini.h: Bump aot file format version.
8692
8693         * aot-compiler.c aot-runtime.c: Generalize the wrapper handling code so the
8694         AOT file can contain native code for methods which are not in the METHOD
8695         table. Generate code for non-sharable generic instances of generic methods
8696         found in the METHODSPEC table.
8697         
8698         * method-to-ir.c (mono_method_to_ir2): Remove the aot restriction when
8699         encoding generic type handles.
8700
8701         * ir-emit.h (NEW_AOTCONST_TOKEN): Add a generic_context argument.
8702         (NEW_TYPE_FROM_HANDLE_CONST): Add a generic_context argument.
8703
8704         * ir-emit.h: Rewrite the EMIT_NEW_XXXCONST macros to use the NEW_XXXCONST
8705         macros + MONO_ADD_INS.
8706
8707         * mini.c (mono_jump_info_token_new2): New function which takes a generic
8708         context as well.
8709
8710         * mini.h (MonoJumpInfoToken): Include fields for a generic context.
8711
8712         * mini.h: Bump aot file format version.
8713
8714         * aot-compiler.c aot-runtime.c: Update after changes to MonoJumpInfoToken.
8715
8716 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8717
8718         * mini-x86.h, mini-x86.c, exceptions-x86.c: Align stack on all
8719         platforms, with definable stack alignment value.  Set to 16 now
8720         for all platforms.
8721
8722         * mini.c, mini.h, driver.c: Command line option for disabling
8723         stack alignment.
8724
8725 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8726
8727         * basic-simd.cs: Tests for new methods in Vector4ui.
8728
8729 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8730
8731         * mini-ops.h: Add packed int shuffle.
8732         
8733         * cpu-x86.md: Same.
8734
8735         * mini-x86.c (mono_arch_output_basic_block): Same.
8736
8737         * simd-intrinsics.c (vector4ui_intrinsics): Add compare equal,
8738         extract mask, max, min, shuffle.
8739
8740         * simd-intrinsics.c (vector8us_intrinsics): Add max and min.
8741
8742 2008-10-17  Rodrigo Kumpera  <rkumpera@novell.com>
8743
8744         * basic-simd.cs: Tests for new methods in Vector8us.
8745
8746 2008-10-17  Mark Probst  <mark.probst@gmail.com>
8747
8748         * method-to-ir.c (mono_method_to_ir2): "refanytype" produces a
8749         RuntimeTypeHandle, not a TypedReference.
8750
8751 Fri Oct 17 14:40:50 CEST 2008 Paolo Molaro <lupus@ximian.com>
8752
8753         * simd-intrinsics.c: remove relocations.
8754
8755 2008-10-17  Zoltan Varga  <vargaz@gmail.com>
8756
8757         * mini-amd64.c (mono_arch_output_basic_block): Port the IREM_IMM 
8758         optimizations from the x86 backend.
8759
8760 Fri Oct 17 12:00:51 CEST 2008 Paolo Molaro <lupus@ximian.com>
8761
8762         * simd-methods.h, simd-intrinsics.c: debloat method names and
8763         prepare for no relocations.
8764
8765 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8766
8767         * mini-ops.h: Add packed min/equal and sum of absolute differences.
8768         
8769         * cpu-x86.md: Same.
8770
8771         * mini-x86.c (mono_arch_output_basic_block): Same.
8772
8773         * simd-intrinsics.c (vector16b_intrinsics): Add average, compare equal,
8774         extract mask, max, min and sum of absolute differences.
8775
8776         * simd-intrinsics.c: Increase SIMD_INTRINSIC_NAME_MAX due to new huge
8777         method name.
8778
8779 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8780
8781         * basic-simd.cs: Test for the other mono_simd_simplify_indirection bug.
8782         Renamed one test for consistency.
8783
8784 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8785
8786         * simd-intrinsics.c (mono_simd_simplify_indirection): Apply the previous
8787         fix to the code that deal with other blocks.
8788
8789 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8790
8791         * basic-simd.cs: Test for the mono_simd_simplify_indirection bug.
8792
8793 2008-10-16  Rodrigo Kumpera  <rkumpera@novell.com>
8794
8795         * simd-intrinsics.c (mono_simd_simplify_indirection): Simplify the code
8796         that deals with vreg interference. Explicitly check for OP_LDADDR to be
8797         able to process the source reg.
8798
8799 2008-10-16  Martin Baulig  <martin@ximian.com>
8800
8801         * mini-ops.h, cpu-amd64.md, cpu-x86.md: Added new `hard_nop' opcode.
8802
8803         * inssel.brg: Add `OP_HARD_NOP'.
8804
8805         * mini.h (MonoCompile): Added `keep_cil_nops' flag.
8806
8807         * mini.c (mono_method_to_ir): In `CEE_NOP': generate a
8808         `OP_HARD_NOP' instruction when running inside the debugger.
8809
8810         * method-to-ir.c (mono_method_to_ir2): In `CEE_NOP': generate a
8811         `OP_HARD_NOP' instruction when running inside the debugger.
8812
8813 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8814
8815         * simd-intrinsics.c (get_simd_vreg): Using sreg1 of OP_XMOVE
8816         now works. The issue with the regalloc tripping up no longer
8817         happens.
8818
8819         * simd-intrinsics.c (load_simd_vreg): Same.
8820
8821 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8822         
8823         * basic-simd.cs: Tests for new Vector8ui methods.
8824
8825 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8826
8827         * simd-intrinsics.c (get_simd_vreg): Simplify code and test
8828         only for type. This fixes crashes where MonoInst::klass is checked
8829         for ops of type != VTYPE or OBJ.
8830
8831         * simd-intrinsics.c (load_simd_vreg): Same.
8832
8833 2008-10-15  Rodrigo Kumpera  <rkumpera@novell.com>
8834
8835         * mini-ops.h: Add ops for packed shuffle/max/avg and
8836         extract mask.
8837         
8838         * cpu-x86.md: Same.
8839
8840         * mini-x86.c (mono_arch_output_basic_block): Same.
8841
8842         * simd-intrinsics.c (vector8us_intrinsics): Add avg, shuffle and
8843         extract mask.
8844
8845         * simd-intrinsics.c (simd_intrinsic_emit_extract_mask): New function
8846         to emit extract mask op.
8847
8848         * simd-intrinsics.c (simd_intrinsic_emit_shuffle): Retrofic this function
8849         to emit word shuffles.
8850
8851 2008-10-15  Mark Probst  <mark.probst@gmail.com>
8852
8853         * mini.c (mono_allocate_stack_slots_full): Align stack frame to
8854         the largest alignment needed by a variable, but at least
8855         sizeof(gpointer).
8856
8857 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8858
8859         * basic-simd.cs: Tests for the fixes in the last commit.
8860
8861 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8862
8863         * simd-intrinsics.c (get_simd_vreg): Drop the is_this_ptr, this function
8864         no longer handles STACK_PTR input.
8865
8866         * simd-intrinsics.c (get_simd_vreg): Don't crash when MonoInst::klass == -1.
8867
8868         * simd-intrinsics.c (load_simd_vreg): New function that works like 
8869         get_simd_vreg   but handles STACK_PTR input.
8870
8871         * simd-intrinsics.c (simd_intrinsic_emit_getter): Use load_simd_vreg
8872         as the input can be an arbitrary pointer.
8873
8874         * simd-intrinsics.c (simd_intrinsic_emit_ctor): Try the
8875         LDADDR local optimization directly otherwise use a store op.
8876
8877 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8878
8879         * basic-simd.cs: Tests for dup low and dup high.
8880
8881 2008-10-14  Rodrigo Kumpera  <rkumpera@novell.com>
8882
8883         * mini-ops.h: Add dup low and dup high ops.
8884         
8885         * cpu-x86.md: Same.
8886
8887         * mini-x86.c (mono_arch_output_basic_block): Same.
8888
8889         * simd-intrinsics.c (vector4f_intrinsics): Same.
8890
8891 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8892
8893         * basic-simd.cs: Tests for recently added functionality.
8894
8895 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8896
8897         * mini-ops.h: Add remaining sse1 fp ops.
8898         
8899         * cpu-x86.md: Add remaining sse1 fp ops.
8900
8901         * mini-x86.c (mono_arch_output_basic_block): Same.
8902
8903         * mini.h: Add enum for simd FP compare conditions.
8904
8905         * simd-intrinsics.c (vector4f_intrinsics): Add all new ops.
8906
8907         * simd-intrinsics.c (simd_intrinsic_emit_binary): Set inst_c0 to flags
8908         so the backed can generate the appropriate op.
8909
8910 2008-10-13  Rodrigo Kumpera  <rkumpera@novell.com>
8911         This patch squeese one more byte from the SimdIntrinsc struct.
8912
8913         * mini-x86.c (mono_arch_cpu_enumerate_simd_versions: Use the version number
8914         a a shift amount intead of simply or'ing it.
8915
8916         * mini.h: Change SIMD_VERSION_* values to be sequential intead of masks.
8917
8918         * simd-intrinsics.c (struct SimdIntrinsc): Squeese simd_version and simd_emit_mode into a single
8919         byte so we can have an aditional flags field without increasing struct size.
8920
8921         * simd-intrinsics.c (emit_intrinsics): Use the value of simd_version as a shift amount before checking
8922         against the simd_supported_versions bitmask.
8923
8924         * simd-intrinsics.c: Set SIMD_INTRINSIC_NAME_MAX to an appropriate value.
8925
8926 Mon Oct 13 10:58:10 CEST 2008 Paolo Molaro <lupus@ximian.com>
8927
8928         * mini.c: remove rawbuffer code (the only use here is unsafe because
8929         it takes locks during signal handling and the kernel now provides much
8930         better info in proc/pid/smaps these days).
8931
8932 2008-10-13  Zoltan Varga  <vargaz@gmail.com>
8933
8934         * mini-amd64.c (mono_arch_output_basic_block): Fix the changes to
8935         OP_X86_PUSH_OBJ. Fixes #434620.
8936
8937         * objects.cs: Add a test.
8938         
8939 2008-10-12  Rodrigo Kumpera  <rkumpera@novell.com>
8940
8941         * basic-simd.cs: Remove PackWithUnsignedSaturation tests as it turns out
8942         that the packuswb/packusdw don't work with unsigned numbers for what
8943         would be negative numbers in signed format.
8944
8945         * cpu-x86.md: Add doubleword forms of many ops and packing ones.
8946         Fix the len of fconv_to_r8_x and xconv_r8_to_i4.
8947
8948         * mini-ops.h: Add doubleword forms of many ops and packing ones.
8949
8950         * mini-x86.c: Emit doubleword forms of many ops and packing ones.
8951
8952         * simd-intrinsics.c (SimdIntrinsc): Rename the flags field to simd_version.
8953
8954         * simd-intrinsics.c (vector4f_intrinsics): Use simd_version field for sse3 ops.
8955
8956         * simd-intrinsics.c (vector4u_intrinsics): Rename to vector4ui_intrinsics and
8957         add more ops.
8958
8959         * simd-intrinsics.c (simd_version_name): New function, returns the name of the
8960         version as the enum in mini.h.
8961
8962         * simd-intrinsics.c (emit_intrinsics): Instead of having a special emit mode
8963         for sse3 ops, check the simd_version field if present. This way the code
8964         works with all versions of sse.
8965
8966 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
8967
8968         * simd-intrinsics.c: Fixed intrinsic name typo.
8969
8970         * mini.h: Added missing simd exported function.
8971
8972         * basic-simd.cs: Added tests for Vector4ui.
8973         Fixed broken test for Vector16b.
8974
8975 2008-10-10  Zoltan Varga  <vargaz@gmail.com>
8976
8977         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): Increase
8978         the max length to 64.
8979
8980 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8981
8982         * method-to-ir.c: Only do the fast virtual generic method call for
8983         non-wrapper methods.
8984
8985         * mini.h, mini-trampolines.c: The new generic virtual remoting
8986         trampoline handles virtual method calls via the vtable (as done by
8987         the fast virtual generic method calls) to remoting proxies.
8988
8989         * mini.c (mono_jit_create_remoting_trampoline): For generic
8990         methods reate a generic virtual remoting trampoline.
8991
8992         * mini-amd64.h: Enable fast virtual generic method calls again.
8993
8994 2008-10-10  Mark Probst  <mark.probst@gmail.com>
8995
8996         * mini-ppc.c: Use SP (r1), not frame_reg (which might be r31) to
8997         restore registers when doing tail calls.
8998
8999 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9000
9001         * simd-intrinsics.c (emit_intrinsics): Vector4u was renamed to
9002         Vector4ui.
9003
9004 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9005
9006         * basic-simd.cs: Add test for Vecto16b.PackWithUnsignedSaturation.
9007
9008 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9009
9010         * simd-intrinsics.c (emit_intrinsics): Retrofit to new type names.
9011
9012 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9013
9014         * basic-simd.cs: Retrofit for API changes.
9015
9016 2008-10-10  Mark Probst  <mark.probst@gmail.com>
9017
9018         * mini-ppc.c: Handle integer stack arguments for tail calls.
9019
9020 2008-10-10  Rodrigo Kumpera  <rkumpera@novell.com>
9021
9022         * optflags-def.h: Removed sse3 optimization.
9023
9024         * driver.c: Same.
9025
9026         * mini-x86.c (mono_arch_cpu_optimizazions): Remove detection of
9027         sse3.
9028
9029         * mini-x86.c: Added mono_arch_cpu_enumerate_simd_versions.
9030
9031         * mini.h: Added enumeration with simd versions.
9032
9033         * simd-intrinsics.c (emit_intrinsics): Use the new static var
9034         for detecting SSE3.
9035
9036         * simd-intrinsics.c: Added mono_simd_intrinsics_init.
9037
9038         * mini.c (mini_init): Call mono_simd_intrinsics_init.
9039
9040 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9041
9042         * basic-simd.cs: Added tests for Vector8u and Vector16u.
9043
9044         * basic-simd.cs: Fixed test naming.
9045
9046 2008-10-09  Rodrigo Kumpera  <rkumpera@novell.com>
9047
9048         * mini-ops.h: Added ops for packed and saturated math, shifts
9049         and packing/unpacking.
9050
9051         * cpu-x86.md: Added descriptors for the above ops.
9052
9053         * mini-x86.c: Added code to emmit the above ops.
9054
9055         * simd-intrinsics.c: Added support for Vector16u and Vector8u.
9056
9057 2008-10-08  Zoltan Varga  <vargaz@gmail.com>
9058
9059         * aot-compiler.c (compile_method): Enable AOT for generic code.
9060
9061         * ir-emit.h (NEW_DOMAINCONST): Use domainvars in AOT code as well.
9062
9063 Wed Oct 8 16:35:43 CEST 2008 Paolo Molaro <lupus@ximian.com>
9064
9065         * mini.c: add a workaround for a common screwup that ends up blamed
9066         to mono (other processes blocking signal delivery).
9067
9068 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9069
9070         * method-to-ir.c (mono_method_to_ir2): Clear ins_flag on all code paths
9071         in the LDFLD/STFLD opcodes. Fixes #432673.
9072
9073         * iltests.il.in: Add a new test.
9074
9075 Tue Oct 7 19:59:07 CEST 2008 Paolo Molaro <lupus@ximian.com>
9076
9077         * mini-arm.c: attach the thread in unmanaged->managed transitions
9078         using delegates (bug #433148).
9079
9080 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9081
9082        * basic-simd.cs: Use new ShuffleSel constants.
9083
9084 2008-10-07  Rodrigo Kumpera  <rkumpera@novell.com>
9085
9086         * driver.c (opt_sets): Added combinations of simd, sse2 and sse3.
9087
9088         * mini-x86.c (mono_arch_cpu_optimizazions): Detect sse3 and now
9089         only disable simd intrinsics if no sse2 is detected.
9090
9091         * optflags-def.h: Added sse3.
9092
9093         * simd-intrinsics.c: Avoid generated sse3 intrinsics if the optimization
9094         is disabled.
9095
9096 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9097
9098         * aot-compiler.c (add_wrappers): Fix Delegate/MulticastDelegate classes
9099         when adding delegate-invoke wrappers.
9100
9101 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9102
9103         * Makefile.am: Reenable the simd tests.
9104
9105 2008-10-07  Bill Holmes  <billholmes54@gmail.com>
9106
9107         * mini-amd64.c (mono_arch_emit_outarg_vt) : In the ArgValuetypeAddrInIReg case,
9108           add a call to mono_call_inst_add_outarg_reg for the arg->dreg to make sure that no
9109           other vreg is allocated to that hreg.
9110
9111         Contributed under MIT/X11 license.
9112
9113 2008-10-07  Zoltan Varga  <vargaz@gmail.com>
9114
9115         * Makefile.am: Disable the simd tests for now as Mono.Simd is not
9116         yet checked in.
9117
9118 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9119
9120         * basic-simd.cs: New test suite for SIMD intrinsics.
9121
9122         * Makefile.am: Added new tests.
9123
9124 2008-10-06  Rodrigo Kumpera  <rkumpera@novell.com>
9125
9126         * cpu-x86.md: Added new instructions to handle float to int using SSE regs.
9127
9128         * mini-ops.h: Same.
9129
9130         * mini-x86.h: Enable mono_arch_decompose_opts if simd intrinsics are enabled.
9131
9132         * mini-x86.c (mono_arch_decompose_opts): Decompose float to int conversion
9133         using SSE2 aware opcodes.
9134
9135         * mini-x86.c (emit_float_to_int): Disable the SSE2 optimization if OPT_SIMD
9136         is enabled, this code path is only reachable if conversion ops are emmited after
9137         mono_method_to_ir.
9138
9139         * mini.h: Added MonoCompile::fconv_to_r8_x_var to hold the float to int var.
9140
9141         This optimization saves 6 bytes per conversion against the old version.
9142
9143 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9144
9145         * aot-compiler.c (compile_method): Don't skip methods referencing 
9146         generic methods without a corresponding entry in token_info_hash, since
9147         encode_method_ref () can handle all generic methods now.
9148
9149         * method-to-ir.c (mono_save_token_info): Don't save the token info if a 
9150         generic context is set.
9151         
9152         * method-to-ir.c (mono_method_to_ir2): Put back a disable_aot for
9153         generic sharing of LDTOKEN.
9154
9155 2008-10-06  Mark Probst  <mark.probst@gmail.com>
9156
9157         * mini-amd64.h: Temporarily disabled fast virtual generic method
9158         calls because it breaks the System.Runtime.Remoting tests.
9159
9160 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9161
9162         * aot-compiler.c (add_wrappers): Add delegate-invoke wrappers.
9163
9164         * method-to-ir.c (check_inline_called_method_name_limit): Return TRUE
9165         so inlining actually works.
9166         (check_inline_caller_method_name_limit): Ditto.
9167
9168 Mon Oct 6 11:04:38 CEST 2008 Paolo Molaro <lupus@ximian.com>
9169
9170         * mini-ppc.c: mono_arch_flush_icache () cast pointer using gsize for
9171         64 bit safety (from Olaf Hering and Andreas Farber).
9172
9173 2008-10-06  Zoltan Varga  <vargaz@gmail.com>
9174         
9175         * mini-trampolines.c (mono_aot_trampoline): Delegate processing to
9176         mono_magic_trampoline () if aot_get_method_from_token () fails. Remove
9177         unused virtual call support code.
9178
9179         * aot-runtime.c (decode_method_ref): Add a 'no_aot_trampoline' out argument.
9180         
9181         * aot-runtime.c (mono_aot_get_method_from_vt_slot): Return NULL for methods
9182         which can't use aot trampolines.
9183         (decode_patch): Don't create aot trampolines for methods which can't use
9184         them.
9185
9186         * aot-compiler.c (encode_method_ref): Add a marker for methods which can't
9187         use aot trampolines.
9188
9189         * mini.h: Bump AOT image format version.
9190         
9191 2008-10-05  Zoltan Varga  <vargaz@gmail.com>
9192
9193         * method-to-ir.c (mono_method_to_ir2): Pass cil_method instead of cmethod
9194         to save_token_info () since cmethod is inflated for constrained calls.
9195
9196         * mini-<ARCH>.h mini-x86.c: Remove some unused defines.
9197
9198 2008-10-04  Andreas Farber  <andreas.faerber@web.de>
9199
9200         * Makefile.am: Add build rules for ppc64.
9201         This avoids the build failing at pedump with unresolved symbols
9202         due to lack of arch_sources. Instead it will now fail earlier
9203         due to lack of cpu-ppc64.md.
9204
9205         Contributed under MIT/X11 license.
9206
9207 2008-10-04  Mark Probst  <mark.probst@gmail.com>
9208
9209         * mini-amd64.c (mono_arch_emit_call): Support stack arguments for
9210         tail calls.
9211
9212         * iltests.il.in: Add test case for tail call with many arguments.
9213
9214 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9215
9216         * method-to-ir.c (mono_method_to_ir2): Add an !cfg->compile_aot assert
9217         to the fast virtual generic method code until the aot case is fixed.
9218
9219 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9220
9221         * mini-ppc.c, mini-ppc.h: Implement generic virtual method thunks.
9222
9223 2008-10-03  Mark Probst  <mark.probst@gmail.com>
9224
9225         * mini-amd64.c, mini-amd64.h: Implement generic virtual method
9226         thunks.
9227
9228 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9229         
9230         * simd-intrinsics.c: Forgot to add this one.
9231
9232         * mini-codegen.c: Fix macro in case SIMD is not supported.
9233
9234 2008-10-03  Rodrigo Kumpera  <rkumpera@novell.com>
9235         
9236         This patch land initial JIT support for simd intrinsics.
9237
9238         * mini-x86.h: Added new define to make --enable_minimal work on x86.
9239
9240         * Makefile.am: Added simd-intrinsics.c
9241
9242         * simd-intrinsics.c: New file with simd instrinsic related
9243         code.
9244
9245         * cfold.c (mono_constant_fold_ins2): Fold XZERO.
9246
9247         * cpu-x86.md: Add simd related instructions.
9248
9249         * driver.c: Added MONO_OPT_SIMD to the default set of optimizations.
9250
9251         * driver.c: Added two new --regression variants.
9252
9253         * ir-emit.h (MONO_EMIT_NEW_VZERO): Emit XZERO if the type is a simd intrinsic.
9254
9255         * local-propagation.c (mono_local_cprop2): Eliminate useless XMOVE.
9256
9257         * local-propagation.c (mono_local_deadce): Use new macro MONO_IS_NON_FP_MOVE and
9258         extract some complicated logic to helper functions.
9259
9260         * method-to-ir.c (mono_type_to_regmove): Handle simd intrinsics.
9261
9262         * method-to-ir.c (mini_emit_inst_for_method): Emit simd intrinsics.
9263
9264         * method-to-ir.c (mono_handle_global_vregs): If a simd intrinsic was found, apply
9265         the specialized simplification pass.
9266
9267         * method-to-ir.c (mono_spill_global_vars): Use new macro.
9268
9269         * mini-codegen.c: Added SIMD constants to all regbanks arrays.
9270
9271         * mini-codegen.c: Added reg_bank_table_init to initialize the reg desc -> bank
9272         table.
9273
9274         * mini-codegen.c: Define a version of the reg_bank macro that uses desc_to_reg_type
9275         if MONO_ARCH_NEED_SIMD_BANK is defined.
9276
9277         * mini-ops.h: Added the new simd ops.
9278
9279         * mini-x86.c: Added mono_arch_xregname.
9280
9281         * mini-x86.c (mono_arch_cpu_optimizazions): Disable MONO_OPT_SIMD if SSE3 is not detected.
9282
9283         * mini-x86.c (mono_arch_output_basic_block): Add simd related opcodes.
9284
9285         * mini-x86.h: Define simd related MONO_ARCH macros.
9286
9287         * mini.c (mono_type_to_load_membase): Handle simd intrinsics.
9288
9289         * mini.c (mono_type_to_store_membase): Handle simd intrinsics.
9290
9291         * mini.h: Added new macros MONO_IS_NON_FP_MOVE, MONO_IS_REAL_MOVE, MONO_IS_ZERO and
9292         MONO_CLASS_IS_SIMD to deal with simd related IR.
9293
9294         * mini.h (MonoInst): Added spill_var to the backend union.
9295
9296         * mini.h (MonoCompile): Added uses_simd_intrinsics and iconv_raw_var.
9297
9298         * mini.h: Added forward declarations of the new simd fuctions.
9299
9300         * optflags-def.h: Added new optimization names SIMD.
9301
9302         * regalloc.c (mono_regstate_reset): Set next vreg to be the max value of the 3 reg banks.
9303
9304         * regalloc.h: Added support for working with 3 register banks.
9305
9306         * regalloc.h (MonoRegState): Added xsymbolic field if a third regbank is required.
9307
9308         * ssa2.c (mono_ssa_deadce2): Use new MONO_IS_ZERO macro.
9309
9310 Fri Oct 3 16:03:22 CEST 2008 Paolo Molaro <lupus@ximian.com>
9311
9312         * mini-exceptions.c: remove 64 bit related ifdef clutter.
9313
9314 2008-10-03  Zoltan Varga  <vargaz@gmail.com>
9315
9316         * mini-exceptions.c (mono_handle_soft_stack_ovf): Unprotect two pages
9317         instead of one on 64 bit systems.
9318
9319         * method-to-ir.c: Remove unused includes.
9320
9321 2008-10-02  Zoltan Varga  <vargaz@gmail.com>
9322
9323         * aot-compiler.c (emit_exception_debug_info): Use jinfo->used_regs instead of
9324         cfg->used_int_regs, since the two are different on arm.
9325
9326 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9327
9328         * method-to-ir.c, inssel.brg, mini-trampolines.c: Use
9329         mono_method_get_vtable_index() to get the vtable index.
9330
9331 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9332
9333         * method-to-ir.c (mono_method_to_ir2): Don't create native
9334         wrappers for array methods, because they're never called (and if
9335         they were called they wouldn't work).
9336
9337 2008-10-02  Mark Probst  <mark.probst@gmail.com>
9338
9339         * method-to-ir.c (mono_method_to_ir2): Array methods are
9340         special-cased and must not be invoked indirectly via the (M)RGCTX
9341         when generic sharing is turned on.  Fixes #431413.
9342
9343 2008-10-01  Mark Probst  <mark.probst@gmail.com>
9344
9345         * method-to-ir.c: When generic sharing is active, call
9346         non-interface virtual generic methods via the standard trampoline.
9347
9348         * mini-trampolines.c: Handle virtual generic shared methods.
9349
9350         * mini.h, mini-x86.c, mini-x86.h: New argument for
9351         mono_arch_build_imt_thunk() which is non-NULL for virtual generic
9352         method thunks and which is the trampoline to call if the lookup
9353         fails.  Enable the virtual generic method thunk for x86.
9354
9355         * mini-amd64.c, mini-arm.c, mini-ia64.c, mini-sparc.c,
9356         mini-ppc.c (mono_arch_build_imt_thunk): Add the additional
9357         argument but assert that it's NULL, because these archs don't yet
9358         implement the virtual generic method thunk.  Changes in the IMT
9359         thunk data structures.
9360
9361 2008-10-01  Zoltan Varga  <vargaz@gmail.com>
9362
9363         * aot-compiler.c (emit_globals): Avoid invalid characters in
9364         the static linking symbol.
9365
9366         * objects.cs: Add a test for the range check optimization. Fix warnings.
9367
9368         * branch-opts.c (mono_if_conversion): Add back the 'optimize range checks'
9369         optimization from the current JIT.
9370
9371         * method-to-ir.c (mini_emit_inst_for_method): Decompose String.Length
9372         later in decompose_array_access_opts () to allow more optimizations.
9373
9374         * method-to-ir.c (mono_handle_soft_float): Rename this to 
9375         mono_decompose_soft_float () for consistency.
9376
9377         * mini-ops.h: Fix arguments of OP_STRLEN.
9378
9379         * method-to-ir.c (save_cast_details): Extract the cast details saving code
9380         into a separate function.
9381         (reset_cast_details): Ditto.
9382         (handle_unbox): Save cast details. Fixes #431254.
9383
9384         * method-to-ir.c: Remove some obsolete FIXMEs.
9385
9386 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9387
9388         * ir-emit.h (alloc_dreg): Write a warning before crashing.
9389
9390 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9391
9392         * mini-codegen.c: More work on macros to make them
9393         ready for multiple regbanks.
9394
9395 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9396
9397         * method-to.ir.c (mono_type_to_regmove): Remove static modifier.
9398
9399         * mini.h: Export mono_type_to_regmove. Fix signature of mono_regname_full.
9400
9401 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9402
9403         * mini-codegen.c (mono_spillvar_offset): Proper support for
9404         multiple regbanks.
9405
9406 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9407
9408         * mini-amd64.c (mono_arch_emit_epilog): Remove some duplicated code from
9409         the stack overflow changes.
9410
9411 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9412
9413         * mini-codegen.c: Make all bank macros depend on reg_bank.
9414
9415         * mini-codegen.c (mono_local_regalloc): Make free mask
9416         initialization regbank aware.
9417
9418 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9419
9420         * mini-codegen.c (mono_local_regalloc): Extract callee
9421         mask selection to a function and make it regbank aware.
9422
9423 2008-09-30  Rodrigo Kumpera  <rkumpera@novell.com>
9424
9425         * mini-codegen.c (mono_local_regalloc): Changed the cloberring
9426         code to deal with many regbanks.
9427
9428 2008-09-30  Zoltan Varga  <vargaz@gmail.com>
9429
9430         * mini-codegen.c: More fp->regbank changes.
9431
9432 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9433
9434         * mini-codegen.c: Change asserts to use MONO_NUM_REGBANKS instead
9435         of a hardcoded constant.
9436
9437 2008-09-29  Rodrigo Kumpera  <rkumpera@novell.com>
9438
9439         * method-to-ir.c (type_from_stack_type): Fix typo.
9440
9441 2008-09-29  Zoltan Varga  <vargaz@gmail.com>
9442
9443         * mini-ia64.c (emit_move_return_value): Convert float return values to
9444         double.
9445
9446         * objects.cs: Add a new test.
9447         
9448         * mini-ia64.c (mono_arch_allocate_vars): Disable fp elimination for
9449         VARARG methods to fix an assert later.
9450
9451         * mini-mips.h mini-mips.c mini-ops.h cpu-mips.md: Update the mips back
9452         end so it at least compiles.
9453
9454 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9455
9456         * method-to-ir.c (emit_optimized_ldloca_ir): Fix this.
9457
9458 2008-09-28  Rodrigo Kumpera  <rkumpera@novell.com>
9459
9460         * method-to-ir.c (mono_method_to_ir2): Extract the ldloca + initobj
9461         optimization to a new function (emit_optimized_ldloca_ir) and enable
9462         it for both ldloca and ldloca_s.
9463
9464 2008-09-28  Zoltan Varga  <vargaz@gmail.com>
9465
9466         * method-to-ir.c (mono_method_to_ir2): Remove an unnecessary assert in the
9467         gshared CASTCLASS code.
9468
9469         * driver.c (mono_main): Add a workaround for shutdown crashes seen on
9470         amd64, where the libc stack unwinder encounters stack frames referring to
9471         native code in unmapped memory.
9472
9473         * method-to-ir.c (mini_emit_check_array_type): Add support for generic
9474         sharing.
9475
9476         * generics.cs: Add new test.
9477
9478 2008-09-27  Zoltan Varga  <vargaz@gmail.com>
9479
9480         * mini-arm.h driver.c: Print the fp model when using --version on arm. Also,
9481         add a check that one of the ARM_FPU_ constants is defined.
9482
9483         * mini-exceptions.c (mono_handle_soft_stack_ovf): Really fix the build.
9484         
9485         * mini-exceptions.c: Fix build on non-altstack platforms.
9486
9487         * method-to-ir.c (mono_method_to_ir2): Fix aot support for the
9488         sharing of vtypes.
9489
9490         * ir-emit.h: Add a comment to NEW_PCONST.
9491
9492         * mini-exceptions.c (mono_altstack_restore_prot): Fix a warning.
9493
9494         * mini.h (MonoJitDomainInfo): Move some fields here from MonoDomain.
9495
9496         * mini.c aot-runtime.c method-to-ir.c driver.c mini-trampolines.c: Update
9497         after the changes to MonoJitDomainInfo.
9498
9499 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9500
9501         * mini-ppc.c, tramp-ppc.c, mini-ppc.h: Implement generic code sharing.
9502
9503 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9504
9505         * mini-ppc.c: Compiler warning fixes.
9506
9507 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9508
9509         * mini-ppc.c: Special handling for 1/2 byte structs on Darwin only
9510         for pinvokes.
9511
9512 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9513
9514         * exceptions-ppc.c, mini-ppc.h: Compile
9515         mono_arch_handle_altstack_exception() on Darwin, too.
9516
9517 2008-09-27  Mark Probst  <mark.probst@gmail.com>
9518
9519         * method-to-ir.c (mono_emit_rgctx_method_call_full): Must also
9520         work on archs which don't have generic sharing implemented, only
9521         without the vtable_arg.
9522
9523 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9524
9525         * mini.c: Added comment explaining why delegate ctor icall
9526         wrappers are compiled.
9527
9528 2008-09-26  Mark Probst  <mark.probst@gmail.com>
9529
9530         * mini.c: Don't produce trampolines to delegate ctor icall
9531         wrappers but compile them upfront.
9532
9533 Fri Sep 26 17:00:46 CEST 2008 Paolo Molaro <lupus@ximian.com>
9534
9535         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: amd64 support code for calling a
9536         runtime-set function when going back to managed code. Currently this
9537         is used to set back the protection on the soft ovf pages and/or to
9538         throw the stack overflow exception that happened in unmanaged code.
9539
9540 Fri Sep 26 16:46:23 CEST 2008 Paolo Molaro <lupus@ximian.com>
9541
9542         * tramp-x86.c, mini-x86.h, mini-x86.c: x86 support code for calling a
9543         runtime-set function when going back to managed code. Currently this
9544         is used to set back the protection on the soft ovf pages and/or to
9545         throw the stack overflow exception that happened in unmanaged code.
9546
9547 Fri Sep 26 16:34:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
9548
9549         * mini.h, mini.c, mini-trampolines.c, mini-exceptions.c: added
9550         the support code for restoring stack protection after stack overflows
9551         that happen in unmanaged code. Don't set the exec permission on the
9552         soft overflow area.
9553
9554 2008-09-26  Zoltan Varga  <vargaz@gmail.com>
9555
9556         * mini-trampolines.c (mono_delegate_trampoline): Add wrappers even if
9557         delegate->method_ptr is set. Fixes #428054.
9558
9559 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9560
9561         * tests.cs: Rename to ratests.cs.
9562
9563         * method-to-ir.c: Merge the emit_get_rgctx () calls into the 
9564         emit_get_rgctx_... functions.
9565
9566 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9567
9568         * method-to-ir.c: Eliminated macro EMIT_GET_RGCTX.
9569
9570 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9571
9572         * mini-trampolines.c (mono_magic_trampoline): Unwrap wrappers
9573         before asserting that method is sharable.
9574
9575 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9576
9577         * method-to-ir.c, mini.c, jit-icalls.c: New function for checking
9578         whether method needs a static RGCTX wrapper used instead of
9579         complex conditions.
9580
9581         * generic-sharing.c, mini.h: A few functions moved to
9582         metadata/generic-sharing.c.
9583
9584 2008-09-25  Mark Probst  <mark.probst@gmail.com>
9585
9586         * method-to-ir.c, mini.c, mini-exceptions.c, mini-trampolines.c:
9587         Generic code sharing for value types, which essentially means
9588         treating value type methods like static methods.  The RGCTX is
9589         passed in the same way.
9590
9591 2008-09-25  Zoltan Varga  <vargaz@gmail.com>
9592
9593         * method-to-ir.c (mono_method_to_ir2): Avoid an assert in the NEWOBJ
9594         opcode when creating multi-dimensional arrays of open types.
9595
9596         * generic-sharing.c (mono_method_check_context_used): Handle arrays of
9597         open generic types.
9598
9599         * generics.cs: Add a test.
9600
9601         * mini-codegen.c: Use macros everywhere for checking floats instead of == 'f'.
9602
9603 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9604
9605         * mini.h (MonoCompile): Add 'disable_vreg_to_lvreg' flag.
9606
9607         * mini.c (mini_method_compile): Set it when running under the debugger. 
9608
9609         * method-to-ir.c (mono_handle_global_vregs): Disable global->local
9610         vreg optimization if the flag is set.
9611
9612         * driver.c (mono_main): Add --attach= option to pass options to
9613         the attach agent.
9614
9615         * mini.c (sigquit_signal_handler): Start the attach agent.
9616
9617         * ssapre.c: Disable this to save space since it is not yet ported to
9618         linear IR.
9619
9620         * regalloc2.c: Disable this to save space.
9621
9622         * mini.h (MonoJitStats): Remove unused analyze_stack_repeat.
9623
9624 Wed Sep 24 16:01:49 CEST 2008 Paolo Molaro <lupus@ximian.com>
9625
9626         * decompose.c, method-to-ir.c, mini-codegen.c, regalloc2.c: make
9627         the -v option useful again.
9628
9629 2008-09-24  Zoltan Varga  <vargaz@gmail.com>
9630
9631         * mini-amd64.c (mono_arch_output_basic_block): Add support for
9632         --break-at-bb.
9633
9634         * inssel.brg (mini_emit_castclass): Avoid the szarray!=array checks for
9635         arrays of arrays. Fixes #428406.
9636
9637         * method-to-ir.c (mini_emit_castclass): Ditto.
9638
9639         * objects.cs: Add new test.
9640         
9641 2008-09-23  Rodrigo Kumpera  <rkumpera@novell.com>
9642
9643         * method-to-ir.c (type_to_eval_stack_type): The code path for the new JIT
9644         was wrong at it choked against target_type_is_incompatible for byref types.
9645
9646 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9647
9648         * mini-codegen.c: Use 'bank' macros instead of 'is_fp' macros in most 
9649         places.
9650
9651 Tue Sep 23 15:31:45 CEST 2008 Paolo Molaro <lupus@ximian.com>
9652
9653         * mini-exceptions.c: update a few more exceptions-related counters.
9654
9655 Tue Sep 23 15:28:29 CEST 2008 Paolo Molaro <lupus@ximian.com>
9656
9657         * aot-runtime.c, method-to-ir.c, mini.c, mini-trampolines.c: use the
9658         new functions to allocate from persistent mempools.
9659
9660 2008-09-23  Zoltan Varga  <vargaz@gmail.com>
9661
9662         * mini.h regalloc.h mini-codegen.c: Generalize the regalloc code to allow 
9663         multiple register banks in the future.
9664
9665         * mini-codegen.c (mono_local_regalloc): Fix a warning.
9666
9667 2008-09-22  Rodrigo Kumpera  <rkumpera@novell.com>
9668
9669         * mini.c (type_to_eval_stack_type): Remove duplicated function.
9670
9671         * method-to-ir.c (type_to_eval_stack_type): Make this version compatible with both JIT.
9672
9673         * mini.h: Export type_to_eval_stack_type.
9674
9675         This function was nearly duplicated in method-to-ir.c and mini.c. The difference
9676         is only ins->klass of byref types.
9677
9678 2008-09-22  Zoltan Varga  <vargaz@gmail.com>
9679
9680         * method-to-ir.c (mini_emit_memset): Use a default alignment of 4.
9681         (mini_emit_memcpy2): Ditto.
9682
9683         * mini-amd64.c: Fix a warning.
9684
9685 2008-09-21  Mark Probst  <mark.probst@gmail.com>
9686
9687         * exceptions-ppc.c (mono_arch_get_call_filter): Fixed stack frame
9688         linking.
9689
9690 2008-09-19  Rodrigo Kumpera  <rkumpera@novell.com>
9691
9692         * method-to-ir.c: Extract stloc micro-optimization to a
9693         function and apply it to all cases.
9694
9695 2008-09-19  Mark Probst  <mark.probst@gmail.com>
9696
9697         * method-to-ir.c: Don't fail generic code sharing in cases we
9698         already support.
9699
9700 2008-09-18  Mark Probst  <mark.probst@gmail.com>
9701
9702         * mini-ppc.c: Handle structs in tailcalls on Darwin.
9703
9704 Tue Sep 16 21:07:11 CEST 2008 Paolo Molaro <lupus@ximian.com>
9705
9706         * *.c, *.md, mini-ops.h: introduced relaxed_nop opcode for spin wait
9707         implementation.
9708
9709 Tue Sep 16 16:39:16 CEST 2008 Paolo Molaro <lupus@ximian.com>
9710
9711         * trace.c: make tracing more useful and correct, with per-thread
9712         id and indent info.
9713
9714 2008-09-15  Mark Probst  <mark.probst@gmail.com>
9715
9716         * mini-ppc.c (mono_arch_emit_call): Convert floats to R4 when
9717         doing a method call and the argument is an R4.
9718
9719 2008-09-14  Zoltan Varga  <vargaz@gmail.com>
9720
9721         * aot-compiler.c (add_wrappers): Do not generate runtime invoke wrappers for
9722         generic methods.
9723
9724 2008-09-13  Mark Probst  <mark.probst@gmail.com>
9725
9726         * mini-ppc.c: Convert result to single for OP_ICONV_TO_R4.
9727
9728 2008-09-12  Zoltan Varga  <vargaz@gmail.com>
9729
9730         * mini.h (MONO_IS_JUMP_TABLE): Handle GOT_ENTRY.
9731         (MONO_JUMP_TABLE_FROM_INS): Ditto.
9732
9733 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9734
9735         * driver.c: Add a --agent argument (not supported yet) to load managed
9736         agent assemblies before loading the main assembly, similarly to how the
9737         Java VM handles agents.
9738
9739 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9740
9741         * mini-ppc.c (mono_arch_allocate_vars): Use arch-independent
9742         function to do stack layout of local variables.
9743
9744 2008-09-11  Mark Probst  <mark.probst@gmail.com>
9745
9746         * mini-ppc.c (calculate_sizes): Bugfix in sigcookie position
9747         calculation.
9748
9749 2008-09-11  Zoltan Varga  <vargaz@gmail.com>
9750
9751         * method-to-ir.c ssa2.c mini.c mini-amd64.c decompose.c ssa.c abcremoval.c
9752         abcremoval2.c branch-opts.c driver.c dominators.c: Disable parts of the
9753         JIT if DISABLE_JIT is defined.
9754
9755         * Makefile.am: Avoid compiling/linking in inssel.c if DISABLE_JIT is
9756         defined.
9757
9758 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9759
9760         * iltests.il.in: Disable the fconv test on PPC (the result is
9761         undefined according to ECMA).
9762
9763 2008-09-10  Mark Probst  <mark.probst@gmail.com>
9764
9765         * iltests.il.in: Enable tail call tests for PPC.
9766
9767         * mini.h: Add variable for storing incoming valuetype argument
9768         addresses for tail calls.
9769
9770         * mini-ppc.c: Implement valuetype arguments and return values for
9771         tailcalls on Linux.
9772
9773 2008-09-09  Mark Probst  <mark.probst@gmail.com>
9774
9775         * mini-ppc.c: Partially implement tail calls (struct arguments and
9776         return values not supported).
9777
9778         * method-to-ir.c: Enable tail calls on PPC.
9779
9780 2008-09-08  Zoltan Varga  <vargaz@gmail.com>
9781
9782         * aot-compiler.c (emit_wrapper_info): Omit the klass name from
9783         runtime-invoke wrappers to work around the problem of them getting
9784         assigned to a random class.
9785
9786         * aot-runtime.c (mono_aot_get_method): Ditto.
9787         
9788 2008-09-07  Zoltan Varga  <vargaz@gmail.com>
9789
9790         * mini-exceptions.c mini-mips.h mini-s390.h exceptions-mips.c: Kill
9791         the CUSTOM_EXCEPTION_HANDLING and CUSTOM_STACK_WALK defines.
9792
9793 2008-09-07  Mark Probst  <mark.probst@gmail.com>
9794
9795         * method-to-ir.c (mono_method_to_ir2): Disable tail calls for PPC
9796         until they're implemented properly.
9797
9798         * exceptions-ppc.c: Use arch-independent exception-handling code
9799         instead of custom one.
9800
9801         * exceptions-ppc.c, mini-ppc.c, mini-ppc.h: Bug fixes and changes
9802         for Linear IR.
9803
9804         * tramp-ppc.c, mini-ppc.c: Fixed warnings.
9805
9806         * decompose.c, aot-runtime.c, aot-compiler.c: PPC code also
9807         applies when __powerpc__ is defined.
9808
9809 2008-09-06  Zoltan Varga  <vargaz@gmail.com>
9810
9811         * aot-runtime.c (mono_aot_get_method): Add another cache mapping wrapper
9812         methods to their code to avoid computing the full name of wrappers and
9813         doing a lookup in a string hash table.
9814
9815 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9816
9817         * method-to-ir.c: Remove the CHECK_BBLOCK () stuff it is not needed since
9818         we identify bblocks before method_to_ir () is ran.
9819
9820         * branch-opts.c (mono_optimize_branches): Avoid nullifying the exit bblock.
9821         Also avoid optimizing branches pointing to themselves.
9822
9823         * mini.c (mini_method_compile): Ditto. Fixes #422947.
9824
9825 2008-09-05  Rodrigo Kumpera  <rkumpera@novell.com>
9826
9827         * driver.c (mono_main): Enable the new verifier under core-clr and cas.
9828
9829 2008-09-05  Zoltan Varga  <vargaz@gmail.com>
9830
9831         * tramp-arm.c (mono_arch_nullify_class_init_trampoline): Implement this.
9832         (mono_arch_patch_plt_entry): Fix the calculation of the jump_entry.
9833         (mono_arch_get_nullified_class_init_trampoline): Return 'code' instead of
9834         'buf'.
9835
9836         * aot-compiler.c (emit_plt): Fix the arm plt entries, previously they all 
9837         jumped to the same entry in plt_jump_table.
9838
9839 2008-09-02  Rodrigo Kumpera  <rkumpera@novell.com>
9840
9841         * method-to-ir.c (initialize_array_data): Handle field with RVA from
9842         dynamic images.
9843
9844 2008-08-31  Zoltan Varga  <vargaz@gmail.com>
9845
9846         * method-to-ir.c (handle_isinst): Do the assignment at the beginning, so the
9847         other assignment can be if converted. Saves 1.5% on corlib size and fixes
9848         #421807.
9849
9850 2008-08-29  Geoff Norton  <gnorton@novell.com>
9851
9852         * aot-compiler.c: The Mach/ARM compiler doesn't understand the bss
9853         segment, and doesn't properly handle .space as .text.  Fixes
9854         AOT Mach/ARM
9855
9856 2008-08-29  Geoff Norton  <gnorton@novell.com>
9857
9858         * mini.c: Disable the mach exception handler when running on 
9859         ARM
9860
9861 2008-08-29  Geoff Norton  <gnorton@novell.com>
9862
9863         * aot-compiler.c: Patch from Renaldas Zioma to properly register 
9864         globals on Darwin/ARM
9865
9866 2008-08-28  Zoltan Varga  <vargaz@gmail.com>
9867
9868         * mini.c: Avoid not initializing the runtime when doing AOT compilation, 
9869         since too many things depend on it. Instead, call 
9870         mono_runtime_set_no_exec ().
9871         
9872         * mini.c (mono_create_tls_get): Call mono_alloc_preg (cfg) when running with
9873         the new JIT.
9874
9875         * aot-compiler.c: Add an 'asm-only' AOT option.
9876
9877         * mini.c: Avoid initializing the runtime when doing AOT compilation.
9878                 
9879         * aot-compiler.c (compile_method): Disable gshared support for now as it
9880         doesn't yet work.
9881
9882 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9883
9884         * mini-amd64.h : Fix a compiler warning.
9885
9886         * exceptions-amd64.c (mono_arch_unwindinfo_install_unwind_info) :
9887           Changed to use a callback function to retrieve the unwind info.
9888           This avoids problems observed when code blocks were removed by
9889           unloading an app domain.
9890
9891         * mini-amd64.c (mono_arch_cpu_optimizazions) : Removing the peephole 
9892           and branch excludes for Winx64.  The fix in exceptions-amd64.c allows them
9893           to work properly.
9894
9895         Contributed under MIT/X11 license.
9896
9897 2008-08-27  Bill Holmes  <billholmes54@gmail.com>
9898
9899         * mini-amd64.c (mono_arch_output_basic_block) : Fix the OP_X86_PUSH_OBJ
9900           case to keep the stack aligned to 8.
9901
9902         Contributed under MIT/X11 license.
9903
9904 2008-08-26  Zoltan Varga  <vargaz@gmail.com>
9905
9906         * aot-runtime.c (mono_aot_get_method): Add a cache for wrapper names to
9907         avoid repeated linear searches.
9908
9909 2008-08-25  Zoltan Varga  <vargaz@gmail.com>
9910
9911         * aot-compiler.c (add_wrappers): Avoid calling get_runtime_invoke with
9912         methods it can't handle.
9913         
9914         * aot-compiler.c (add_method): Avoid adding a method twice.
9915         (add_wrappers): Add runtime invoke wrappers for all methods.
9916
9917         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline_full): New
9918         function to create an aot-compatible version of this trampoline.
9919
9920         * aot-compiler.c aot-runtime.c: Add support for AOT rgctx fetch trampolines.
9921
9922 2008-08-24  Zoltan Varga  <vargaz@gmail.com>
9923
9924         * aot-compiler.c (compile_method): Skip wrappers of generic icalls.
9925
9926         * method-to-ir.c (mono_method_to_ir2): Replace an assert in UNBOX_ANY
9927         with a generic sharing failure.
9928
9929         * aot-compiler.c (emit_klass_info): Call mono_class_get_nested_types ().
9930
9931         * method-to-ir.c (mono_method_to_ir2): Rethrow the correct exception in
9932         CEE_RETHROW. Fixes #419634.
9933
9934         * mini.c (mono_method_to_ir): Ditto.
9935
9936         * exceptions.cs: Add a new test.
9937         
9938         * generic-sharing.c (mini_type_stack_size): Always pass TRUE as allow_open
9939         to mono_type_stack_size_internal () since some callers might not pass in
9940         an rgctx.
9941
9942         * mini-x86.c (mono_arch_emit_prolog): Store the rgctx before calling
9943         instrument_prolog. Fixes #419878.
9944
9945         * mini.c (mono_compile_create_var_for_vreg): Make the lvars representing
9946         doubles in soft float mode volatile.
9947
9948 2008-08-23  Zoltan Varga  <vargaz@gmail.com>
9949
9950         * ir-emit.h (NEW_ARGSTORE): Use cfg->args and cfg->arg_types to fix the build.
9951
9952         * method-to-ir.c (mono_save_args): Use ARGSTORE instead of TEMPSTORE
9953         to handle soft float correctly.
9954
9955         * tramp-arm.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Implement
9956         the fast path.
9957
9958         * mini.h (struct MonoCallInst): Add dynamic_imt_arg boolean field.
9959
9960         * exceptions-arm.c (mono_arch_find_jit_info): Set ctx->regs [ARMREG_R11]
9961         to sp, since the generics catch code requires it.
9962
9963         * mini-arm.h (MONO_ARCH_VTABLE_REG): Use R0 for this to avoid needless
9964         copying.
9965
9966         * method-to-ir.c (emit_imt_argument): Pass imt_arg to 
9967         mono_arch_emit_imt_argument ().
9968
9969         * mini-<ARCH>.c (mono_arch_emit_imt_argument): Add an 'imt_arg' argument.
9970
9971         * mini-arm.c tramp-arm.c: Generic sharing updates.
9972
9973 2008-08-22  Zoltan Varga  <vargaz@gmail.com>
9974
9975         * mini-arm.c: Fix the arm build.
9976
9977         * generic-sharing.c (mini_type_get_underlying_type): New helper function
9978         handling enums, generic instances and generic sharing.
9979         (mini_type_stack_size_full): Ditto.
9980
9981         * mini-amd64.c mini-x86.c mini-arm.c: Use the new functions.
9982         
9983         * mini.h (struct): Add 'uses_rgctx_reg' and 'uses_vtable_reg' fields.
9984
9985         * method-to-ir.c: Set the new fields when using RGCTX_REG/VTABLE_REG.
9986
9987         * tramp-arm.c: Implement the rgctx fetch and the generic class init 
9988         trampolines.
9989
9990         * mini-arm.c: Various small generic sharing changes.
9991
9992         * tramp-x86.c (mono_arch_create_generic_class_init_trampoline): Implement
9993         this for x86.
9994         (mono_arch_create_trampoline_code): Remove most of the GENERIC_CLASS_INIT
9995         custom code.
9996
9997         * mini-trampolines.c (mono_create_generic_class_init_trampoline): New
9998         helper function to return a generic class init trampoline.
9999
10000         * method-to-ir.c mini.c: Use it.
10001         
10002         * tramp-amd64.c (mono_arch_create_generic_class_init_trampoline): New
10003         arch-specfic function to return a generic class init trampoline.
10004
10005         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Remove most of
10006         the GENERIC_CLASS_INIT custom code.
10007
10008         * method-to-ir.c (mono_method_to_ir2): If RGCTX_REG is not defined, that is
10009         a fatal error, not a sharing failure.
10010
10011         * tramp-<ARCH>.c (mono_arch_get_rgctx_lazy_fetch_offset): Removed, no longer
10012         needed.
10013
10014         * mini-trampolines.c (mono_rgctx_lazy_fetch_trampoline): Get the additional
10015         trampoline argument from MONO_ARCH_VTABLE_REG.
10016
10017         * tramp-x86.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10018         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10019         argument, and pass the vtable in VTABLE_REG.
10020
10021         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Change the
10022         order of the arguments to the C trampoline: pass 'slot' as the trampoline
10023         argument, and pass the vtable in VTABLE_REG.
10024         (mono_arch_create_trampoline_code_full): Remove some special casing for
10025         the rgctx fetch trampoline.
10026
10027         * mini.c (mono_method_to_ir): Fix the STELEM_ANY+null value optimization.
10028         Fixes #419273.
10029
10030         * iltests.il: Add a test for it.
10031
10032 2008-08-21  Zoltan Varga  <vargaz@gmail.com>
10033
10034         * aot-compiler.c (compile_method): Enable AOT support for generics sharing.
10035
10036         * method-to-ir.c (mono_method_to_ir2): Remove an aot restriction which is
10037         no longer needed.
10038
10039         * mini-trampolines.c (mono_magic_trampoline): Add a sync wrapper here,
10040         use mono_jit_info_table_find () to avoid recursion.
10041         (mono_delegate_trampoline): Add a sync wrapper here.
10042
10043         * method-to-ir.c (mono_method_to_ir2): Don't call mono_ldftn_nosyc
10044         here.
10045
10046         * mini.c (mono_method_to_ir): Ditto.
10047         
10048         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Remove
10049         add_sync_wrapper argument. Don't add a sync wrapper here.
10050         (mono_create_jump_trampoline): Don't add a sync wrapper here.
10051
10052         * jit-icalls.c (mono_ldftn_nosync): Removed, no longer needed.
10053         
10054 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10055
10056         * exceptions-amd64.c (seh_handler):  For Winx64 adding missing copy 
10057           of nonvolatile registers back from MonoContext to CONTEXT.
10058
10059         Contributed under MIT/X11 license.
10060
10061 2008-08-20  Bill Holmes  <billholmes54@gmail.com>
10062
10063         * mini-amd64.c (mono_arch_get_delegate_invoke_impl):  When shifting the
10064           arguments on Winx64 there are only 4 argument registers.  For this
10065           logic to work the last argument must be pulled from the stack.  
10066
10067         Contributed under MIT/X11 license.
10068
10069 2008-08-20  Zoltan Varga  <vargaz@gmail.com>
10070
10071         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10072
10073         * aot-runtime.c aot-compiler.c patch-info.h mini.c: Get rid of
10074         MONO_PATCH_INFO_WRAPPER, encode/decode wrapper methods like the others in
10075         encode/decode_method_ref ().
10076
10077         * aot-compiler.c (encode_patch): Handle STATIC_RGCTX_INVOKE wrappers.
10078
10079         * aot-runtime.c (decode_patch): Ditto.  
10080
10081         * mini.c (mono_resolve_patch_target): Handle RGCTX_FETCH sub-patches of type
10082         MONO_PATCH_INFO_METHOD.
10083
10084         * aot-runtime.c (decode_exception_debug_info): Decode the contents of
10085         MonoGenericJitInfo.
10086
10087         * aot-compiler.c (emit_exception_debug_info): Emit the contents of
10088         MonoGenericJitInfo.
10089
10090         * method-to-ir.c (emit_imt_argument): Fix AOT+gshared support.
10091
10092         * mini-amd64.c (add_valuetype): Use a dummy gsctx if we didn't receive
10093         one from the caller.
10094
10095         * aot-runtime.c (decode_generic_inst): New function to decode and
10096         return a interned generic inst.
10097         (decode_klass_ref): Use it.
10098         (decode_method_ref): Ditto.
10099
10100         * aot-compiler.c (emit_exception_debug_info): Save 
10101         jinfo->has_generic_jit_info too.
10102
10103 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10104
10105         * mini-ia64.c (mono_arch_output_basic_block): Add OP_FCONV_TO_I.
10106
10107         * iltests.il.in: Add a test for fconv_to_i.
10108
10109         * liveness.c: Disable the liveness2 pass for now to save space.
10110
10111         * regalloc2.c: Include mempool-internals.h to fix warnings.
10112
10113         * aot-compiler.c (encode_method_ref): Encode the context of generic
10114         instance methods.
10115
10116         * aot-runtime.c (decode_method_ref): Inflate generic methods using
10117         the context saved in the aot file.
10118
10119         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
10120
10121         * mini-x86.c (mono_arch_output_basic_block): Disable AOT for OP_JMP.
10122
10123         * method-to-ir.c (mono_method_to_ir2): When using CEE_JMP, make arguments
10124         volatile so they won't be optimized away.
10125
10126 2008-08-19  Rodrigo Kumpera  <rkumpera@novell.com>
10127
10128         * ssa.c:
10129         * ssa2.c:
10130         * mini.c:
10131         * regalloc2.c:
10132         * dominators.c: Remove duplicated functions that now are in
10133         mempool-internals.h.
10134
10135 2008-08-19  Zoltan Varga  <vargaz@gmail.com>
10136
10137         * aot-compiler.c: Fix warnings.
10138
10139         * aot-runtime.c (decode_klass_ref): Add support for VARs/MVARs.
10140
10141         * aot-compiler.c (encode_klass_ref): Encode is_method too for VARs/MVARs.
10142
10143         * method-to-ir.c (emit_get_rgctx_method): Use MONO_PATCH_INFO_METHODCONST
10144         as the patch type.
10145
10146         * mini.c (mono_resolve_patch_target): Ditto.
10147         
10148         * aot-compiler.c (encode_patch): Add support for RGCTX_FETCH.
10149         (encode_klass_ref): Add support for encoding VARs/MVARs.
10150
10151         * mini.c (mono_patch_info_dup_mp): Handle RGCTX_FETCH.
10152
10153         * aot-runtime.c (decode_patch_info): Rename to 'decode_patch'. Split out
10154         the handling of the got entries into a separate 'decode_got_entry' function.
10155         Add support for RGCTX_FETCH.
10156
10157         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RDI since RAX is
10158         clobbered by the trampoline code.
10159
10160         * tramp-amd64.c mini-amd64.h: Change the VTABLE_REG to RAX since that is
10161         not clobbered by the indirect calling code.
10162
10163 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10164
10165         * mini-x86.c (mono_arch_patch_code): Handle RGCTX_FETCH/GENERIC_CLASS_INIT
10166         to fix the build.
10167
10168 2008-08-18  Rodrigo Kumpera  <rkumpera@novell.com>
10169
10170         * method-to-ir.c (mono_emit_method_call_full): Alloc the constructor
10171         signature using the compilation mempool otherwise we would leak it.
10172
10173 2008-08-18  Zoltan Varga  <vargaz@gmail.com>
10174
10175         * method-to-ir.c (mono_method_to_ir2): Emit the generic class inits using
10176         mono_emit_abs_call ().
10177
10178         * patch-info.h: Add GENERIC_CLASS_INIT.
10179
10180         * mini.c (mono_resolve_patch_target): Handle GENERIC_CLASS_INIT.
10181
10182         * mini-amd64.c (emit_call_body): Treat abs calls which have a patch info
10183         as their target as a near call.
10184
10185         * mini.c (mono_codegen): Handle patches stored in cfg->abs_patches in the
10186         ABS handling code.
10187         (mono_resolve_patch_target): Add support for MONO_PATCH_INFO_RGCTX_FETCH.
10188
10189         * method-to-ir.c (mono_emit_abs_call): New helper function which emits a
10190         call to a runtime function described by a patch.
10191
10192         * method-to-ir.c: Emit rgctx entry fetches and class init trampolines using
10193         mono_emit_abs_call, this has the advantage that the ABS handling code in
10194         mono_codegen () can handle them both, and can handle other stuff in the
10195         future without additional code.
10196
10197         * mini.h (struct MonoJumpInfoRgctxEntry): New structure describing an rgctx
10198         entry.
10199         (MonoCompile): Add 'abs_patches' hashtable, which contains patches describing
10200         abs addresses.
10201
10202         * mini.h: Add missing bblock related prototypes.
10203
10204         * mini.h (MonoCompile): Remove unused reverse_inst_list and
10205         reverse_inst_list_len fields.
10206
10207         * mini.c: Refactor this file a bit by moving branch optimizations to 
10208         branch-opts.c.
10209
10210         * method-to-ir.c: Merge generic sharing changes missed earlier.
10211
10212         * aot-compiler.c (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST.
10213
10214         * aot-runtime.c (decode_patch_info): Refactor the code dealing with the
10215         shared patches. Process METHODCONST as a shared patch.
10216
10217         * liveness.c (mono_analyze_liveness): Disable the liveness2 code for now
10218         as it crashes on the 2.0 mscorlib.
10219
10220         * aot-compiler.c (is_shared_got_patch): Revert the last change as it seems
10221         to cause crashes.
10222         
10223         * aot-compiler.c: Use is_plt_patch () in a few additional places.
10224         (is_shared_got_patch): Add MONO_PATCH_INFO_METHODCONST, which is generated
10225         by IMT.
10226
10227         * aot-compiler.c: Reorganize the got handling code to be a bit more
10228         understandable.
10229
10230 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10231
10232         * aot-compiler.c: Make the patch_to_plt_offset hash table use 
10233         mono_patch_info_equals/hash, and use it to massively simplify
10234         get_plt_index ().
10235
10236         * mini.c (mono_patch_info_hash): Simplify this and add support for
10237         more patch types.
10238
10239         * patch-info.h: Rename RGCTX_LAZY_FETCH_TRAMPOLINE to just RGCTX_FETCH.
10240
10241         * mini.c aot-compiler.c aot-runtime.c: Revert the LAZY_FETCH_TRAMPOLINE
10242         handling code, since an offset is not enough to identify a trampoline.
10243
10244         * method-to-ir.c: Remove some g_assert (!cfg->compile_aot) lines.
10245
10246 2008-08-17  Mark Probst  <mark.probst@gmail.com>
10247
10248         * mini.c (mono_op_imm_to_op): Add case for OP_IMUL_IMM.
10249
10250         * method-to-ir.c (mono_method_to_ir2): Decompose OP_CKFINITE.
10251
10252         * mini-ops.h: Argument and result types for OVF_CARRY ops.
10253
10254         * decompose.c: PPC decompositions for various ops.
10255
10256         * cpu-ppc.md, inssel-ppc.brg, mini-ppc.c: PPC changes for Linear IL.
10257
10258 2008-08-17  Zoltan Varga  <vargaz@gmail.com>
10259
10260         * tramp-amd64.c (mono_arch_create_rgctx_lazy_fetch_trampoline): Make this
10261         call the generic trampoline code using a call, instead of a jump, to
10262         remove some special casing from the generic trampoline code.
10263
10264         * mini.c (mono_resolve_patch_target): Handle LAZY_FETCH_TRAMPOLINE.
10265         (mono_codegen): Ditto.
10266
10267         * aot-compiler.c aot-runtime.c: Ditto.
10268
10269         * patch-info.h: Add MONO_PATCH_INFO_RGCTX_LAZY_FETCH_TRAMPOLINE.
10270
10271         * mini-trampolines.c (mono_find_rgctx_lazy_fetch_trampoline_by_addr): New
10272         helper function to find the offset corresponding to a lazy fetch trampoline.
10273
10274         * mini.h (MonoCompile): Add 'orig_method' field to hold the original method
10275         when doing generic sharing.
10276
10277         * aot-compiler.c: Use cfg->orig_method instead of cfg->method in a lot of
10278         places.
10279         
10280         * mini.c (mono_create_rgctx_lazy_fetch_trampoline): Move this to
10281         mini-trampolines.c to be with the other trampoline creation functions.
10282
10283         * method-to-ir.c (mono_emit_method_call): Remove the 'signature' argument
10284         as it is equal to method->signature in most cases, add a 
10285         mono_emit_method_call_full variant which takes a signature and an imt
10286         argument as well.
10287
10288 2008-08-16  Zoltan Varga  <vargaz@gmail.com>
10289
10290         * jit-icalls.c (mono_helper_compile_generic_method): Don't pass the context
10291         to this function, since it could be computed easily from the method 
10292         argument.
10293         (mono_helper_compile_generic_method_wo_context): Removed, not needed any
10294         more.
10295
10296         * method-to-ir.c mini.c: Remove references to 
10297         compile_generic_method_wo_context.
10298
10299         * method-to-ir.c (mono_method_to_ir2): Enable AOT for virtual
10300         generic method calls.
10301         
10302         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_1 for 1
10303         dimensional non-szarrays.
10304
10305         * mini.c (mini_init): Register mono_array_new_1.
10306
10307         * jit-icalls.c (mono_array_new_1): New jit icall.
10308
10309         * mini-trampolines.c (mono_magic_trampoline): For jumps, patch the GOT entries
10310         pointing to the method.
10311
10312         * aot-runtime.c (mono_aot_get_method_from_token): Register GOT slots holding
10313         method addresses belonging to METHOD_JUMP patches in the 
10314         jump_target_got_slot_hash.
10315         (mono_aot_load_method): Ditto.
10316
10317         * aot-compiler.c (compile_method): Allow AOT compilation of methods with
10318         METHOD_JUMP patches.
10319
10320         * mini.c (mini_create_jit_domain_info): New helper function which 
10321         initializes/frees domain->runtime_info.
10322         (mini_free_jit_domain_info): Ditto.
10323         (mini_init): Install the domain hook functions with the runtime.
10324
10325         * mini.h (MonoJitDomainInfo): New structure which stores the domain specific
10326         information maintained by the JIT.
10327
10328         * mini.c (mono_resolve_patch_target): For PATCH_INFO_METHOD_JUMP, move the
10329         insertion into jump_table_hash into mono_codegen (), also implement proper
10330         locking.
10331
10332         * method-to-ir.c (mono_method_to_ir2): Don't disable AOT for CEE_JMP and
10333         tail calls, it is already done by the aot code.
10334         
10335         * method-to-ir.c (mono_method_to_ir2): Handle CEE_JMP using the tail call
10336         mechanism on amd64.
10337
10338         * iltests.il.in: Make the jmp test a bit more complex.
10339
10340         * aot-compiler.c (encode_method_ref): Handle references to normal methods of
10341         generic instances which doesn't have a token.
10342
10343         * aot-runtime.c (decode_method_ref): Ditto.
10344         
10345         * method-to-ir.c (handle_unbox_nullable): Don't disable AOT, the aot code
10346         can handle this case now.
10347         (handle_box): Ditto.
10348
10349 2008-08-15  Geoff Norton  <gnorton@novell.com>
10350
10351         * mini-x86.c: Fix alignment on Apple x86, and re-disable the alignment
10352         debugging check.
10353
10354 2008-08-15  Zoltan Varga  <vargaz@gmail.com>
10355
10356         * method-to-ir.c (mono_method_to_ir2): Allow AOT compilation of methods
10357         calling generic methods.
10358
10359         * aot-compiler.c (encode_patch): Handle MONO_PATCH_INFO_METHOD_RGCTX.
10360
10361         * aot-runtime.c (decode_patch_info): Ditto.
10362
10363         * mini.c (mono_resolve_patch_target): Ditto.
10364         
10365         * patch-info.h: Add METHOD_RGCTX.
10366
10367         * mini-amd64.c (mono_arch_output_basic_block): Optimize LOCALLOC_IMM.
10368
10369 2008-08-14  Zoltan Varga  <vargaz@gmail.com>
10370
10371         * mini-amd64.c (mono_arch_emit_call): Nullify call->vret_var if returning
10372         arguments in registers.
10373
10374         * decompose.c (mono_decompose_vtype_opts): Create a var for the vreg in
10375         OP_VCALL too, don't depend on OP_OUTARG_VTRETADDR doing it.
10376
10377         * mini.c (mini_method_compile): Abort aot compilation for generic
10378         methods if generic sharing is disabled.
10379         
10380         * mini.c (mono_method_to_ir): Disable AOT for virtual calls requiring
10381         an mrgctx.
10382
10383         * method-to-ir.c (mono_method_to_ir2): Disable AOT for virtual calls 
10384         requiring an mrgctx.
10385
10386         * decompose.c (mono_decompose_vtype_opts): Emit the correct sized
10387         store instructions when converting a vcall to a normal call.
10388
10389         * mini.c (sigprof_signal_handler): Call mono_find_jit_info instead of
10390         mono_arch_find_jit_info.
10391
10392 2008-08-13  Zoltan Varga  <vargaz@gmail.com>
10393
10394         * method-to-ir.c (check_inline_called_method_name_limit): Optimize this to
10395         avoid calling mono_method_full_name () for every method even if the
10396         env var is not set.
10397         (check_inline_caller_method_name_limit): Ditto.
10398
10399 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10400
10401         * driver.c (main_thread_handler): Allow AOT compilation of multiple 
10402         assemblies in one run.
10403
10404         * aot-compiler.c (mono_compile_assembly): Only print out a count of
10405         skipped methods if it is not 0.
10406
10407         * Makefile.am (aotcheck): AOT compile all test assemblies in one run.
10408
10409 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10410
10411         * mini.c (mono_codegen):  Changing a preprocessor check from WIN64 to
10412           MONO_ARCH_HAVE_UNWIND_TABLE.
10413
10414         Contributed under MIT/X11 license.
10415
10416 2008-08-12  Bill Holmes  <billholmes54@gmail.com>
10417
10418         * mini-amd64.c (mono_arch_cpu_optimizazions):  Remove peephole and branch
10419           from default optimizaton list on Winx64.
10420
10421         * mini-amd64.c (emit_tls_get):  Added Winx64 specific implementation for GetTLS.
10422
10423         * mini-amd64.c (mono_arch_emit_prolog):  Adding an offset on Winx64 to get
10424           the LMF from the MonoJitTlsData structure.
10425
10426         * mini-amd64.c (mono_arch_setup_jit_tls_data):  Added Winx64 implementation.
10427
10428         Contributed under MIT/X11 license.
10429
10430 2008-08-12  Zoltan Varga  <vargaz@gmail.com>
10431
10432         * mini.c (sigsegv_signal_handler): Fix the build.
10433
10434         * mini-amd64.c (emit_call_body): Use image->aot_module instead of 
10435         assembly->aot_module.
10436
10437         * aot-runtime.c: Use image->aot_module instead of searching in the aot_modules
10438         hash table. This simplifies and speeds up a lot of code, and fixes support
10439         for .netmodules.
10440
10441         * mini.c (SIG_HANDLER_SIGNATURE): Avoid crashes if the thread is not registered
10442         with the runtime.
10443
10444         * mini-exceptions.c: Ditto.
10445         
10446         * exceptions-*c.c (mono_arch_find_jit_info): Remove unused 'trace' and
10447         'native_offset' argument, since these are computed in the 
10448         mono_find_jit_info () function.
10449
10450         * mini-exceptions.c (mono_find_jit_info): Make this non-static, as it
10451         is used by exceptions-ppc.c.
10452
10453         * exceptions-ppc.c: Call mono_find_jit_info () instead of 
10454         mono_arch_find_jit_info ().
10455         
10456         * mini-ppc.h exceptions-ppc.c mini-mips.h mini-mips.c exceptions-mips.c
10457         mini-exceptions.c: Get rid of the CUSTOM_STACK_WALK stuff, use the
10458         generic code in mini-exceptions.c.
10459
10460 2008-08-11  Zoltan Varga  <vargaz@gmail.com>
10461
10462         * mini-ppc.c (mono_arch_flush_register_windows): Add this for ppc.
10463
10464         * aot-runtime.c (mono_aot_get_plt_info_offset): Fix a warning.
10465         
10466         * aot-runtime.c (mono_aot_get_method): Avoid doing all the loading inside
10467         the aot lock, to avoid deadlocks when mono_aot_get_class_from_name () is
10468         called while holding the loader lock. Fixes #415608.
10469         (mono_aot_get_method_from_token_inner): Ditto.
10470
10471 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10472
10473         * exceptions-ppc.c (mono_jit_walk_stack): Use MONO_INIT_CONTEXT_FROM_CURRENT
10474         to reduce differences between this and the generic implementation in
10475         mini-exceptions.c.
10476         (ves_icall_get_frame_info): Ditto.
10477
10478         * mini-ppc.h (MONO_INIT_CONTEXT_FROM_CURRENT): Define this for ppc too.
10479
10480         * mini-exceptions.c (mono_exceptions_init): Remove an #ifdef which is no
10481         longer neccesarry.
10482
10483         * exceptions-ppc.c (arch_get_call_filter): Rename this to 
10484         mono_arch_get_call_filter () and make it non-static, for consistency with the
10485         other architectures.
10486
10487 2008-08-09  Rodrigo Kumpera  <rkumpera@novell.com>
10488
10489         * mini.c:
10490         * local-propagation.c:
10491         * mini-x86.c: Correct the name of arch defines.
10492
10493 2008-08-09  Zoltan Varga  <vargaz@gmail.com>
10494
10495         * method-to-ir.c (mono_op_to_op_imm_noemul): Correct name of
10496         NO_EMULATE_LONG_SHIFT_OPS define.
10497
10498 2008-08-08  Zoltan Varga  <vargaz@gmail.com>
10499
10500         * method-to-ir.c (mono_method_to_ir2): Remove some code from CEE_MONO_LDPTR
10501         now that aot-ed icall wrappers use CEE_MONO_ICALL_ADDR.
10502
10503         * aot-compiler.c aot-runtime.c: Add support for static aot compilation.
10504         MACH fixes. Merged from the 2.0 branch.
10505
10506         * method-to-ir.c (mono_method_to_ir2): Handle CEE_MONO_ICALL_ADDR.
10507
10508         * mini.c (mono_resolve_patch_target): Error out if an icall is not found.
10509         (mono_method_to_ir): Handle CEE_MONO_ICALL_ADDR.
10510
10511         * exceptions-arm.c (mono_arch_get_throw_exception_generic): Add AOT support.
10512
10513         * method-to-ir.c mini.c driver.c aot-compiler.c: Update after
10514         mono_marshal_get_native_wrapper () signature changes.
10515
10516 2008-08-07  Rodrigo Kumpera  <rkumpera@novell.com>
10517
10518         * jit-icalls.c (mono_fconv_ovf_u8): Work around soft-float double to long
10519         conversion bug under arm.
10520
10521 2008-08-06  Rodrigo Kumpera  <rkumpera@novell.com>
10522
10523         * cpu-arm.md: Increase long_conv_to_ovf_i4_2 max length to 36.
10524
10525         * mini-arm.c (mono_arch_output_basic_block): Implement long to int conversion
10526         with overflow checking.
10527
10528 2008-08-05  Marek Habersack  <mhabersack@novell.com>
10529
10530         * Makefile.am (GENMDESC_PRG): when cross-compiling use full path
10531         to the genmdesc.pl file
10532
10533 2008-08-05  Zoltan Varga  <vargaz@gmail.com>
10534
10535         * ir-emit.h (EMIT_NEW_ARGSTORE): Fix the usage of param_types and
10536         arg_array in the soft-float versions of the LOAD/STORE macros.
10537
10538         * method-to-ir.c (mono_method_to_ir2): Fix a warning in the arm switch
10539         implementation.
10540
10541         * ir-emit.h (NEW_VARLOADA): Handle SOFT_FLOAT correctly.
10542
10543 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10544
10545         * mini-ia64.c (add_valuetype): Only reserve half parameter slot for each member of
10546         a float HFA. Fixes #413621.
10547
10548 2008-08-02  Gert Driesen  <drieseng@users.sourceforge.net>
10549
10550         * mini-x86.c (mono_arg_get_argument_info): Rename last occurrence of
10551         frame_size to args_size. Fixes build.
10552
10553 2008-08-02  Zoltan Varga  <vargaz@gmail.com>
10554
10555         * mini-x86.c (mono_arch_get_argument_info): Rename frame_size to args_size,
10556         and don't align it to MONO_ARCH_FRAME_ALIGNMENT.
10557
10558         * mini-x86.h: Change MONO_ARCH_FRAME_ALIGNMENT to 8 so doubles stored on
10559         the stack are not unaligned. Fixes #413247.
10560         
10561 Fri Aug 1 18:46:42 CEST 2008 Paolo Molaro <lupus@ximian.com>
10562
10563         * mini.c: update jitted methods performance counters.
10564
10565 Fri Aug 1 16:30:37 CEST 2008 Paolo Molaro <lupus@ximian.com>
10566
10567         * mini-exceptions.c: increase the exceptions thrown performance
10568         counter in mono_handle_exception ().
10569
10570 2008-07-29  Zoltan Varga  <vargaz@gmail.com>
10571
10572         * aot-runtime.c: Use MonoImage's as keys in the aot_modules hash so the aot
10573         can work with netmodules.
10574
10575 2008-07-28  Geoff Norton  <gnorton@novell.com>
10576
10577         * mini-x86.h: Correct the frame alignment on OSX.  Fixes the jit 
10578         regression tests.
10579
10580 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10581
10582         * mini-x86.c (mono_arch_emit_call): Emi the osx stack alignment at the
10583         correct place.
10584
10585 2008-07-28  Bill Holmes  <billholmes54@gmail.com>
10586
10587         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10588           The float param registers and other param registers must be the 
10589           same index on Windows x64.
10590
10591         * mini-amd64.c (mono_arch_allocate_vars) : Implementing the 
10592           ArgValuetypeAddrInIReg argument case.  Setting the argument
10593           op to OP_VTARG_ADDR (OP_REGOFFSET)).
10594
10595         * mini-amd64.c (mono_arch_call_opcode) : Winx64 fix.  Use the size
10596           variable computed above as the copy length for arguments of storage
10597           type ArgValuetypeAddrInIReg.
10598
10599         * mini-amd64.c (mono_arch_emit_call) :  Implementing the 
10600           ArgValuetypeAddrInIReg argument case.  This case will rely on
10601           mono_arch_emit_outarg_vt to emit the correct code later in the process.
10602
10603         * mini-amd64.c (mono_arch_emit_call) :  On Winx64 there always needs to be
10604           a 32 byte stack allocation for all calls.  We will omit the adjustment for
10605           jump and tail call instructoins as they do not follow the typical call behavior.
10606
10607         * mini-amd64.c (mono_arch_emit_outarg_vt) :  Implementing the case for
10608           ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
10609           local variable and pass the local variable by reference to the called method.
10610
10611         * mini-amd64.c (mono_arch_emit_prolog, emit_load_volatile_arguments) :
10612           Implementing the ArgValuetypeAddrInIReg argument case.  When the address
10613           of a struct is passed in a register it must be saved with the other
10614           volatile argument on the stack.
10615
10616         * mini-amd64.c (mono_arch_emit_prolog) : Winx64 fix.  When omitting the
10617           frame pointer the stack adjustment value must be saved to the unwind 
10618           info structure.
10619
10620         Contributed under MIT/X11 license.
10621
10622 2008-07-28  Zoltan Varga  <vargaz@gmail.com>
10623
10624         * inssel-x86.brg (stmt): Add missing OP_X86_OUTARG_ALIGN_STACK rule
10625         which got lost in the merge.
10626
10627 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10628
10629         * method-to-ir.c: Make the helper_sig variables extern to fix the ppc
10630         build.
10631
10632         * mini-amd64.c (emit_call_body): Add a no_patch case missed earlier.
10633         
10634         * mini-amd64.c (emit_call_body): Avoid aligning the call instruction on
10635         icalls, since they won't be patched.
10636
10637         * exceptions-amd64.c (mono_arch_get_restore_context_full): Use a slightly
10638         different code sequence when running under valgrind to prevent some valgrind
10639         errors.
10640
10641         * iltests.il.in: Add new regression test.
10642
10643         * method-to-ir.c (mono_method_to_ir2): Fix handling of inlined methods which
10644         end with a throw.
10645
10646         * method-to-ir.c (mono_method_to_ir2): Use get_vreg_to_inst () instead of
10647         accessing cfg->vreg_to_inst directly to prevent a crash in LDFLD.
10648
10649         * iltests.il.in: Add new test.
10650
10651         * aot-compiler.c: Fix some warnings.
10652
10653         * decompose.c (mono_decompose_long_opts): Implement OP_ICONV_TO_OVF_I8_UN.
10654         Fixes #412494.
10655
10656 2008-07-27  Zoltan Varga  <vargaz@gmail.com>
10657
10658         * driver.c (mono_main): Fix the --gc=none build. Fixes #412482.
10659         (mini_usage_jitdeveloper): Add a missing --wapi option.
10660
10661 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10662
10663         * mini-codegen.c: Simplify the is_fp macros.
10664         (free_up_ireg): Remove, use free_up_reg instead.
10665         (free_up_reg): Fix the fp case.
10666
10667 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10668
10669         * cpu-arm.md (loadr8_membase): Increase the length of this as this is not
10670         lowered earlier.
10671
10672         * exceptions-x86.c: Merge some changes which seemed to have got lost
10673         in the linear-ir merge.
10674
10675         * liveness.c: Disable the liveness2 pass on 32 bit platforms.
10676
10677         * method-to-ir.c (mono_handle_global_vregs): Make the component vregs of a
10678         long vreg volatile even if the variable was already created.
10679
10680         * liveness.c (update_liveness2): Avoid eliminating dead definitions of
10681         volatile variables.
10682
10683 2008-07-26  Zoltan Varga  <vargaz@gmail.com>
10684
10685         * cpu-x86.md (fcall_membase): Increase the size of the fcall opcodes.
10686
10687         * mini.c (mono_jit_compile_method_inner): Add support for 
10688         MONO_EXCEPTION_BAD_IMAGE.
10689
10690         * method-to-ir.c (mono_method_to_ir2): Avoid a crash if 
10691         mini_method_get_context () returns NULL. Fixes #356531.
10692
10693         * mini.c (mono_method_to_ir): Ditto.
10694         
10695         * method-to-ir.c (mono_method_to_ir2): Create a variable if needed when
10696         accessing a field of a valuetype in LDFLD/STFLD. Fixes #412399.
10697
10698 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10699
10700         * method-to-ir.c (mono_method_to_ir2): Initialize an uninitialized variable
10701         in the LDFTN implementation.
10702
10703 2008-07-25  Mark Probst  <mark.probst@gmail.com>
10704
10705         * mini-trampolines.c (mono_magic_trampoline): When sharing generic
10706         code, patch calls to icalls, too, even if they're not in the
10707         shared generic code hash.  Fixes #411962.
10708
10709 2008-07-25  Zoltan Varga  <vargaz@gmail.com>
10710
10711         * cpu-x86.md: Increase the length of the fcall opcodes.
10712
10713         * mini-x86.c (emit_move_return_value): Avoid some precision issues for
10714         calls returning floats.
10715
10716         * method-to-ir.c (mono_method_to_ir2): Remove the generic sharing restrictions
10717         on NEWARR.
10718         
10719         * method-to-ir.c (mono_method_to_ir2): Merge some LDFTN gsharing changes
10720         missed earlier.
10721
10722         * method-to-ir.c (handle_delegate_ctor): Avoid putting dynamic methods
10723         into the domain->method_code_hash.
10724
10725         * aot-compiler.c: Fix win32 build.
10726
10727         * method-to-ir.c (EMIT_GET_RGCTX): Call EMIT_NEW_LDARG in emit_get_rgctx ().
10728         
10729         * method-to-ir.c (mono_method_to_ir2): Use mono_array_new_specific in the
10730         gshared NEWARR implementation.
10731
10732         * cpu-sparc.md: Remove duplicate localloc_imm opcode.
10733
10734         * ir-emit.h (NEW_ARGLOAD): Use cfg->args and cfg->arg_types so this macro
10735         can be used outside of method_to_ir.
10736
10737         * mini.h (MonoCompile): Add arg_types field.
10738
10739         * method-to-ir.c (inline_method): Save/Restore cfg->args and cfg->arg_types.
10740         
10741         * method-to-ir.c (mono_method_to_ir2): Set cfg->args and cfg->arg_types to
10742         the values of the local arg_array and param_types array.
10743
10744 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10745
10746         * method-to-ir.c (mono_method_to_ir2): Allocate a GOT var for NEWOBJ, since
10747         got accesses might only get generated later when NEWOBJ is decomposed.
10748         
10749         * method-to-ir.c (handle_delegate_ctor): Add an optimization to avoid
10750         looking up the native code of the target method when a delegate is called
10751         for the first time.
10752
10753         * mini-trampolines.c (mono_delegate_trampoline): Add the other half of the
10754         optimization.
10755
10756         * debug-debugger.c (MONO_DEBUGGER__debugger_info): Fix a warning.
10757
10758         * aot-runtime.c aot-compiler.c: Add a new option 'no-dlsym' which makes
10759         AOT work on platforms without a working dlsym implementation.
10760
10761         * mini.h: Bump AOT image format version.
10762         
10763 2008-07-24  Mark Probst  <mark.probst@gmail.com>
10764
10765         * mini-exceptions.c: Free a MonoType with
10766         mono_metadata_free_type() instead of g_free().
10767
10768         * aot-runtime.c: Free a MonoType.
10769
10770 2008-07-24  Zoltan Varga  <vargaz@gmail.com>
10771
10772         * method-to-ir.c (mono_method_to_ir2): Add a comment for the box+brtrue
10773         optimization.
10774
10775         * mini-codegen.c (mono_local_regalloc): Remove the remaining items from the
10776         fp stack on x86.
10777
10778 2008-07-23  Massimiliano Mantione  <massi@ximian.com>
10779         * mini.c (sigprof_signal_handler): call the new "runtime initialized"
10780         profiler hook.
10781
10782 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10783
10784         * method-to-ir.c (mono_method_to_ir2): Set the stack type properly for
10785         NEWOBJ calls on valuetypes.
10786
10787         * iltests.il.in: Add new test.
10788
10789         * mini-x86.c (mono_arch_emit_call): Use mini_type_stack_size ().
10790
10791 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10792
10793         * mini-exceptions.c: Fix some warnings. Remove one ia64 special case as it
10794         is no longer needed.
10795
10796         * mini-ia64.c (mono_arch_emit_prolog): In native-to-managed wrappers, widen
10797         non register sized integer arguments.
10798         (mono_arch_call_opcode): Add support for ArgInFloatRegR4.
10799         (mono_arch_emit_outarg_vt): Pass a more reasonable alignment to 
10800         emit_memcpy2 ().
10801
10802         * method-to-ir.c (mono_method_to_ir2): Handle the ret_var_is_local case in
10803         CEE_MONO_RETOBJ.
10804         
10805         * method-to-ir.c (ADD_WIDEN_OP): New macro to insert a widening op when
10806         two a binop with different sized arguments is emitted.
10807
10808         * mini.c (mono_bblock_insert_after_ins): Properly link up with the next
10809         instruction in the ins==NULL case.
10810
10811 2008-07-23  Zoltan Varga  <vargaz@gmail.com>
10812
10813         * mini-ops.h: Add OP_X86_OUTARG_ALIGN_STACK.
10814
10815         * mini-x86.c: Fix osx build.
10816
10817         * mini-amd64.c (mono_arch_output_basic_block): Handle varargs in the CALL_REG
10818         opcodes as well.
10819
10820         * method-to-ir.c (mono_spill_global_vars): Avoid fusing a load+store into the
10821         instruction for non int sized variables.
10822
10823         * method-to-ir.c (mono_method_to_ir2): Fix an assert in the LDFLD
10824         implementation.
10825
10826 2008-07-23  Robert Jordan  <robertj@gmx.net>
10827
10828         * method-to-ir.c: Fix MSVC build.
10829
10830 2008-07-22  Zoltan Varga  <vargaz@gmail.com>
10831
10832         * method-to-ir.c (mono_method_to_ir2): When calling native code which returns
10833         a non int sized type, widen it to an int since newer versions of gcc seem to
10834         generate code which needs this.
10835
10836         * ssa2.c abcremoval2.c: Fix warnings.
10837
10838         * *: Merge the Linear IR branch.
10839
10840         The original branch is at trunk/branches/vargaz/mini-linear-il, and
10841         the ChangeLog file there describes all the changes done over the years. 
10842         Further documentation can be found at www.mono-project.com/Linear_IL.
10843
10844 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10845
10846         * mini-amd64.c (get_call_info): Winx64 fix for passing floats.
10847           The float param registers and other param registers must be the 
10848           same index on Windows x64.
10849
10850         Contributed under MIT/X11 license.
10851
10852 2008-07-21  Rodrigo Kumpera  <rkumpera@novell.com>
10853
10854         * mini.c: Make the previous fix GC safe.
10855
10856 2008-07-21  Raja R Harinath  <harinath@hurrynot.org>
10857
10858         * Makefile.am (version.h): Allow a trailing '/' in the repository URL.
10859
10860 2008-07-21  Bill Holmes  <billholmes54@gmail.com>
10861
10862         * mini-amd64.c (get_call_info): Correcting the case for MONO_TYPE_TYPEDBYREF
10863           on Winx64.  This type will not be passed on the stack (ArgOnStack), but 
10864           ArgValuetypeAddrInIReg instead.
10865
10866         Contributed under MIT/X11 license.
10867
10868 2008-07-21  Zoltan Varga  <vargaz@gmail.com>
10869
10870         * mini-codegen.c (get_register_spilling): Fix a warning.
10871
10872 2008-07-17  Rodrigo Kumpera  <rkumpera@novell.com>
10873
10874         * mini.c: Use mono_runtime_class_init_full to avoid leaking memory
10875         for types which the initialization fails. Raises the provided exception
10876         at the right stop after cleanup.
10877
10878 2008-07-16  Zoltan Varga  <vargaz@gmail.com>
10879
10880         * aot-compiler.c: Free most of the memory allocated during compilation.
10881
10882         * mini.c (mini_parse_debug_options): Fix a leak.
10883         
10884         * mini.c (mini_method_compile): Don't add the method to the jit info tables
10885         during aot compilation.
10886
10887 2008-07-14  Zoltan Varga  <vargaz@gmail.com>
10888
10889         * mini.c (mono_method_to_ir): Disable aot for code using CCASTCLASS on x86 as 
10890         it has too much register pressure.
10891
10892 2008-07-13  Zoltan Varga  <vargaz@gmail.com>
10893
10894         * inssel.brg (CEE_CASTCLASS): Remove some dead code.
10895
10896 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10897
10898         * mini-x86.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10899         on x86.
10900
10901         * mini-amd64.h aot-compiler.c aot-runtime.c: Store the plt info offset inline
10902         on amd64 similar to the way it is done on arm.
10903
10904         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
10905
10906         * aot-runtime.c (load_aot_module): Rename 'info' to 'amodule' for 
10907         consistency, normalize error messages, avoid loading aot-only modules in
10908         normal mode.
10909
10910         * driver.c (mono_main): Rename --aot-only command line option to --full-aot
10911         for consistency.
10912
10913         * aot-compiler.c aot-runtime.c tramp-arm.c: Implement aot-only support.
10914
10915 2008-07-11  Martin Baulig  <martin@ximian.com>
10916
10917         * debug-debugger.h
10918         (MonoDebuggerInfo): Add `interruption_request'.
10919
10920 2008-07-12  Zoltan Varga  <vargaz@gmail.com>
10921
10922         * aot-compiler.c (emit_plt): Remove some dead code.
10923
10924         * exceptions-arm.c (mono_arch_get_call_filter_full): Initialize ji.
10925
10926         * aot-runtime.c (mono_aot_get_plt_info_offset): New helper function to
10927         return the plt info offset belonging to a given plt entry.
10928
10929         * mini-trampolines.c (mono_aot_plt_trampoline): Use 
10930         mono_aot_get_plt_info_offset.
10931         
10932         * aot-runtime.c aot-compiler.c tramp-arm.c: Change the arm plt code to be
10933         similar to the amd64 code by makeing jumps through a separate jump table 
10934         instead of embedding the jump addresses into the code.
10935
10936 2008-07-11  Zoltan Varga  <vargaz@gmail.com>
10937
10938         * mini.c (mono_method_to_ir): Disable aot for calling ldtoken in a generic
10939         method.
10940
10941 2008-07-10  Martin Baulig  <martin@ximian.com>
10942
10943         * mini.c (mini_method_compile): Disable generics sharing when
10944         running in the debugger.
10945
10946 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10947
10948         * mini.c (mono_method_to_ir): Create the got var in CEE_REFANYVAL.
10949
10950         * inssel.brg (CEE_CASTCLASS): Avoid reusing temporary registers to prevent
10951         the local register allocator from running out of registers on x86 when 
10952         using aot.
10953
10954 2008-07-10  Bill Holmes  <billholmes54@gmail.com>
10955
10956         * inssel-long.brg For OP_LCONV_TO_OVF_I4 an int cast is needed when 
10957         expressing IntMin for the VS Compiler.  See Compiler Warning (level 2) 
10958         C4146.
10959
10960         Contributed under MIT/X11 license.
10961
10962 2008-07-10  Zoltan Varga  <vargaz@gmail.com>
10963
10964         * aot-compiler.c: Get rid of whitespace in the generated assembly file to
10965         speed up the assembler.
10966
10967 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
10968
10969         * mini-arm.h tramp-arm.c exceptions-arm.c aot-compiler.c: Beginnings of aot-only
10970         support.
10971
10972         * mini.c: Move the soft float handling macros a bit earlier, add 
10973         NEW_TEMPSTORE_SOFT_FLOAT macro, fix warnings, add soft-float support in one
10974         place.
10975
10976         * mini.h: Add prototype for mono_arch_fixup_jinfo.
10977
10978         * mini.c (mini_init): In aot-only mode, set the root domain code manager to
10979         read-only to help catch code allocation requests.
10980         
10981         * mini.c inssel.brg aot-compiler.c: Make the use of IMT runtime configurable,
10982         and turn it off when using --aot-only or when compiling with --aot=full.
10983
10984         * mini.c (mono_resolve_patch_target): In aot-only mode, allocate the
10985         jump table for switches from the normal domain mempool, not the code
10986         manager.
10987
10988         * mini-trampolines.c (get_unbox_trampoline): New function to return an
10989         unbox trampoline which handles aot-only mode too.
10990
10991         * aot-runtime.c (mono_aot_get_unbox_trampoline): New function to lookup
10992         an AOTed unbox trampoline.
10993
10994         * aot-compiler.c (emit_trampolines): Emit unbox trampolines.
10995
10996 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
10997
10998         * wapihandles.c: Fixing MSVC builds.  Include statement changed from <> to
10999         ""
11000
11001         Contributed under MIT/X11 license.
11002
11003 2008-07-09  Bill Holmes  <billholmes54@gmail.com>
11004
11005         * mini.c (mono_codegen):  Allocate space at the end of the code block and store
11006           the unwind information for the method at the end of the allocated block.
11007           
11008         * mini-amd64.h: Added declarations for the unwind routines and adding field to 
11009           MonoCompileArch to hold the unwind info for SEH on Winx64
11010         
11011         * mini-amd64.c (mono_arch_emit_prolog): Calls to the unwind routines added to store
11012           frame pointer info for the method being compiled.
11013           
11014         * exceptions-amd64.c (mono_arch_get_throw_corlib_exception): Added a stack adjustment before
11015           the call to mono_exception_from_token.
11016           
11017         * exceptions-amd64.c: Added mono_arch_unwindinfo* implementations.  This code is responsible
11018           storing the method prolog information in a format that the Winx64 SEH can understand.  This
11019           information is stored a the end of the method block because it is all 32-bit offset based.
11020
11021         Contributed under MIT/X11 license.
11022
11023 2008-07-09  Zoltan Varga  <vargaz@gmail.com>
11024
11025         * mini.h: Remove duplicate definitions of the mini_wapi_ functions.
11026
11027         * wapihandles.c: Fix warnings.
11028
11029         * aot-runtime.c (load_aot_module): Add a missing error message in aot-only
11030         mode.
11031
11032         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): Avoid calling 
11033         mono_jit_compile_method in aot-only mode since that calls the type 
11034         initializer.
11035         
11036         * mini-trampolines.c (mono_create_delegate_trampoline): Avoid calling
11037         get_delegate_invoke_impl in aot-only mode.
11038
11039         * mini.c (mono_global_codeman_reserve): Reenable the aot-only check.
11040
11041 2008-07-08  Zoltan Varga  <vargaz@gmail.com>
11042
11043         * trace.c (mono_trace_enter_method): Fix printing of Type instances.
11044
11045         * aot-compiler.c (compile_method): Disable the check for GSHARED since it
11046         is on by default.
11047
11048         * inssel-long.brg (reg): Add a rule for LCALL_REG (OP_I8CONST).
11049
11050         * tramp-amd64.c (mono_arch_nullify_plt_entry): Read the nullified class
11051         init trampoline from the AOT file as well.
11052
11053         * mini-amd64.c (mono_arch_register_lowlevel_calls): Register
11054         mono_amd64_throw_exception as a jit icall since it is needed by the aot-only
11055         code.
11056
11057         * mini.c (mini_init): Move the call to mono_exceptions_init () after 
11058         mono_init.
11059
11060         * exceptions-amd64.c: Add _full variants for the remaining exception code
11061         creation functions as well, allow emission of relocatable code, remove
11062         caching since that is now done by the caller.
11063
11064         * mini-exceptions.c: Add _full variants for the remaining exception code
11065         creation functions as well, add aot-only support.
11066
11067         * aot-compiler.c (compile_method): Allow calls to methods of constructed types
11068         if we can determine a proper token for them.
11069         (add_wrappers): Add a few more wrappers.
11070         (emit_method_code): Remove some dead code.
11071         (emit_trampolines): Emit exception code too.
11072
11073         * mini.c (mono_method_to_ir): Call mono_array_new_2 if possible.
11074
11075         * jit-icalls.c (mono_array_new_2): New jit icall, specialized version of
11076         mono_array_new_va which avoids varargs.
11077
11078         * mini-exceptions.c (mono_exceptions_init): Fix the ppc build.
11079
11080         * mini-trampolines.c: Call mono_create_specific_trampoline () instead of
11081         mono_arch_create_specific_trampoline () in all places.
11082
11083         * aot-compiler.c aot-runtime.c: Refactor the trampoline emitting/loading code
11084         a bit so it can be used for other things as well.
11085         
11086         * mini-exceptions.c (mono_exceptions_init): Initialize throw_exception_by_name
11087         on demand as well.
11088
11089         * exceptions-amd64.c: Rename the caching from the exception code creation
11090         functions, it is done by the caller instead.
11091         
11092         * exceptions-amd64.c: Change the signature of the exception code creation 
11093         functions to allow the creation of relocatable code later.
11094
11095         * mini-exceptions.c: Add a set of functions to query the various 
11096         runtime-generated exception functions.
11097
11098         * mini.c mini-exceptions.c: Use the newly added functions instead of the
11099         mono_arch_.. () functions.
11100         
11101 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11102
11103         * mini-trampolines.c (mono_aot_get_trampoline_code): Removed, no longer used.
11104
11105         * aot-runtime.c aot-compiler.c: AOT the generic trampolines in aot-only mode.
11106
11107         * mini.c (mini_get_imt_trampoline): Call mono_create_specific_trampoline ().
11108         (mini_get_vtable_trampoline): Ditto.
11109
11110         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Create relocatable
11111         code in the AOT case by returning the code size and a list of relocations to
11112         the caller.
11113
11114         * mini-trampolines.c (mono_create_specific_trampoline): New helper function.
11115
11116 2008-07-07  Bill Holmes  <billholmes54@gmail.com>
11117
11118         * mini-amd64.c:  On Winx64 the calling convention always requires the caller to 
11119           clean the stack.
11120
11121         Contributed under MIT/X11 license.
11122
11123 2008-07-07  Zoltan Varga  <vargaz@gmail.com>
11124
11125         * aot-compiler.c (emit_exception_debug_info): Serialize the debug info first
11126         so the buffer size can be computed correctly. Fixes #404735.
11127
11128         * debug-mini.c (mono_debug_serialize_debug_info): Lookup the debug info
11129         normally as cfg->debug_info is already freed.
11130
11131 2008-07-06  Zoltan Varga  <vargaz@gmail.com>
11132
11133         * mini-amd64.c: For calls returning vtypes in registers, don't store
11134         the return address on the stack, instead allocate a separate local for
11135         it. Fixes #404729.
11136
11137 2008-07-05  Mark Probst  <mark.probst@gmail.com>
11138
11139         * mini-trampolines.c, mini.h: Add an argument to
11140         mono_create_jit_trampoline_in_domain() for turning off the adding
11141         of the sync wrapper.
11142
11143         * mini.c: Use the JIT trampoline without sync instead of
11144         ldftn_nosync in static RGCTX invoke wrappers so that the call can
11145         be patched.
11146
11147 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11148
11149         * driver.c: Turn on GSHARED optimization by default.
11150
11151 2008-07-04  Zoltan Varga  <vargaz@gmail.com>
11152
11153         * mini-trampolines.c mini.c mini.h tramp-<ARCH>.c: Rename MONO_TRAMPOLINE_GENERIC
11154         to MONO_TRAMPOLINE_JIT since it better reflects what it does.
11155
11156         * mini-trampolines.c (mono_get_aot_trampoline_code): New internal function to
11157         create a variant of the generic trampoline code callable from AOTed trampolines.
11158
11159         * tramp-amd64.c (mono_arch_create_trampoline_code_full): Add support for generic
11160         trampoline code callable from AOTed trampolines.
11161
11162         * aot-compiler.c aot-runtime.c: Add support for AOTing trampolines.
11163
11164 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11165
11166         * inssel.brg, mini-ops.h: New opcode for doing CHECK_THIS in a
11167         pass-through manner.
11168
11169         * mini.c: Generic method sharing.  Pass MRGCTX to generic methods
11170         and don't fail sharing for them anymore.
11171
11172         * mini-exceptions.c: Handle exceptions in shared generic methods.
11173
11174         * generic-sharing.c: When checking the context of a generic
11175         method, also check its class's context.  Don't treat wrappers as
11176         sharable.
11177
11178         * mini-trampolines.c: Some code factored out to
11179         metadata/generic-sharing.c.  Handle the MRGCTX case.
11180
11181         * jit-icalls.c, jit-icalls.h: ldvirtfn icall for generic sharing -
11182         we must deal with the method being of another instantiation of the
11183         class.  Add static rgctx invoke wrappers to generic methods.
11184
11185 2008-07-04  Mark Probst  <mark.probst@gmail.com>
11186
11187         * mini.c: Provide all jit infos of generic shared methods with a
11188         generic jit info.
11189
11190         * mini-exceptions.c: Handle the new situation that a generic info
11191         might be available, but not info about the this/vtable/mrgctx
11192         variable.
11193
11194 2008-07-03  Mark Probst  <mark.probst@gmail.com>
11195
11196         * mini.c: Don't accept ldftn and ldvirtftn with uninstantiated
11197         generic methods.
11198
11199 2008-07-03  Zoltan Varga  <vargaz@gmail.com>
11200
11201         * dominators.c (check_dominance_frontier): Fix a warning.
11202
11203         * mini.h: Add some missing prototypes.
11204
11205         * ssa.c local-propagation.c debug-debuger.c: Fix warnings.
11206
11207         * driver.c (mono_jit_init_version): Correct the comments since the first
11208         argument should be the name of the root domain, not a filename.
11209
11210         * aot-runtime.c (make_writable): Error out if this is called while running
11211         with --aot-only.
11212         (load_aot_module): Ditto.
11213
11214         * aot-compiler.c: Really fix the computation of method indexes.
11215
11216         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Remove the previous 
11217         optimizations as this is no longer called frequently.
11218
11219         * mini-trampolines.c (mono_create_delegate_trampoline): Precompute the invoke
11220         method and the invoke impl code and pass it to the delegate trampoline instead of
11221         just the delegate class.
11222
11223 2008-07-02  Zoltan Varga  <vargaz@gmail.com>
11224
11225         * aot-compiler.c: Fixup the computation of method indexes.
11226         (add_wrappers): Create the base methods of the runtime invoke wrappers using
11227         the method builder infrastructure.
11228
11229         * aot-runtime.c (decode_exception_debug_info): Don't crash if the method
11230         has no header.
11231
11232         * mini-trampolines.c (mono_create_jit_trampoline_in_domain): In aot-only
11233         mode, load the method right away instead of creating a trampoline.
11234
11235         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Eliminate locking.
11236
11237         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Eliminate locking, speed up
11238         some checks a bit.
11239
11240 2008-07-01  Zoltan Varga  <vargaz@gmail.com>
11241
11242         * aot-runtime.c (decode_patch_info): Don't create trampolines in aot_only mode.
11243         (mono_aot_load_method): Use method_index instead of method->token.
11244
11245         * mini.c (mono_jit_compile_method_inner): Move the aot_only check down, so it
11246         can handle icalls etc. properly.
11247
11248         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
11249
11250         * aot-compiler.c aot-runtime.c: Allow AOTing many wrapper types.
11251
11252         * mini.c (mono_resolve_patch_target): Handle JIT_ICALL_ADDR.
11253         (mono_codegen): Convert calls made by JIT icall wrappers to the icalls into
11254         JIT_ICALL_ADDR patch type.
11255
11256         * patch-info.h: Add JIT_ICALL_ADDR patch type.
11257
11258         * mini.c (mono_method_to_ir): Allow AOTing methods which access the interruption
11259         request flag.
11260         (mono_resolve_patch_target): Handle INTERRUPTION_REQUEST_FLAG.
11261
11262         * patch-info.h: Add INTERRUPTION_REQUEST_FLAG.
11263
11264 2008-06-30  Zoltan Varga  <vargaz@gmail.com>
11265
11266         * mini.c: Use domain->jit_code_hash_lock for controlling access to
11267         domain->jit_code_hash.
11268
11269 2008-06-29  Zoltan Varga  <vargaz@gmail.com>
11270
11271         * mini.c (mini_parse_debug_options): Add 'dont-free-domains' option.
11272
11273 2008-06-27  Zoltan Varga  <vargaz@gmail.com>
11274
11275         * mini-trampolines.c (mono_delegate_trampoline): Don't pass a gsctx to
11276         get_this_arg_from_call, let it compute it when needed.
11277
11278         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'code' argument, compute
11279         gsctx from code only when needed.
11280
11281         * mini-trampolines.c (get_generic_context): Rename this to 
11282         mono_get_generic_context_from_code (), and move it to generic-sharing.c, where
11283         it can be called by the arch backends.
11284
11285         * mini-exceptions.c (mono_print_thread_dump): Allow the argument to be NULL.
11286
11287 2008-06-26  Zoltan Varga  <vargaz@gmail.com>
11288
11289         * driver.c (mono_main): Add experimental --aot-only command line option.
11290
11291         * mini.c: Error out when creating trampolines or JIT compiling if --aot-only is
11292         set.
11293
11294 2008-06-26  Kornel Pal  <kornelpal@gmail.com>
11295
11296         * driver.c (DllMain): Remove mono_module_handle.
11297
11298         Contributed under MIT/X11 license.
11299
11300 2008-06-25  Zoltan Varga  <vargaz@gmail.com>
11301
11302         * aot-compiler.c: Add not-yet-usable 'full' option. Add some infrastructure code
11303         for emitting methods which are not in the source assembly. Detect and report
11304         failure of assembling+linking.
11305         
11306         * aot-compiler.c (emit_klass_info): Call mono_class_setup_vtable ().
11307
11308         * aot-compiler.c: Move the contents of the has_glot_slots array to MonoCompile.
11309
11310 2008-06-24  Rodrigo Kumpera  <rkumpera@novell.com>
11311
11312         * mini.c: Check if stats is enabled so we don't allocate memory when not needed.
11313
11314 2008-06-24  Zoltan Varga  <vargaz@gmail.com>
11315
11316         * mini.h: Remove some obsolete prototypes.
11317
11318         * mini.c: Avoid storing MonoMethod pointers in the JIT stats, store their string format instead.
11319
11320 2008-06-24  Mark Probst  <mark.probst@gmail.com>
11321
11322         * mini.c (get_object_generic_inst): Variable-sized arrays are not
11323         supported by Visual Studio, so use alloca().
11324
11325 2008-06-23  Zoltan Varga  <vargaz@gmail.com>
11326
11327         * mini-ia64.c (add_valuetype): Increase *gr too when passing a HFA to be in sync with the ABi.
11328         Fixes #402585.
11329
11330 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11331
11332         * mini.c: Fail sharing of a generic method if it contains an open
11333         catch clause (because we don't pass MRGCTXs yet).
11334
11335 2008-06-23  Mark Probst  <mark.probst@gmail.com>
11336
11337         * mini.c: When compiling a method with generic sharing, insert the
11338         method instantiated with an all-Object generic context into the
11339         jit info table, instead of the context of the first instantiation
11340         of the method we happen to compile.
11341
11342 2008-06-18  Martin Baulig  <martin@ximian.com>
11343
11344         * debug-debugger.h (MonoDebuggerInfo): Replaced `version' with
11345         `major_version' and `minor_version'.
11346
11347 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11348
11349         * generic-sharing.c, mini.c, mini.h, aot-runtime.c:
11350         mono_method_is_generic_sharable_impl() takes an additional
11351         argument specifying whether to treat type variables as reference
11352         types.
11353
11354 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11355
11356         * mini.h: Removed obsolete prototypes.
11357
11358 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11359
11360         * mini.c: Don't fail generic sharing for initobj and sizeof - we
11361         already handle them.
11362
11363 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11364
11365         * mini.h, mini-trampolines.c, tramp-alpha.c, tramp-amd64.c,
11366         tramp-arm.c, tramp-hppa.c, tramp-ia64.c, tramp-mips.c,
11367         tramp-ppc.c, tramp-s390.c, tramp-s390x.c, tramp-sparc.c,
11368         tramp-x86.c: Added a MonoGenericContext* argument to
11369         mono_arch_get_unbox_trampoline() so that it can call other
11370         functions which require it.
11371
11372 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11373
11374         * mini.h, mini-trampolines.c, mini-amd64.c, mini-x86.c,
11375         mini-alpha.c, mini-arm.c, mini-ia64.c, mini-ppc.c:
11376         mono_arch_get_this_arg_from_call() takes a
11377         MonoGenericSharingContext* as well.
11378
11379 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11380
11381         * mini.c: Factor out code for emitting unbox into emit_unbox() and
11382         implement generic sharing of unbox.
11383
11384 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11385
11386         * mini.c: Don't compute the vtable to determine whether a field is
11387         special static, because it might not work for open types.
11388
11389 2008-06-17  Mark Probst  <mark.probst@gmail.com>
11390
11391         * mini.c: Removed the unused token_type and token_source arguments
11392         from get_runtime_generic_context_ptr().
11393
11394 2008-06-17  Marek Habersack  <mhabersack@novell.com>
11395
11396         * mini.c (ADD_BINOP): fix the build
11397
11398 2008-06-16  Zoltan Varga  <vargaz@gmail.com>
11399
11400         * mini.c (ADD_BINOP): When operating on a native int and an int32, insert
11401         a widening op.
11402
11403 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11404
11405         * mini.h: Removed class relations enum that's not used anymore.
11406
11407 2008-06-16  Mark Probst  <mark.probst@gmail.com>
11408
11409         * tramp-x86.c, tramp-amd64.c: Slot access code for MRGCTXs.
11410
11411         * mini-trampolines.c: Distinguish between RGCTXs and MRGCTXs in
11412         the lazy fetch trampoline access code.
11413
11414 2008-06-15  Zoltan Varga  <vargaz@gmail.com>
11415
11416         * mini-codegen.c (mono_local_regalloc): Add some micro optimizations.
11417
11418 2008-06-14  Zoltan Varga  <vargaz@gmail.com>
11419
11420         * mini.c: Fix some soft-float bugs. Fixes #378735 and #398348.
11421
11422         * mini.h (MONO_INST_LIST_ENTRY): Fix warnings on arm.
11423
11424         * mini.c (mono_method_to_ir): Check call signature for NEWOBJ as well.
11425
11426 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11427
11428         * mini-x86.c inssel-x86.brg cpu-x86.md: Implement unsigned min/max
11429         intrinsics.
11430
11431         * mini-ops.h: Add MIN/MAX_UN opcodes.
11432
11433         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Implement unsigned min/max
11434         intrinsics.
11435
11436         * basic-math.cs: Add more min/max tests.
11437
11438         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11439
11440 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11441
11442         * mini.c: Small fix in the prologue of emit_castclass.
11443
11444 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11445
11446         * inssel.brg: Remove the OP_MIN/OP_MAX rules. Fix a warning.
11447
11448         * mini.c (mini_get_inst_for_method): Remove the Min/Max intrinsics, they
11449         do not work even for unsigned types. Fixes #400014.
11450
11451         * basic-math.cs: Add regression tests for unsigned Min/Max.
11452
11453 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11454
11455         * mini.c: Added additional context_used argument to several
11456         functions, which will be needed for sharing generic methods.  Use
11457         GET_RGCTX macro wherever appropriate.  Declare only one
11458         context_used in mono_method_to_ir().
11459
11460 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11461
11462         * mini.c, generic-sharing.c: Removed generic class relations.
11463
11464         * mini.c, tramp-amd64.c, tramp-x86.c: Additional arguments to
11465         functions due to MRGCTX changes.
11466
11467 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11468
11469         * inssel.brg, inssel-long.brg, inssel-long32.brg, mini-ops.h,
11470         graph.c, local-propagation.c, aliasing.c: New opcodes for calls
11471         with calculated IMT.
11472
11473         * mini.c: Generic sharing of calls via generic interfaces.
11474
11475         * jit-icalls.c, jit-icalls.h: Helper function for compiling a
11476         generic method with non-constant MonoGenericContext*.  Instead,
11477         the context is taken out of the method itself.
11478
11479 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11480
11481         * mini.c: Generic sharing of ldvirtftn.
11482
11483 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11484
11485         * mini.c: Generic sharing of ldftn.
11486
11487 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11488
11489         * mini.c: Do pass VTable/RGCTX argument to static generic methods.
11490
11491 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11492
11493         * mini.c: Generic sharing of the special case of ldtoken followed
11494         by a call to GetTypeFromHandle.
11495
11496 2008-06-13  Mark Probst  <mark.probst@gmail.com>
11497
11498         * mini.c: Generic sharing of box for nullable types.
11499
11500 2008-06-13  Zoltan Varga  <vargaz@gmail.com>
11501
11502         * mini-s390x.c (add_stackParm): Fix computation of offsets when arguments
11503         are passed on the stack. Fixes #324807.
11504
11505 2008-06-12  Bill Holmes  <billholmes54@gmail.com>
11506
11507         * mini-amd64.c:add_valuetype: Adding Winx64 code to fill the ArgInfo
11508         for the ArgValuetypeAddrInIReg case.
11509
11510         * mini-amd64.c:mono_arch_allocate_vars:  Adding a case for 
11511         ArgValuetypeAddrInIReg to avoid asserts.  Code needs to be added here.
11512
11513         * mini-amd64.c: mono_arch_call_opcode:  Adding Winx64 code for an ArgInfo of 
11514         type ArgValuetypeAddrInIReg.  The code emitted will copy the argument to a 
11515         local variable and pass the local variable by reference to the called method.
11516           
11517         * mini-amd64.c: mono_arch_emit_prolog:  Adjust the stack for calls to
11518         mono_jit_thread_attach and mono_get_lmf_addr for Winx64.
11519
11520         Contributed under MIT/X11 license.
11521
11522 2008-06-10  Rodrigo Kumpera  <rkumpera@novell.com>
11523
11524         * debug-mini.c (mono_debug_free_method_jit_info): Moved to metadata/mono-debug.c.
11525
11526         * debug-mini.c (mono_debug_print_vars): Release memory after printing
11527         everything.
11528
11529 2008-06-10  Martin Baulig  <martin@ximian.com>
11530
11531         * debug-mini.c
11532         (mono_debug_close_method): Check whether `cfg->epilogue_begin != NULL'.
11533
11534 2008-06-09  Kornel Pal  <kornelpal@gmail.com>
11535
11536         * main.c: Add and set argv [argc] to NULL to match C specification that fixes
11537         possible error when no arguments are passed.
11538
11539         Contributed under MIT/X11 license.
11540
11541 2008-06-09  Rodrigo Kumpera  <rkumpera@novell.com>
11542
11543         * mini-exceptions.c (ves_icall_get_trace): Skip source locations
11544         where the file name is NULL.
11545
11546 2008-06-09  Zoltan Varga  <vargaz@gmail.com>
11547
11548         * mini.c: Fix s390 build.
11549
11550 2008-06-08  Zoltan Varga  <vargaz@gmail.com>
11551
11552         * trace.c (mono_trace_parse_options): Fix warnings.
11553
11554         * mini-amd64.c: Revert most of the last patch for now as it breaks the build.
11555
11556 2008-06-07  Zoltan Varga  <vargaz@gmail.com>
11557
11558         * mini.c (remove_block_if_useless): Avoid printing the method name.
11559         
11560         * mini.c: Remove needless setting of ins->cil_code which is now done by 
11561         MONO_INST_NEW.
11562
11563         * mini-amd64.c: Add some code to avoid saving callee saved registers in the
11564         LMF. Not yet used.
11565
11566         * tramp-amd64.c (mono_arch_patch_callsite): Tell valgrind to discard the
11567         translated code after it has been patched.
11568
11569 2008-06-06  Zoltan Varga  <vargaz@gmail.com>
11570
11571         * mini-amd64.c (emit_call_body): Align the call displacement to 4 bytes to
11572         avoid problems during code patching on SMP systems.
11573         (emit_call): Avoid adding a patch info which is already added by 
11574         emit_call_body.
11575         (mono_arch_emit_exceptions): Ditto.
11576
11577 2008-06-05  Zoltan Varga  <vargaz@gmail.com>
11578
11579         * tramp-*.c (mono_arch_get_unbox_trampoline): No need to check for ret->byref,
11580         MONO_TYPE_ISSTRUCT already checks for it.
11581
11582 2008-06-05  Bill Holmes  <billholmes54@gmail.com>
11583
11584         * mini-amd64.c:merge_argument_class_from_type: When marshaling 
11585           structs with floats on Winx64 the float registers are not used.  
11586           The integer registers are always used..
11587         * mini-amd64.c:add_valuetype:  When marshaling structs on Winx64 
11588           only one register will be used and only if the size of the struct 
11589           is 1,2,4, or 8 bytes.
11590
11591         * tramp-amd64.c :  Adjusting size used for mono_global_codeman_reserve
11592           to work for Winx64.
11593
11594         Contributed under MIT/X11 license.
11595
11596 2008-06-05  Martin Baulig  <martin@ximian.com>
11597
11598         * debug-debugger.c (debugger_lookup_class): Also call
11599         mono_class_setup_methods() here; we're only called from RTI.
11600
11601 2008-06-05  Andreas Farber  <andreas.faerber@web.de>
11602
11603         * mini.c (mini_init): Add DTrace probes ves-init-{begin,end}.
11604         (mini_method_compile) Add DTrace probes method-compile-{begin,end}.
11605         * Makefile.am (libmono_la_LIBADD,libmono_static_la_LIBADD,mono_LDADD):
11606         Post-process object files and add dtrace-generated object, if necessary.
11607
11608         Contributed under MIT/X11 license.
11609
11610 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11611
11612         * inssel.brg, mini-ops.h: Added opcode for unboxcast with computed
11613         element class.
11614
11615         * mini.c: Generic sharing for unbox.any and castclass.
11616
11617 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11618
11619         * mini.c: Ignore tailcall prefix in shared generic code and when
11620         doing calls which require a vtable/rgctx argument.
11621
11622 2008-06-04  Mark Probst  <mark.probst@gmail.com>
11623
11624         * mini.c: Don't free the JIT info.
11625
11626         * driver.c: Changes in the JIT info table testing code.
11627
11628 2008-06-03  Zoltan Varga  <vargaz@gmail.com>
11629
11630         * tramp-arm.c (mono_arch_create_trampoline_code): Check for thread 
11631         interruption. Fix some warnings.
11632
11633         * tramp-*.c (mono_arch_create_trampoline_code): Call the _force_ variant of
11634         interruption_checkpoint.
11635
11636 Tue Jun 3 13:07:03 CEST 2008 Paolo Molaro <lupus@ximian.com>
11637
11638         * jit.h, mini.h, trace.c, driver.c: introduce an API to enable tracing
11639         from embedding applications.
11640
11641 2008-06-02  William Holmes  <billholmes54@gmail.com>
11642
11643         * mini-amd64.c :  Correcting some of the issues for Winx64 dealing with
11644           reserving 32 bytes on the stack when making calls. 
11645
11646         Contributed under MIT/X11 license.
11647
11648 2008-06-01  Zoltan Varga  <vargaz@gmail.com>
11649
11650         * mini-arm.c (mono_arch_output_basic_block): Merge some small fixes from
11651         the linear IL branch.
11652
11653         * driver.c: Print out more information for --version on arm.
11654
11655 2008-05-30  Zoltan Varga  <vargaz@gmail.com>
11656
11657         * mini-amd64.c (mono_arch_emit_prolog): Increase max_offset when processing
11658         bb_exit instead, since out of line bblocks might not actually be emitted
11659         out-of-line.
11660         
11661         * mini-amd64.c (mono_arch_emit_prolog): Increase bb->max_offset by the
11662         maximum epilog size for out of line bblocks if tracing is enabled.
11663
11664         * iltests.il.in: Merge tests/long-shift.regalloc.il into this file.
11665
11666 2008-05-28  Rodrigo Kumpera  <rkumpera@novell.com>
11667
11668         * arrays.cs: Regression tests for allocating arrays with negative sizes.
11669
11670 2008-05-28  Zoltan Varga  <vargaz@gmail.com>
11671
11672         * mini-x86.h mini-x86.c inssel-x86.brg cpu-x86.md: Add support for
11673         CAS instrinsics. Optimize the implementation of the ATOMIC_EXCHANGE 
11674         opcodes.
11675
11676 2008-05-27  Zoltan Varga  <vargaz@gmail.com>
11677
11678         * mini.c (mini_get_inst_for_method): Add support for CAS instrinsics when
11679         the 'value' to store is a constant.
11680
11681         * mini-ops.h: Add OP_ATOMIC_CAS_IMM opcodes.
11682
11683         * mini-amd64.c (mono_arch_output_basic_block): Optimize the the implementation
11684         of ATOMIC_EXCHANGE opcodes, add support for the CAS opcodes.
11685
11686 2008-05-26  Zoltan Varga  <vargaz@gmail.com>
11687
11688         * mini.c generic-sharing.c jit-icalls.c aot-compiler.c: Use accessor functions
11689         for accessing method->generic_container.
11690
11691 2008-05-24  Zoltan Varga  <vargaz@gmail.com>
11692
11693         * mini.c (mono_method_check_inlining): Avoid creating vtables if possible.
11694         
11695         * mini.c (SIG_HANDLER_SIGNATURE): Fix sparc build too.
11696
11697         * mini.c (SIG_HANDLER_SIGNATURE): Fix IA64 build.
11698
11699         * mini.c (mono_jit_compile_method_inner): Avoid a crash if mono_class_vtable ()
11700         fails.
11701
11702 2008-05-23  Zoltan Varga  <vargaz@gmail.com>
11703
11704         * driver.c (mono_main): Set mono_setup_vtable_in_class_init to FALSE.
11705
11706         * mini.c: Handle the case when mono_class_vtable () fails.
11707
11708 2008-05-23  Massimiliano Mantione  <massi@ximian.com>
11709         * mini.c (sigprof_signal_handler): Support call chains (backtrace) in
11710         the stat profiler.
11711
11712 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11713
11714         * mini.c, jit-icalls.c, jit-icalls.h: Make generic sharing work
11715         together with domain sharing.
11716
11717 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11718
11719         * mini.c: Treat callvirts to final methods like non-virtual calls
11720         when doing generic sharing, i.e. look them up in the runtime
11721         generic context.
11722
11723 2008-05-22  Mark Probst  <mark.probst@gmail.com>
11724
11725         * inssel.brg, mini-ops.h: Added opcodes for mkrefany and refanyval
11726         with computed types (for generic sharing).
11727
11728         * mini.c: Generic sharing for mkrefany and refanyval.
11729
11730 2008-05-22  Zoltan Varga  <vargaz@gmail.com>
11731
11732         * inssel.brg (mini_emit_virtual_call): Avoid constructing a generic vtable if
11733         possible.
11734
11735         * mini-trampolines.c (mono_magic_trampoline): Avoid calling setup_methods () in
11736         the generic sharing code.
11737         
11738         * mini-trampolines.c (mono_magic_trampoline): Call mono_class_setup_methods ()
11739         when needed.
11740
11741 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11742
11743         * mini.h: Remove the declaration of mono_aot_init_vtable ().
11744
11745 2008-05-21  C.J. Adams-collier <cjac@colliertech.org>
11746
11747         * driver.c: updated copyright date
11748
11749 2008-05-21  Zoltan Varga  <vargaz@gmail.com>
11750
11751         * aot-runtime.c mini.c: Remove the AOT init_vtable stuff as it is no longer
11752         needed.
11753
11754 2008-05-19  Martin Baulig  <martin@ximian.com>
11755
11756         * debug-debugger.h (MonoDebuggerInfo): Add `using_mono_debugger'
11757         pointing to the new `_mono_debug_using_mono_debugger' variable.
11758
11759         * driver.c
11760         (mono_main): Check mono_debug_using_mono_debugger() rather than
11761         the `MONO_INSIDE_MDB' environment variable to check whether we're
11762         inside the debugger.
11763
11764 2008-05-19  Zoltan Varga  <vargaz@gmail.com>
11765
11766         * mini.c (mini_method_compile): Use cfg->args [0] for accessing the this
11767         argument.
11768
11769 2008-05-08  Rodrigo Kumpera  <rkumpera@novell.com>
11770
11771         * declsec.h: Move MONO_SECMAN_FLAG to metadata/metadata-internals.h.
11772
11773         * mini.c: Added mini_assembly_can_skip_verification. This
11774         function checks if the assembly requested to skip verification. 
11775         Fixes part of #387274.
11776
11777 2008-05-07  Zoltan Varga  <vargaz@gmail.com>
11778
11779         * mini.c (mini_get_method): Disable the check for open generic classes when
11780         using generic sharing.
11781
11782         * generics.cs: Add a test for #387034.
11783
11784         * mini.c (mini_get_method): Check whenever the method class is an open generic
11785         type, and return NULL in that case, causing a verification error. Fixes
11786         #384123.
11787
11788 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11789
11790         * driver.c (mono_main): Revert r102623. The right
11791         thing to do is to enable the verifier under verifiable
11792         unless a --security flag was passed.
11793
11794         We need this non-trivial behavior for --verify-all otherwise
11795         mcs-compileall won't be able to use it. As it needs everything to
11796         be verified under validil.
11797
11798 2008-05-06  Martin Baulig  <martin@ximian.com>
11799
11800         Fix #383749.
11801
11802         * debug-mini.c (mono_debugger_thread_created): Add proper locking.
11803         (mono_debugger_thread_cleanup): Likewise.
11804         (mono_debugger_extended_notification): Likewise.
11805
11806 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11807
11808         * mini.c (mono_method_to_ir): Verify visibility of call related opcodes
11809         against both inflated and non-inflated methods. We need to check against the
11810         generic definition for cases where the instantiated method is not visible.
11811         We need to check against the inflated types for cases where the instantiation
11812         changes any super type. This fixes #382986.
11813
11814         Note that this doesn't need to be applied to other parts of mono_method_to_ir
11815         that check for visibiliy as generic params only appears as the type subject
11816         of tokens on call opcodes. Field manipulation and ldftn must always
11817         target an exact type.
11818
11819 2008-05-06  Rodrigo Kumpera  <rkumpera@novell.com>
11820
11821         * driver.c (mono_main): Using --verify-all enables the verifier under validil mode
11822         if no related --security flag is passed.
11823
11824 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11825
11826         * mini-arch.h: Prepare support for ppc64.
11827
11828         Contributed under MIT/X11 license.
11829
11830 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11831
11832         * aot-runtime.c: Prepare support for ppc64.
11833
11834         Contributed under MIT/X11 license.
11835
11836 2008-05-05  Andreas Farber  <andreas.faerber@web.de>
11837
11838         * mini-ops.h: Prepare support for ppc64.
11839
11840         Contributed under MIT/X11 license.
11841
11842 2008-05-04  Andreas Farber  <andreas.faerber@web.de>
11843
11844         * helpers.c: Add support for OSX/ppc64 and Linux/ppc64 (dis)assemblers.
11845
11846         Contributed under MIT/X11 license.
11847
11848 2008-05-03  Zoltan Varga  <vargaz@gmail.com>
11849
11850         * aot-runtime.c (load_aot_module): Avoid trying to load aot code for dynamic
11851         assemblies, since aot_name is not a full path, causing us to load MS.NET 
11852         assemblies on windows.
11853
11854 ?2008-04-28  Kornel Pal  <kornelpal@gmail.com>
11855
11856         * mini.c (mono_jit_compile_method_inner): Use g_warning instead of g_error
11857         for unsupported METHOD_IMPL_ATTRIBUTE_NATIVE.
11858         * main.c: Use UTF-8 encoded command line instead of Windows default code
11859         page on Windows to support Unicode.
11860         * driver.c (DllMain): New function for mixed-mode assembly support.
11861         * Makefile.am: Add -Wl,--kill-at to libmono_la_LDFLAGS on Windows to
11862         export __stdcall functions without decoration.
11863
11864         Contributed under MIT/X11 license.
11865
11866 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11867
11868         * tramp-amd64.c, mini-amd64.c: Preserve R11 in the trampoline by
11869         saving it very early.
11870
11871 2008-04-28  Mark Probst  <mark.probst@gmail.com>
11872
11873         * mini.h, mini.c: Lots of code for accessing the old RGCTX
11874         deleted.  The only way to access the new RGCTX is via the
11875         trampline.
11876
11877         * mini.c, mini-amd64, mini-x86.c, mini-exceptions.c: Pass the
11878         vtable instead of the RGCTX to static methods.
11879
11880         * mini-tramplines.c, tramp-amd64.c, tramp-x86.c: Trampoline for
11881         accessing the new RGCTX.
11882
11883         * generic-sharing.c: There is no separation between self, type
11884         arguments and other types in the RGCTX anymore.
11885
11886 2008-04-25  Jonathan Chambers <joncham@gmail.com>
11887
11888         * mini-amd64.c (add_general): Remove previous stack adjustment.
11889         (mono_arch_call_opcode): Remove OP_OUTARG_MEMBASE and instead simply
11890         adjust stack pointer after pushing args. Adjust ARGS_OFFSET to account
11891         for 32 bytes of stack space reserved for all calls.
11892         
11893         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Remove.
11894         (OP_AMD64_OUTARG_ALIGN_STACK): Take argument to specify size of stack 
11895         adjustment.
11896         
11897         Code contributed under MIT/X11 license.
11898
11899 2008-04-23  Rodrigo Kumpera  <rkumpera@novell.com>
11900
11901         * mini.c (mini_method_verify): Only verify non-inflated methods, check
11902         against the root definition, peeling out method and type instantiations.
11903         Cache verify success results, code that fails verification is still
11904         checked multiple times.
11905
11906 2008-04-23  Zoltan Varga  <vargaz@gmail.com>
11907
11908         * mini.c (mono_method_to_ir): Avoid inserting write barriers for stores of null.
11909
11910 2008-04-23  Jonathan Chambers <joncham@gmail.com>
11911
11912         * mini-amd64.c (add_general): Always increment stack on Win64.
11913         (mono_arch_call_opcode): Use OP_OUTARG_MEMBASE instead of OP_OUTARG
11914         on Win64.
11915         
11916         * inssel-amd64.brg (OP_OUTARG_MEMBASE): Add OP_OUTARG_MEMBASE for 
11917         stack based argument handling on Win64.
11918         
11919         Code contributed under MIT/X11 license.
11920
11921 2008-04-23  Raja R Harinath  <harinath@hurrynot.org>
11922
11923         * Makefile.am (version.h): Add support for git-svn.
11924
11925 2008-04-22  Zoltan Varga  <vargaz@gmail.com>
11926
11927         * mini-exceptions.c (mono_handle_native_sigsegv): Rework the gdb calling code
11928         so instead of calling g_spawn_command_line_sync, we do everything by hand, 
11929         avoiding allocations and libc functions which might deadlock.
11930         
11931         * mini-exceptions.c (mono_handle_native_sigsegv): Avoid calling gdb if the
11932         'no-gdb-backtrace' option is set.
11933
11934         * mini.c (mini_parse_debug_options): Parse 'no-gdb-backtrace' option.
11935
11936         * mini.h (MonoDebugOptions): Add 'no_gdb_backtrace' option.
11937
11938 2008-04-21  Martin Baulig  <martin@ximian.com>
11939
11940         * debug-debugger.h (MonoDebuggerInfo): Removed `attach', `detach'
11941         and `get_lmf_addr'; `notification_address' is no longer a pointer.
11942
11943 2008-04-21  Martin Baulig  <martin@ximian.com>
11944
11945         * debug-debugger.h (MonoDebuggerInfo): Added `thread_vtable_ptr',
11946         `thread_vtable', `event_handler_ptr' and `event_handler'.
11947
11948 2008-04-21  Martin Baulig  <martin@ximian.com>
11949
11950         * debug-debugger.h (MonoDebuggerInfo): Added `init_code_buffer';
11951         allows delayed initialization of the `executable_code_buffer' when
11952         attaching.
11953
11954 2008-04-21  Martin Baulig  <martin@ximian.com>
11955
11956         * mini.h (mono_debugger_create_notification_function): Removed.
11957         * tramp-*.c (mono_debugger_create_notification_function): Removed.
11958
11959         * mdb-debug-info64.s
11960         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11961
11962         * mdb-debug-info32.s
11963         (MONO_DEBUGGER__notification_function): Added this in the .text section.
11964
11965         * Makefile.am: Fix the mdb-debug-info*.s logic; the debugger
11966         currently only works on x86 and x86_64, so don't create it on ppc.
11967
11968 2008-04-21  Martin Baulig  <martin@ximian.com>
11969
11970         * mini.h (MonoDebugOptions): Added `mdb_optimizations'.
11971
11972         * mini.c
11973         (mini_method_compile): In the fp elimination check, check
11974         `debug_options.mdb_optimizations' in addition to
11975         mono_debug_using_mono_debugger().       
11976
11977         * driver.c (mono_main): Added `--debug=mdb-optimizations' option to
11978         disable some JIT optimizations which are only disabled when
11979         running inside the debugger.
11980         Added `--help-debug' option to describe the debugging options.
11981         (parse_debug_options): New static function to parse the `--debug'
11982         options, so we can easily add more stuff in future.
11983
11984 2008-04-20  Zoltan Varga  <vargaz@gmail.com>
11985
11986         * mini.c (set_exception_type_from_invalid_il): Avoid reading invalid memory when
11987         the method has no body.
11988
11989 2008-04-19  Jonathan Chambers <joncham@gmail.com>
11990
11991         * mini-amd64.c (cpuid): Implement with MSVC intrinsic as inline
11992         assembly is not allowed in MSVC 64-bit compiler. 
11993         (mono_arch_cpu_init): Don't set floating point precision on MSVC build
11994         as we get floating point exceptions everywhere.
11995         
11996         * exceptions-amd64.c (get_throw_trampoline): Push empty args on stack to
11997         correctly align arguments for call to throw_exception.
11998         (prepare_for_guard_pages): Cast to guint64 instead of unsigned long.
11999         
12000         Code contributed under MIT/X11 license.
12001
12002 2008-04-19  Zoltan Varga  <vargaz@gmail.com>
12003
12004         * mini-amd64.c (amd64_patch): Make the check for (%rip) addressing more strict.
12005
12006 2008-04-17  Zoltan Varga  <vargaz@gmail.com>
12007
12008         * inssel.brg (OP_SWITCH): Use (gint64) instead of (long) to cast a large constant.
12009
12010         * mini-amd64.c (NEW_INS): Set cil_code.
12011
12012         * mini.c (mini_method_compile): Move the disabling of fp elimination to here
12013         from mini-amd64.c so all debugger related logic is in one place.
12014
12015         * mini.c: Set cfg->ip to NULL after passes which set it so instructions created
12016         later won't have a random ip assigned to them.
12017
12018 2008-04-16  Zoltan Varga  <vargaz@gmail.com>
12019
12020         * mini-trampolines.c (mono_create_jump_trampoline): Add an assert to check that
12021         the arch specific function initializes code_size.
12022         (mono_create_delegate_trampoline): Ditto.
12023
12024         * mini-mips.h mini-mips.c inssel-mips.brg inssel-long32-mips.brg cpu-mips.md
12025         tramp-mips.c: Resurrect MIPS port and also fix the issues on little-endian
12026         platforms.
12027
12028         * liveness.c (mono_analyze_liveness): Disable the initlocals optimization if 
12029         running under the debugger.
12030
12031         * linear-scan.c (mono_linear_scan): Avoid sharing registers if running under the
12032         debugger.
12033
12034         * mini.c (mini_method_compile): Set a few flags in cfg if running under the
12035         debugger. Also move the disabling of optimizations here from driver.c.
12036         (mono_allocate_stack_slots_full): Avoid sharing stack slots if running under the
12037         debugger.
12038
12039         * mini.h (MonoCompile): Add a few new flags.
12040
12041 2008-04-15  Zoltan Varga  <vargaz@gmail.com>
12042
12043         * mini.c (mono_method_to_ir): Set cfg->ip before processing an IL instruction
12044         so the cil_code field of created MonoInst's is properly set.
12045         (mini_select_instructions): Ditto.
12046
12047         * mini.h (MONO_INST_NEW): Initialize the cil_code field using cfg->ip.
12048         (MONO_INST_NEW_CALL): Ditto.
12049
12050         * mini.c inssel.brg inssel-x86.brg inssel-amd64.brg: Use MONO_INST_NEW ()
12051         in many places so the ins->cil_code field is properly initialized.
12052
12053         * mini.c (mono_bblock_add_inst): Call MONO_ADD_INS () so the logic is in one
12054         place.
12055
12056 2008-04-14  Zoltan Varga  <vargaz@gmail.com>
12057
12058         * mini.c (mini_method_compile): Print a different message when compiling a 
12059         shared method.
12060         
12061         * mini.c (GENERIC_SHARING_FAILURE): Print a failure message when verbose_level
12062         > 1.
12063
12064 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12065
12066         * mini-amd64.c (mono_arch_output_basic_block): Implement OP_ABS directly using
12067         SSE2 instructions.
12068
12069         * basic-math.cs: Fix warnings. Add a test for Math.Abs ().
12070         
12071 2008-04-11  Zoltan Varga  <vargaz@gmail.com>
12072
12073         * mini.c (handle_stack_args): Make this return void since its return value was
12074         never used. Also set cfg->unverifiable for invalid IL instead of calling
12075         G_BREAKPOINT ().
12076
12077 2008-04-10  Mark Probst  <mark.probst@gmail.com>
12078
12079         * mini.c: Make sure "this" is live in catch clauses with type
12080         variables in shared generic code.
12081
12082 2008-04-08  Mark Probst  <mark.probst@gmail.com>
12083
12084         * mini.c: Replaced uses of MONO_TYPE_IS_REFERENCE with calls to
12085         generic_class_is_reference_type() to ensure the proper behaviour
12086         when sharing generic code and the type in question is a type
12087         argument.
12088
12089 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12090
12091         * mini-exceptions.c: Applied patch from Mark Spruiell (mes@zeroc.com). Fix
12092         race conditions when printing thread dumps. Fixes #377738.
12093
12094 2008-04-08  Massimiliano Mantione  <massi@ximian.com>
12095         
12096         aliasing.c (update_aliasing_information_on_inst): Fixed a bug which
12097         shows up when both MonoInst arguments can cause aliasig.
12098         There is likely no way in the current JIT to trigger this problem, but
12099         it showed up in the development of generics sharing, when in a new
12100         opcode both args of an OP_GROUP can be aliases (addresses of a local).
12101         When the generics sharing code will be committed, its tests will be
12102         valid also for this bug.
12103
12104 2008-04-08  Zoltan Varga  <vargaz@gmail.com>
12105
12106         * aot-runtime.c (decode_patch_info): Always transform PATCH_INFO_WRAPPER to
12107         PATCH_INFO_METHOD.
12108
12109         * mini.c (mono_resolve_patch_target): Fix a crash in the AOT case if method is
12110         NULL.
12111
12112 2008-04-07  Zoltan Varga  <vargaz@gmail.com>
12113
12114         * mini-exceptions.c (mono_handle_exception_internal): When --debug=casts is used,
12115         use a more detailed exception message for InvalidCastException.
12116
12117         * mini.h (MonoJitTlsData): Add 'class_cast_from' and 'class_cast_to' fields.
12118
12119         * driver.c (mono_main): Add --debug=casts option to turn on better 
12120         InvalidCastException message details.
12121
12122         * mini.c (mini_get_debug_options): New helper function to return the address of
12123         the debug_options variable.
12124
12125         * mini.c (mono_get_jit_tls_intrinsic): New helper function to create a load of
12126         the jit_tls TLS variable.
12127
12128         * mini.c (mono_jit_tls): New TLS variable.
12129
12130         * inssel.brg: Save the details of a cast to a TLS variable when the --debug=casts
12131         option is used.
12132
12133 2008-04-07  Rodrigo Kumpera  <rkumpera@novell.com>
12134
12135         * mini.h: Removed verifer related stuff. This code was moved to verify.c
12136
12137         * mini.c: Removed verifer related stuff, code moved to verify.c.
12138
12139         * driver.c: Using code from verify.c instead of mini.c.
12140
12141 2008-04-05  Zoltan Varga  <vargaz@gmail.com>
12142
12143         * mini.c (check_for_method_verify): Remove the mscorlib comment since it is no
12144         longer valid.
12145
12146 2008-04-04  Rodrigo Kumpera  <rkumpera@novell.com>
12147
12148         * mini.c (check_for_method_verify): Enabling verification of
12149         corlib if mono_verify_all is set. Bugs in the verifier preventing that
12150         have been fixed.
12151
12152 2008-04-04  Zoltan Varga  <vargaz@gmail.com>
12153
12154         * exceptions-amd64.c (throw_exception): Unify the win32/non-win32 cases, save
12155         caller saved registers as well.
12156         
12157         * exceptions-amd64.c (mono_arch_get_restore_context): Restore most caller
12158         saved registers as well.
12159
12160 2008-03-30  Zoltan Varga  <vargaz@gmail.com>
12161
12162         * mini-x86.c cpu-x86.md inssel-x86.brg: Add min/max intrinsics.
12163
12164         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of the non-SSE2 floating point
12165         code.
12166
12167 2008-03-27  Zoltan Varga  <vargaz@gmail.com>
12168
12169         * mini-amd64.c (mono_arch_get_this_arg_reg): Add a 'gsctx' argument and pass it
12170         to get_call_info.
12171         (get_call_info): Take a gsctx argument instead of 'cfg'.
12172
12173 2008-03-26  Zoltan Varga  <vargaz@gmail.com>
12174
12175         * mini.c (check_for_method_verify): Avoid verifying mscorlib methods even if
12176         mono_verify_all is set.
12177
12178         * driver.c (compile_all_methods_thread_main): Don't exit at the first error.
12179
12180         * mini.c mini.h: Remove the unused and incomplete stack merge verification code.
12181
12182 2008-03-25  Zoltan Varga  <vargaz@gmail.com>
12183
12184         * driver.c (compile_all_methods_thread_main): Error out if compilation fails with
12185         an exception.
12186
12187         * driver.c mini.c mini.h: Add a --verify-all development option to test the
12188         verifier and the code generated by the compiler.
12189
12190 2008-03-25  Mark Probst  <mark.probst@gmail.com>
12191
12192         * mini.c: Generic sharing of the non-nullable case of the box
12193         instruction.
12194
12195 2008-03-24  Zoltan Varga  <vargaz@gmail.com>
12196
12197         * inssel.brg: Fix the build.
12198
12199         * iltests.il.in: Add a test for lconv.ovf.u8.un.
12200
12201 2008-03-24  Rodrigo Kumpera  <rkumpera@novell.com>
12202
12203         * mini.c (mono_method_to_ir): Implement readonly for ldelema and
12204         Array:Address. Fixes #372410.
12205
12206         * iltests.il.in: New tests for readonly prefix.
12207
12208 2008-03-23  Zoltan Varga  <vargaz@gmail.com>
12209
12210         * mini.h mini.c mini-trampolines.c: Move trampoline related code to 
12211         mini-trampolines.c.
12212
12213         * mini.h mini.c mini-exceptions.c: Move mini_init_exceptions () to 
12214         mini-exceptions.c.
12215
12216         * mini-amd64.c mini-s390.c (mono_arch_lowering_pass): Use mono_decompose_op_imm ().
12217         
12218         * mini.c (mono_decompose_op_imm): New helper function.
12219
12220         * mini-s390x.c (calculate_sizes): Rename this to get_call_info for consistency
12221         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12222         return value.
12223
12224         * mini-s390x.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12225         mono_arch_output_basic_block. Fix warnings.
12226
12227         * inssel-s390x.brg: Remove the unneccesary OP_LMUL_IMM rule to fix the s390x build
12228         for now.
12229
12230 2008-03-22  Zoltan Varga  <vargaz@gmail.com>
12231
12232         * mini-exceptions.c (ves_icall_get_frame_info): Remove the ia64/s390 workarounds
12233         since the extra frame is now detected automatically inside the loop.
12234
12235         * mini-s390.c (mono_arch_peephole_pass_2): Remove the arch independent peephole 
12236         opts which are now in mono_peephole_ins ().
12237         
12238         * mini-s390.c (mono_arch_output_basic_block): Fix OP_FCALL_MEMBASE.
12239
12240         * mini-exceptions.c (ves_icall_get_frame_info): Skip native-to-managed wrapper
12241         frames and skip duplicate managed-to-native frames. Fixes #367665.
12242
12243         * mini-x86.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12244         opts which are now in mono_peephole_ins ().
12245         (mono_arch_peephole_pass_2): Ditto.
12246
12247         * mini-codegen.c (mono_peephole_ins): Fix a problem on 32 bit platforms.
12248
12249         * mini-codegen.c (mono_peephole_ins): New helper function containing the
12250         arch independent peephole optimizations.
12251
12252         * mini-amd64.c (mono_arch_peephole_pass_1): Remove the arch independent peephole
12253         opts which are now in mono_peephole_ins ().
12254
12255         * mini-amd64.c (mono_arch_peephole_pass_2): Ditto.
12256         
12257         * mini-s390.c (mono_arch_output_basic_block): Fix build.
12258
12259         * tramp-s390.c (mono_arch_get_vcall_slot): Handle an additional instruction
12260         pattern.
12261
12262         * mini-s390.c (mono_arch_output_basic_block): Handle big offsets in the
12263         CALL_MEMBASE opcodes. Fix setting of the destination in the OP_LCONV_TO_OVF_I
12264         opcode. 
12265
12266 2008-03-21  Zoltan Varga  <vargaz@gmail.com>
12267
12268         * mini-s390.c (calculate_sizes): Rename this to get_call_info for consistency
12269         with the other architectures, add an 'mp' argument, fold 'sz' argument into the
12270         return value.
12271
12272         * mini-s390.c: Handle DIV_IMM/REM_IMM in the lowering pass instead of in 
12273         mono_arch_output_basic_block. Fix warnings.
12274
12275 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12276
12277         * inssel-long32.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12278         conv.ovf.u.un.
12279
12280 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12281
12282         * inssel-long.brg: Add rules for long conv.ovf.i/conv.ovf.u/conv.ovf.i.un/
12283         conv.ovf.u.un.
12284
12285         * iltests.il: Add new tests.
12286
12287 2008-03-20  Kornel Pal  <kornelpal@gmail.com>
12288
12289         * mini.c: Removed Windows version macros.
12290
12291 2008-03-20  Mark Probst  <mark.probst@gmail.com>
12292
12293         * generic-sharing.c: Put reflection types in the extensible part
12294         of the runtime generic context.
12295
12296         * mini.c: Generic sharing of the GetTypeHandle special case of the
12297         ldtoken instruction.
12298
12299 2008-03-20  Zoltan Varga  <vargaz@gmail.com>
12300
12301         * mini.h (MONO_BB_FOR_EACH_INS_SAFE): New helper macro.
12302
12303         * mini-<ARCH>.c: Use the new macro instead in the peephole/lowering passes.
12304         
12305         * mini.h (MONO_DEL_INS): Rename to MONO_DELETE_INS and Add a 'bb' argument for 
12306         consistency with the other version on the linear IR branch.
12307
12308         * mini-<ARCH>.c: Update callers of MONO_DEL_INS.
12309
12310         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i/conv.ovf.u.
12311
12312         * iltests.il.in: Add new tests.
12313
12314 2008-03-19  Zoltan Varga  <vargaz@gmail.com>
12315
12316         * inssel-long32.brg inssel-long.brg: Add rules for conv.ovf.i.un/conv.ovf.u.un.
12317
12318         * iltests.il.in: Add new tests.
12319
12320 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12321
12322         * mini.c: Two variables with the same name were declared in
12323         nesting contexts and one wasn't initialized.  Fixed.
12324
12325 2008-03-19  Mark Probst  <mark.probst@gmail.com>
12326
12327         * mini.c: Generic sharing of the initobj instruction.
12328
12329 Tue Mar 18 20:18:02 CET 2008 Paolo Molaro <lupus@ximian.com>
12330
12331         * mini.c: make the test to optimize ldtoken from typeof() more
12332         precise.
12333
12334 2008-03-18  Mark Probst  <mark.probst@gmail.com>
12335
12336         * mini.c: Generic sharing of the initobj instruction for reference
12337         types.
12338
12339 Tue Mar 18 12:39:27 CET 2008 Paolo Molaro <lupus@ximian.com>
12340
12341         * mini.h, mini-amd64.c, mini-x86.c, tramp-amd64.c, tramp-x86.c: change
12342         the mono_breakpoint_clean_code() code to perform bound checks.
12343
12344 Tue Mar 18 11:50:14 CET 2008 Paolo Molaro <lupus@ximian.com>
12345
12346         * mini.h, mini-trampolines.c, tramp-*.c: change the signature of
12347         mono_arch_patch_callsite() to include the start of the managed method
12348         to be able to perform bound checks.
12349
12350 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12351
12352         * mini.c: Generic sharing for the isinst instruction.
12353
12354 2008-03-17  Mark Probst  <mark.probst@gmail.com>
12355
12356         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12357         inssel-long32-mips.brg: Added opcodes for doing indirect calls
12358         with the runtime generic context argument.
12359
12360         * mini.c: Share calls to several types of unsharable methods by
12361         putting the address of the method code in the runtime generic
12362         context and doing an indirect call.
12363
12364         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12365         to switches.
12366
12367 2008-03-16  Mark Probst  <mark.probst@gmail.com>
12368
12369         * generic-sharing.c: Change due to a change in the runtime genric
12370         context API.
12371
12372 2008-03-15  Martin Baulig  <martin@ximian.com>
12373
12374         * tramp-x86.c
12375         (mono_arch_nullify_class_init_trampoline): Add call to
12376         mono_breakpoint_clean_code() to make things work when running
12377         inside the debugger.
12378
12379         * tramp-amd64.c
12380         (mono_arch_nullify_class_init_trampoline): Add call to
12381         mono_breakpoint_clean_code() to make things work when running
12382         inside the debugger.
12383
12384 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12385
12386         * inssel-long.brg (reg): Fix 64 bit build.
12387
12388 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12389
12390         * mini.c, mini.h: Share static generic code by passing it an
12391         implicit argument pointing to the runtime generic context.
12392
12393         * mini-ops.h, inssel.brg, inssel-long.brg, inssel-long32.brg,
12394         inssel-long32-mips.brg: New opcodes for calling shared static,
12395         which need to be passed the runtime generic context.
12396
12397         * mini-amd64.c, mini-x86.c: Save the runtime generic context
12398         argument on the stack in the prologue if needed.  New function for
12399         finding the runtime generic context argument from the registers
12400         saved by the trampoline.
12401
12402         * mini-amd64.h, mini-x86.h: Specify which register to use for the
12403         runtime generic context argument.
12404
12405         * tramp-amd64.c: Also restore the register used for the runtime
12406         generic context argument.
12407
12408         * mini-trampoline.c: Resolve shared static calls by consulting the
12409         runtime generic context via the new argument.
12410
12411         * generic-sharing.c: Add an argument to sharability-checking
12412         functions that specifies whether type variables should be treated
12413         as sharable type arguments.
12414
12415         * inssel-x86.brg: Removed a superfluous, buggy rule.
12416
12417         * graph.c, local-propagation.c, aliasing.c: Added the new opcodes
12418         to switches.
12419
12420 2008-03-14  Martin Baulig  <martin@ximian.com>
12421
12422         * debug-debugger.c (main_thread_handler): Call
12423         mono_runtime_run_main() without sending any notifications.
12424
12425         * debug-debugger.h (MonoDebuggerInfo): Added `get_method_signature.
12426
12427 2008-03-14  Zoltan Varga  <vargaz@gmail.com>
12428
12429         * mini-trampolines.c (mono_magic_trampoline): Fix build on platforms without IMT.
12430
12431 2008-03-14  Mark Probst  <mark.probst@gmail.com>
12432
12433         * tramp-x86.c: Fixed register restore offsets in the trampoline
12434         code for ECX and EDX.
12435
12436 2008-03-12  Geoff Norton  <gnorton@novell.com>
12437
12438         * mini-arm.h: Add some #defines for locating sp, pc, r4 with
12439         different ucontext_t implementations.
12440         * exceptions-arm.c: Use the above defines to get exceptions working on 
12441         iPhone (based on a patch by Luke Howard lukeh@padl.com)
12442         * mini-arm.c: Implement iPhone icache support (based on a patch by
12443         Luke Howard lukeh@padl.com)
12444
12445 2008-03-12  Mark Probst  <mark.probst@gmail.com>
12446
12447         * mini.c: Enable generic sharing of calls to non-static
12448         non-interface non-generic non-value-type methods.
12449
12450         * mini-trampolines.c: Resolve calls from shared generic code.
12451
12452 2008-03-11  Zoltan Varga  <vargaz@gmail.com>
12453
12454         * Makefile.am il2tests.il iltests.il.in: Delete il2tests, merge it into iltests.
12455
12456         * tramp-amd64.c (mono_arch_create_trampoline_code): Correctly save RBP as well.
12457
12458 Mon Mar 10 11:59:34 CET 2008 Paolo Molaro <lupus@ximian.com>
12459
12460         * mini.c: some fixes for the AOT compiler.
12461
12462 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12463
12464         * cpu-amd64.md: Add clob:1 to some float opcodes.
12465
12466 2008-03-07  Rodrigo Kumpera  <rkumpera@novell.com>
12467
12468         * mini.h: Added MiniVerifierMode enumeration.
12469
12470         * mini.c: Added mini_verifier_set_mode to control
12471         the usage of the new verifier.
12472
12473         * mini.c (mono_method): Integrated the new verifier.
12474
12475         * driver.c: Extended --security option with validil and
12476         verifiable options to activate the new verifier.
12477
12478 2008-03-07  Zoltan Varga  <vargaz@gmail.com>
12479
12480         * mini.c jit-icalls.h jit-icalls.c: Generalize the exception creation 
12481         optimization to ctors taking 0 or 2 arguments too.
12482
12483         * mini.c (mono_method_to_ir): Optimalize the size of the exception throwing code
12484         a bit.
12485
12486         * jit-icalls.h (mono_create_corlib_exception): New JIT icall.
12487
12488         * mini-amd64.c (mono_arch_emit_prolog): Improve the first_bb optimization a bit.
12489
12490 2008-03-06  Zoltan Varga  <vargaz@gmail.com>
12491
12492         * mini.c (mono_method_to_ir): Apply one of the ldstr optimizations in the
12493         non-aot case as well.
12494
12495         * cpu-amd64.md: Reduce the max size of some frequently used opcodes.
12496
12497         * aot-runtime.c (decode_patch_info): Update this after the ldfld/stfld wrapper
12498         changes.
12499
12500         * aot-compiler.c (encode_patch): Ditto.
12501
12502         * mini.h (G_MININT32): Fix the definition of this.
12503
12504 2008-03-05  Zoltan Varga  <vargaz@gmail.com>
12505
12506         * mini.h: Define G_MININT32/G_MAXINT32 if using an older glib version.
12507
12508         * cfold.c: Remove definition of G_MININT32 which is now in mini.h.
12509
12510 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12511
12512         * mini-amd64.c (mono_arch_compute_omit_fp): Don't disable fp elimination for 
12513         methods returning vtypes in registers.
12514         (mono_arch_allocate_vars): Ditto.
12515
12516         * mini-amd64.c (mono_arch_get_this_arg_reg): New arch specific helper function.
12517
12518         * tramp-amd64.c (mono_arch_get_unbox_trampoline): Use mono_arch_get_this_arg_reg ().    
12519
12520         * generics.cs: Add a test from the linear IR branch.
12521
12522         * mini-amd64.c (emit_load_volatile_arguments): Handle vtypes passed in regs too.
12523
12524         * mini.c (inline_method): Cache failed inline attempts.
12525
12526 2008-03-04  Mark Probst  <mark.probst@gmail.com>
12527
12528         * mini.c: For shared methods of generic classes put the location
12529         of "this" into the MonoGenericJitInfo.
12530
12531         * mini-x86.c, mini-amd64.c, mini.h: Added function for fetching a
12532         register out of a MonoContext by register number.  Add the generic
12533         sharing context as an argument to mono_arch_find_this_argument().
12534
12535         * mini-alpha.c, mini-arm.c, mini-hppa.c, mini-ia64.c, mini-mips.c,
12536         mini-ppc.c, mini-s390.c, mini-s390x.c, mini-sparc.c: Added stub
12537         for new arch function.
12538
12539         * mini-exception.c: Handle open exception clauses in shared
12540         generic code.
12541
12542         * mini-trampolines.c: Supply additional argument to
12543         mono_arch_find_this_argument().
12544
12545 2008-03-04  Zoltan Varga  <vargaz@gmail.com>
12546
12547         * Makefile.am (regtests): Run the bench.exe tests last.
12548
12549 2008-03-03  Zoltan Varga  <vargaz@gmail.com>
12550
12551         * mini-amd64.c (mono_arch_emit_prolog): Improve the first bblock optimization
12552         a bit.
12553
12554 2008-03-02  Zoltan Varga  <vargaz@gmail.com>
12555
12556         * mini.c (mono_method_to_ir): Allow callvirt on static methods for compatibility
12557         with MS.
12558
12559         * mini-amd64.c (mono_arch_emit_prolog): Fix tracing after the last change.
12560         
12561         * mini-amd64.c (mono_arch_emit_prolog): Avoid saving dead arguments.
12562
12563         * mini.c (mono_method_check_inlining): Avoid disabling inlining for methods
12564         whose class has no cctor.
12565
12566         * liveness.c (mono_analyze_liveness): Mark dead arguments with MONO_INST_IS_DEAD.
12567
12568 2008-03-01  Zoltan Varga  <vargaz@gmail.com>
12569
12570         * mini.c (mono_method_to_ir): Report calling a static method using callvirt as
12571         unverified.
12572
12573 2008-02-29  Zoltan Varga  <vargaz@gmail.com>
12574
12575         * mini-ops.h: Remove OP_SPARC_INARG_VT, add a new OP_VTARG_ADDR opcode instead
12576         to be in sync with the code on the linear IR branch.
12577
12578         * mini-sparc.c inssel-sparc.brg: Use OP_VTARG_ADDR.
12579
12580         * inssel-s390.brg (OP_SETRET (freg)): Set dreg correctly.
12581
12582 2008-02-27  Zoltan Varga  <vargaz@gmail.com>
12583
12584         * mini-mips.c: Use cfg->vret_addr instead of cfg->ret.
12585
12586         * mini-s390x.c: Use cfg->vret_addr instead of cfg->ret.
12587
12588         * mini-s390.c: Use cfg->vret_addr instead of cfg->ret.
12589
12590         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_VARS define.
12591
12592         * mini-<ARCH>.c (mono_arch_create_vars): Define this for all architectures.
12593         
12594         * mini.c (mono_method_to_ir): Avoid invalid memory reads for methods without a
12595         body.
12596
12597 2007-11-14  Yoichi NAKAYAMA  <nakayama@pixela.co.jp>
12598
12599         * inssel-mips.brg (OP_OUTARG_MEMBASE (CEE_LDIND_R4 (base))): Add missing
12600         OP_LOADR4_MEMBASE emission.
12601
12602         * mini-codegen.c (mono_spillvar_offset_int): Remove assertion.
12603         (mono_spillvar_offset_float): Ditto.
12604
12605         * mini-mips.c (mono_arch_emit_prolog): Ditto.
12606
12607         * inssel-long32-mips.brg: Fix wrong branching, reduce redundant code
12608         emission.
12609
12610         * basic-long.cs: Add regression tests for them.
12611
12612         * mini-mips.c (add_float32_arg): Respect o32 calling convention in gr
12613         use.
12614         (mono_arch_allocate_vars): Fix representation of single-precision float
12615         argument.
12616         (mono_arch_output_basic_block): Ditto.
12617
12618         * inssel-mips.brg: Ditto, remove duplicate items.
12619
12620         * mini-mips.c (emit_load_volatile_arguments): New function to handle
12621         arguments of tail calls as on other platforms.
12622         (mono_arch_output_basic_block): Handle tail calls.
12623
12624         * inssel-mips.brg (OP_OUTARG_VT (CEE_LDOBJ (base))): Correct destination
12625         register.
12626
12627         * objects.cs (test_5_pass_static_struct): Add test for it.
12628
12629         Contributed under MIT/X11 license.
12630
12631 2008-02-26  Zoltan Varga  <vargaz@gmail.com>
12632
12633         * Makefile.am: Use gmcs for compiling the regression tests.
12634
12635         * *.2.cs *.2.il: Rename to *.cs and *.il.
12636
12637 2008-02-24  Zoltan Varga  <vargaz@gmail.com>
12638
12639         * regalloc.h: Make the vassign array smaller.
12640
12641         * mini.c (mini_method_compile): Remove an unused field in cfg.
12642
12643         * mini-codegen.c: Add a bunch of micro optimizations.
12644
12645 2008-02-23  Zoltan Varga  <vargaz@gmail.com>
12646
12647         * regalloc.h: Remove some unused fields.
12648
12649 2008-02-22  Zoltan Varga  <vargaz@gmail.com>
12650
12651         * mini-amd64.c (mono_arch_patch_code): Fix a warning.
12652
12653         * ssa.c (mono_ssa_remove): Avoid declaring volatile variables dead.
12654
12655 2008-02-22  Mark Probst  <mark.probst@gmail.com>
12656
12657         * mini.h: New trampoline type (RGCTX_LAZY_FETCH).
12658
12659         * mini-trampolines.c, tramp-amd64.c, tramp-x86.c: RGCTX lazy fetch
12660         trampoline: Fetch an entry from the runtime generic context.  If
12661         it's NULL, jump to the actual trampoline to fill the runtime
12662         generic context.  Otherwise, return it.
12663
12664         * mini.c: Call the lazy fetch trampoline to get entries out of the
12665         runtime generic context.
12666
12667         * tramp-ia64.c, tramp-arm.c, tramp-alpha.c, tramp-s390.c,
12668         tramp-s390x.c, tramp-ppc.c, tramp-hppa.c, tramp-mips.c,
12669         tramp-sparc.c: Stubs for the lazy fetch trampoline.
12670
12671 2008-02-21  Mark Probst  <mark.probst@gmail.com>
12672
12673         * mini.c: Fetch data out of the extensible part of the runtime
12674         generic context instead of calling a helper function.
12675
12676         * generic-sharing.c: Some functions moved into
12677         metadata/generic-sharing.c.  Helper function for fetching other
12678         types now checks and asserts against extensible rgctx (just for
12679         debugging purposes - the helper function isn't called anymore
12680         unless for debugging).
12681
12682 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12683
12684         * mini-arm.c (mono_arch_output_basic_block): Implement proper argument passing
12685         for tail calls up to the point that the tests in iltests.exe run. Also add a
12686         dummy CKFINITE implementation.
12687         (mono_arch_emit_prolog): Avoid saving the method in the LMF since it is only
12688         needed for trampoline LMF frames.
12689
12690         * exceptions-arm.c (mono_arch_find_jit_info): Only read lmf->method for 
12691         trampoline LMF frames.
12692
12693 2008-02-21  Rodrigo Kumpera  <rkumpera@novell.com>
12694
12695         * mini.c (inline_method): clean any pending loader error when inlining fail.
12696         Otherwise loader errors in mono_method_to_ir leaks and cause spurious errors.
12697
12698 2008-02-21  Zoltan Varga  <vargaz@gmail.com>
12699
12700         * aot-compiler.c (encode_patch): Handle ICALL_ADDR patch type.
12701
12702         * aot-runtime.c (decode_patch_info): Ditto.
12703
12704         * mini.c (mono_resolve_patch_target): Ditto.
12705         
12706         * aot-compiler.c (compile_method): Add some experimental code for AOT compiling
12707         icall wrappers.
12708
12709         * patch-info.h (PATCH_INFO): Add 'ICALL_ADDR' patch type.
12710         
12711         * mini.c (mono_method_to_ir): Convert a CEE_MONO_LDPTR opcode to an AOT constant
12712         if it references an icall address.
12713
12714 2008-02-20  Zoltan Varga  <vargaz@gmail.com>
12715
12716         * cpu-s390x.md: Remove some more unused opcodes.
12717         
12718         * cpu-s390x.md: Remove some unused opcodes.
12719
12720         * mini-ia64.c (mono_arch_lowering_pass): Add some more opcodes. Use
12721         mono_op_imm_to_op ().
12722
12723         * mini-sparc.c (opcode_to_sparc_cond): Use the mono_opcode_to_cond () functions
12724         instead of a switch statement.
12725         
12726         * mini-sparc.c (mono_arch_allocate_vars): Allocate a stack slot for use by
12727         the int<->float conversion opcodes instead of using mono_spillvar_offset_float ().
12728
12729         * mini-codegen.c: Eliminate rassign macro which is no longer needed.
12730         
12731         * mini-codegen.c: Remove unused mono_regstate2_... functions.
12732
12733         * mini-codegen.c (mono_print_ins_index): Avoid printing an index when it is
12734         -1.
12735
12736 2008-02-19  Zoltan Varga  <vargaz@gmail.com>
12737
12738         * driver.c (mono_main): Improve error reporting when an assembly cannot be
12739         opened. Fixes #362607.
12740
12741         * cpu-ia64.md cpu-s390x.md: Remove some unused opcodes.
12742
12743         * iltests.il.in: Add a test for static methods in interfaces.
12744
12745 2008-02-18  Zoltan Varga  <vargaz@gmail.com>
12746
12747         * genmdesc.c (build_table): Fix a crash on older glib versions.
12748
12749         * cpu-sparc.md: Remove some unused opcodes.
12750         
12751         * genmdesc.c: Error out if the .md contains CEE_ opcodes if 
12752         MONO_ARCH_ENABLE_NORMALIZE_OPCODES is defined.
12753
12754         * cpu-amd64.md: Remove some unused opcodes.
12755
12756         * mini.h mini-ops.h mini.c: Define the OP_Ccc opcodes in mini-ops.h normally
12757         like the other opcodes.
12758
12759 2008-02-17  Zoltan Varga  <vargaz@gmail.com>
12760
12761         * mini-ia64.c: Use cfg->vret_addr instead of cfg->ret.
12762
12763         * mini-arm.h mini-arm.c: Use cfg->vret_addr instead of cfg->ret.
12764
12765         * mini-sparc.c: Use cfg->vret_addr instead of cfg->ret. Name the MonoCompile
12766         variables 'cfg' instead of 'm' for consistency.
12767
12768         * mini-x86.c: Use cfg->vret_addr instead of cfg->ret.
12769
12770         * mini.h (MonoCompile): Add new 'vret_addr' field which represents the hidden
12771         argument holding the vtype return address, to avoid the ambigious use of
12772         cfg->ret for this purpose.
12773
12774         * mini.c (NEW_RETLOADA): Use vret_addr if set.
12775
12776         * mini-amd64.c: Use cfg->vret_addr instead of cfg->ret.
12777         
12778         * mini-codegen.c (mono_print_ins): Rename to mono_print_ins_index (), Add a
12779         new mono_print_ins () function which only takes one argument.
12780
12781 2008-02-15  Zoltan Varga  <vargaz@gmail.com>
12782
12783         * mini-s390.h (MONO_OUTPUT_VTR): Use cfg instead of s, avoid assignments to
12784         macro arguments.
12785
12786 2008-02-14  Zoltan Varga  <vargaz@gmail.com>
12787
12788         * mini-ops.h: Get rid of OP_SPARC_LOCALLOC_IMM.
12789
12790         * mini-sparc.c inssel-sparc.brg: Use OP_LOCALLOC_IMM instead of OP_SPARC_LOCALLOC_IMM.
12791
12792         * mini-x86.c: Sync with the version on the linear IR branch by adding new 
12793         opcodes and other small changes.
12794
12795         * mini-ops.h: Add some new opcodes from the linear IR branch.
12796
12797         * mini-ops.h: Get rid of the OP_X86_..._MEMBASE opcodes.
12798
12799         * mini-x86.c inssel-x86.brg cpu-x86.md: Get rid of the confusing _MEMBASE
12800         opcodes, use the REG_MEMBASE opcodes instead.
12801         
12802         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Get rid of the confusing _MEMBASE
12803         opcodes, use the REG_MEMBASE opcodes instead.
12804         
12805         * mini-amd64.c (mono_arch_output_basic_block): Sync with the version on the
12806         linear IR branch.
12807
12808         * mini.c (mono_op_imm_to_op): New helper function.
12809
12810         * mini-ops.h: Add some opcodes from linear IR branch.
12811
12812 2008-02-13  Zoltan Varga  <vargaz@gmail.com>
12813
12814         * mini-alpha.h mini-alpha.c tramp-alpha.c: Alpha port updates from Sergey Tikhonov 
12815         <tsv@solvo.ru>.
12816
12817 2008-02-12  Zoltan Varga  <vargaz@gmail.com>
12818
12819         * mini.c (mono_normalize_opcodes): Always convert CEE_CONV_R4/R8 to 
12820         OP_ICONV_TO_R4/R8.
12821
12822         * mini-ia64.c cpu-ia64.md: Add OP_ICONV_TO_R4/R8.
12823
12824 2008-02-09  Zoltan Varga  <vargaz@gmail.com>
12825
12826         * aot-compiler.c (emit_method_code): Add an assert.
12827
12828         * mini-arm.h mini-arm.c exceptions-arm.c: Modify the exception throwing code and
12829         the IMT code so it is AOT friendly. Enable AOT for methods which call interface
12830         methods.
12831
12832 2008-02-08  Zoltan Varga  <vargaz@gmail.com>
12833
12834         * mini-arm.c (mono_arch_output_basic_block): Fix the ordering of arguments for 
12835         some load/store opcodes so they are consistent. 
12836         (mono_arch_emit_prolog): Simplify some code.
12837
12838         * aot-runtime.c (mono_aot_get_plt_entry): Fix a warning.
12839
12840         * objects.cs: Add tests for large argument offsets on ARM.
12841
12842         * mini-arm.c (mono_arch_emit_prolog): Fix handling of arguments with large 
12843         stack offsets. Fixes #359651.
12844
12845         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R4/R8 properly.
12846
12847         * cpu-s390x.md: Add OP_LCONV_TO_R4/R8.
12848
12849         * cpu-ia64.md mini-ia64.h mini-ia64.c: Get rid of CEE_ opcodes.
12850
12851         * mini-ops.h: Add OP_ICONV_TO_R_UN opcode.
12852
12853         * mini.c (mono_normalize_opcodes): Remap CEE_CONV_R_UN too.
12854
12855         * cpu-s390x.md cpu-s390.md mini-s390x.c mini-arm.c cpu-arm.md mini-s390.c: Get
12856         rid of CEE_CONV_R_UN.
12857
12858         * mini-s390x.c mini-s390x.h cpu-s390x.md inssel-s390x.brg: Get rid of CEE_ opcodes.
12859
12860 2008-02-07  Zoltan Varga  <vargaz@gmail.com>
12861
12862         * mini-s390.c mini-s390.h cpu-s390.md: Get rid of CEE_ opcodes.
12863
12864         * mini.c (mono_normalize_opcodes): Add some more opcodes.
12865
12866         * mini-arm.c mini-arm.h cpu-arm.md: Get rid of CEE_ opcodes.
12867
12868         * cpu-amd64.md: Remove some unused opcodes.
12869
12870         * mini-sparc.c mini-sparc.h cpu-sparc.md: Get rid of CEE_ opcodes.
12871
12872         * mini-x86.c mini-x86.h cpu-x86.md: Get rid of CEE_ opcodes.
12873
12874         * mini.c mini-<ARCH>.c: Remove mono_arch_local_regalloc (), instead make 
12875         arch specific functions for its parts. Call the peephole pass after local
12876         regalloc so the prolog can compute a more accurate max_offset.
12877         
12878         * mini.c (mono_normalize_opcodes): New mini pass to convert CEE_ opcodes to
12879         the corresponding OP_I/OP_L opcodes.
12880
12881         * mini-amd64.c mini-amd64.h cpu-amd64.md: Get rid of CEE_ opcodes.
12882
12883         * mini-sparc.c (mono_arch_output_basic_block): Fix the sparc build.
12884
12885 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12886
12887         * mini-s390.c (mono_arch_get_inst_for_method): Remove the Interlocked cases
12888         as they are handled in mini.c.
12889
12890         * mini-s390x.c (mono_arch_get_inst_for_method): Ditto.
12891         
12892         * mini-<ARCH>.c (mono_arch_get_inst_for_method): Remove the MemoryBarrier
12893         case since it is handled in mini.c.
12894
12895         * cpu-sparc.md (sparc_setfreg_float): Fix the sparc build.
12896
12897         * mini-ops.h: Add new opcodes OP_CALL/OP_CALLVIRT.
12898
12899         * *.c: Use the new opcodes in the IR and back end code.
12900
12901         * mini-ops.h cpu-<ARCH>.md: Correct the name of the bgt_un opcodes.
12902
12903         * mini-amd64.c (emit_call_body): Use a far-call for calling dynamic methods.
12904
12905 2008-02-06  Mark Probst  <mark.probst@gmail.com>
12906
12907         * mini-trampolines.c (mono_generic_class_init_trampoline): Removed
12908         an assert because it has a race condition.
12909
12910 2008-02-06  Zoltan Varga  <vargaz@gmail.com>
12911
12912         * tramp-amd64.c (mono_arch_patch_callsite): Add more diagnostics.
12913
12914         * inssel.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused CEE_RET opcode.
12915
12916         * mini-<ARCH>.c cpu-<ARCH>.md: Get rid of unused LDIND/STIND opcodes.
12917
12918         * *.brg mini-<ARCH>.c cpu-<ARCH>.md: Get rid of OP_SETREG/OP_SETFREG/OP_SETREGIMM,
12919         use OP_MOVE/OP_FMOVE/OP_ICONST instead.
12920
12921 2008-02-05  Zoltan Varga  <vargaz@gmail.com>
12922
12923         * cpu-amd64.md (move): Correct the maximum size of move.
12924
12925 2008-02-05  Mark Probst  <mark.probst@gmail.com>
12926
12927         * tramp-amd64.c, tramp-x86.c, mini-trampolines.c: Added a check in
12928         the generic class init trampoline to return quickly if the class
12929         is already inited.
12930
12931 2008-02-04  Zoltan Varga  <vargaz@gmail.com>
12932
12933         * tramp-amd64.c (mono_arch_patch_callsite): Add some diagnostics to help debug
12934         issues where an 32 bit callsite cannot be patched by a 64 bit address.
12935
12936 2008-02-03  Zoltan Varga  <vargaz@gmail.com>
12937
12938         * generics.2.cs generics-variant-types.2.il: Merge some tests from the linear IR
12939         branch.
12940
12941 2008-01-31  Zoltan Varga  <vargaz@gmail.com>
12942
12943         * objects.cs: Add some soft-float tests.
12944
12945         * mini.c: Fix a couple more soft-float issues.
12946
12947         * helpers.c (mono_disassemble_code): Fix disassembly on ARM.
12948
12949         * mini-amd64.c (peephole_pass): Use IXOR instead of LXOR for zeroing a register to
12950         avoid a REX prefix.
12951
12952 2008-01-30  Zoltan Varga  <vargaz@gmail.com>
12953
12954         * exceptions-x86.c (mono_arch_find_jit_info): Fix stack unwinding when an
12955         exception happens while compiling a virtual method.
12956
12957 2008-01-29  Zoltan Varga  <vargaz@gmail.com>
12958
12959         * mini-sparc.c (mono_arch_emit_epilog): Fix folding of negative return values.
12960         
12961         * mini-sparc.c: Fix build.
12962
12963         * mini-sparc.c (get_call_info): Add support for generic sharing.
12964
12965         * mini-exceptions.c: Add a FIXME.
12966
12967 2008-01-27  Zoltan Varga  <vargaz@gmail.com>
12968
12969         * mini-exceptions.c (mono_handle_exception_internal): Remove the old style
12970         altstack handling code.
12971
12972         * mini-s390.c (mono_arch_emit_exceptions): Really fix a warning.
12973         
12974         * mini-s390.c (mono_arch_emit_exceptions): Fix a warning.
12975
12976         * mini-s390.c: Add support for generic sharing.
12977
12978         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12979         Fix CAS on s390.
12980         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12981
12982         * mini-s390x.c (mono_arch_emit_exceptions): Fix a warning.
12983
12984         * mini-s390x.c: Add support for generic sharing.
12985         
12986         * mini-exceptions.c (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): 
12987         Fix CAS on ia64.
12988         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Ditto.
12989
12990         * mini-s390x.c: Use is_imm16 instead of is_uimm16 when checking whenever s390_aghi
12991         can be used since it takes a 16 bit signed immediate.
12992
12993         * inssel-s390x.brg: Fix OP_SETRET.
12994
12995         * mini-s390x.c (mono_arch_output_basic_block): Fix OP_BREAK.
12996
12997         * mini-codegen.c (mono_opcode_to_cond): Fix a warning.
12998
12999         * mini-s390x.c cpu-s390x.md: Implement sext.i4 properly by sign extension.
13000
13001         * mini.c (mono_create_delegate_trampoline): Don't use mono_create_ftpntr here.
13002
13003         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_addr_from_ftnptr
13004         in one place.
13005
13006         * mini-ia64.h mini-ia64.c: Add minimal support for the delegate trampoline 
13007         stuff.
13008
13009         * mini.h inssel-x86.brg inssel-amd64.brg tramp-alpha.c tramp-ia64.c: Get rid
13010         of the unused mono_arch_patch_delegate_trampoline stuff.
13011
13012 2008-01-26  Zoltan Varga  <vargaz@gmail.com>
13013
13014         * basic-long.cs: Move the fp related tests to basic-float.cs.
13015
13016         * mini-ops.h (OP_OUTARG_FREG_R4): New opcode.
13017
13018         * mini-ia64.c inssel-ia64.brg: Implement proper R4 argument passing.
13019
13020         * basic-calls.cs: Add a test for proper float argument passing.
13021
13022         * mini-ia64.h (mono_ia64_context_get_ip): Do not substract 1 from the ip
13023         if the context corresponds to an exception received through a signal.
13024
13025         * exceptions.cs: Add a test for nullref handling at the start of a try
13026         clause.
13027
13028         * mini-ia64.c (mono_arch_call_opcode): Fix ia64 argument passing.
13029
13030         * jit-icalls.c (mono_break): New JIT icall.
13031
13032         * mini-<ARCH>.c: Use mono_break instead of mono_arch_break.
13033
13034         * mini-arm.c (arm_patch): Add support for patching the blx calling sequence.
13035
13036 2008-01-25  Zoltan Varga  <vargaz@gmail.com>
13037
13038         * cpu-*.md: Get rid of unused opcodes.
13039
13040         * cpu-g4.md: Rename this to cpu-ppc.md for consistency with other archs.
13041
13042         * Makefile.am: Move mini-trampolines.c to $(common_sources) since it is now used
13043         by all platforms.
13044
13045         * mini-<ARCH>.h mini.c: Get rid of the MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE
13046         define.
13047
13048         * mini-s390x.h tramp-s390x.c Makefile.am: Rework the s390x trampoline code to use
13049         the arch independent trampoline code in mini-trampolines.c.
13050
13051         * aot-runtime.c (mono_aot_init_vtable): Fix a warning.
13052
13053         * mini.c (get_runtime_generic_context_ptr): Fix a warning.
13054
13055         * mini-s390.h: Remove an unused define.
13056         
13057         * mini-s390.h tramp-s390.c Makefile.am: Rework the s390 trampoline code to use
13058         the arch independent trampoline code in mini-trampolines.c.
13059
13060         * mini-arm.c (mono_arch_emit_prolog): Fix build.
13061
13062 2008-01-24  Zoltan Varga  <vargaz@gmail.com>
13063
13064         * mini-sparc.c (mono_arch_output_basic_block): Remove some unecessary code.
13065
13066         * mini-s390.c (mono_arch_emit_prolog): Fix build.
13067
13068         * mini-s390x.c (mono_arch_emit_prolog): Fix build.
13069
13070         * mini-ppc.c (mono_arch_emit_prolog): Fix build.
13071
13072         * cpu-amd64.md: Use smaller sizes for int opcodes.
13073
13074         * *.c: Get rid of the NOT_IMPLEMENTED define which is now in mini.h.
13075
13076         * *.cs: Add some tests from the linear-ir branch. Move structs tests to 
13077         objects.cs.
13078
13079         * driver.c (mono_main): Add a --break-at-bb command line argument for JIT
13080         debugging.
13081
13082         * mini.h *.c: Change cfg->vars to contain the MonoMethodVar entries directly
13083         instead of though a pointer to save an indirection when accessing elements of
13084         the array.
13085
13086         * mini.h (MONO_IS_COND_BRANCH_OP): Move these macros here from mini.c. Fix
13087         some typos.
13088         (NOT_IMPLEMENTED): New helper macro.
13089         (MONO_BB_FOR_EACH_INS): New helper macro to iterate through the instructions
13090         of a bb.
13091
13092         * *.c: Use the new helper macro.
13093
13094 2008-01-21  Zoltan Varga  <vargaz@gmail.com>
13095
13096         * mini-x86.h (MONO_ARCH_AOT_SUPPORTED): Disable AOT for apple x86.
13097
13098 2008-01-20  Zoltan Varga  <vargaz@gmail.com>
13099
13100         * mini-amd64.c (mono_arch_emit_prolog): Optimize the omit fp case to save two
13101         stack slots.
13102
13103 2008-01-18  Zoltan Varga  <vargaz@gmail.com>
13104
13105         * mini-amd64.c (mono_arch_emit_prolog): Disable the new optimization if
13106         profiling is enabled.
13107         
13108         * mini-amd64.c (mono_arch_call_opcode): Emit the save_sp_to_lmf instruction at
13109         the end.
13110         (mono_arch_emit_prolog): Add more first bblock optimizations.
13111
13112         * mini-amd64.c (mono_arch_call_opcode): Keep assignments to the arg registers
13113         in order if possible.
13114         (mono_arch_emit_prolog): Optimize assignments to arg registers in the first
13115         bblock, since the arguments are still in their original registers.
13116
13117         * mini.c (type_from_op): Calling add.ovf on floats is not valid IL code.
13118
13119 2008-01-17  Zoltan Varga  <vargaz@gmail.com>
13120
13121         * mini.c (mono_method_to_ir): Use the no-spilling optimization for CEE_CALLI
13122         as well.
13123
13124         * mini-amd64.c (mono_arch_emit_prolog): Save an instruction if the LMF is at
13125         offset 0.
13126
13127         * mini-amd64.h (MONO_ARCH_HAVE_NOTIFY_PENDING_EXC): Turn on this for amd64.
13128
13129         * exceptions-amd64.c (mono_arch_notify_pending_exc): New function to 
13130         process async exceptions received while in unmanaged code.
13131
13132         * mini.c (mini_init): Install a callback with the runtime which will be called
13133         when a thread receives an async exception while in unmanaged code.
13134
13135         * mini.c driver.c: Update after mono_get_native_wrapper () signature change.
13136
13137         * mini-s390x.c (mono_arch_output_basic_block): Fix s390x build.
13138
13139 2008-01-16  Wade Berrier  <wberrier@novell.com>
13140
13141         * cpu-g4.md:
13142         * cpu-arm.md:
13143         * cpu-s390x.md:
13144         fix build
13145
13146 2008-01-16  Zoltan Varga  <vargaz@gmail.com>
13147
13148         * mini-x86.c (mono_arch_output_basic_block): Remove some gccism which prevents
13149         compilation with sun cc.
13150
13151         * cpu-*.md: Fix the build.
13152
13153         * cpu-x86.md: Fix the length of some load membase opcodes. Fixes #354241.
13154
13155         * mini-amd64.h: Add some comments to the MonoLMF structure.
13156
13157         * mini-ops.h cpu-amd64.c: Add a OP_AMD64_SAVE_SP_TO_LMF opcode.
13158         
13159         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Avoid setting the rip field
13160         in the LMF structure if possible. This saves two instructions in the
13161         managed->native wrappers.
13162
13163         * mini-ops.h *.md: Make some opcodes names uniform by removing the op_ prefix.
13164
13165 2008-01-16  Mark Probst  <mark.probst@gmail.com>
13166
13167         * generic-sharing.c: New type argument lookup code which uses the
13168         runtime generic context template.
13169
13170 2008-01-15  Zoltan Varga  <vargaz@gmail.com>
13171
13172         * mini.c (mono_method_to_ir): Avoid emitting a write barrier when storing NULL.
13173
13174         * mini-arm.c (add_general): Fix arm eabi parameter passing.
13175         (mono_arch_output_basic_block): Fix localloc implementation.
13176
13177         * mini-amd64.c (peephole_pass): Sync store+load optimizations with the x86 version.
13178
13179         * mini-ia64.c (peephole_pass): Fix ia64 build.
13180
13181         * mini-amd64.c (peephole_pass): Fix a warning.
13182         
13183         * mini-amd64.c (mono_arch_allocate_vars): Make sure the LMF is always stored
13184         at a constant offset from sp/fp.
13185
13186         * exceptions-amd64.c (mono_arch_find_jit_info): Compute the LMF address from fp/sp
13187         instead of obtaining it from *lmf in the managed method case.
13188
13189 2008-01-14  Zoltan Varga  <vargaz@gmail.com>
13190
13191         * exceptions-amd64.c (mono_arch_find_jit_info): Remove some duplicate code.
13192
13193 Mon Jan 14 12:33:06 CET 2008  David S. Miller  <davem@davemloft.net>
13194
13195         * mini.h (MonoInstList): New type.
13196         (MONO_INST_LIST_INIT, MONO_INST_LIST_EMPTY,
13197         __MONO_INST_LIST_ADD, MONO_INST_LIST_ADD,
13198         MONO_INST_LIST_ADD_TAIL, __MONO_INST_LIST_DEL,
13199         __MONO_INST_LIST_SPLICE, MONO_INST_LIST_SPLICE,
13200         MONO_INST_LIST_SPLICE_TAIL, MONO_INST_LIST_SPLICE_INIST,
13201         MONO_INST_LIST_SPLICE_TAIL_INIT, mono_container_of,
13202         MONO_INST_LIST_ENTRY, MONO_INST_LIST_FIRST_ENTRY,
13203         MONO_INST_LIST_LAST_ENTRY, MONO_INST_LIST_FOR_EACH,
13204         MONO_INST_LIST_FOR_EACH_PREV, MONO_INST_LIST_FOR_EACH_SAFE,
13205         MONO_INST_LIST_FOR_EACH_PREV_SAFE,
13206         MONO_INST_LIST_FOR_EACH_ENTRY,
13207         MONO_INST_LIST_FOR_EACH_ENTRY_REVERSE,
13208         MONO_INST_LIST_FOR_EACH_ENTRY_SAFE,
13209         mono_inst_list_first, mono_inst_list_last,
13210         mono_inst_list_next, mono_inst_list_prev): New instruction
13211         list handling interfaces.
13212         (MonoBasicBlock): Remove 'last_ins' and 'code', replace with
13213         list head 'ins_list'.
13214         (MonoInst): Replace next pointer with list head 'node'.
13215         (MonoCallInst): Make 'out_args' a MonoInstList.
13216         (MONO_INST_NEW_CALL): Explicitly init ->out_args.
13217         (MonoCompile): Delete reverse_inst_list and
13218         reverse_inst_list_len.
13219         * mini-hppa.c (mono_arch_call_opcode, NEW_INS,
13220         mono_arch_lowering_pass, mono_arch_local_regalloc,
13221         mono_arch_output_basic_block, mono_arch_emit_prolog):
13222         Convert to new instruction lists.
13223         (insert_after_ins): Delete.
13224         * inssel.brg (MONO_EMIT_NEW_BRANCH_BLOCK): Convert to new
13225         instruction lists.
13226         * mini-hppa.h (MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Likewise.
13227         * mini.c (NEW_BBLOCK, ADD_BBLOCK, CHECK_BBLOCK,
13228         split_bblock, mono_add_ins_to_end, mono_emit_call_args,
13229         mono_emulate_opcode, mono_emit_load_got_addr,
13230         inline_method, mono_method_to_ir, mono_print_bb_code,
13231         print_dfn, decompose_pass, nullify_basic_block,
13232         replace_out_block_in_code, remove_block_if_useless,
13233         merge_basic_blocks, move_basic_block_to_end,
13234         try_unsigned_compare, optimize_branches, mono_print_code,
13235         mini_select_instructions, remove_critical_edges): Likewise.
13236         * mini-amd64.c (emit_sig_cookie, mono_arch_call_opcode,
13237         peephole_pass_1, peephole_pass, mono_arch_lowering_pass,
13238         mono_arch_output_basic_block, mono_arch_emit_prolog):
13239         Likewise.
13240         * mini-mips.c (mono_arch_call_opcode, peephole_pass,
13241         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13242         mono_arch_output_basic_block): Likewise.
13243         (inst_list_prepend, insert_after_ins): Delete.
13244         * mini-mips.h (MONO_EMIT_NEW_BRANCH_NONZERO_LABEL,
13245         MONO_EMIT_NEW_COMPARE_BRANCH_BLOCK): Convert to new
13246         instruction lists.
13247         * mini-x86.c (emit_sig_cookie, mono_arch_call_opcode,
13248         peephole_pass_1, peephole_pass, mono_arch_output_basic_block,
13249         mono_arch_emit_prolog): Likewise.
13250         * cfold.c (mono_constant_fold): Likewise.
13251         * liveness.c (visit_bb, mono_analyze_liveness,
13252         optimize_initlocals): Likewise.
13253         * ssapre.c (dump_code, process_bb, code_motion): Likewise.
13254         * graph.c (mono_draw_code_cfg): Likewise.
13255         * ssa.c (mono_ssa_rename_vars, mono_ssa_compute,
13256         mono_ssa_remove, mono_ssa_avoid_copies, mono_ssa_create_def_use,
13257         mono_ssa_cprop): Likewise.
13258         * abcremoval (get_relations_from_previous_bb, process_block):
13259         Likewise.
13260         * local-propagation (mono_cprop_invalidate_values,
13261         mono_local_cprop_bb): Likewise.
13262         * mini-s390x.c (mono_arch_call_opcode, emit_sig_cookie,
13263         peephole_pass, mono_arch_output_basic_block,
13264         mono_arch_emit_prolog): Likewise.
13265         * mini-arm.c (mono_arch_call_opcode, peephole_pass,
13266         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13267         mono_arch_emit_prolog): Likewise.
13268         (insert_after_ins): Delete.
13269         * aliasing.c (print_code_with_aliasing_information,
13270         mono_build_aliasing_information, mono_aliasing_deadce):
13271         Convert to new instruction lists.
13272         * mini-ia64.c (emit_sig_cookie, mono_arch_call_opcode,
13273         peephole_pass, NEW_INS, mono_arch_lowering_pass,
13274         mono_arch_local_regalloc, mono_arch_output_basic_block):
13275         Likewise.
13276         (insert_after_ins): Delete.
13277         * mini-sparc.c (emit_sig_cookie, mono_arch_call_opcode,
13278         peephole_pass, mono_arch_output_basic_block): Convert to
13279         new instruction lists.
13280         * mini-codegen (InstList, inst_list_prepend,
13281         insert_after_ins): Delete.
13282         (insert_before_ins, get_register_force_spilling,
13283         get_register_spilling, free_up_ireg, free_up_reg,
13284         create_copy_ins, create_spilled_store, alloc_int_reg,
13285         alloc_float_reg, alloc_reg, mono_local_regalloc): Convert
13286         to new instruction lists.
13287         * mini-ppc.c (mono_arch_call_opcode, peephole_pass,
13288         NEW_INS, mono_arch_lowering_pass, mono_arch_local_regalloc,
13289         mono_arch_output_basic_block, mono_arch_emit_prolog): Likewise.
13290         (insert_after_ins): Delete.
13291         * mini-alpha.c (NEW_INS, peephole_pass, mono_arch_lowering_pass,
13292         mono_arch_local_regalloc, mono_arch_output_basic_block,
13293         mono_arch_call_opcode): Convert to new instruction lists.
13294         (insert_after_ins): Delete.
13295         * mini-s390.c (mono_arch_call_opcode, emit_sig_cookie,
13296         peephole_pass, mono_arch_output_basic_block,
13297         mono_arch_emit_prolog): Convert to new instruction lists.
13298
13299 2008-01-11  Zoltan Varga  <vargaz@gmail.com>
13300
13301         * mini-amd64.c (mono_arch_output_basic_block): Use a 4 byte load in OP_CHECK_THIS.
13302
13303         * mini-sparc.c (mono_arch_output_basic_block): Use a byte load in CHECK_THIS.
13304         Fixes #353182.
13305
13306         * Makefile.am (version.h): Make this work with non-bash shells.
13307
13308 2008-01-10  Zoltan Varga  <vargaz@gmail.com>
13309
13310         * mini.c (handle_delegate_ctor): Optimize away setting of NULL target.
13311
13312 2008-01-08  Zoltan Varga  <vargaz@gmail.com>
13313
13314         * mini.c (mono_method_to_ir): Fix possible reading of invalid memory in 
13315         the InitializeArray optimization.
13316
13317 2008-01-06  Zoltan Varga  <vargaz@gmail.com>
13318
13319         * mini.c driver.c: Don't include os/gc_wrapper.h.
13320
13321 2008-01-05  Zoltan Varga  <vargaz@gmail.com>
13322
13323         * mini.c (print_jit_stats): Print GC statistics if available.
13324
13325 2008-01-04  Zoltan Varga  <vargaz@gmail.com>
13326
13327         * mini-amd64.c (mono_arch_allocate_vars): Align argument storage offsets to 8.
13328
13329 2007-12-29  Zoltan Varga  <vargaz@gmail.com>
13330
13331         * mini-ppc.c (mono_arch_get_delegate_invoke_impl): Fix flushing of icache.
13332
13333 2007-12-26  Zoltan Varga  <vargaz@gmail.com>
13334
13335         * mini.c (mini_init): Move the setting of GC_stackbottom to mono_gc_base_init ().
13336         
13337         * mini.c (mini_init): Call mono_gc_base_init () instead of MONO_GC_PRE_INIT ().
13338
13339         * driver.c (mono_main): Ditto.
13340
13341 2007-12-23  Zoltan Varga  <vargaz@gmail.com>
13342
13343         * mini-trampolines.c (mono_delegate_trampoline): Use mono_get_delegate_invoke ().
13344
13345         * aot-compiler.c (emit_klass_info): Avoid emitting info if one of the methods
13346         in the vtable can't be encoded.
13347         (compile_method): Ditto.
13348
13349 2007-12-21  Zoltan Varga  <vargaz@gmail.com>
13350
13351         * mini.c (setup_jit_tls_data): Use the MONO_ARCH_INIT_TOP_LMF_ENTRY macro if
13352         defined.
13353
13354         * mini-amd64.h mini-amd64.c exceptions-amd64.c tramp-amd64.c: Rename lmf->ebp to 
13355         lmf->rbp.
13356
13357         * exceptions-amd64.c (mono_arch_find_jit_info): Fix the detection of whenever
13358         the top LMF entry belongs to the current method.
13359
13360         * mini.c: Update after renaming of mono_thread_get_pending_exception ().
13361
13362 2007-12-20  Zoltan Varga  <vargaz@gmail.com>
13363
13364         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix a warning.
13365         
13366         * tramp-ia64.c (mono_arch_create_trampoline_code): Ditto.
13367
13368         * tramp-sparc.c (mono_arch_create_trampoline_code): Check for thread interruption.
13369
13370         * tramp-amd64.c (mono_arch_create_trampoline_code): Ditto.
13371
13372         * tramp-x86.c (mono_arch_create_trampoline_code): Check for thread interruption.
13373
13374         * cpu-amd64.md mini-amd64.h mini-amd64.c inssel-amd64.brg: Add ulong->double 
13375         implementation.
13376
13377         * basic-float.cs: Add an ulong->double cast test.
13378
13379 2007-12-15  Zoltan Varga  <vargaz@gmail.com>
13380
13381         * mini.c (mono_method_to_ir): Fix a warning.
13382
13383 2007-12-14  Zoltan Varga  <vargaz@gmail.com>
13384
13385         * mini-ops.h: Add OP_SWITCH.
13386
13387         * mini.c graph.c ssa.c aliasing.c mini-<ARCH>.c inssel-<ARCH>.brg: Avoid using
13388         CEE_SWITCH in back-end code, use OP_SWITCH instead.
13389
13390 2007-12-11  Geoff Norton  <gnorton@novell.com>
13391
13392         * mini-s390x.c: Minor change to the MAX() define to allow
13393         it to compile with other gcc versions.
13394
13395 2007-12-11  Geoff Norton  <gnorton@novell.com>
13396
13397         * cpu-s390x.md:
13398         * mini-s390x.c: Implement sext_i4 to fix the build on s390x
13399
13400 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13401
13402         exceptions-arm.c (mono_arch_get_restore_context): Restore
13403         the frame pointer.
13404
13405         exceptions-arm.c (throw_exception): Save the frame pointer.
13406         This is a partial fix for #323747. Only the client side is
13407         fixed.
13408
13409 2007-12-11  Rodrigo Kumpera  <rkumpera@novell.com>
13410
13411         * mini.c (mono_method_to_ir): Verbose message in CEE_NEWOBJ
13412         was using an unrelated variable to log the class which
13413         needed the cctor to be called. This was crashing on arm.
13414
13415 2007-12-09  Robert Jordan  <robertj@gmx.net>
13416
13417         * mini-x86.c (mono_arch_emit_epilog):
13418         Consider all kinds of 64-bit types. Fixes #323114.
13419
13420 2007-12-08  Zoltan Varga  <vargaz@gmail.com>
13421
13422         * tramp-amd64.c (mono_arch_create_trampoline_code): Clean up the code a bit.
13423
13424 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13425
13426         * mini-amd64.c (peephole_pass): Add a missing instruction check.
13427
13428 Fri Dec 7 22:08:23 CET 2007 Paolo Molaro <lupus@ximian.com>
13429
13430         * mini.c: run type ctor before allocating an object, not only
13431         when running it's constructor method (fixes at least part of bug #342507).
13432
13433 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13434         
13435         * mini-trampolines.c (mono_delegate_trampoline): Fix a warning.
13436         
13437         * mini-trampolines.c (mono_generic_class_init_trampoline): Remove a debug printf.
13438         * mini.h mini-amd64.c mini-x86.c: Get rid of the mono_arch_find_vtable () 
13439         function.
13440
13441         * tramp-x86.c tramp-amd64.c mini-trampolines.c: Pass the vtable argument to
13442         mono_generic_class_init_trampoline () the same as it is done with the other
13443         trampolines.
13444
13445         * mini-arm.h mini-arm.c tramp-arm.c inssel-arm.brg cpu-arm.md 
13446         aot-runtime.c aot-compiler.c: Implement AOT support.    
13447
13448 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13449
13450         * mini-trampolines.c (mono_generic_class_init_trampoline): Fixed
13451         build for archs which don't have the vtable trampoline defined
13452         yet.
13453
13454 2007-12-07  Zoltan Varga  <vargaz@gmail.com>
13455
13456         * tramp-x86.c (mono_arch_create_trampoline_code): Fix the build.
13457
13458         * tramp-ppc.c (mono_arch_create_trampoline_code): Use the new helper function.
13459
13460         * mini-trampolines.c (mono_get_trampoline_func): New helper function.
13461
13462         * tramp-<ARCH>.c: Use the new helper function.
13463
13464 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13465
13466         * inssel.brg: Added a pattern for the OP_TRAMPCALL_VTABLE
13467         trampoline call, which takes a vtable argument.
13468
13469         * graph.c, mini-ops.h, local-propagation.c, aliasing.c: Treat
13470         OP_TRAMPCALL_VTABLEs like other calls.
13471
13472         * mini-amd64.c, mini-amd64.h, mini-x86.c, mini-x86.h: Designated a
13473         register to hold the vtable argument to the OP_TRAMPCALL_VTABLE
13474         call.  Implemented a support function which fetches the vtable
13475         from a register set.
13476
13477         * mini.c, mini.h, tramp-amd64.c, tramp-x86.c, mini-trampolines.c:
13478         Implemented a generic class init trampoline, using the
13479         OP_TRAMPCALL_VTABLE opcode.
13480
13481         * mini.c: Implemented static field access when sharing generic
13482         code.  This implies initing the class using the new
13483         OP_TRAMPCALL_VTABLE call.
13484
13485 2007-12-07  Mark Probst  <mark.probst@gmail.com>
13486
13487         * mini.c: Don't compile methods with sharing enabled if their
13488         classes are disabled for sharing.
13489
13490 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13491
13492         * inssel.brg: Add a missing sign extension to the GETCHR and array access
13493         opcodes. Fixes #346563.
13494
13495         * objects.cs: Add a new test.
13496
13497         * aot-compiler.c (emit_method_code): Put back an #ifdef which is needed.
13498
13499         * mini-<ARCH>.h mini.c aot-compiler.c aot-runtime.c: Get rid of the
13500         HAVE_PIC_AOT define and use AOT_SUPPORTED instead.
13501
13502 2007-12-06  Zoltan Varga  <vargaz@gmail.com>
13503
13504         * mini-arm.h mini-arm.c: Add support for the common vtable trampoline.
13505
13506 2007-12-03  Zoltan Varga  <vargaz@gmail.com>
13507
13508         * mini-arm.c (mono_arch_emit_exceptions): Avoid uninitialized memory in the
13509         code stream.
13510
13511 2007-12-02  Zoltan Varga  <vargaz@gmail.com>
13512
13513         * patch-info.h (PATCH_INFO): Add DELEGATE_TRAMPOLINE.
13514
13515         * mini.c aot-compiler.c aot-runtime.c: Implement the delegate creation 
13516         optimization in the AOT case.
13517         
13518 2007-11-30  Zoltan Varga  <vargaz@gmail.com>
13519
13520         * aot-runtime (mono_aot_get_method_from_vt_slot): Add support for multi-byte method ref encodings.
13521         
13522         * aot-runtime.c (decode_klass_ref): Implement decoding of generic instances.
13523
13524         * aot-compiler.c (encode_klass_ref): Implement proper encoding of generic instances.
13525
13526         * mini.c (mono_method_to_ir): Optimize the common ldftn+create delegate combination.
13527
13528         * mini-trampolines.c (mono_delegate_trampoline): Add some code to handle the case when the delegate
13529         is created by the inlined delegate ctor.
13530
13531         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.  
13532
13533         * mini.c (mono_jit_compile_method_inner): Replace calls to delegate invoke with the trampoline here too.
13534
13535 2007-11-29  Zoltan Varga  <vargaz@gmail.com>
13536
13537         * cpu-x86.md: Fix the length of ckfinite.
13538
13539 2007-11-28  Zoltan Varga  <vargaz@gmail.com>
13540
13541         * mini-x86.c (mono_arch_output_basic_block): Unify div/rem code and handle the case when sreg2 is EDX.
13542         
13543         * mini-x86.c (mono_arch_output_basic_block): Clean up the fp stack properly in CKFINITE.
13544         (mono_arch_output_basic_block): Get rid of unused last_ins and last_offset.
13545
13546         * mini-x86.c (mono_arch_output_basic_block): Add some micro optimizations.
13547
13548         * mini-x86.c inssel-x86.brg cpu-x86.md: Move the implementation of the 
13549         OP_START_HANDLER/OP_ENDFINALLY/OP_ENDFILTER opcodes to mini-x86.c.
13550
13551 2007-11-28  Martin Baulig  <martin@ximian.com>
13552
13553         * mini-x86.c
13554         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline()
13555         after creating the trampoline.
13556
13557 2007-11-27  Zoltan Varga  <vargaz@gmail.com>
13558
13559         * aot-runtime.c (load_aot_module): Check runtime version if needed.
13560
13561         * aot-compiler.c: Add bind-to-runtime-version for producing AOT files which only load into a runtime with
13562         the same version.
13563
13564         * generic-sharing.c (mono_helper_get_rgctx_other_ptr): Change the signature to take the calling class
13565         instead of the calling method to help AOT.
13566
13567         * mini.c (get_runtime_generic_context_other_ptr): Update after the change.
13568
13569 2007-11-26  Zoltan Varga  <vargaz@gmail.com>
13570
13571         * aot-runtime.c (mono_aot_init_vtable): Simplify this if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
13572         is defined.
13573
13574 2007-11-23  Zoltan Varga  <vargaz@gmail.com>
13575
13576         * aot-compiler.c (emit_class_name_table): Properly encode generic class names.
13577         
13578         * aot-compiler.c (compile_method): Correct check for generic method definitions.
13579         (encode_method_ref): No need to handle generic method definitions specially.
13580
13581         * mini.h (MONO_AOT_FILE_VERSION): Bump this.
13582
13583         * aot-runtime.c (decode_klass_ref): Clean this up and rename from 
13584         decode_klass_info.
13585
13586         * aot-compiler.c (encode_klass_ref): Clean this up and rename from
13587         encode_klass_info.
13588         (compile_method): Enable generic sharing.
13589
13590 2007-11-22  Zoltan Varga  <vargaz@gmail.com>
13591
13592         * mini.c (get_runtime_generic_context_other_ptr): Disable AOT here.
13593         (mini_method_compile): Add preliminary support for AOTing shared generic code.
13594
13595         * aot-compiler.c (compile_method): Add preliminary support for AOTing shared
13596         generic code.
13597
13598         * mini-trampolines.c: Fix a warning.
13599
13600         * mini.c (get_runtime_generic_context_other_ptr): Use NEW_METHODCONST instead of
13601         NEW_PCONST.
13602         (mono_method_to_ir): Use NEW_DOMAINCONST in one place.
13603         (generic_class_is_reference_type): Remove unused function.
13604
13605         * mini-trampolines.c (mono_magic_trampoline): Avoid loading metadata if possible
13606         in the generic vtable trampoline case.
13607
13608         * aot-runtime.c (mono_aot_init_vtable): Use the generic vtable trampoline.
13609         
13610         * aot-runtime.c (mono_aot_get_method_from_vt_slot): New helper function to
13611         return an AOT method based on a vtable slot.
13612
13613         * aot-compiler.c (compile_method): Avoid AOTing synchronized methods for now.
13614
13615         * mini.c (mini_get_vtable_trampoline): Export this.
13616
13617 2007-11-22  Martin Baulig  <martin@ximian.com>
13618
13619         * debug-debugger.h
13620         (MonoDebuggerInfo): Move `debugger_version' up.
13621
13622 2007-11-22  Martin Baulig  <martin@ximian.com>
13623
13624         * mini-amd64.c
13625         (mono_arch_get_delegate_invoke_impl): Call mono_debug_add_delegate_trampoline().
13626
13627         * mini-trampolines.c
13628         (mono_delegate_trampoline): Call mono_debugger_trampoline_compiled()
13629         after compiling the method.
13630
13631 2007-11-20  Martin Baulig  <martin@ximian.com>
13632
13633         * debug-mini.c
13634         (mono_debugger_insert_method_breakpoint): Moved into mono-debug-debugger.c.
13635         (mono_debugger_remove_breakpoint): Likewise.
13636         (mono_debugger_check_breakpoints): Likewise.
13637
13638         * debug-debugger.c: Implement the new breakpoint interface here.
13639
13640 2007-11-18  Zoltan Varga  <vargaz@gmail.com>
13641
13642         * mini-amd64.c (mono_arch_output_basic_block): Unify the implementation of
13643         CEE_CONV_I1/SEXT_I1 and I2 since they are the same.
13644
13645         * mini-x86.c (mono_arch_output_basic_block): Ditto.     
13646
13647 2007-11-17  Zoltan Varga  <vargaz@gmail.com>
13648
13649         * mini-amd64.c (mono_arch_output_basic_block): Fix a typo.
13650
13651         * mini-x86.c (mono_arch_get_inst_for_method): Remove code which is now in
13652         mini.c.
13653
13654         * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in
13655         mini.c.
13656
13657         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods
13658         returning a vtype in a register.
13659
13660         * mini.c (mini_get_inst_for_method): Move the handling of the atomic operations
13661         here from the arch specific code.
13662
13663         * mini-amd64.c (mono_arch_get_inst_for_method): Remove code which is now in
13664         mini.c.
13665
13666         * mini-amd64.c (mono_arch_output_basic_block): Add some micro optimizations.
13667         (mono_arch_emit_prolog): Increment maximum prolog size.
13668
13669         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Move the implementation of the
13670         START_HANDLER/ENDFINALLY/ENDFILTER opcodes to mini-amd64.c.
13671
13672         * mini-x86.c (get_call_info): Receive a MonoCompile instead of a 
13673         MonoGenericSharingContext.
13674
13675         * mini-ia64.c (get_call_info): Receive a MonoCompile instead of a 
13676         MonoGenericSharingContext. Allocate memory from the cfg mempool.
13677
13678 2007-11-15  Mark Probst  <mark.probst@gmail.com>
13679
13680         * mini.c, mini.h, generic-sharing.c: Functions for producing code
13681         which extract fields out of the runtime generic context.  Full
13682         sharing of the NEWARR opcode.
13683
13684 Thu Nov 15 14:20:21 CET 2007 Paolo Molaro <lupus@ximian.com>
13685
13686         * abcremoval.c, mini.c, ssa.c, ssapre.c: updated to implement
13687         --enable-minimal=ssa.
13688
13689 2007-11-13  Zoltan Varga  <vargaz@gmail.com>
13690
13691         * mini-trampolines.c (mono_delegate_trampoline): Update after 
13692         mono_marshal_get_delegate_invoke () signature change.
13693
13694 2007-11-13  Mark Probst  <mark.probst@gmail.com>
13695
13696         * mini.c: Removed the shared context in favor of the generic
13697         sharing context.  Allocate the MonoJitInfo structure with room for
13698         the generic sharing context if it's needed.
13699
13700         * mini.h: Remove MonoGenericSharingContext declaration.  It's in
13701         domain-internals.h now.
13702
13703         * mini-x86.c: Pass the generic sharing context to get_call_info ().
13704
13705         * generic-sharing.c: Several changes for working without a shared
13706         context and instead operating on open types instead.
13707
13708 2007-11-12  David S. Miller  <davem@davemloft.net>
13709
13710        * inssel-sparc.brg: Fix double instruction emit.
13711
13712 2007-11-12  Zoltan Varga  <vargaz@gmail.com>
13713
13714         * mini.c (mono_jit_runtime_invoke): Avoid trying to compile the Array 
13715         Get/Set/Address methods.
13716         
13717         * mini.c debug-debugger.c mini-trampolines.c: Update after 
13718         mono_marshal_get_delegate_invoke signature change.
13719
13720 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13721
13722         * cpu-arm.md: Increase the max size of OP_THROW to 24 bytes.
13723         This can happens with dynamic methods. Fixes the other bug in #322722.
13724
13725 2007-11-12  Rodrigo Kumpera  <rkumpera@novell.com>
13726
13727         * tramp-arm.c (mono_arch_patch_callsite): Support patching
13728         BX call sequence.
13729
13730         * mini-arm.c (arm_patch): Implement patching of BX call
13731         sequence. Fixes one of the bugs in #322722.
13732
13733 2007-11-03  David S. Miller  <davem@huronp11.davemloft.net>
13734
13735        * mini-sparc.c (mono_arch_flush_icache): Make more efficient
13736        under Linux.  We only need to flush every 32-byte cache line.    
13737
13738 2007-11-07  Massimiliano Mantione  <massi@ximian.com>
13739
13740         * mini.c:
13741         move_basic_block_to_end: Add branches when needed, eventually creating
13742         a new BB.
13743         optimize_branches: added a parameter that tells if it's ok to create
13744         new BBs (doing is "df_visit" has been called is (IMHO) a nightmare),
13745         and avoid calling move_basic_block_to_end when it's not ok.
13746         Fixes bug 318677.
13747
13748 2007-11-07  Mark Probst  <mark.probst@gmail.com>
13749
13750         * mini.c: Abort inlining call to InitializeArray if something
13751         looks wrong.  Let the icall handle it, which now has proper safety
13752         checks.
13753
13754 2007-11-05  Rodrigo Kumpera  <rkumpera@novell.com>
13755
13756         * mini.c (mono_spill_call): add support for soft-float.
13757
13758         * mini.c (mono_method_to_ir): add support for soft-float
13759         to inlined functions that return float.
13760
13761         * mini.c (mono_method_to_ir): add support for soft-float
13762         to cee_stsfld opcode on float fields.
13763
13764 2007-11-05  Geoff Norton  <gnorton@novell.com>
13765
13766         * mini-x86.h: Fix the structure access for X86 Leopard.
13767
13768
13769 2007-11-05  Martin Baulig  <martin@ximian.com>
13770
13771         * mini-trampolines.c
13772         (mono_magic_trampoline): Call mono_debugger_trampoline_compiled()
13773         after compiling the method to notify the debugger.
13774
13775 2007-11-05  Martin Baulig  <martin@ximian.com>
13776
13777         * debug-debugger.h (MonoDebuggerInfo): Use the new breakpoint tables.
13778
13779 2007-11-02  Zoltan Varga  <vargaz@gmail.com>
13780
13781         * mini-sparc.c (EMIT_COND_SYSTEM_EXCEPTION_GENERAL): Applied patch from
13782         David Miller <davem@davemloft.net>. Allow larger offsets in branches.
13783
13784 2007-11-01  Zoltan Varga  <vargaz@gmail.com>
13785
13786         * mini-amd64.c (mono_arch_emit_prolog): Check the domain as well for
13787         native-to-managed wrappers.
13788         
13789 2007-11-01  Geoff Norton  <gnorton@novell.com>
13790
13791         * mini-ppc.h, mini-x86.h:  Handle Leopards renaming of some structure 
13792         members.
13793
13794 Wed Oct 31 20:23:14 CET 2007 Paolo Molaro <lupus@ximian.com>
13795
13796         * mini.c, mini-x86.c: when getting back from unmanaged code
13797         to managed via a marshaled delegate we also need to set the
13798         right domain.
13799
13800 Wed Oct 31 19:53:33 CET 2007 Paolo Molaro <lupus@ximian.com>
13801
13802         * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support
13803         for amd64.
13804
13805 Wed Oct 31 19:29:30 CET 2007 Paolo Molaro <lupus@ximian.com>
13806
13807         * mini.c, mini.h, mini-x86, tramp-x86.c, mini-x86.h: added API to
13808         let the debugger or other external agents to tell the JIT when
13809         a sw breakpoint has been inserted in the code that the JIT needs
13810         to be able to inspect.
13811
13812 2007-10-31  Martin Baulig  <martin@ximian.com>
13813
13814         * debug-debugger.h
13815         (MonoDebuggerInfo): Remove `runtime_class_init'.
13816
13817 2007-10-30  Martin Baulig  <martin@ximian.com>
13818
13819         * debug-mini.h
13820         (mono_debugger_thread_created): Added `MonoThread *' argument.
13821         (mono_debugger_extended_notification): New public method.
13822         (mono_debugger_trampoline_compiled): New public method.
13823
13824         * debug-mini.c
13825         (MonoDebuggerThreadInfo): Added `thread' and
13826         `extended_notifications' fields.
13827
13828         * debug-debugger.c
13829         (debugger_executable_code_buffer): New static variable.
13830
13831         * debug-debugger.h
13832         (MonoDebuggerInfo): Added `executable_code_buffer',
13833         `executable_code_buffer_size', `breakpoint_info_area',
13834         `breakpoint_table' and `breakpoint_table_size'.
13835
13836 2007-10-26  Rodrigo Kumpera  <rkumpera@novell.com>
13837
13838         * mini-arm.c (mono_arch_build_imt_thunk): Take the advantage
13839         that IP  either is an unused value or the vtable pointer. IMT 
13840         calls use vtable + offset now. Reduced by almost half the size
13841         of IMT entries.
13842
13843 2007-10-26  Jonathan Chambers <joncham@gmail.com>
13844
13845         * mini-amd64.c: Begin Win64 port. Use AMD64_ARG_REG#
13846         defines to access param registers. Replace long usage with
13847         gsize as sizeof(long) != sizeof(void*) on Win64.
13848
13849         * mini-amd64.h: Add %rdi and %rsi to MonoLMF structure
13850         on Win64. Fix intrinsic, use _AddressOfReturnAddress
13851         instead of non-existant _GetAddressOfReturnAddress.
13852
13853         * tramp-amd64.c: Use AMD64_ARG_REG#     defines to access 
13854         param registers. Save/restore %rdi and %rsi in MonoLMF.
13855
13856         * exceptions-amd64.c: Use AMD64_ARG_REG# defines to access 
13857         param registers. Modify (throw_exception) signature to take 
13858         %rdi and %rsi on Win64. 
13859
13860         Code is contributed under MIT/X11 license.
13861
13862 Thu Oct 25 23:06:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
13863
13864         * helpers.c: unlink debugging output files.
13865
13866 2007-10-25  Zoltan Varga  <vargaz@gmail.com>
13867
13868         * mini.c: Move mono_create_ftnptr () to object.c.
13869
13870 2007-10-24  Rodrigo Kumpera  <rkumpera@novell.com>
13871
13872         * helpers.c (mono_disassemble_code): MonoCompile parameter is now
13873         optional. This function can now be used to disassemble code generated
13874         outside the JIT such as trampolines and IMT thunks.
13875
13876         * mini-arm.h: defined MONO_ARCH_HAVE_IMT.
13877
13878         * mini-arm.c (decode_vcall_slot_from_ldr): added, extract the
13879         vtable pointer from a ldr instruction.
13880
13881         * mini-arm.c (mono_arch_get_vcall_slot_addr): support the
13882         new IMT call sequence.
13883
13884         * mini-arm.c (mono_arch_output_basic_block): emit the IMT
13885         call sequence for interface invocations.
13886
13887         * mini-arm.c (mono_arch_emit_imt_argument): added, required
13888         for imt support. This function is empty since IMT on ARM requires no
13889         special handling on the IR side.
13890
13891         * mini-arm.c (mono_arch_find_imt_method): added, required for
13892         imt support.
13893
13894         * mini-arm.c (mono_arch_find_this_argument): added, required
13895         for imt support.
13896
13897         * mini-arm.c (arm_emit_value_and_patch_ldr): added, patches
13898         a ldr instruction to load a value stored in the code stream.
13899
13900         * mini-arm.c (mono_arch_build_imt_thunk):added, required
13901         for imt support.
13902
13903
13904 2007-10-23  Zoltan Varga  <vargaz@gmail.com>
13905
13906         * mini.c (mini_init): Install the jump trampoline callback.
13907
13908 Tue Oct 23 17:07:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13909
13910         * mini-trampolines.c: handle synchronized methods with the common
13911         vtable trampoline (bug #335601).
13912
13913 2007-10-17  Zoltan Varga  <vargaz@gmail.com>
13914
13915         * mini-ia64.h mini-amd64.c: Add support for the common vtable trampoline.
13916
13917         * inssel.brg (mini_emit_virtual_call): Fix the computation of ins->inst_offset on
13918         64 bit platforms.
13919
13920         * mini-ia64.h mini-ia64.c: Add support for IMT.
13921
13922         * mini-x86.c (mono_arch_emit_prolog): Increase the size allocated for the
13923         prolog. Fixes #331958.
13924
13925 2007-10-15  Zoltan Varga  <vargaz@gmail.com>
13926
13927         * mini-sparc.h mini-sparc.c: Add support for the common vtable trampoline.
13928
13929 Mon Oct 15 11:18:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13930
13931         * mini-ppc.c, mini-ppc.h: ppc support for the common vtable
13932         trampoline.
13933
13934 Mon Oct 15 10:41:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
13935
13936         * mini-amd64.c, mini-amd64.h: amd64 support for the common vtable
13937         trampoline.
13938
13939 Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <lupus@ximian.com>
13940
13941         * mini-x86.c, mini-x86.h: x86 support for the common vtable
13942         trampoline.
13943
13944 Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <lupus@ximian.com>
13945
13946         * mini-trampolines.c: changed the magic rampoline to understand
13947         the common vtable trampoline method: the method to invoke is
13948         determined by the vtable displacement of the call.
13949
13950 Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
13951
13952         * mini.c, mini.h: register the common vtable trampoline if the
13953         architecture supports it.
13954
13955 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
13956
13957         * cpu-amd64.md: use the correct max length for tls_get.
13958
13959 2007-10-14  Zoltan Varga  <vargaz@gmail.com>
13960
13961         * mini.c (mono_method_to_ir): Use mini_get_class in CEE_LDELEM_ANY and
13962         CEE_STELEM_ANY. Fixes #333696.
13963
13964 Thu Oct 11 18:04:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
13965
13966         * exceptions-x86.c: provide more graceful handling of the case where
13967         we followed a bogus function pointer from managed code (bug #332866).
13968
13969 2007-10-11  Mark Probst  <mark.probst@gmail.com>
13970
13971         * mini.h, mini.c: Introduced the MonoGenericSharingContext, which
13972         replaces the generic_shared flag and will carry more information
13973         in the future.
13974
13975         * generic-sharing.c: Added mini_type_stack_size() which allows
13976         allows open types if given a generic sharing context.
13977         mini_get_basic_type_from_generic() takes a
13978         MonoGenericSharingContext* instead of a MonoCompile* now.
13979
13980         * mini-alpha.c, mini-amd64.c, mini-arm.c, mini-hppa.c,
13981         mini-ia64.c, mini-mips.c, mini-ppc.c, mini-s390.c, mini-s390x.c,
13982         mini-sparc.c, mini-x86.c: Trivial changes required by the two
13983         changes above.  Just passing arguments through to the right
13984         places.
13985
13986 Wed Oct 10 19:44:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
13987
13988         * mini-arm.c: unify the call emission to emit_code_seq().
13989
13990 Wed Oct 10 13:05:46 CEST 2007 Paolo Molaro <lupus@ximian.com>
13991
13992         * tramp-arm.c: reduced the trampoline size.
13993
13994 2007-10-10  Mark Probst  <mark.probst@gmail.com>
13995
13996         * generic-sharing.c, mini.h, mini-amd64.c, mini-x86.c: Moved type
13997         variable handling out of arch-specific code.
13998
13999 Wed Oct 10 10:49:28 CEST 2007 Paolo Molaro <lupus@ximian.com>
14000
14001         * mini-arm.c: implemented fast delegate dispatch.
14002
14003 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14004
14005         * mini-amd64.c (mono_arch_compute_omit_fp): Add more checks to ensure
14006         that fp elimination is turned off if the space required by locals is too
14007         big. Fixes #331958.
14008
14009 Tue Oct 9 21:01:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14010
14011         * Makefile.am, mini-arm.c, mini-arm.h, tramp-arm.c: ported
14012         ARM to the new style trampoline.
14013
14014 2007-10-09  Zoltan Varga  <vargaz@gmail.com>
14015
14016         * tramp-amd64.c: Rework the specific trampoline code to make it smaller.
14017
14018         * mini-amd64.h mini-amd64.c: Export amd64_patch as mono_amd64_patch.
14019
14020 2007-10-09  Martin Baulig  <martin@ximian.com>
14021
14022         * debug-debugger.h
14023         (MonoDebuggerMetadataInfo): Added `field_info_type_offset' and
14024         `field_info_offset_offset'.     
14025
14026 Tue Oct 9 09:47:51 CEST 2007 Paolo Molaro <lupus@ximian.com>
14027
14028         * mini-ppc.c, mini-ppc.h, mini-ops.h, inssel-ppc.brg, cpu-g4.md:
14029         removed more internal usage of the r11 register and made it available
14030         to the register allocator.
14031
14032 2007-10-08  Mark Probst  <mark.probst@gmail.com>
14033
14034         * mini.c, mini-amd64.c, mini-x86.c: Allow open generic contexts
14035         when sharing generics and treat type variables as references.
14036
14037 Mon Oct 8 10:55:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14038
14039         * mini-ppc.c: started removing the internal uses of register r11
14040         to eventually allow the register allocator to manage it as an
14041         additional available register.
14042
14043 Mon Oct 8 14:25:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14044
14045         * tramp-amd64.c: fixed memory corruption in the trampoline generation.
14046
14047 Mon Oct 8 12:06:33 CEST 2007 Paolo Molaro <lupus@ximian.com>
14048
14049         * tramp-ppc.c, tramp-x86.c: reduce the alignment requirements for
14050         specific trampolines as they are not performance critical as a jump
14051         target (maybe align as before only for AOT code?). This saves about
14052         200 KB of native code on x86 for monodevelop startup.
14053
14054 Mon Oct 8 10:04:40 CEST 2007 Paolo Molaro <lupus@ximian.com>
14055
14056         * tramp-ppc.c: reduce the size of the trampolines, saves 160KB on
14057         monodevelop startup.
14058
14059 2007-10-06  Zoltan Varga  <vargaz@gmail.com>
14060
14061         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Allow signed displacements.
14062
14063         * mini-sparc.h mini-sparc.c: Implement IMT support.
14064
14065         * tramp-sparc.c (mono_arch_create_trampoline_code): Rework the trampoline code so
14066         its smaller and doesn't clobber sparc_g1.
14067
14068         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Update after trampoline changes.
14069
14070 Fri Oct 5 18:28:11 CEST 2007 Paolo Molaro <lupus@ximian.com>
14071
14072         * mini-ppc.c: optimized the size of the IMT thunks a bit.
14073
14074 Fri Oct 5 18:08:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14075
14076         * mini-ppc.c: implemented fast delegate invocation.
14077
14078 Fri Oct 5 00:01:05 CEST 2007 Paolo Molaro <lupus@ximian.com>
14079
14080         * mini-ppc.h, mini-ppc.c: IMT support for the PPC architecture.
14081
14082 Thu Oct 4 22:04:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14083
14084         * mini-ppc.c, mini-ppc.h, tramp-ppc.c, Makefile.am: port the PPC
14085         code to the new style trampoline in preparation for IMT support.
14086
14087 Thu Oct 4 19:01:59 CEST 2007 Paolo Molaro <lupus@ximian.com>
14088
14089         * mini-ppc.c, tramp-ppc.c: don't use r13 as it's used by the PPC EABI
14090         systems already. This also reduces the specific trampiline sizes and
14091         prepares for the use of r12 as the IMT identifier register.
14092
14093 Thu Oct 4 16:38:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14094
14095         * mini-mips.h: endianess fix (simplified from a patch by
14096         Thomas Kunze <thommy@tabao.de>, bug #323737).
14097
14098 Thu Oct 4 14:43:49 CEST 2007 Paolo Molaro <lupus@ximian.com>
14099
14100         * exceptions-ppc.c, mini-ppc.h: refactor to use macros
14101         to access ucontext fields and enable netbsd support
14102         (partially from Magnus Henoch <mange@freemail.hu>).
14103
14104 Thu Oct 4 12:35:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14105
14106         * genmdesc.pl: patch from Henryk Plotz <henryk@openmoko.org> to
14107         use the preprocessor from the CPP env var if it is set.
14108
14109 Wed Oct 3 17:11:38 CEST 2007 Paolo Molaro <lupus@ximian.com>
14110
14111         * mini-trampolines.c: fixed an assertion and moved it earlier in the
14112         code, before interface_offset gets used.
14113
14114 2007-10-02  Zoltan Varga  <vargaz@gmail.com>
14115
14116         * mini-trampolines.c (mono_convert_imt_slot_to_vtable_slot): Call 
14117         mono_class_setup_vtable () before accessing klass->vtable.
14118
14119 2007-10-01  Zoltan Varga  <vargaz@gmail.com>
14120
14121         * aot-compiler.c (get_plt_index): Rework the handling of wrappers to be not so
14122         hackish.
14123
14124 Mon Oct 1 15:00:27 CEST 2007 Paolo Molaro <lupus@ximian.com>
14125
14126         * mini.c, mini-trampolines.c, mini.h: enable the lazy filling of the
14127         IMT slots (this saves hundreds of KB of memory in programs like
14128         IronPython and Monodevelop).
14129
14130 Mon Oct 1 14:44:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14131
14132         * mini.c: print the delegate counter.
14133
14134 Mon Oct 1 14:36:50 CEST 2007 Paolo Molaro <lupus@ximian.com>
14135
14136         * mini-x86.c: make it easier to enable the debugging code for IMT
14137         slots.
14138
14139 2007-09-28  Martin Baulig  <martin@ximian.com>
14140
14141         * debug-debugger.h
14142         (MonoDebuggerMetadataInfo): Add `klass_image_offset',
14143         `mono_method_klass_offset' and `mono_method_token_offset'.
14144
14145 2007-09-20  Mark Probst  <mark.probst@gmail.com>
14146
14147         * mini.c: First generics sharing implementation.  Can only share
14148         in very simple cases.  If sharing doesn't work it falls back to
14149         dedicated compilation.
14150
14151         * mini.h: Flag in MonoCompile to specify whether generic
14152         compilation is shared.  Flags enum for marking which generic inst
14153         of a context is used.  Prototypes for helper functions.
14154
14155         * generic-sharing.c: Helper functions for generic method sharing.
14156
14157         * optflags-def.h: Optimization flag (gshared) for enabling generic
14158         method sharing added.
14159
14160         * Makefile.am: generic-sharing.c added.
14161
14162 2007-09-19 Daniel Nauck <dna@mono-project.de>
14163
14164         * mini.c (mono_thread_abort): fixed typo in r86014. It should be '==' instead of '!='.
14165
14166 2007-09-19  Massimiliano Mantione  <massi@ximian.com>
14167         * mini.c (mono_thread_abort): Correctly handle ThreadAbortException,
14168         fixes bug 325507.
14169
14170 2007-09-19  Martin Baulig  <martin@ximian.com>
14171
14172         * mini.c (mini_cleanup): Only call mono_debugger_cleanup() here;
14173         mono_debug_cleanup() is now part of mono_cleanup().
14174
14175 2007-09-18  Zoltan Varga  <vargaz@gmail.com>
14176
14177         * driver.c (mono_main): Fix a warning.
14178
14179 2007-09-17  Zoltan Varga  <vargaz@gmail.com>
14180
14181         * aot-compiler.c: Optimize various parts when processing large assemblies.
14182         Fixes ##325568.
14183
14184         * mini.c (mono_patch_info_hash): Improve hash function.
14185
14186 2007-09-14  Jonathan Chambers <joncham@gmail.com>
14187
14188         * mini-exceptions.c: Add HAVE_UNISTD_H check around include.
14189         
14190         Code is contributed under MIT/X11 license.
14191
14192 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14193
14194         * mini.c (mini_init): Fix a leak.
14195
14196         * debug-mini.c (mono_debug_free_method_jit_info): Fix a leak.
14197
14198 Fri Sep 14 12:53:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14199
14200         * mini.c: redirect string.InternalAllocStr() to the managed allocator.
14201
14202 2007-09-14  Zoltan Varga  <vargaz@gmail.com>
14203
14204         * mini-amd64.c (mono_arch_find_imt_method): Add support for AOT code.
14205
14206 2007-09-13  Zoltan Varga  <vargaz@gmail.com>
14207
14208         * Makefile.am generics-variant-types.2.il generics.cs: Add some generics
14209         variance tests.
14210
14211         * inssel.brg: Reorganize the isinst/castclass code to reduce code duplication.
14212
14213         * mini.c (handle_alloc): Enable managed allocators in AOT code.
14214
14215         * aot-compiler.c (encode_patch): Add support for MONO_WRAPPER_ALLOC.
14216
14217         * aot-runtime.c (decode_patch_info): Ditto.
14218
14219 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14220
14221         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement
14222         static case. Cache delegates in architecture specific code, 
14223         based on number of parameters.
14224         
14225         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): Cache delegates
14226         in architecture specific code, based on number of parameters.
14227         
14228         * mini-trampolines.c (mono_delegate_trampoline): Architecture specific 
14229         caching happen in architecture specific code now.
14230         
14231         Code is contributed under MIT/X11 license.
14232
14233 2007-09-12  Jonathan Chambers <joncham@gmail.com>
14234
14235         * mini.h, mini.c, mini-x86.c, mini-amd64.c, mini-hppa.c, mini-mips.c,
14236         mini-s390x.c, mini-arm.c, mini-ia64.c, mini-sparc.c, mini-ppc.c, mini-alpha.c,
14237         mini-s390.c: Add mono_arch_init and mono_arch_cleanup methods.
14238
14239         Code is contributed under MIT/X11 license.
14240
14241 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14242         * mini.c: (mono_thread_abort) Fixed bug #82416.
14243
14244 Tue Sep 11 16:15:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14245
14246         * mini.: hook the new managed GC allocation feature into the JIT.
14247
14248 Tue Sep 11 16:14:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14249
14250         * mini.c: implementation for the new runtime tls opcode.
14251
14252 2007-09-11  Martin Baulig  <martin@ximian.com>
14253
14254         * debug-debugger.h
14255         (MonoDebuggerMetadataInfo): Add `mono_method_flags_offset' and
14256         `mono_method_inflated_offset'.
14257
14258 2007-09-07  Zoltan Varga  <vargaz@gmail.com>
14259
14260         * driver.c mini.h mini.c: Add a new devel command line option for injecting
14261         async exceptions into a method.
14262
14263         * mini-amd64.h mini-amd64.c: Implement injecting of async exceptions for the
14264         purpose of testing whenever the unwinder works at every instruction.
14265
14266 Thu Sep 6 12:42:14 CEST 2007 Paolo Molaro <lupus@ximian.com>
14267
14268         * mini.c: check accessibility of method used in ldftn (fixes
14269         bug #82635).
14270
14271 2007-09-04  Zoltan Varga  <vargaz@gmail.com>
14272
14273         * mini-amd64.c (mono_arch_output_basic_block): Fix a warning.
14274
14275         * inssel.brg: Fix a warning.
14276
14277 2007-09-03  Martin Baulig  <martin@ximian.com>
14278
14279         * debug-debugger.c: `MONO_DEBUGGER_EVENT_INITIALIZE_MANAGED_CODE'
14280         now takes the `main_method' as argument.
14281
14282 2007-09-02  Zoltan Varga  <vargaz@gmail.com>
14283
14284         * cpu-sparc.md (endfilter): Add missing src1:i argument.
14285
14286 2007-08-30  Jonathan Chambers <joncham@gmail.com>
14287
14288         * driver.c: include the cil-coff.h header on Windows.
14289         
14290         Code is contributed under MIT/X11 license.
14291
14292 Thu Aug 30 16:17:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14293
14294         * mini.c, driver.c: don't include the cil-coff.h header.
14295
14296 Thu Aug 30 14:50:53 CEST 2007 Paolo Molaro <lupus@ximian.com>
14297
14298         * mini.c: flag places that needs fixes fo soft-float support.
14299
14300 Wed Aug 29 18:26:20 CEST 2007 Paolo Molaro <lupus@ximian.com>
14301
14302         * mini.h, inssel-float.brg: fix soft-float constant loads on big
14303         endian systems (partially from Dean Jenkins, bug #81924).
14304
14305 2007-08-28  Mark Probst  <mark.probst@gmail.com>
14306
14307         * mini.c (check_linkdemand): Remove embedded reference object in
14308         call to LinkDemandSecurityException.
14309         (mono_jit_compile_method_inner): Call LinkDemandSecurityException
14310         with an IntPtr instead of a reference object.
14311
14312 2007-08-28  Zoltan Varga  <vargaz@gmail.com>
14313
14314         * mini.c (handle_initobj): Handle alignment properly.
14315
14316         * inssel.brg (mini_emit_memset): Ditto. 
14317
14318         * inssel.brg (mini_emit_memcpy): Ditto. 
14319
14320         * inssel-sparc.brg: Ditto.              
14321
14322         * mini.h mini.c inssel-*.brg: Pass alignment information to OP_MEMCPY/MEMSET.
14323
14324 2007-08-26  Zoltan Varga  <vargaz@gmail.com>
14325
14326         * mini-exceptions.c (mono_handle_exception_internal): Skip the first frame for
14327         exceptions raised in unmanaged code. Fixes part of #82594.
14328
14329 2007-08-24  Mark Probst  <mark.probst@gmail.com>
14330
14331         * mini.c (mono_method_to_ir), declsec.c
14332         (mono_declsec_linkdemand_aptc): Fixed custom attr leaks.
14333
14334 2007-08-22  Martin Baulig  <martin@ximian.com>
14335
14336         * debug-mini.h
14337         (MonoDebuggerThreadInfo): New typedef.
14338         (mono_debugger_thread_table): New global variable.
14339         (mono_debugger_thread_created): New public function.
14340         (mono_debugger_thread_cleanup): New public function.
14341
14342         * debug-debugger.h
14343         (MonoDebuggerInfo):
14344         - removed `get_current_thread' and `lookup_assembly'.
14345         - removed `data_table'.
14346         - added `thread_table'.
14347
14348         * mini.c
14349         (mono_thread_start_cb): Call mono_debugger_thread_created().
14350         (mono_thread_attach_cb): Likewise.
14351         (mini_thread_cleanup): Call mono_debugger_thread_cleanup().
14352         (mini_cleanup): Move mono_debug_cleanup() down, after free'ing the
14353         initial domain.
14354
14355         * driver.c (mono_main): Move mono_debug_init() up, before calling
14356         mini_init(); mono_debug_init_1() and mono_debug_init_2() are gone.
14357
14358 Tue Aug 21 16:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14359
14360         * mini-x86.c, inssel-x86.brg: group multiple stack adjustments
14361         together when passing several arguments of type double (gives a small
14362         speedup and saves a few bytes of generated code).
14363
14364 2007-08-20  Jb Evain  <jbevain@novell.com>
14365
14366         * mini.c (mono_method_to_ir): fix leak on InvalidProgramException.
14367
14368 2007-08-20  Jb Evain  <jbevain@novell.com>
14369
14370         * mini.c (mono_method_to_ir): throw MethodAccessException
14371         and FieldAccessException instead of InvalidProgramException.
14372
14373 2007-08-20  Mark Probst  <mark.probst@gmail.com>
14374
14375         * mini.c: CoreCLR security checks.
14376
14377         * mini.h: Removed MonoSecurityMode (moved to
14378         metadata/security-manager.h) and mono_security_mode global var
14379         (replaced by set/get functions in security-manager.h).
14380
14381         * driver.c: Added "core-clr-test" security mode for testing.  Used
14382         set-function for setting security mode.
14383
14384 2007-08-17  Mark Probst  <mark.probst@gmail.com>
14385
14386         * mini.c: MonoJitInfo's are freed hazardously now.  Statistics for
14387         the new jit_info_table.
14388
14389         * driver.c: Test code for the new jit_info_table (enabled by the
14390         define MONO_JIT_INFO_TABLE_TEST).
14391
14392 2007-08-14  Zoltan Varga  <vargaz@gmail.com>
14393
14394         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
14395         detection of call <REG> instruction sequence. Fixes build on freebsd.
14396
14397 2007-08-13  Zoltan Varga  <vargaz@gmail.com>
14398
14399         * mini-exceptions.c: Fix a warning.
14400
14401 2007-08-11  Zoltan Varga  <vargaz@gmail.com>
14402
14403         * exceptions-amd64.c (mono_arch_handle_altstack_exception): Enable the new
14404         stack overflow handling code on amd64 too.
14405
14406         * mini-exceptions.c (mono_setup_altstack): Make this use 
14407         mono_thread_get_stack_bounds ().
14408
14409         * mini-x86.h: Disable sigaltstack on solaris x86.
14410
14411 2007-08-10  Zoltan Varga  <vargaz@gmail.com>
14412
14413         * mini-exceptions.c (mono_setup_altstack): Enable this to work on solaris x86.
14414
14415 2007-08-10  Geoff Norton  <gnorton@customerdna.com>
14416
14417         * tramp-x86.c: Remove some unneeded alignment changes on Apple.  Fixes #82387.
14418
14419 2007-08-08  Zoltan Varga  <vargaz@gmail.com>
14420
14421         * mini-exceptions.c (mono_print_thread_dump): Enable this on amd64 too.
14422
14423         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Fix a warning.
14424
14425 2007-08-03  Neale Ferguson <neale@sinenomine.net>
14426
14427         * mini-s390.c (add_general): Adjust offset calculation to take into account of rounding up
14428         due to alignment.
14429
14430 Thu Aug 2 17:36:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14431
14432         * mini-ppc.c: avoid an invalid encoding of unsigned right shift by 0
14433         to be emitted (bug #82281).
14434
14435 2007-08-01  Martin Baulig  <martin@ximian.com>
14436
14437         Merged the `debugger-dublin' branch.
14438
14439         * debug-debugger.h (MonoDebuggerInfo):
14440         Removed the `old_*' compatibility entries.
14441         Added `debugger_version' and `data_table'.
14442         Renamed `get_method_addr_or_bpt' -> `insert_breakpoint'.
14443         Renamed `remove_method_breakpoint' -> `remove_breakpoint'.
14444
14445         * debug-mini.c
14446         (MiniDebugMethodBreakpointInfo): Add `address_list'.
14447         (mono_debugger_check_breakpoints): Take a `MonoDebugMethodAddress *'
14448         instead of a `gconstpointer'.
14449         (mono_debugger_insert_method_breakpoint): Return a
14450         `MonoDebugMethodAddressList *'.
14451
14452 2007-06-28  Martin Baulig  <martin@ximian.com>
14453
14454         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14455
14456 2007-08-01  Zoltan Varga  <vargaz@gmail.com>
14457
14458         * mini-amd64.h (MONO_INIT_CONTEXT_FROM_FUNC): Avoid using 
14459         __builtin_frame_address () since it is broken on older gcc versions.
14460
14461 Tue Jul 31 17:34:42 CEST 2007 Paolo Molaro <lupus@ximian.com>
14462
14463         * mini.c, mini.h, mini-exceptions.c: added a bit of documentation
14464         on the stack overflow handling and made the managed stack overflows
14465         catchable in most cases using soft guard pages.
14466         * exceptions-x86.c: added code to restore the protection in the soft
14467         guard pages at the end of exception handling.
14468
14469 2007-07-31  Zoltan Varga  <vargaz@gmail.com>
14470
14471         * mini.c (SIG_HANDLER_SIGNATURE): Fix a warning.
14472
14473 Mon Jul 30 17:43:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14474
14475         * exceptions-ppc.c, mini-ppc.h: arch-specific stack overflow
14476         exception handling.
14477
14478 Mon Jul 30 17:38:13 CEST 2007 Paolo Molaro <lupus@ximian.com>
14479
14480         * mini-alpha.h, mini-ia64.h, mini-sparc.h: disable the altstack
14481         signal handling support until it has been ported to the new mechanism.
14482         * mini.c: fixed stack overflow detection and use the new
14483         architecture code  to handle signals on the altstack.
14484
14485 Mon Jul 30 17:33:02 CEST 2007 Paolo Molaro <lupus@ximian.com>
14486
14487         * exceptions-amd64.c, mini-amd64.h: amd64 code to handle
14488         stack overflows on the alt stack.
14489
14490 Mon Jul 30 17:29:56 CEST 2007 Paolo Molaro <lupus@ximian.com>
14491
14492         * exceptions-x86.c, mini-x86.h, mini.h: new code to handle
14493         stack overflows on the alt stack.
14494
14495 Mon Jul 30 11:50:06 CEST 2007 Paolo Molaro <lupus@ximian.com>
14496
14497         * exceptions-ppc.c: cleanup preparing for altstack support.
14498
14499 Mon Jul 30 11:31:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14500
14501         * exceptions-arm.c: cleanup preparing for altstack support.
14502
14503 2007-07-27  Mark Probst  <mark.probst@gmail.com>
14504
14505         * mini.c (print_jit_stats): Output hazard pointer stats.
14506
14507 2007-07-26  Mark Probst  <mark.probst@gmail.com>
14508
14509         * driver.c, mini.c: Replaced security mode flags with a single
14510         enum variable.
14511
14512 Thu Jul 26 20:12:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14513
14514         * mini.c, mini-exceptions.c: cleanup the sigaltstack code.
14515
14516 2007-07-25  Mark Probst  <mark.probst@gmail.com>
14517
14518         * mini.c, mini.h, driver.c (mono_main): Added command-line flag
14519         (which doesn't do anything yet) for activating Core CLR
14520         (Silverlight) security.
14521
14522 Tue Jul 24 21:16:17 CEST 2007 Paolo Molaro <lupus@ximian.com>
14523
14524         * mini-codegen.c: work around a possible gcc bug on arm.
14525
14526 Tue Jul 24 17:20:19 CEST 2007 Paolo Molaro <lupus@ximian.com>
14527
14528         * driver.c, mini-x86.h, mini-amd64.h: print a nice error
14529         message for platforms that don't support AOT compilation.
14530
14531 Mon Jul 23 10:29:29 CEST 2007 Paolo Molaro <lupus@ximian.com>
14532
14533         * mini.h, mini.c, driver.c: temporary smcs hack.
14534
14535 Mon Jul 23 09:29:34 CEST 2007 Paolo Molaro <lupus@ximian.com>
14536
14537         * mini-arm.h, mini-arm.c: arm EABI fixes.
14538
14539 2007-07-22  Zoltan Varga  <vargaz@gmail.com>
14540
14541         * exceptions-x86.c (mono_arch_find_jit_info): Handle the lmf->method == NULL
14542         case.
14543
14544         * tramp-x86.c (mono_arch_create_trampoline_code): Only set lmf->method for
14545         trampolines taking a method argument.
14546
14547         * mini-x86.h (MonoLMF): Add an 'esp' field plus comments.
14548
14549         * mini-x86.c (mono_arch_emit_prolog): Update after changes to the LMF structure.
14550         * tramp-x86.c (mono_arch_create_trampoline_code): Ditto.
14551
14552         * exceptions-x86.c (mono_arch_get_jit_info): Properly clean up the stack after
14553         JIT compilation throws an exception. Fixes #82050.
14554
14555 2007-07-19  Mark Probst  <mark.probst@gmail.com>
14556
14557         * mini.c: Removed the MonoLoaderErrorKind enum and replaced it
14558         with the MONO_EXCEPTION_ defines.
14559
14560 2007-07-17  Zoltan Varga  <vargaz@gmail.com>
14561
14562         * mini-amd64.c (mono_arch_find_imt_method): Handle mov reg,IMM64 case. Fixes
14563         #82117.
14564         
14565         * mini-amd64.c (mono_arch_find_imt_method): Add some debug code to help find out
14566         the cause of an assertion.
14567
14568 Mon Jul 16 19:31:21 CEST 2007 Paolo Molaro <lupus@ximian.com>
14569
14570         * mini.c, jit-icalls.c: mono_get_inflated_method() is obsolete,
14571         removed.
14572
14573 2007-07-15  Zoltan Varga  <vargaz@gmail.com>
14574
14575         * mini-amd64.c (mono_arch_build_imt_thunk): Remove the non-32bit MonoMethod
14576         assert. Should fix #82103.
14577
14578 2007-07-14  Zoltan Varga  <vargaz@gmail.com>
14579
14580         * mini-exceptions.c (mono_jit_walk_stack_from_ctx): Use MONO_CONTEXT_GET_SP ()
14581         here too. Fixes #82095.
14582
14583         * mini-amd64.c (mono_arch_build_imt_thunk): Add support for non-32bit MonoMethod
14584         addresses.
14585
14586         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a couple asserts.
14587
14588         * mini-amd64.h: Enable IMT for amd64.
14589         
14590         * mini-amd64.c (mono_arch_build_imt_thunk): Optimize IMT thunk size.
14591
14592 2007-07-12  Zoltan Varga  <vargaz@gmail.com>
14593
14594         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for IMT call sequences.
14595
14596 2007-07-12  Mark Probst  <mark.probst@gmail.com>
14597
14598         * mini.c (check_linkdemand, mono_method_to_ir): Abort compilation
14599         as soon as check_linkdemand sets an exception_type.
14600
14601 Thu Jul 12 12:18:22 CEST 2007 Paolo Molaro <lupus@ximian.com>
14602
14603         * mini-x86.c: fixed offsets for IMT call sequence.
14604         * mini-x86.h: enable IMT again.
14605
14606 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14607
14608         * trace.c (mono_trace_enter_method): Decode MonoType too.
14609
14610         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Handle signed displacements too.
14611
14612         * mini.h mini-x86.h mini-trampolines.c: Change the signature of mono_arch_find_imt_method () to pass the calling code address too.
14613
14614         * mini-amd64.c: Add preliminary IMT implementation.
14615         
14616 Wed Jul 11 18:21:30 CEST 2007 Paolo Molaro <lupus@ximian.com>
14617
14618         * mini-x86.c: adjusted mono_arch_get_vcall_slot_addr () to
14619         understand the new IMT-base interface invocation (thanks to
14620         Daniel Nauck for the report and the remote debugging session).
14621
14622 Wed Jul 11 14:54:39 CEST 2007 Paolo Molaro <lupus@ximian.com>
14623
14624         * mini-x86.c: size and speed optimizations for the IMT bsearch.
14625
14626 2007-07-11  Zoltan Varga  <vargaz@gmail.com>
14627
14628         * Makefile.am (aotcheck): Make this actually use the AOTed code.
14629
14630 Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
14631
14632         * mini-trampolines.c: implement AOT IMT support.
14633         * mini-x86.h: enable IMT support for wider testing.
14634
14635 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14636
14637         * inssel.brg (emit_imt_argument): Add aot support here.
14638
14639         * aot-runtime.c (decode_patch_info): Fix reading of MONO_PATCH_INFO_METHOD.
14640
14641 Tue Jul 10 17:50:58 CEST 2007 Paolo Molaro <lupus@ximian.com>
14642
14643         * mini-x86.c, mini-x86.h, tramp-x86.c: x86 arch-specific changes
14644         of the IMT implementation, partially from massi, with my
14645         implementation of the bsearch sequence. Disabled by default until
14646         the AOT code is implemented.
14647
14648 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
14649
14650         * cpu-x86.md: The source argument of sext_i1/i2 must by a byte reg.
14651
14652         * inssel-x86.brg: Add reg:ldind.i1(regvar) rules. Fixes #82056.
14653
14654 Tue Jul 10 17:33:12 CEST 2007 Paolo Molaro <lupus@ximian.com>
14655
14656         * inssel.brg, mini.c, mini.h, mini-trampolines.c:
14657         arch-independent IMT JIT code from Massimiliano
14658         Mantione (massi@ximian.com) with small cleanups from me.
14659
14660 Tue Jul 10 13:07:24 CEST 2007 Paolo Molaro <lupus@ximian.com>
14661
14662         * Makefile.am: fix svn invocation to get the svn revision to be
14663         independent of the local language (build fix).
14664
14665 2007-07-09  Mark Probst  <mark.probst@gmail.com>
14666
14667         * mini.c (inline_method): Reset cfg->exception_type if the
14668         inlining is aborted.  Fixes: 82049.
14669
14670 Mon Jul 9 17:26:47 CEST 2007 Paolo Molaro <lupus@ximian.com>
14671
14672         * mini.c: remove assert from exception handling code when exception_ptr
14673         is not set.
14674
14675 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14676
14677         * mini.c (mono_codegen): Add an assert.
14678
14679         * mini-x86.c (mono_arch_emit_prolog): Allocate space for the profiler method 
14680         enter and leave code.
14681         * mini-amd64.c (mono_arch_emit_prolog): Likewise.
14682
14683 Thu Jul 5 20:12:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
14684
14685         * mini-ppc.c: fixed memory corruption for localloc(0)
14686         (bug #81852).
14687
14688 2007-07-05  Zoltan Varga  <vargaz@gmail.com>
14689         
14690         * mini.c: Fix warnings.
14691
14692 Wed Jul 4 15:30:36 CEST 2007 Paolo Molaro <lupus@ximian.com>
14693
14694         * optflags-def.h, mini-x86.c: added sse2 optimization flag and use it
14695         to emit better double->int conversions.
14696
14697 Tue Jul 3 19:42:16 CEST 2007 Paolo Molaro <lupus@ximian.com>
14698
14699         * mini.c: the provided Min/Max optimizations are valid for unisgned
14700         ints.
14701
14702 2007-07-03  Rodrigo Kumpera  <rkumpera@novell.com>
14703
14704         * 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
14705
14706 2007-06-28  Miguel de Icaza  <miguel@novell.com>
14707
14708         * mini.c (mono_running_on_valgrind): Add support for reporting the
14709         method and  its boundaries to valgrind.
14710
14711 2007-06-28  Martin Baulig  <martin@ximian.com>
14712
14713         * debug-debugger.h (MonoDebuggerInfo): Added `debugger_version'.
14714
14715 2007-06-25  Zoltan Varga  <vargaz@gmail.com>
14716
14717         * ssa.c (visit_inst): Add support for OP_BR. Fixes #81946.
14718
14719         * generic.2.cs: Add new test case.
14720
14721 2007-06-25  Martin Baulig  <martin@ximian.com>
14722
14723         Merged the `debugger-dublin' branch.
14724
14725         * debug-mini.c
14726         (mono_debugger_insert_method_breakpoint): New public method.
14727         (mono_debugger_remove_method_breakpoint): Likewise.
14728         (mono_debugger_check_breakpoints): New static method.
14729         (mono_debug_close_method): Call mono_debugger_check_breakpoints().
14730
14731         * debug-debugger.h (MonoDebuggerInfo):
14732         Renamed (to keep backward compatibility in the vtable):
14733         `insert_breakpoint' -> `old_insert_breakpoint'.
14734         `remove_breakpoint' -> `old_remove_breakpoint'.
14735         `create_string' -> `old_create_string'.
14736         `lookup_class' -> `old_lookup_class'.
14737         `lookup_type' -> removed; changed into a dummy field.
14738         `lookup_assembly' -> `old_lookup_assembly'.
14739         Added (same functionality, but different signature):
14740         `create_string', `lookup_class', `lookup_assembly'
14741         Added new:
14742         `get_method_addr_or_bpt', `remove_method_breakpoint',
14743         `runtime_class_init'.
14744
14745         * debug-debugger.c: Merged the `debugger-dublin' branch.
14746
14747 2007-06-23  Zoltan Varga  <vargaz@gmail.com>
14748
14749         * mini-amd64.c (peephole_pass_1): Optimize away moves at the beginning of the bb as
14750         well.
14751         (peephole_pass): Likewise.
14752
14753 Fri Jun 22 09:17:08 CEST 2007 Paolo Molaro <lupus@ximian.com>
14754
14755         * driver.c: hopefully make setaffinity work also for ancient
14756         versions of linux.
14757
14758 2007-06-22  Atsushi Enomoto  <atsushi@ximian.com>
14759
14760         * driver.c : win32 build fix.
14761
14762 Thu Jun 21 19:24:03 CEST 2007 Paolo Molaro <lupus@ximian.com>
14763
14764         * driver.c: check for the MONO_NO_SMP env var and bind to a single
14765         processor if it is set.
14766
14767 2007-06-21  Martin Baulig  <martin@ximian.com>
14768
14769         * debug-mini.h: New file.
14770
14771         * debug-mini.c
14772         (mono_debugger_insert_breakpoint_full): Moved here from
14773         ../metadata/mono-debug-debugger.c.
14774         (mono_debugger_remove_breakpoint): Likewise.
14775         (mono_debugger_breakpoint_callback): Likewise.
14776
14777 2007-06-15  Raja R Harinath  <rharinath@novell.com>
14778
14779         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14780         changes in MonoGenericClass.
14781
14782 2007-06-14  Zoltan Varga  <vargaz@gmail.com>
14783
14784         * mini-codegen.c (mono_opcode_to_type): Fix ia64 build.
14785
14786 2007-06-14  Raja R Harinath  <rharinath@novell.com>
14787
14788         * jit-icalls.c (mono_helper_compile_generic_method): Update to
14789         removal of MonoGenericMethod.
14790
14791 Thu Jun 14 12:42:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14792
14793         * mini-exceptions.c: hooks for the exception events profiling API.
14794
14795 2007-06-14  Randolph Chung  <tausq@debian.org>
14796
14797         * Makefile.ma: Add hppa target.
14798         * mini-arch.h: Include mini-hppa.h
14799         * cpu-hppa.md, exceptions-hppa.c, inssel-hppa.brg, mini-hppa.c,
14800         mini-hppa.h, tramp-hppa.c: New files for 32-bit HPPA port.
14801         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14802
14803 2007-06-14  Randolph Chung  <tausq@debian.org>
14804
14805         * inssel.brg: Add rules for "chained" compare-branch operations so that
14806         a single compare op can affect multiple branches.  Adjust cost for
14807         OP_CEQ/OP_CGT/OP_CGT_UN/OP_CLT/OP_CLT_UN.
14808         * inssel-long32.brg: Update rules to use compare-branch macros.  Adjust
14809         cost for some rules so that they can more easily be overridden by
14810         per-arch rules (with fixes from lupus).
14811         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14812
14813 2007-06-13  Randolph Chung  <tausq@debian.org>
14814
14815         * mini-ops.h: Reorder branch ops so that they match the order of the
14816         corresponding CEE_* ops.  The code expects them this way.
14817         Add new ops for HPPA target.
14818         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14819
14820 2007-06-13  Randolph Chung  <tausq@debian.org>
14821
14822         * mini-exceptions.c: Handle cases where the stack grows towards
14823         larger addresses.
14824         Contributed under the X11 license (http://bugzilla.ximian.com/show_bug.cgi?id=81866).
14825
14826 Wed Jun 13 19:13:23 CEST 2007 Paolo Molaro <lupus@ximian.com>
14827
14828         * jit-icalls.c, mini.h, mini.c: added virtual generic invoke
14829         counter.
14830         * driver.c: explain where a non-matching corlib is found.
14831
14832 2007-06-13  Mark Probst  <mark.probst@gmail.com>
14833
14834         * mini.c (print_jit_stats): Output dynamic code allocation stats.
14835
14836 2007-06-10  Sanghyeon Seo <sanxiyn@gmail.com>
14837
14838         * mini-exceptions.c: Generate a method profile leave event during
14839         an exception to ensure that the profiler gets notified.
14840
14841 2007-06-07  Zoltan Varga  <vargaz@gmail.com>
14842
14843         * mini-amd64.c (peephole_pass): Merge some small changes from the linear-ir 
14844         branch.
14845
14846         * cpu-amd64.md: Add long_and/or/xor opcodes.
14847
14848 2007-06-06  Wade Berrier  <wberrier@novell.com>
14849
14850         * cpu-s390x.md (shr_imm): Correct the length of shr_imm instruction.
14851         (./class/lib/monolite/mcs.exe:25498): WARNING **: wrong maximal instruction 
14852         length of instruction shr_imm (expected 8, got 10)
14853
14854 2007-06-06  Zoltan Varga  <vargaz@gmail.com>
14855
14856         * mini-ia64.c (mono_arch_output_basic_block): Really fix the build.
14857
14858 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14859
14860         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14861         MonoInternalHashTable again (fixed bug in the internal hash table
14862         code).
14863
14864 2007-06-06  Mark Probst  <mark.probst@gmail.com>
14865
14866         * mini.c, driver.c: Reverted the MonoInternalHashTable changes.
14867         Have to figure out what makes it crash the SWF regression.
14868
14869 2007-06-05  Zoltan Varga  <vargaz@gmail.com>
14870
14871         * mini-ia64.c (mono_arch_lowering_pass): Fix ia64 build.
14872
14873 Tue Jun 5 17:40:04 CEST 2007 Paolo Molaro <lupus@ximian.com>
14874
14875         * mini.c: optimize out the type check when storing null in a
14876         reference array.
14877
14878 2007-06-04  Mark Probst  <mark.probst@gmail.com>
14879
14880         * mini.c, driver.c: Changed MonoDomain.jit_code_hash to a
14881         MonoInternalHashTable.
14882
14883 Mon Jun 4 11:29:43 CEST 2007 Paolo Molaro <lupus@ximian.com>
14884
14885         * inssel.brg, mini.c, mini-ops.h: optimized Math.Mini/Max
14886         signed integer methods.
14887
14888 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14889
14890         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case 
14891         permanently since the current approach doesn't work.
14892
14893 2007-06-02  Zoltan Varga  <vargaz@gmail.com>
14894
14895         * inssel.brg (stmt): Only call delegate->invoke_impl if 
14896         MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE is defined.
14897
14898 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14899
14900         * mini-amd64.c (mono_arch_output_basic_block): Unify div/rem opcodes and handle
14901         the sreg2==rdx case.
14902         
14903         * mini-amd64.c cpu-amd64.md: Correct length of r4const instruction and take into
14904         account if it contains a rex prefix.
14905         (peephole_pass): Handle OP_FMOVE as well.
14906
14907 2007-06-01  Zoltan Varga  <vargaz@gmail.com>
14908
14909         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Disable the static case for now
14910         as it causes regressions.
14911
14912 2007-05-31  Zoltan Varga  <vargaz@gmail.com>
14913
14914         * mini-x86.c (mono_arch_get_delegate_invoke_impl): Implement support for the
14915         static case as well.
14916
14917         * tramp-ia64.c (mono_arch_create_trampoline_code): Fix ia64 build.
14918
14919         * mini-x86.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14920         (mono_arch_get_this_arg_from_call): Ditto.
14921
14922         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Removed.
14923
14924         * inssel.brg (mini_emit_virtual_call): Call delegate->Invoke through the delegate's
14925         invoke_impl field.
14926
14927         * mini-amd64.c (mono_arch_get_delegate_invoke_impl): New arch dependent function.
14928         (mono_arch_get_this_arg_from_call): Ditto.
14929
14930         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Removed.
14931         
14932         * mini-trampolines.c (mono_delegate_trampoline): Complete rewrite. On first call,
14933         try to create optimized invoke code and use that for further invocations. 
14934         Otherwise, use the original mono_marshal_get_delegate_invoke () implementation.
14935
14936         * mini-x86.h mini-ia64.h: Remove MONO_ARCH_HAS_CREATE_DELEGATE_TRAMPOLINE for now.
14937
14938 2007-05-29  Rodrigo Kumpera  <kumpera@gmail.com>
14939
14940         * inssel.brg (mini_emit_virtual_call): Statically dispatch virtual calls to
14941         sealed classes or methods.
14942         *devirtualization.cs: tests for the new optimization
14943
14944 2007-05-29  Zoltan Varga  <vargaz@gmail.com>
14945
14946         * liveness.c (update_gen_kill_set): No need to set VOLATILE flags here, it is done
14947         by the update_volatile () function.
14948
14949 2007-05-27  Zoltan Varga  <vargaz@gmail.com>
14950
14951         * driver.c (mono_main): Call g_thread_init () early since newer glib versions
14952         require it.
14953
14954         * abcremoval.c (mono_perform_abc_removal): Avoid using alloca.
14955
14956 2007-05-24  Jonathan Chambers  <joncham@gmail.com>
14957
14958         * mini.c: Add configure checks for header files.
14959         * mini-x86.c: Add configure checks for header files.
14960         * trace.c: Add configure checks for header files.
14961         * aot-runtime.c: Add configure checks for header files.
14962         * aot-compiler.c: Add configure checks for header files.
14963         * driver.c: Add configure checks for header files.
14964         * mini-codegen.c: Add configure checks for header files.
14965         
14966         Code is contributed under MIT/X11 license.
14967
14968 2007-05-22  Zoltan Varga  <vargaz@gmail.com>
14969
14970         * mini-ia64.c (mono_arch_lowering_pass): Fix the handling of
14971         icompare_imm -128 + op_iclt. Fixes #81703.
14972
14973 2007-05-19  Zoltan Varga  <vargaz@gmail.com>
14974
14975         * mini-codegen.c (mono_local_regalloc): Fix long-shift-regalloc on amd64.
14976
14977 2007-05-15  Massimiliano Mantione  <massi@ximian.com>
14978
14979         * inssel.brg: added "mini_emit_load_intf_bit_reg_vtable", and used it
14980         inside "mini_emit_isninst_iface_cast" and "mini_emit_castclass_iface"
14981         so that all isinst checks now use "interface_bitmap".
14982
14983 2007-05-15  Zoltan Varga  <vargaz@gmail.com>
14984
14985         * cpu-amd64.md (jmp): Fix a warning.
14986
14987         * inssel.brg (CEE_SWITCH): Hopefully fix #80738.
14988
14989         * basic.cs: Add new regression test.
14990
14991         * basic.cs: Remove test which is now in basic-long.cs.
14992
14993         * mini-ia64.c (mono_arch_output_basic_block): Sign extend in CEE_CONV_I8/CEE_CONV_I.
14994
14995         * basic-long.cs: Add new test.
14996         
14997 2007-05-13  Zoltan Varga  <vargaz@gmail.com>
14998
14999         * mini-sparc.c (mono_spillvar_offset_float): Fix sparc build.
15000
15001 2007-05-12  Zoltan Varga  <vargaz@gmail.com>
15002
15003         * cpu-x86.md minix-86.c: Add a peephole_pass_1 () as on amd64.
15004
15005         * mini-x86.c (mono_arch_output_basic_block): Use mono_opcode_to_cond () in a few
15006         places.
15007         
15008         * mini-x86.c (mono_arch_emit_exceptions): Decrease the size of the exception 
15009         throwing code a bit.
15010
15011         * exceptions-x86.c (mono_arch_get_throw_corlib_exception): Decrease the size of 
15012         the exception throwing code a bit.
15013
15014         * mini-x86.c (get_call_info): Allocate result from a mempool.
15015
15016 2007-05-11  Zoltan Varga  <vargaz@gmail.com>
15017
15018         * aot-compiler.c (find_typespec_for_class): Fix the assert.
15019
15020         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
15021
15022         * mini.h (MonoCompile): Add 'token_info_hash' field.
15023
15024         * mini.c: Save token->method associations during compilation so the AOT 
15025         compiler can use it.
15026         
15027         * aot-compiler.c aot-runtime.c: Add support for compiling non-generic methods
15028         which reference generic classes and methods.
15029
15030 2007-05-10  Zoltan Varga  <vargaz@gmail.com>
15031
15032         * mini.h mini-<ARCH>.h: Get rid of MONO_ARCH_HAS_XP_LOCAL_REGALLOC.
15033
15034         * aot-compiler.c (compile_method): Fix a typo in a comment.
15035
15036         * aot-runtime.c (decode_cached_class_info): Skip generic types.
15037
15038         * aot-compiler.c: Add minimal support for AOTing generic code by skipping 
15039         everything generic.
15040
15041         * mini.c (mono_method_to_ir): Disable AOT when calling helper_compile_generic_method.
15042
15043 2007-05-09  Zoltan Varga  <vargaz@gmail.com>
15044
15045         * mini.h (MonoCompile): Add 'args' field.
15046
15047         * mini.c (mono_compile_create_vars): Store variables representing the arguments
15048         into cfg->args.
15049
15050         * mini-<ARCH>.c: Use cfg->args for accessing the method arguments.
15051
15052 2007-05-08  Zoltan Varga  <vargaz@gmail.com>
15053
15054         * mini.c (mono_compile_get_interface_var): Remove this unused function.
15055
15056         * mini-ops.h inssel.brg mini-<ARCH>.c: Add a new opcode for ckfinite as well.
15057
15058         * mini-ops.h: Introduce new opcodes used in the IR instead of the original CEE_
15059         opcodes for some opcodes.
15060
15061         * mini.h *.brg *.c: Use the new opcodes.
15062
15063 2007-05-08  Massimiliano Mantione  <massi@ximian.com>
15064
15065         * mini.h: Bumped aot revision.
15066
15067         * inssel.brg: modified code generation of type checks for interfaces
15068         to use the new "MonoClass.interface_bitmap" instead of the old
15069         "MonoClass.interface_offsets".
15070
15071 2007-04-30  Zoltan Varga  <vargaz@gmail.com>
15072
15073         * cpu-amd64.md (jmp): Increase the maximum size of the jmp opcode to 128.
15074
15075 2007-04-29  Zoltan Varga  <vargaz@gmail.com>
15076
15077         * abcremoval.c (summarize_integer_value): Handle OP_LCONV_TO_I4 to fix abcrem on
15078         64 bit platforms.
15079
15080 2007-04-27  Neale Ferguson <neale@sinenomine.net>
15081
15082         * mini-s390x.c: Fix MONO_TYPE_VALUETYPE processing.
15083
15084 2007-04-27  Wade Berrier  <wberrier@novell.com>
15085
15086         * mini-s390x.c: Remove redeclaration of CompRelation and CompType (defined in 
15087         mini.h) to fix build.
15088
15089 2007-04-26  Zoltan Varga  <vargaz@gmail.com>
15090
15091         * mini-amd64.c (peephole_pass_1): Fix and reenable this pass.
15092         
15093         * mini-amd64.c (mono_arch_local_regalloc): Disable the new peephole_pass_1 as it
15094         causes the corlib unit tests to fail.
15095
15096 2007-04-25  Zoltan Varga  <vargaz@gmail.com>
15097
15098         * mini-codegen.c (mono_opcode_to_type): Fix a bug in the previous patch.
15099
15100         * mini-amd64.c (peephole_pass_1): New pass to perform before local regalloc.
15101
15102         * mini-codegen.c (mono_opcode_to_cond): New helper function to convert conditional 
15103         opcodes to the comparison relations.
15104
15105         * mini-codegen.c (mono_opcode_to_type): New helper function to convert conditional 
15106         opcodes to their types.
15107         
15108         * mini-ia64.c mini-amd64.c: Use mono_opcode_to_cond and mono_opcode_to_type.
15109
15110         * mini-amd64.c (get_call_info): Allocate the result from the cfg mempool and cache 
15111         it in cfg->arch.cinfo.
15112
15113         * local-propagation.c (mono_local_cprop_bb): Fix a warning.
15114
15115         * mini.h mini.c branch-opts.c: Change bbhash to be an array and store it in 
15116         cfg->cil_offset_to_bb.
15117
15118 2007-04-24  Zoltan Varga  <vargaz@gmail.com>
15119
15120         * liveness.c (optimize_initlocals): New mini-pass to optimize away dead assignments
15121         created becase of initlocals.
15122
15123 2007-04-23  Zoltan Varga  <vargaz@gmail.com>
15124
15125         * mini-alpha.c cpu-alpha.md: More alpha port work from 
15126         Sergey Tikhonov <tsv@solvo.ru>.
15127
15128 2007-04-21  Andreas Faerber  <andreas.faerber@web.de>
15129
15130         * Makefile.am (BUILT_SOURCES): Fix for automake 1.6.x. Fixes #81417.
15131
15132 2007-04-19  Zoltan Varga  <vargaz@gmail.com>
15133
15134         * cpu-s390.md (break): Correct the length of break instruction.
15135
15136 Thu Apr 19 16:28:52 CEST 2007 Paolo Molaro <lupus@ximian.com>
15137
15138         * mini.c: fix a couple of soft-float issues and comments.
15139
15140 2007-04-15  Miguel de Icaza  <miguel@novell.com>
15141
15142         * trace.c (is_filenamechar): - is also a filename char.
15143
15144 2007-04-15  Neale Ferguson <neale@sinenomine.net>
15145
15146         * mini-s390.c: Correct checking for enum type in return value processing.
15147
15148 2007-04-14  Raja R Harinath  <rharinath@novell.com>
15149
15150         * Makefile.am (BUILT_SOURCES): Add 'version.h'.
15151         (version.h): Makefile is in the build directory.
15152
15153 2007-04-06  Andreas Faerber  <andreas.faerber@web.de>
15154
15155         * mini-amd64.h: fix for assertion failure on Solaris/amd64
15156
15157 2007-04-11  Martin Baulig  <martin@ximian.com>
15158
15159         * mini.c (can_access_member): Fix handling of generic classes;
15160         fixes #81259.
15161
15162 2007-04-10  Zoltan Varga  <vargaz@gmail.com>
15163
15164         * aot-runtime.c (mono_aot_plt_resolve): Fix disabling of AOT. Fixes #81316.
15165
15166 2007-04-05  Zoltan Varga  <vargaz@gmail.com>
15167
15168         * aot-runtime.c: Fix disabling of AOT. Fixes #81316.
15169
15170 Fri Mar 23 20:25:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15171
15172         * mini-codegen.c: make sure the right spill amount is
15173         used for fp or integer registers (fixes the float_sub_spill() on ppc).
15174
15175 Fri Mar 23 19:43:35 CET 2007 Paolo Molaro <lupus@ximian.com>
15176
15177         * mini-ppc.c: fixes for the fp_branch_nan test.
15178
15179 2007-03-23  Zoltan Varga  <vargaz@gmail.com>
15180
15181         * basic.cs: Comment out new test which still fails on ia64.
15182
15183 Fri Mar 23 15:54:23 CET 2007 Paolo Molaro <lupus@ximian.com>
15184
15185         * mini.c: immediate shifted or fix (mono_metadata_user_string assert).
15186
15187 Fri Mar 23 12:53:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15188
15189         * mini-ppc.c, mini-ppc.h: struct passing ABI fix (bug #77968).
15190
15191 2007-03-22  Zoltan Varga  <vargaz@gmail.com>
15192
15193         * cfold.c (FOLD_BINOP): Cast the result to gint32 to prevent overflow problems
15194         on 64 bit machines. Fixes part of #80738.
15195
15196         * basic.cs: Add regression test.
15197
15198 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15199
15200         * inssel.brg basic.cs: Revert previous change to fix build.
15201
15202         * inssel.brg (SWITCH): Clean out the upper word of the switch value on 64 bit
15203         platforms.
15204         
15205         * inssel.brg (SWITCH): Use an integer comparison. Fixes #80738.
15206
15207         * basic.cs: Add new regression test.
15208
15209 2007-03-17  Zoltan Varga  <vargaz@gmail.com>
15210
15211         * mini-ia64.c (mono_arch_emit_prolog): Fix an assert when a function has too
15212         many arguments.
15213
15214 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15215
15216         * cpu-s390x.md: Correct length of break instruction.
15217
15218 2007-03-16  Neale Ferguson <neale@sinenomine.net>
15219
15220         * mini-s390x.c, cpu-s390x.md: Fix #80507 for s390x.
15221         * mini-s390.c, cpu-s390.md: Fix #80507 for s390.
15222
15223 2007-03-15  Jonathan Chambers  <joncham@gmail.com>
15224
15225         * *.c: Begin WIN64 port.
15226         * mini.c:  Use correct register in profiler.
15227         * mini-amd64.c: No inline assembly on Win64.
15228         * mini-amd64.h: Implement MONO_INIT_CONTEXT_FROM_FUNC for Win64.
15229         Only define MONO_ARCH_USE_SIGACTION on non-windows platforms.
15230         * exceptions-amd64.c: Only need gregs_from_ucontext if MONO_ARCH_USE_SIGACTION
15231         is defined. Implement mono_arch_sigctx_to_monoctx, mono_arch_monoctx_to_sigctx, and
15232         mono_arch_ip_from_context for Win64.
15233         
15234         Contributed under MIT/X11 license.
15235
15236 2007-03-15  Zoltan Varga  <vargaz@gmail.com>
15237
15238         * exceptions-amd64.c (seh_handler): Ditto.
15239
15240         * exceptions-x86.c (seh_handler): Fix a memory leak.
15241
15242 Thu Mar 15 13:47:59 CET 2007 Paolo Molaro <lupus@ximian.com>
15243
15244         * mini-arm.c, mini-mips.c, mini-ppc.c, mini-s390.c,
15245         mini-s390x.c: fixed peephole optimizations to deal
15246         correctly with 1 and 2 byte reload avoidance.
15247
15248 Thu Mar 15 10:17:54 CET 2007 Paolo Molaro <lupus@ximian.com>
15249
15250         * cpu-s390.md, cpu-s390x.md: update localloc length.
15251
15252 Wed Mar 14 21:00:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15253
15254         * cpu-g4.md: added missing descriptions.
15255
15256 2007-03-14  Miguel de Icaza  <miguel@novell.com>
15257
15258         *  Makefile.am: Add support so the tail tests are not executed on
15259         PowerPC as that is a known limitation of the PowerPC port.
15260
15261 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15262
15263         * runmdesc.bat:  Move to msvc directory.
15264         
15265 2007-03-13  Jonathan Chambers  <joncham@gmail.com>
15266
15267         * runmdesc.bat:  Run executable that was produced by the current
15268         target and sent via an argument.
15269         
15270 2007-03-11  Zoltan Varga  <vargaz@gmail.com>
15271
15272         * mini.c (mono_method_to_ir): Fix box+brtrue optimization. Fixes
15273         #81102.
15274
15275         * generics.2.cs: Add regression test.
15276
15277 2007-03-09  Wade berrier  <wberrier@novell.com>
15278
15279         * mini-ppc.h: Undo typo of MONO_CONTEXT_SET_SP (ppc doesn't define this symbol)
15280
15281 2007-03-09  Zoltan Varga  <vargaz@gmail.com>
15282
15283         * aot-runtime.c (load_aot_module): Load all dependent assemblies eagerly since all
15284         AOT code depends on this.
15285
15286 Thu Mar 8 19:36:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15287
15288         * mini.c: more precise tracking of types in the eval stack
15289         (part of fix for bug #81044).
15290
15291 2007-03-07  Zoltan Varga  <vargaz@gmail.com>
15292
15293         * aot-runtime.c (mono_aot_get_class_from_name): Add a cache.
15294
15295         * aot-compiler.c (encode_patch): Remove an obsolete comment.
15296
15297 2007-03-06  Zoltan Varga  <vargaz@gmail.com>
15298
15299         * mini-exceptions.c (mono_handle_native_sigsegv): Fix a warning.
15300
15301         * mini.c (mono_method_to_ir): Add a workaround for bug #80733.
15302
15303 2007-02-22  Zoltan Varga  <vargaz@gmail.com>
15304
15305         * mini.c (type_from_op): Convert CEE_CONV_U to OP_LCONV_TO_U when the argument is
15306         a pointer on 64 bit systems. Fixes #80190.
15307
15308         * iltests.il: Add new regression test.
15309
15310 Tue Feb 20 11:33:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15311
15312         * mini.c: inline a constant for Environment.IsRunningOnWindows.
15313
15314 2007-02-19  Geoff Norton  <gnorton@customerdna.com>
15315
15316         * trace.c: Remove an erroneous alignemnt check when tracing.
15317           Fixes --trace on OSX86.
15318
15319 Wed Feb 14 19:45:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15320
15321         * mini-$(arch).h: initialize SP in context for all the archs.
15322
15323 2007-02-14  Sebastien Pouliot  <sebastien@ximian.com>
15324
15325         * mini-x86.h: Initialize SP in MONO_INIT_CONTEXT_FROM_FUNC. Fix CAS
15326         regressions in the thread tests.
15327
15328 2007-02-14  Zoltan Varga  <vargaz@gmail.com>
15329
15330         * *-alpha.*: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>:
15331         - fixed implementation of LOCALLOC opcode
15332         - implemented non-un compare for floats
15333         - code cleanup
15334         - implementation of FDIV and CKFINITE opcodes
15335         - fixes for latest mono updates
15336         - additional arch opcodes
15337
15338 Mon Feb 12 11:54:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15339
15340         * Makefile.am: simplify and merge rules for cross-compilation.
15341
15342 2007-02-07  Massimiliano Mantione  <massi@ximian.com>
15343
15344         * local-propagation.c: Actually *apply* the fix for bug 80591...
15345
15346 Tue Feb 6 19:03:19 CET 2007 Paolo Molaro <lupus@ximian.com>
15347
15348         * mini-exceptions.c: backuot part of the last change
15349         (fixes cas tests on amd64 related to GetExecutingAssembly ()).
15350
15351 2007-02-06  Massimiliano Mantione  <massi@ximian.com>
15352         * inssel.brg: Fix bug 59286.
15353
15354
15355 Tue Feb 6 12:23:50 CET 2007 Paolo Molaro <lupus@ximian.com>
15356
15357         * mini-exceptions.c: patch from Zoltan to correctly check for
15358         stack boundaries (using the stack register, not the frame register),
15359         fixes bugs #80724, #79717.
15360
15361 2007-02-03  Zoltan Varga  <vargaz@gmail.com>
15362
15363         * mini-ia64.c inssel-sparc.brg mini-sparc.c cpu-sparc.md: Get rid of OP_SETREG/
15364         OP_SETREGIMM, use OP_MOVE/OP_ICONST instead.
15365
15366         * mini-amd64.c (mono_arch_output_basic_block): Fix ATOMIC_EXCHANGE in the
15367         presence of frame pointer elimination.
15368
15369 2007-02-01  Geoff Norton  <gnorton@customerdna.com>
15370         
15371         * mini-x86.h: NetBSD UCONTEX_REG defines.
15372
15373 2007-02-01  Zoltan Varga  <vargaz@gmail.com>
15374
15375         * inssel-amd64.brg: Fix amd64 build.
15376
15377 Thu Feb 1 14:02:09 CET 2007 Paolo Molaro <lupus@ximian.com>
15378
15379         * mini.h: remove extern to workaround what looks likes gcc bug 26905
15380         on amd64.
15381
15382 2007-01-31  Zoltan Varga  <vargaz@gmail.com>
15383
15384         * mini-codegen.c (mono_is_regsize_var): New helper function usable by the back
15385         ends.
15386
15387         * mini-<ARCH>.c: Use mono_is_regsize_var ().
15388
15389 2007-01-30 Mark Mason <mason@broadcom.com>
15390
15391            * exceptions-mips.c: Lots of exception handling fixes, LMFs now work, some cleanups.
15392            * mini-mips.h: Add LMF magic numbers, and fix context set/get macros.
15393            * mini-mips.c: Cleanups, LMF handling now works, optimize store of zero, implement localloc
15394            beginning support for CEE_JMP [not quite working yet]
15395            * tramp-mips.c: LMF handling now works
15396         
15397 2007-01-30  Zoltan Varga  <vargaz@gmail.com>
15398
15399         * mini-amd64.c (peephole_pass): Optimize code common in initlocals blocks.
15400
15401         * mini.h (NULLIFY_INS): New macro.
15402
15403 Tue Jan 30 16:33:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15404
15405         * mini.c: statistical profiler fix for windows, patch
15406         from Tor Lillqvist (tml@novell.com).
15407
15408 2007-01-30  Massimiliano Mantione  <massi@ximian.com>
15409         * local-propagation.c: Fix bug 80591.
15410
15411 Mon Jan 29 12:14:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15412
15413         * Makefile.am: put back the --export-dynamic option as with
15414         the previous gmodule flags (thanks to Robert Jordan).
15415
15416 2007-01-28  Zoltan Varga  <vargaz@gmail.com>
15417
15418         * mini-sparc.c (peephole_pass): Fix #80622 for sparc as well.
15419
15420         mini.h *.c: Allocate fp vregs from the same pool as the int vregs. Use this to
15421         simplify and speed up the local register allocator. Also rename some fields
15422         like iassign->vassign.
15423         
15424         * regalloc.c: Remove some functions which are no longer used since their
15425         inlined version is in mini-codegen.c.
15426         
15427         * mini-codegen.c: Rename mono_regstate2_ functions to mono_regstate_.
15428
15429         * basic.cs objects.cs iltests.il: Merge tests from the linear IL branch.
15430
15431 2007-01-27  Zoltan Varga  <vargaz@gmail.com>
15432
15433         * mini-amd64.c (peephole_pass): Remove optimizations which omit a 
15434         narrowing. Fixes #80622.
15435
15436         * iltests.il: Add new regresssion test. 
15437
15438 Fri Jan 26 18:31:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15439
15440         * mini.h, mini-trampolines.c, aliasing.c, mini-codegen.c,
15441         debug-debugger.c, debug-debugger.h: warning fixes.
15442         * driver.c: updated copyright year and made it fit in one line.
15443
15444 Fri Jan 26 12:48:39 CET 2007 Paolo Molaro <lupus@ximian.com>
15445
15446         * aot-runtime.c: updated to use mono-dl instead of gmodule.
15447
15448 2007-01-25  Zoltan Varga  <vargaz@gmail.com>
15449
15450         * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
15451
15452         * mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
15453
15454         * iltests.il: Add new test for bug #80507.
15455
15456 Wed Jan 24 19:10:28 CET 2007 Paolo Molaro <lupus@ximian.com>
15457
15458         * mini-arm.h: use soft-float also on vfp for now.
15459
15460 Wed Jan 24 14:54:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15461
15462         * mini.c: fix some more soft-float issues.
15463
15464 2007-01-24  Zoltan Varga  <vargaz@gmail.com>
15465
15466         * mini-sparc.h (MONO_ARCH_FRAME_ALIGNMENT): Fix sparc build.
15467
15468 2007-01-24  Massimiliano Mantione  <massi@ximian.com>
15469         * mini-arch.h, , inssel-amd64.brg, mini-x86.c, inssel-x86.brg,
15470         mini-ia64.c, mini-sparc.c, mini-alpha.c: Introduced
15471         MONO_ARCH_LOCALLOC_ALIGNMEENT to fix bug 80498.
15472
15473 Wed Jan 24 12:04:39 GMT 2007 Paolo Molaro <lupus@ximian.com>
15474
15475         * mini-arm.c: typo fix.
15476
15477 2007-01-23  Neale Ferguson <neale@sinenomine.net>
15478
15479         * mini-s390x.c: Use lgb instructions for I1 type variables instead of lb.
15480
15481 2007-01-21  Zoltan Varga  <vargaz@gmail.com>
15482
15483         * mini.c (mono_allocate_stack_slots_full): Allocate memory from the cfg mempool.
15484         Share stack slots for scalar types. Avoid expensive g_list_free () calls.
15485
15486         * mini-x86.c (mono_arch_allocate_vars): Don't free the result of allocate_stack_slots_full.
15487
15488         * mini-amd64.c mini-ia64.c mini-alpha.c: Ditto. 
15489
15490         * mini.h (MonoJitStats): Add a new JIT statistics: locals_stack_size.
15491         
15492         * inssel.brg: Fix a warning.
15493
15494         * mini.h (MonoBasicBlock): Make bb->dominated a GSList.
15495
15496         * abcremoval.c ssa.c ssapre.c: Update after this change.
15497         
15498         * dominators.c (compute_dominators): Allocate bb->dominated from the cfg mempool.
15499
15500         * dominators.c (df_set): Use mono_bitset_union_fast.    
15501
15502 Sat Jan 20 16:59:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15503
15504         * mini.h, genmdesc.c, genmdesc.pl, mini-${arch}.c, cprop.c,
15505         mini-codegen.c: reduce relocations and memory usage for the cpu
15506         description.
15507
15508 2007-01-20  Zoltan Varga  <vargaz@gmail.com>
15509
15510         * mini-codegen.c (mono_regstate2_alloc_int): Optimize this using bsfq on amd64.
15511
15512         * genmdesc.c genmdesc.pl mini.h: Remove some unused fields from the mdesc tables
15513         to reduce their size.
15514
15515 2007-01-19 Mark Mason <mason@broadcom.com>
15516
15517         * exceptions-mips.c: fix mono_arch_ip_from_context(), increase exception debug support.
15518         * mini-mips.c: more configuration macros, support long conditional branches, additional
15519         asserts, fix epilog instrumentation.
15520         * mini-mips.h: use standard stack walk
15521         * cpu-mips.md: increase size of div, rem and conditional branches
15522         
15523 Fri Jan 19 17:23:32 CET 2007 Paolo Molaro <lupus@ximian.com>
15524
15525         * mini.h, mini-codegen.c, mini-$(arch).h: claenup references
15526         to cpu spec data.
15527
15528 2007-01-19  Zoltan Varga  <vargaz@gmail.com>
15529
15530         * aot-compiler.c (encode_klass_info): Allow classes of the form <Type>[][].
15531         (compile_method): Ditto.
15532
15533         * aot-runtime.c (decode_klass_info): Ditto.
15534
15535         * mini.c (mono_method_to_ir): Call mono_get_got_var () in a place where it is
15536         needed by the code generated by inssel.brg. Also fix a warning.
15537
15538 Thu Jan 18 17:55:22 CET 2007 Paolo Molaro <lupus@ximian.com>
15539
15540         * mini.c: deal with enums that become genericinsts by
15541         being nested in a generic class (bug #79956).
15542
15543 Thu Jan 18 16:52:56 CET 2007 Paolo Molaro <lupus@ximian.com>
15544
15545         * mini.c: match the generic definition to check for
15546         private access with generic types (bug #78431).
15547
15548 Thu Jan 18 11:50:13 CET 2007 Paolo Molaro <lupus@ximian.com>
15549
15550         * genmdesc.pl, Makefile.am: perl implementation of genmdesc,
15551         to make life easier for people cross-compiling that insist on not
15552         using scratchbox.
15553
15554 2007-01-17 Mark Mason <mason@broadcom.com>
15555
15556         * inssel-long.brg: patch to deal with mips missing flags
15557         * inssel-long32-mips.brg: implement overflow checks
15558         * insset-mips.brg: implement overflow checks
15559         * mini-mips.h: implement conditional exception handling
15560         * mini-mips.c: add mips_emit_exc_by_name(), implement conditional exception handling.
15561           Remove unused code, minor cleanups.
15562         * exceptions-mips.c: minor cleanups
15563         * mini-ops.h: add mips conditional exception ops
15564         * cpu-mips.md: add mips conditional exception ops
15565
15566         
15567 Wed Jan 17 19:22:34 CET 2007 Paolo Molaro <lupus@ximian.com>
15568
15569         * inssel.brg: patch from Mark Mason <mason@broadcom.com>
15570         to deal with mips missing of flags.
15571
15572 Tue Jan 16 20:01:01 CET 2007 Paolo Molaro <lupus@ximian.com>
15573
15574         * exceptions-ppc.c: execute fault handlers.
15575
15576 Tue Jan 16 19:54:44 CET 2007 Paolo Molaro <lupus@ximian.com>
15577
15578         * mini-ppc.c: handle missing call locationss with FORCE_INDIR_CALL.
15579
15580 Tue Jan 16 13:14:31 CET 2007 Paolo Molaro <lupus@ximian.com>
15581
15582         * mini.c: handle also floating point values in initialize_array.
15583
15584 Tue Jan 16 12:42:40 CET 2007 Paolo Molaro <lupus@ximian.com>
15585
15586         * mini.c, aot-runtime.c, aot-compiler.c: enable aot compilation of
15587         array initialization and make it conditional on the intrins option.
15588
15589 Tue Jan 16 11:28:45 CET 2007 Paolo Molaro <lupus@ximian.com>
15590
15591         * mini.h, patch-info.h, Makefile.am, aot-compiler.c: reduce
15592         relocations and put the patch info names close to the enum definition.
15593
15594 2007-01-15 Mark Mason <mason@broadcom.com>
15595
15596         * basic.cs, exceptions.cs: break up large tests to increase debugability.
15597
15598 Mon Jan 15 18:57:14 CET 2007 Paolo Molaro <lupus@ximian.com>
15599
15600         * mini.c: optimized RuntimeHelpers::InitializeArray () calls.
15601
15602 2007-01-12  Raja R Harinath  <rharinath@novell.com>
15603
15604         * mini.c (mono_method_to_ir): Use new MonoGenericContext accessor.
15605
15606 Thu Jan 11 11:16:42 CET 2007 Paolo Molaro <lupus@ximian.com>
15607
15608         * Makefile.am: distribute the mips sources.
15609
15610 Wed Jan 10 19:49:33 CET 2007 Paolo Molaro <lupus@ximian.com>
15611
15612         * mini-codegen.h: handle bug #80489 here, by excluding ecx
15613         directly.
15614
15615 Wed Jan 10 19:08:05 CET 2007 Paolo Molaro <lupus@ximian.com>
15616
15617         * cpu-x86.md: back out for now as this triggers other regressions.
15618
15619 Wed Jan 10 18:33:16 CET 2007 Paolo Molaro <lupus@ximian.com>
15620
15621         * cpu-x86.md: force src1 and dest regpair for long shift instructions
15622         to eax:edx, so ecx can't get allocated to them (bug #80489).
15623
15624 Tue Jan 9 12:36:11 CET 2007 Paolo Molaro <lupus@ximian.com>
15625
15626         * mini.c, mini-exceptions.c: enabled running fault handlers
15627         (bug #80469).
15628
15629 2007-01-03  Miguel de Icaza  <miguel@novell.com>
15630
15631         * driver.c: If nothing fail, do not use the string "failed",
15632         because it makes it very annoying to view test result logs on the
15633         web. 
15634
15635 2006-12-30  Miguel de Icaza  <miguel@novell.com>
15636
15637         * debug-debugger.c (mono_debugger_main): Rename "main" to
15638         "main_method" to prevent a warning.
15639
15640         Remove a warning for unused field.
15641
15642 2006-12-28  Martin Baulig  <martin@ximian.com>
15643
15644         * debug-debugger.c
15645         (MONO_DEBUGGER__debugger_info): Add `get_lmf_addr'.
15646
15647 2006-12-22  Martin Baulig  <martin@ximian.com>
15648
15649         * mdb-debug-info32.s, mdb-debug-info64.s: New files.
15650         Put a pointer to the `MONO_DEBUGGER__debugger_info' into a
15651         seperate `.mdb_debug_info' section, so we can access it from the
15652         debugger even if the binary is stripped.
15653
15654         * debug-debug.c: Reference the `MONO_DEBUGGER__debugger_info_ptr'
15655         from the `.mdb_debug_info' here to prevent the linker from
15656         removing that section.
15657
15658         * Makefile.am (mono_debugger_sources): Add mdb-debug-info32.s /
15659         mdb-debug-info64.s.
15660
15661 2006-12-19  Robert Jordan  <robertj@gmx.net>
15662
15663         * mini-x86: enable the code to return small structures in
15664         registers for FreeBSD as well. Fixes bug #80278.
15665         * aot-runtime.c: Include sys/wait.h for WEXITSTATUS/WIFEXITED.
15666
15667 Mon Dec 18 19:47:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15668
15669         * mini-x86.c: align the stack when calling the profiler
15670         function instrumenting the prolog (on OSX).
15671
15672 Thu Dec 14 15:22:43 CET 2006 Paolo Molaro <lupus@ximian.com>
15673
15674         * mini.c: emit a break opcode where Debugger.Break () is called.
15675
15676 2006-12-13  Miguel de Icaza  <miguel@novell.com>
15677
15678         * mini.c (mono_method_to_ir): Provide useful information on this
15679         assert, to prevent others from debugging like I did.
15680
15681 Tue Dec 12 17:01:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15682
15683         * mini.c: enable code which was incorrectly commented
15684         (bug #80235).
15685
15686 Tue Dec 12 16:28:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15687
15688         * mini-x86.c: enable on OSX, too, the code to return small
15689         structures in registers.
15690
15691 Mon Dec 11 19:22:35 CET 2006 Paolo Molaro <lupus@ximian.com>
15692
15693         * mini-x86.c: remove the use of the dynamic code manager here, too.
15694
15695 Mon Dec 11 19:08:33 CET 2006 Paolo Molaro <lupus@ximian.com>
15696
15697         * mini.h, debug-debugger.c, tramp-*.c: fixed 
15698         mono_debugger_create_notification_function() to use
15699         mono_global_codeman_reserve () instead of a dynamic code manager.
15700
15701 Tue Dec 5 17:54:50 CET 2006 Paolo Molaro <lupus@ximian.com>
15702
15703         * mini.c, jit-icalls.h, jit-icalls.c: remove the 
15704         ves_array_element_address() jit icall and use a generated
15705         managed method instead (which is about 4 times faster for a rank 3
15706         array access).
15707
15708 2006-11-29  Mark Mason  <mason@broadcom.com>
15709
15710         * basic-calls.cs: additional tests for passing
15711         structures as function arguments.
15712
15713 2006-11-29  Mark Mason  <mason@broadcom.com>
15714
15715         * mini-mips.h: disable custom exception handling
15716         * mini-mips.c: throw/rethrow should use jalr to call
15717         exception stubs.  Fixed bug with passing structures
15718         by value. More support for tracing floating point
15719         functions.
15720
15721 Wed Nov 29 20:28:17 CET 2006 Paolo Molaro <lupus@ximian.com>
15722
15723         * mini.c: fixed typo in the soft-float ldind.r4 handling
15724         (bug #80086).
15725
15726 Wed Nov 29 11:33:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15727
15728         * mini.c, mini.h, driver.c: added --runtime command line
15729         option to select a different runtime than the autodetected one.
15730         * jit.h: added API for embedders to initialize with a specific
15731         runtime version.
15732
15733 Tue Nov 28 21:24:55 CET 2006 Paolo Molaro <lupus@ximian.com>
15734
15735         * mini.c: handle also boxing of r4 values (bug #80024).
15736
15737 Tue Nov 28 19:45:44 CET 2006 Paolo Molaro <lupus@ximian.com>
15738
15739         * mini-ppc.c: force indirect calls until we reserve
15740         enough address space for all the generated code.
15741
15742 Tue Nov 28 20:04:34 GMT 2006 Paolo Molaro <lupus@ximian.com>
15743
15744         * exceptions-arm.c: workaround bugs in the libc definition
15745         of struct ucontext.
15746
15747 Mon Nov 27 15:13:41 CET 2006 Paolo Molaro <lupus@ximian.com>
15748
15749         * inssel.brg: fixes from me and Mark Mason.
15750
15751 2006-11-23  Dick Porter  <dick@ximian.com>
15752
15753         * wapihandles.c (mini_wapi_seminfo): No need to adjust the counter
15754         semaphore display now we've fixed the initial value
15755
15756 Wed Nov 22 11:04:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15757
15758         * inssel.brg: partially revert the last change to fix the build.
15759
15760 2006-11-21  Mark Mason  <mason@broadcom.com>
15761
15762         * inssel.brg: Add and use compare-and-branch macros to support
15763         architectures that do not have condition code registers (ie. MIPS).
15764         * *-mips.{c,brg,md}: Fix copyright statements
15765
15766 2006-11-20  Mark Mason  <mason@broadcom.com>
15767
15768         * Makefile.am: remove mini-codegen.c from list of MIPS sources
15769         * mini.c: Allow GET_CONTEXT to be specified by the arch port
15770         * mini.h: Added declaration for mono_print_ins()
15771         * mini-codegen.c: added ins_spec initializer for MIPS
15772         * mini-codegen.c (mono_call_inst_add_outarg_reg): added asserts for
15773         vreg to be virtual and hreg to be non-virtual.
15774         * mini-codegen.c (mono_spillvar_offset): assert if MIPS - spilling
15775         is not yet working/implemented correctly.
15776         * mini-codegen.c (print_ins): rename to mono_print_ins(), make
15777         non-static, fixup calls to print_ins() from other parts in the file.
15778
15779 2006-11-20  Mark Mason  <mason@broadcom.com>
15780
15781         * basic-calls.cs: added tests for passing structures as arguments
15782         to calls.
15783
15784 Mon Nov 20 19:40:11 CET 2006 Paolo Molaro <lupus@ximian.com>
15785
15786         * inssel-long32.brg: optimize signed division by power of two.
15787
15788 Mon Nov 20 17:37:58 CET 2006 Paolo Molaro <lupus@ximian.com>
15789
15790         * mini-arm.c: added support for interworking with thumb code
15791         (mono must be still be built using the ARM instruction encoding).
15792
15793 2006-11-19  Miguel de Icaza  <miguel@novell.com>
15794
15795         * mini.c (type_from_op): Separate the conditions for OP_EQ as the
15796         verifier has different rules for it.   Fixes a few verifier issues
15797         in the test suite.
15798
15799         * mini-exceptions.c (mono_handle_native_sigsegv): Put the message
15800         at the end, so people know what happened.
15801
15802 Thu Nov 16 14:07:18 CET 2006 Paolo Molaro <lupus@ximian.com>
15803
15804         * brach-opts.c: in optimize_exception_target() make sure we
15805         are in a catch clause (fixes bug #79871).
15806
15807 Thu Nov 16 12:42:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15808
15809         * jit-icalls.c, jit-icalls.h, mini-arm.c, mini.c:
15810         more soft-float support fixes.
15811
15812 Wed Nov 15 18:45:47 GMT 2006 Paolo Molaro <lupus@ximian.com>
15813
15814         * mini-arm.c, inssel-arm.brg: ABI fix for longs and doubles
15815         that are passed half on the stack and half in registers.
15816
15817 Wed Nov 15 17:00:27 CET 2006 Paolo Molaro <lupus@ximian.com>
15818
15819         * mini-ops.h, mini-arch.h, helpers.c, Makefile.am:
15820         more mips integration work from Mark E Mason 
15821         <mark.e.mason@broadcom.com>.
15822
15823 Wed Nov 15 16:34:03 CET 2006 Paolo Molaro <lupus@ximian.com>
15824
15825         * exceptions-mips.c, inssel-mips.brg, mini-mips.h,
15826         cpu-mips.md, inssel-long32-mips.brg, mini-mips.c,
15827         tramp-mips.c: added sources for the mips port, not
15828         integrated in the build yet. Contributed by
15829         Mark E Mason <mark.e.mason@broadcom.com>.
15830
15831 2006-11-14  Neale Ferguson <neale@sinenomine.net>
15832
15833         * mini-s390[x].c (is_regsize_var): Support PTR/FNPTR too.
15834
15835 Tue Nov 14 16:06:37 CET 2006 Paolo Molaro <lupus@ximian.com>
15836
15837         * Makefile.am, inssel-float.brg, inssel-softfloat.brg:
15838         put the soft-float rules in its own file since it seems to
15839         break s390 compilation.
15840
15841 Mon Nov 13 15:54:38 CET 2006 Paolo Molaro <lupus@ximian.com>
15842
15843         * mini-arm.c: fixed wrnings.
15844
15845 Fri Nov 10 19:18:32 CET 2006 Paolo Molaro <lupus@ximian.com>
15846
15847         * mini-arm.c, mini-arm.h, cpu-arm.md, inssel-float.brg,
15848         inssel-arm.brg: ARM support for soft-float.
15849
15850 Fri Nov 10 18:38:15 CET 2006 Paolo Molaro <lupus@ximian.com>
15851
15852         * mini.c, jit-icalls.c, jit-icalls.h: added first cut at handling
15853         loads and stores of 32 bit fp values.
15854
15855 2006-11-10  Zoltan Varga  <vargaz@gmail.com>
15856
15857         * mini-sparc.c (is_regsize_var): Support PTR/FNPTR too.
15858
15859         * tramp-sparc.c (mono_arch_patch_callsite): Fix this function so it actually
15860         works. Fixes #79852 and #79463.
15861
15862 Thu Nov 9 16:56:13 CET 2006 Paolo Molaro <lupus@ximian.com>
15863
15864         * mini.c, mini-codegen.c, jit-icalls.c, jit-icalls.h:
15865         more soft-float support WIP and fixes.
15866
15867 Wed Nov 8 16:40:02 CET 2006 Paolo Molaro <lupus@ximian.com>
15868
15869         * mini-arm.c: some VFP updates.
15870
15871 Tue Nov 7 19:45:51 CET 2006 Paolo Molaro <lupus@ximian.com>
15872
15873         * mini-exceptions.c: 0 is a valid local var offset in some
15874         architectures, don't assert (bug #78508).
15875
15876 Tue Nov 7 18:17:52 GMT 2006 Paolo Molaro <lupus@ximian.com>
15877
15878         * exceptions-arm.c: fixed off by one error in stack walk code.
15879
15880 Tue Nov 7 11:27:26 CET 2006 Paolo Molaro <lupus@ximian.com>
15881
15882         * mini.h, mini.c: more precise tracking of type load exceptions.
15883
15884 2006-11-03  Robert Jordan  <robertj@gmx.net>
15885
15886         * Makefile.am: [WIN32] Add monow.exe target.
15887         * driver.c: [WIN32] Don't detach the console when debugging.
15888         Fixes bug #79797.
15889         
15890 2006-10-30  Miguel de Icaza  <miguel@novell.com>
15891
15892         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Eliminate warning.
15893
15894 2006-10-23  Zoltan Varga  <vargaz@gmail.com>
15895
15896         * aot-compiler.c (emit_method_info): Add a case missed earlier.
15897
15898         * driver.c (mini_regression): Fix --regression with AOT.
15899
15900         * aot-compiler.c (emit_method_info): Fix AOT on amd64.
15901
15902 2006-10-17  Zoltan Varga  <vargaz@gmail.com>
15903
15904         * mini.c (GET_CONTEXT): Correct the definition of this for sparc/linux.
15905
15906         * mini-sparc.h: Don't use sigaction on sparc/linux.
15907
15908         * exceptions-sparc.c: Call mono_arch_flush_icache () in a couple of places.
15909
15910         * mini-sparc.c (mono_sparc_flushw): Call mono_arch_flush_icache ().
15911
15912         * mini-exceptions.c: Add proper include files for getpid ().
15913
15914 2006-10-16  Zoltan Varga  <vargaz@gmail.com>
15915
15916         * aot-runtime.c (mono_aot_get_method): Change this to return the native code
15917         address instead of a MonoJitInfo* to avoid decoding the exception info for the
15918         method.
15919
15920         * aot-runtime.c aot-compiler.c: Use uint16 instead of uint32 entries in the
15921         name cache to reduce its size.
15922
15923         * mini.h (MONO_AOT_FILE_VERSION): Bump aot file format version.
15924
15925 2006-10-15  Zoltan Varga  <vargaz@gmail.com>
15926
15927         * mini-x86.c: Save/restore the current LMF structure more efficiently using
15928         the mono_lmf TLS variable.
15929
15930         * exceptions-x86.c (mono_arch_find_jit_info): Only access lmf->method in 
15931         trampoline lmf frames.  
15932
15933         * mini-sparc.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Define this on sparc as well.
15934
15935 2006-10-14  Zoltan Varga  <vargaz@gmail.com>
15936
15937         * mini-amd64.c: Save/restore the current LMF structure more efficiently using
15938         the mono_lmf TLS variable.
15939
15940         * mini-exceptions.c: Access the LMF structure through accessors.
15941
15942         * mini.c: Allow the backends the option for storing the lmf in a dedicated TLS 
15943         variable instead of in jit_tls->lmf.
15944
15945         * mini-x86.c mini-amd64.c: Update after lmf->lmf_addr name change.
15946         
15947         * exceptions-amd64.c (mono_arch_find_jit_info): Only access lmf->method in 
15948         trampoline lmf frames.
15949
15950         * mini-amd64.c (mono_arch_emit_prolog): Do not set lmf->method as it is not needed.
15951
15952 2006-10-12  Zoltan Varga  <vargaz@gmail.com>
15953
15954        * mini.c trace.c mini-x86.c: Revert these too.
15955         
15956        * mini.c trace.c mini-x86.c: Remove warning workarounds after the mono_type_size ()
15957        signature change.
15958
15959 Tue Oct 10 11:35:20 CEST 2006 Paolo Molaro <lupus@ximian.com>
15960
15961         * genmdesc.c: removed now dead code.
15962
15963 2006-10-09  Robert Jordan <robertj@gmx.net>
15964
15965         * mini.c: Disable the CrashReporter on MacOS X; Fixes #74869
15966
15967 Mon Oct 9 17:06:41 CEST 2006 Paolo Molaro <lupus@ximian.com>
15968
15969         * mini.h: do not leave gaps in the opcode values.
15970
15971 Mon Oct 9 16:08:51 CEST 2006 Paolo Molaro <lupus@ximian.com>
15972
15973         * jit-icalls.h: flag functions as internal here, too.
15974
15975 Mon Oct 9 15:58:18 CEST 2006 Paolo Molaro <lupus@ximian.com>
15976
15977         * mini.h, aliasing.h, declsec.h, regalloc.h, trace.h: mark internal
15978         functions with the internal attribute.
15979
15980 Mon Oct 9 15:52:45 CEST 2006 Paolo Molaro <lupus@ximian.com>
15981
15982         * aot-compiler.c: fclose the file descriptor in the profile read loop.
15983
15984 Fri Oct 6 16:01:38 CEST 2006 Paolo Molaro <lupus@ximian.com>
15985
15986         * mini.c, jit-icalls.c, inssel-float.brg: beginnings of support
15987         for soft-float.
15988
15989 2006-10-05  Zoltan Varga  <vargaz@gmail.com>
15990
15991         * mini-x86.c (emit_load_volatile_arguments): New function to handle arguments of
15992         tail calls as on other platforms.
15993
15994         * mini.c (mono_method_to_ir): Fix a few tailcall problems. Fixes #79557.
15995
15996         * iltests.il: Add a few tailcall tests.
15997
15998 Tue Oct 3 16:33:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
15999
16000         * driver.c: fix loop for old compilers (bug #79521).
16001
16002 2006-10-02  Zoltan Varga  <vargaz@gmail.com>
16003
16004         * mini-exceptions.c (ves_icall_get_trace): Remove debug printf.
16005
16006         * aot-runtime.c (mono_aot_get_class_from_name): Avoid a memory allocation.
16007
16008         * aot-compiler.c: Add a new option 'metadata-only' to only emit the cached
16009         metadata without any code.
16010
16011         * mini-exceptions.c (mono_handle_native_sigsegv): Add some code to print out
16012         more precise debugging information using gdb.
16013
16014 2006-09-30  Zoltan Varga  <vargaz@gmail.com>
16015
16016         * inssel-ia64.brg: Make the helper methods static.
16017
16018 Thu Sep 28 16:40:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16019
16020         * inssel-x86.brg: make the helper methods static.
16021
16022 Thu Sep 28 16:31:32 CEST 2006 Paolo Molaro <lupus@ximian.com>
16023
16024         * inssel-amd64.brg, mini-amd64.c: small cleanup, use inst_call.
16025
16026 Thu Sep 28 15:36:07 CEST 2006 Paolo Molaro <lupus@ximian.com>
16027
16028         * mini.c: updates for monoburg changes.
16029         * inssel.brg: make a few helper functions static as they should.
16030
16031 2006-09-27  Zoltan Varga  <vargaz@gmail.com>
16032
16033         * Makefile.am: Move mini-codegen.c to common_sources.
16034
16035 Wed Sep 27 15:07:08 CEST 2006 Paolo Molaro <lupus@ximian.com>
16036
16037         * mini.h: instroduce inst_call in MonoInst for use in OUTARG
16038         instructions.
16039         * Makefile.am, cpu-g4.md, inssel-ppc.brg, mini-codegen.c, mini-ppc.c,
16040         mini-ppc.h: port to use the common local register allocator.
16041
16042 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16043
16044         * mini.h: Remove the comment too then.
16045
16046 Tue Sep 26 14:02:58 CEST 2006 Paolo Molaro <lupus@ximian.com>
16047
16048         * mini.h: put back backend.data which is to be used shortly and
16049         doesn't increase the size of MonoInst. If any 64 bit arch aligned
16050         pointers on 4 byte boundaries it'd have much bigger issues running
16051         and you can ifdef it out anyway.
16052
16053 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16054
16055         * mini.h (MonoInst): Remove backend.data field since it is unused and increases
16056         MonoInst size by 4 bytes on 64 bit machines.
16057
16058 Tue Sep 26 11:57:26 CEST 2006 Paolo Molaro <lupus@ximian.com>
16059
16060         * *.{c,h,brg}: long due removal of the unused field in MonoInst and
16061         replacement with more meaningful field names. Arch maintainers, please
16062         check the assigned names are good enough for your arch.
16063
16064 2006-09-26  Zoltan Varga  <vargaz@gmail.com>
16065
16066         * cpu-ia64.md mini-ia64.c inssel-ia64.brg mini-ops.h: Get rid of the 
16067         OP_IA64_FETCHADD opcodes, use OP_ATOMIC_ADD_IMM_NEW opcodes instead.
16068
16069 Mon Sep 25 11:05:24 CEST 2006 Paolo Molaro <lupus@ximian.com>
16070
16071         * mini.h, driver.c, optflags-def.h, Makefile.am: reduce runtime
16072         relocations and memory requirements, put the optimization flags
16073         definitions in their own file.
16074
16075 2006-09-24  Zoltan Varga  <vargaz@gmail.com>
16076
16077         * jit-icalls.c (mono_helper_stelem_ref): Remove this unused helper function.
16078
16079         * mini.c (mini_init): Remove reference to mono_helper_stelem_ref.
16080
16081 2006-09-22  Zoltan Varga  <vargaz@gmail.com>
16082
16083         * mini-amd64.c (add_valuetype): Fix an uninitialized memory issue.
16084
16085 Thu Sep 21 19:06:09 CEST 2006 Paolo Molaro <lupus@ximian.com>
16086
16087         * inssel.brg: use the correct function to get the size of an item
16088         in an array, given an element class.
16089         * aot-compiler.c: do not access class->class_size directly.
16090
16091 Thu Sep 21 12:10:56 CEST 2006 Paolo Molaro <lupus@ximian.com>
16092
16093         * mini.h, debug-mini.c: added a debugging function to print
16094         info about local variables and arguments in a jitted method.
16095
16096 2006-09-20  Zoltan Varga  <vargaz@gmail.com>
16097
16098         * mini-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16099
16100         * exceptions-ia64.c: Fix some problems reported by Bill Seurer <seurer@us.ibm.com>.
16101
16102 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16103
16104         * mini-ia64.c (mono_arch_call_opcode): Avoid using the same loop index in the
16105         inner and outer loops when passing vtypes.
16106
16107 Tue Sep 19 17:53:40 CEST 2006 Paolo Molaro <lupus@ximian.com>
16108
16109         * mini-ppc.c: take into account the cpu errata for cache flushing
16110         which caused some random errors (bug #79381).
16111
16112 2006-09-19  Zoltan Varga  <vargaz@gmail.com>
16113
16114         * mini-amd64.c (mono_arch_emit_exceptions): Emit the call to 
16115         mono_arch_throw_corlib_exception using emit_call () too. Fixes #79271.
16116
16117 2006-09-17  Zoltan Varga  <vargaz@gmail.com>
16118
16119         * aot-runtime.c (load_aot_module): Return immeditely if the AOT module was already
16120         loaded.
16121
16122         * exceptions-amd64.c (gregs_from_ucontext): Apply another patch from the
16123         freebsd ports tree.
16124
16125         * mini-amd64.c (emit_call): Avoid near calls on freebsd.
16126         (mono_arch_patch_code): Remove the unused handling of MONO_PATCH_INFO_CLASS_INIT.
16127
16128         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix check for 32 bitness of
16129         displacement.
16130
16131 2006-09-13  Zoltan Varga  <vargaz@gmail.com>
16132
16133         * aot-runtime.c (load_aot_module_from_cache): Fix PPC build.
16134
16135 2006-09-12  Zoltan Varga  <vargaz@gmail.com>
16136
16137         * mini.c (UNVERIFIED): Add a 'break-on-unverified' MONO_DEBUG option so this 
16138         macro does not have to be changed during debugging.
16139
16140         * 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>.
16141
16142         * cpu-pentium.md: Rename this to cpu-x86.md for consistency with other platforms.
16143
16144         * Makefile.am mini-x86.c mini-codegen.c: Rename pentium_desc to x86_desc.
16145         
16146         * mini.c (mini_get_ldelema_ins): Allow ldelema2d optimization if 
16147         MONO_ARCH_NO_EMULATE_MUL is defined.
16148
16149         * mini-ia64.h (MONO_ARCH_CALLEE_FREGS): Reserve f33 for use by instructions.
16150
16151         * mini-ia64.h: Define MONO_ARCH_NO_EMULATE_MUL.
16152
16153         * mini-ia64.c: Implement CEE_MUL based on gcc emitted code.
16154
16155         * mini-ia64.c (mono_arch_lowering_pass): Optimize store_membase_imm with offset==0.
16156         
16157 2006-09-11  Zoltan Varga  <vargaz@gmail.com>
16158
16159         * mini-x86.h mini-amd64.h mini-exceptions.c: Move the bsd specific MAP_ANON
16160         stuff to mini-exceptions.c where it is used.
16161
16162         * mini-sparc.c (mono_arch_setup_jit_tls_data): Remove the duplicate altstack
16163         setup code, the real one is in mini-exceptions.c.
16164
16165         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Move all dependencies on the
16166         layout of ucontext_t to helper functions in exceptions-amd64.c, as on x86. Add
16167         some changes from the freebsd ports tree.
16168
16169         * mini-amd64.h exceptions-amd64.c: Fix the amd64 build. Get rid of the SC_
16170         constants.
16171         
16172         * mini-amd64.h: Freebsd has MAP_ANON instead of MAP_ANONYMOUS.
16173
16174 Mon Sep 11 13:18:55 CEST 2006 Paolo Molaro <lupus@ximian.com>
16175
16176         * mini.c: on Linux, check for /proc to be mounted
16177         (bug# 79351, novell bug#201204).
16178
16179 Mon Sep 11 13:10:12 CEST 2006 Paolo Molaro <lupus@ximian.com>
16180
16181         * mini.c: handle cases where pthread_attr_getstack() behaves
16182         incorrectly (bug #78096).
16183
16184 Mon Sep 11 11:31:10 BST 2006 Paolo Molaro <lupus@ximian.com>
16185
16186         * mini-arm.c: support larger stack frames (bug #79272).
16187
16188 2006-09-08  Zoltan Varga  <vargaz@gmail.com>
16189
16190         * aot-runtime.c (mono_aot_get_class_from_name): Remove a debug printf.
16191
16192         * aot-compiler.c: Add a hash table to the AOT file mapping class names to typedef 
16193         tokens.
16194
16195         * aot-runtime.c (mono_aot_get_class_from_name): New function used by 
16196         mono_class_from_name () to find a class from its name.
16197
16198         * mini.c (mini_init): Register mono_aot_get_class_from_name () with the runtime.
16199
16200 2006-09-07  Zoltan Varga  <vargaz@gmail.com>
16201
16202         * mini-amd64.c (emit_call): Avoid strstr () call if possible.
16203
16204 2006-09-05  Kornel Pal  <kornelpal@gmail.com>
16205
16206         * Makefile.am: Renamed mono-1.dll to mono.dll. (-avoid-version)
16207
16208 2006-09-04  Zoltan Varga  <vargaz@gmail.com>
16209
16210         * mini.c (mono_icall_get_wrapper): Fix a race condition on initializing
16211         callinfo->trampoline.
16212
16213         * mini-amd64.c (emit_call): Special case calls to the vararg array icalls. Hopefully
16214         fixes #79271.
16215         (mono_arch_patch_code): Add some debug code to help track down similar failures in the
16216         future.
16217
16218 2006-09-03  Zoltan Varga  <vargaz@gmail.com>
16219
16220         * aot-runtime.c (mono_aot_plt_resolve): Add an assert.
16221
16222 2006-09-02  Zoltan Varga  <vargaz@gmail.com>
16223
16224         * tramp-x86.c (mono_arch_create_specific_trampoline): Don't increase
16225         stats.method_trampolines, it is already done by the generic trampoline code.
16226
16227         * tramp-amd64.c (mono_arch_create_specific_trampoline): Ditto.
16228         
16229 2006-09-01  Zoltan Varga  <vargaz@gmail.com>
16230
16231         * mini.c: Remove some references to mono_compile_aot, and use cfg->compile_aot instead.
16232
16233         * aot-runtime.c: Add some tweaks to the MONO_AOT_CACHE functionality.
16234
16235         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix a FIXME.
16236
16237         * mini.c (print_jit_stats): Print mscorlib mempool size too.
16238         
16239         * mini.c (print_jit_stats): Print new stats.
16240
16241         * *-alpha.c: More alpha port work from Sergey Tikhonov <tsv@solvo.ru>.
16242
16243 2006-08-31  Zoltan Varga  <vargaz@gmail.com>
16244
16245         * mini.c (mini_get_ldelema_ins): Fix verifier error when calling
16246         Address on two dimensional arrays. Fixes #78729.
16247
16248         * mini.h (MonoCompile): Add a 'skip_visibility' field.
16249
16250         * mini.c (method_to_ir): Disable visibility checks if skip_visibility is set on
16251         a method.
16252
16253         * mini-amd64.c (mono_arch_emit_exceptions): Fix assertion introduced by the last change.
16254
16255         * mini.c (mono_runtime_cleanup_handlers): Clean up signal handlers on unix. Fixes
16256         #79130.
16257         
16258         * mini.c (handle_array_new): Applied patch from "briaeros007". Fix
16259         a race condition.
16260         (mini_get_ldelema_ins): Ditto.
16261
16262 2006-08-30  Zoltan Varga  <vargaz@gmail.com>
16263
16264         * mini-amd64.c (mono_arch_emit_exceptions): Align fp constants to 16 bytes.
16265         (mono_arch_output_basic_block): Avoid unaligned accesses in FNEG implementation. 
16266         Fixes #79213.
16267
16268 2006-08-29 Neale Ferguson <neale@sinenomine.net>
16269
16270         * mini-s390.c, mini-s390x.c: Fix VARARG case processing with 0 arguments. Add
16271         mono_arch_get_patch_offset as a dummy entry point to allow successful link. 
16272
16273         * exceptions-s390x.c: Cosmetic change.
16274
16275         * tramp-s390.c: Fix warning.
16276
16277         * cpu-s390.md: Correct length of mul_imm.
16278
16279 Wed Aug 23 19:24:00 CEST 2006 Paolo Molaro <lupus@ximian.com>
16280
16281         * aot-compiler.c: added binary writer with ELF backend
16282         implementation (only on Linux/x86 for now).
16283
16284 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16285
16286         * Makefile.am: Don't run net 2.0 AOT tests.
16287
16288         * aot-compiler.c (compile_method): Skip methods with tail calls as well.
16289         (mono_compile_assembly): Skip net 2.0 assemblies as well.
16290
16291         * aot-runtime.c (load_patch_info): Fix an uninitialized memory error.
16292
16293 Fri Aug 18 19:38:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16294
16295         * aot-compiler.c: simplified and refactored the asm-writing code
16296         to allow different backends.
16297
16298 2006-08-18  Zoltan Varga  <vargaz@gmail.com>
16299
16300         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file format version.
16301
16302         * aot-compiler.c aot-runtime.c: Reorg the GOT slot allocation code a 
16303         little. Share patches of type TYPE_FROM_HANDLE as well.
16304
16305         * mini.c (mono_patch_info_equal): New helper function.
16306         (mono_patch_info_hash): Ditto.
16307
16308         * aot-compiler.c (emit_method_code): Fix s390 build.
16309
16310         * mini.c (mono_allocate_stack_slots_full): Fix yet another place where byref
16311         is not handled because it is stored as a flag and not as a type ctor. Fixes
16312         #79016.
16313
16314 2006-08-17  Zoltan Varga  <vargaz@gmail.com>
16315
16316         * aot-compiler.c: Fix computation of GOT slot statistics.
16317         
16318         * aot-compiler.c aot-runtime.c: Implement sharing of GOT slots for classes/fields.
16319         Also remove support for not PIC AOT.
16320
16321         * mini.h: Bump AOT file format version.
16322
16323         * objects.cs: Add a test for #78990.
16324
16325         * mini-x86.c (mono_arch_output_basic_block): Applied patch from Peter Dettman
16326         (peter.dettman@iinet.net.au). Fixes #79087.
16327
16328         * basic-long.cs: Add a test for the above.
16329
16330 2006-08-16  Zoltan Varga  <vargaz@gmail.com>
16331
16332         * aot-compiler.c (get_got_offset): Add a cache for GOT entries, not yet used.
16333         
16334         * aot-compiler.c (get_plt_index): Add a cache for wrappers too. Simplify the
16335         code somewhat.
16336
16337 2006-08-15  Zoltan Varga  <vargaz@gmail.com>
16338
16339         * mini.c (mini_init): Fix registration of idiv/imul opcodes which can throw
16340         exceptions.
16341
16342 2006-08-10  Jonathan Chambers  <joncham@gmail.com>
16343
16344         * mini.c: Don't verify COM proxy invoke calls
16345         
16346
16347 2006-08-10  Dick Porter  <dick@ximian.com>
16348
16349         * wapihandles.c (mini_wapi_seminfo): More info, to help track down
16350         which process is holding semaphores locked.
16351
16352 2006-08-08  Zoltan Varga  <vargaz@gmail.com>
16353
16354         * mini-ia64.c mini-amd64.c: Fix #79027.
16355
16356         * mini-sparc.c (mono_arch_call_opcode): Fix the previous patch.
16357
16358         * mini-sparc.c (mono_arch_call_opcode): Fix #79027.
16359
16360         * mini-x86.c (mono_arch_call_opcode): Handle the case where there are no
16361         implicit arguments in a vararg call. Fixes #79027.
16362
16363 2006-08-07  Zoltan Varga  <vargaz@freemail.hu>
16364
16365         * mini.c (mono_get_element_address_signature): Use CDECL calling convention on windows. Fixes #78969.
16366         (mono_get_array_new_va_signature): Ditto.
16367
16368 2006-08-05  Zoltan Varga  <vargaz@gmail.com>
16369
16370         * aot-runtime.c: Call init_plt lazily.
16371
16372         * inssel-long.brg: Fix unsigned long->int conversion.
16373
16374         * aot-runtime.c (init_plt): Remove a redundant make_writable () call.
16375
16376         * aot-compiler.c aot-runtime.c: Reorganize the file structure in the amd64 case so
16377         that most data is now in the .rss/.data section.
16378
16379 2006-08-04  Zoltan Varga  <vargaz@gmail.com>
16380
16381         * aot-compiler.c: Correct the computation of the 'direct-calls' statistic.      
16382
16383         * aot-compiler.c: Print the number of methods without GOT slots as a statistics.
16384
16385         * aot-compiler.c aot-runtime.c tramp-amd64.c: Resurrect amd64 AOT support.
16386
16387         * tramp-amd64.c (mono_arch_patch_callsite): Fix a warning.
16388
16389         * jit-icalls.c (mono_helper_compile_generic_method): Unbox vtypes since this is a
16390         virtual call. Fixes #79010.
16391
16392         * mini.c (mono_method_to_ir): Pass an additional out arg to compile_generic_method 
16393         and use the result as the this argument in the real call.
16394
16395         * generics.2.cs: Add a new test for #79010.
16396         
16397 2006-08-03  Zoltan Varga  <vargaz@gmail.com>
16398
16399         * mini-x86.c: Fix a warning.
16400
16401         * aot-compiler.c: Add a bunch of statistics.
16402
16403         * mini.c (inline_method): Disable inlining in out-of-line bblocks.
16404
16405 2006-08-02  Zoltan Varga  <vargaz@gmail.com>
16406
16407         * mini-arch.h Makefile.am mini-ops.h mini-codegen.c: More alpha updates.
16408
16409 2006-08-01  Zoltan Varga  <vargaz@gmail.com>
16410
16411         * 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>.
16412
16413 2006-07-13  Miguel de Icaza  <miguel@novell.com>
16414
16415         * mini.c (mono_method_to_ir): Obtain the original method in the
16416         CIL stream and use this to perform validation.
16417
16418         Fixed: #78816
16419
16420 2006-07-19  Zoltan Varga  <vargaz@gmail.com>
16421
16422         * mini-x86.c (mono_arch_get_argument_info): Fix a warning.
16423         (mono_arch_call_opcode): Ditto.
16424
16425         * mini.c (mono_method_to_ir): Clear ins_flag at the end of CEE_CALL. Fixes
16426         #78826.
16427
16428         * mini.c (mono_patch_info_dup_mp): New helper function.
16429         
16430         * aot-compiler.c (compile_method): Fix some of the memory allocated during
16431         compilation. Fixes #78827.
16432
16433 2006-07-18  Kornel Pal  <kornelpal@gmail.com>
16434
16435         * declsec.c: Use original security informations for
16436           MONO_WRAPPER_MANAGED_TO_MANAGED.
16437
16438 2006-07-15  Jonathan Chambers  <joncham@gmail.com>
16439
16440         * mini.c: Allow Com Interop methods/classes and
16441         don't verify COM wrapper calls
16442         
16443
16444 2006-07-13  Zoltan Varga  <vargaz@gmail.com>
16445
16446         * inssel-long32.brg: Fix long->i4 checked conversion.
16447
16448         * exceptions.cs: Add a test for the above.
16449
16450 2006-07-08  Zoltan Varga  <vargaz@gmail.com>
16451
16452         * mini-exceptions.c (mono_setup_altstack): Fix a memory leak.
16453
16454         * mini.c: Applied patch from Joachim Ante (joe@otee.dk). Fix some shutdown 
16455         leaks.
16456
16457         * helpers.c (mono_disassemble_code): Avoid using fixed temporary files. Fixes
16458         #78775.
16459
16460 2006-07-03  Zoltan Varga  <vargaz@gmail.com>
16461
16462         * mini.c: Fix solaris/x86 exception handling.
16463
16464         * Makefile.am: Get rid of $(ICU_LIBS).
16465
16466 2006-07-02  Zoltan Varga  <vargaz@gmail.com>
16467
16468         * mini-exceptions.c: Fix handling of unhandled SIGSEGV exceptions on ia64.
16469         (ves_icall_System_Security_SecurityFrame_GetSecurityStack): Use MONO_INIT_CONTEXT_FROM_CURRENT.
16470         (ves_icall_System_Security_SecurityFrame_GetSecurityFrame): Ditto.
16471
16472         * mini-ia64.h (MONO_CONTEXT_SET_FUNC): New macro.
16473
16474         * mini-exceptions.c (mono_handle_native_sigsegv): Prevent infinite loops if
16475         this function causes a SIGSEGV.
16476
16477 2006-06-22  Zoltan Varga  <vargaz@gmail.com>
16478
16479         * mini.c: Remove unused solaris/x86 includes.
16480
16481 2006-06-21  Zoltan Varga  <vargaz@gmail.com>
16482
16483         * jit.h: Add G_BEGIN_DECLS/G_END_DECLS.
16484
16485 2006-06-20  Jb Evain  <jbevain@gmail.com>
16486
16487         * cpu-g4.md: fix max length of start_handler instruction.
16488
16489 2006-06-20  Massimiliano Mantione  <massi@ximian.com>
16490         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78656.
16491
16492 2006-06-16  Massimiliano Mantione  <massi@ximian.com>
16493         * ssa.c: Fixed bug 78653 for SSA based deadce.
16494         * mini.h: added MONO_INST_DEFINITION_HAS_SIDE_EFFECTS flag go
16495         MonoInst.flags, used in SSA based deadce.
16496         * aliasing.c: Fixed bug 78653 for "fastpath" deadce.
16497         * simple-cee-ops.h, simple-mini-ops.h: Fixed bug 78653.
16498
16499 Thu Jun 15 16:52:46 CEST 2006 Paolo Molaro <lupus@ximian.com>
16500
16501         * tramp-ppc.c: don't use malloc () for trampoline code, sometimes
16502         it can end up using non executable memory on ppc64 systems
16503         running ppc32 userspace (fix from Johannes Berg).
16504
16505 2006-06-14  Dick Porter  <dick@ximian.com>
16506
16507         * wapihandles.c: Fix a bunch of signed/unsigned warnings from gcc
16508         4.1.1
16509
16510 2006-06-13  Massimiliano Mantione  <massi@ximian.com>
16511         * mini.c: Made so that inline is locally disabled if it would
16512         trigger a .cctor, because too many apps depend on this behavior
16513         (which seems to be also the one of the MS CLR).
16514
16515 2006-06-13  Zoltan Varga  <vargaz@gmail.com>
16516
16517         * mini-amd64.c (mono_emit_stack_alloc): Fix initialization of localloc'ed memory.
16518         No idea why this worked before.
16519
16520         * branch-opts.c (mono_branch_optimize_exception_target): Avoid branches
16521         which branch to outer exception clauses since they could skip the
16522         inner finally clauses. Fixes #78633.
16523
16524         * exceptions.cs: Add a test for the above.
16525
16526         * mini.c (merge_basic_blocks): Nullify the branch at the end of the first bb.
16527         Fixes #78629.
16528
16529         * iltests.il: Add a test for the above.
16530
16531 2006-06-12  Zoltan Varga  <vargaz@gmail.com>
16532
16533         * mini.c (remove_block_if_useless): Do not remove the bblock immediately
16534         after the end of a try bblock, to prevent asserts in mini_method_compile ().
16535
16536         * iltests.il: Add a test for the above.
16537
16538 2006-06-10  Zoltan Varga  <vargaz@gmail.com>
16539
16540         * mini-ia64.c (mono_arch_lowering_pass): Remove some code duplication.
16541         
16542         * mini-ia64.c inssel-ia64.brg: Implement the new net 2.0 Interlocked.Add
16543         methods as instrinsics.
16544
16545 2006-06-09  Wade Berrier <wberrier@novell.com>
16546
16547         * Makefile.am: Fix sources list for svn rename so that make dist succeeds
16548         (simple-cee-ops.h ssapre-mini-ops.h)
16549
16550 2006-06-09  Neale Ferguson <neale@sinenomine.net>
16551
16552         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on s390/s390x.
16553         * mini-s390x.c, mini-s390.c: Correct ATOMIC operations (incorrect register for CS
16554         instruction).
16555         * mini-s390x.h, mini-s390.h: Simplify MCONTEXT_GET_BP.
16556         * cpu-s390x.md: Fix max. length values for a couple of instructions.
16557
16558 2006-06-09  Jonathan Chambers  <jonathan.chambers@ansys.com>
16559
16560         * mini-exceptions.c: Minor fix for building mono in Visual Studio.
16561
16562 2006-06-08  Massimiliano Mantione  <massi@ximian.com>
16563
16564         * ssapre-cee-ops.h: Renamed as "simple-cee-ops.h"
16565         * simple-cee-ops.h: Was "ssapre-cee-ops.h" (renamed).
16566         * ssapre-mini-ops.h: Renamed as "simple-mini-ops.h"
16567         * simple-mini-ops.h: Was "ssapre-mini-ops.h" (renamed).
16568         * local-propagation.c: In mono_cprop_invalidate_values use a whitelist
16569         of opcodes, so that bug 78549 should not happen again.
16570         * ssapre.c: Updated to use the renamed files.
16571
16572 2006-06-08  Zoltan Varga  <vargaz@gmail.com>
16573
16574         * mini-amd64.c (mono_arch_output_basic_block): Fix a wrong reg-reg move 
16575         in OP_ATOMIC_EXCHANGE_I4.
16576
16577 2006-06-07  Wade Berrier <wberrier@novell.com>
16578
16579         * tramp-s390.c: Fix s390 build (add missing pointer declarations 
16580         in mono_debugger_create_notification_function)
16581
16582 2006-06-06  Zoltan Varga  <vargaz@gmail.com>
16583
16584         * mini.c (NEW_AOTCONST_TOKEN): Fix amd64 build.
16585         
16586         * mini.c (type_from_stack_type): Disable some changes which do not
16587         seem to work.
16588
16589         * driver.c: Reenable opts.
16590
16591         * mini.h (MonoStackSlot): New structure to keep track of the verification state
16592         of the evaluation stack.
16593         
16594         * mini.h (MonoBasicBlock): Add a 'stack_state' field to keep track of the
16595         evaluation stack trace at entry to the bblock.
16596
16597         * mini.c (merge_stacks): New function to perform verification of stack merges.
16598         Turned off by default.
16599
16600         * mini.c: Fill up ins->klass for instructions whose type is STACK_OBJ or
16601         STACK_MP.
16602         
16603 2006-06-06  Massimiliano Mantione  <massi@ximian.com>
16604
16605         * local-propagation.c: Fixed bug 78549.
16606
16607 2006-06-04  Zoltan Varga  <vargaz@gmail.com>
16608
16609         * mini-exceptions.c (ves_icall_get_frame_info): Fix this function on ia64.
16610
16611 2006-06-02  Miguel de Icaza  <miguel@novell.com>
16612
16613         * tramp-sparc.c, tramp-ppc.c, tramp-s390.c, tramp-s390x.c,
16614         tramp-arm.c, tramp-ia64.c
16615         (mono_debugger_create_notification_function): Update signature to
16616         new signature and use new protocol for creating the notification
16617         function.  
16618
16619         Should fix the build.
16620
16621 2006-06-02  Geoff Norton  <gnorton@customerdna.com>
16622
16623         * exceptions-ppc.c (mono_jit_walk_stack)
16624         (ves_icall_get_frame_info): Fix the build
16625
16626 2006-06-02  Zoltan Varga  <vargaz@gmail.com>
16627
16628         * mini.c (mono_set_defaults): Fix the handling of -O=-all.
16629
16630 2006-05-31  Raja R Harinath  <rharinath@novell.com>
16631
16632         * il2tests.2.il: New file for generics CIL tests.  Add test for
16633         #78019.
16634         * Makefile.am: Update.
16635
16636         Fix #78019
16637         * mini.c (mono_method_to_ir): Don't apply box+brtrue optimization
16638         to nullable types.
16639
16640 2006-05-30  Massimiliano Mantione  <massi@ximian.com>
16641
16642         * aliasing.c: Fixed bug 78311.
16643
16644 2006-05-29  Martin Baulig  <martin@ximian.com>
16645
16646         * mini-exceptions.c (mono_find_jit_info): When computing the
16647         native offset, check whether we're actually inside the method's
16648         code; call mono_debug_print_stack_frame() to format the frame.
16649         (ves_icall_System_Exception_get_trace): Call
16650         mono_debug_print_stack_frame() to format the stack frame.
16651         (ves_icall_get_trace): Update to the new debugging API.
16652         (mono_jit_walk_stack_from_ctx): Likewise.
16653         (ves_icall_get_frame_info): Likewise.
16654
16655         * mini.c (get_method_from_ip): Use the new debugging API.
16656         (mono_print_method_from_ip): Likewise.
16657
16658         * exceptions-ppc.c
16659         (mono_jit_walk_stack): Use the new debugging API.
16660         (ves_icall_get_frame_info): Likewise.   
16661
16662 2006-05-27  Zoltan Varga  <vargaz@gmail.com>
16663
16664         * mini-amd64.c (mono_arch_output_basic_block): Fix MONO_PROFILE_COVERAGE.
16665
16666 2006-05-25  Massimiliano Mantione  <massi@ximian.com>
16667
16668         * mini.c: Added "limitator" to inline for debugging.
16669
16670 2006-05-24  Martin Baulig  <martin@ximian.com>
16671
16672         * debug-debugger.c (mono_debugger_init): Create a private,
16673         malloc()-based code manager for the notification function and
16674         intentionally leak it on exit.  This fixes the crash-on-exit race
16675         condition.
16676
16677         * tramp-amd64.c
16678         (mono_debugger_create_notification_function): Added
16679         `MonoCodeManager *' argument.
16680
16681         * tramp-x86.c
16682         (mono_debugger_create_notification_function): Added
16683         `MonoCodeManager *' argument.
16684
16685 2006-05-23  Massimiliano Mantione  <massi@ximian.com>
16686
16687         * aliasing.c: Fixed 64 bit issue.
16688         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16689         default since all known bugs are fixed (one more time!).
16690
16691 Tue May 23 13:47:28 CEST 2006 Paolo Molaro <lupus@ximian.com>
16692
16693         * mini.c: write barrier support.
16694
16695 2006-05-23  Martin Baulig  <martin@ximian.com>
16696
16697         * debug-debugger.c: Revert Paolo's change.  Add comment and #error
16698         check at the top of the file.
16699
16700 Sun May 21 12:22:29 CEST 2006 Paolo Molaro <lupus@ximian.com>
16701
16702         * debug-debugger.c: fix the build. Again. Hopefully Martin will stop
16703         reverting changes without reason and without changelog entries.
16704
16705 2006-05-18  Zoltan Varga  <vargaz@gmail.com>
16706
16707         * mini-sparc.c (mono_arch_output_basic_block): Add support for large stack offets
16708         to a few opcodes. Fixes #78439.
16709
16710         * mini-sparc.c: Rename mono_sparch_break () to mono_arch_break () to improve
16711         consistency with other archs.
16712
16713         * mini-ia64.c (mono_arch_emit_prolog): Remove debug stuff left in by mistake.
16714
16715 Wed May 17 18:07:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
16716
16717         * debug-debugger.c: fix the build.
16718
16719 2006-05-17  Martin Baulig  <martin@ximian.com>
16720
16721         * debug-debugger.c
16722         (debugger_thread_vtable): Moved here from ../metadata/threads.c.
16723         (debugger_init_threads): Formerly known as mono_debugger_init_threads().
16724         (debugger_finalize_threads): Formaly known as mono_debugger_finalize_threads().
16725         (debugger_attach): Call GC_mono_debugger_add_all_threads().
16726
16727 2006-05-11  Zoltan Varga  <vargaz@gmail.com>
16728
16729         * mini.c (mini_init): Call pthread_attr_destroy () to fix a small memory leak.
16730
16731 2006-05-10  Zoltan Varga  <vargaz@gmail.com>
16732
16733         * mini-x86.c (mono_arch_instrument_epilog): Fix handling of 
16734         MONO_TYPE_GENERICINST.
16735         
16736         * mini-amd64.c (mono_arch_instrument_epilog): Fix handling of 
16737         MONO_TYPE_GENERICINST.
16738
16739 2006-05-09  Zoltan Varga  <vargaz@gmail.com>
16740
16741         * mini-x86.c (mono_arch_get_vcall_slot_addr): Add a missing call sequence. Fixes
16742         #78325.
16743
16744 2006-05-08  Zoltan Varga  <vargaz@gmail.com>
16745
16746         * mini.c (mono_create_jump_trampoline): Allocate MonoJitInfo from the domain
16747         mempool.
16748         (mono_jit_free_method): Remove the method from jump_trampoline_hash as well.
16749
16750 2006-05-06  Zoltan Varga  <vargaz@gmail.com>
16751
16752         * mini.c (mini_cleanup): Applied patch from Joachim Ante (joe@otee.dk). Call
16753         mono_trace_cleanup ().
16754
16755         * iltests.il: Fix problem with the newly added test.
16756
16757         * mini-codegen.c (mono_local_regalloc): When changing the dreg of an instruction
16758         due to register constraints, free up the previous hreg. Fixes #78314.
16759
16760         * iltests.il: Add new test for #78314.  
16761
16762         * mini-x86.c (mono_arch_get_inst_for_method): Use OP_ATOMIC_ADD_NEW_I4 for
16763         Interlocked.Add. Fixes #78312.
16764
16765         * mini-amd64.c (mono_arch_get_inst_for_method): Ditto.
16766         
16767 2006-05-05  Zoltan Varga  <vargaz@gmail.com>
16768
16769         * inssel.brg (mini_emit_virtual_call): Fix a warning.
16770
16771 2006-05-05  Martin Baulig  <martin@ximian.com>
16772
16773         * debug-mini.c (mono_debug_open_block): New method.
16774
16775         * mini-amd64.c
16776         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16777         the beginning of each basic block.
16778
16779         * mini-x86.c
16780         (mono_arch_output_basic_block): Call mono_debug_open_block() at
16781         the beginning of each basic block.
16782
16783 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16784
16785         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16786         default until I understand why they break the build on amd64.
16787
16788 2006-05-04  Zoltan Varga  <vargaz@gmail.com>
16789
16790         * mini.c (mini_cleanup): Call mono_cleanup ().
16791
16792         * mini.c (UNVERIFIED): New macro to make it easier to track down verification
16793         errors.
16794
16795 2006-05-04  Massimiliano Mantione  <massi@ximian.com>
16796
16797         * aliasing.c: Fixed shameful cut&paste error that caused JIT crashes.
16798         * driver.c: Enabled inline,consprop,copyprop,treeprop,deadce by
16799         default since all known bugs are fixed, and I cannot reproduce bug
16800         77944... I'm asking Matt Hargett to test again after this commit.
16801
16802 2006-04-28  Massimiliano Mantione  <massi@ximian.com>
16803
16804         * mini-codegen.c: Fixed typo that thrashed inline.
16805
16806 2006-04-28  Zoltan Varga  <vargaz@gmail.com>
16807
16808         * dominators.c (compute_dominators): Avoid using a worklist since
16809         it is not correct in some cases. Instead, iterate over all bblocks as
16810         in the original paper. Fixes --compile-all -O=all System.Xml.dll.
16811
16812 2006-04-28  Miguel de Icaza  <miguel@novell.com>
16813
16814         * mini.c (mono_jit_compile_method_inner): Use
16815         mono_prepare_exception_from_error that resets the value
16816         internally.
16817
16818 2006-04-27  Miguel de Icaza  <miguel@novell.com>
16819
16820         * mini.c: Move the mini_loader_error_to_exception to metadata. 
16821         
16822 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16823
16824         * aliasing.c: Fixed bug 78210.
16825
16826 2006-04-27  Massimiliano Mantione  <massi@ximian.com>
16827
16828         * driver.c: Disabled inline,consprop,copyprop,treeprop,deadce by
16829         default until all their problems (or the ones they trigger) are fixed.
16830
16831 2006-04-26  Zoltan Varga  <vargaz@gmail.com>
16832
16833         * aot-runtime.c (mono_aot_get_method_from_token_inner): Fix the previous patch.
16834         
16835         * aot-runtime.c (mono_aot_get_method_from_token_inner): Mark the method
16836         as loaded only after resolving patches since that could invoke the same method.
16837
16838         * aot-runtime.c (mono_aot_plt_resolve): Fix ppc etc. builds.
16839
16840         * aot-compiler.c: Refactor mono_aot_compile_aot () into a bunch of smaller
16841         functions.
16842
16843         * aot-runtime.c (init_plt): Use a normal trampoline to transfer code to the
16844         AOT loader.
16845
16846         * aot-compiler.c (emit_plt): Pass the plt offset in %eax instead of on the
16847         stack.
16848
16849         * mini-trampolines.c (mono_aot_plt_trampoline): New trampoline to handle calls
16850         made from AOT code through the PLT table.
16851
16852         * mini-x86.h mini-amd64.h: Define MONO_ARCH_AOT_PLT_OFFSET_REG to the register
16853         holding the plt offset when a call is made to the aot plt trampoline.
16854         
16855 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16856
16857         * aot-runtime.c aot-compiler.c cpu-amd64.md mini-amd64.c: Update parts of the 
16858         amd64 AOT support.
16859
16860         * Makefile.am (common_sources): Fix build breakage.
16861
16862         * aot-runtime.c aot-compiler.c: Reorganize the AOT code yet again: Make all
16863         calls through a jump table similar to the ELF PLT table. Avoid indirect calls for
16864         intra-assembly calls if possible.
16865         
16866         * tramp-*.c: Add new functions for patching/nullifying PLT entries.
16867
16868         * mini-trampolines.c: Handle PLT entries.
16869
16870         * mini.c: Avoid creating a GOT var for calls.
16871
16872         * jit-icalls.c (helper_ldstr_mscorlib): New helper function for loading strings
16873         from mscorlib code.
16874
16875         * jit-icalls.c (helper_newobj_mscorlib): New helper function to create objects
16876         from mscorlib code.
16877
16878         * mini.c (mono_method_to_ir): Use the new helper functions in throw bblocks in
16879         AOT code.       
16880
16881         * mini.h: Bump AOT file format version.
16882         
16883         * mini.c (get_basic_blocks): Fix the calculation of bb->out_of_line so it
16884         covers more cases.
16885
16886 2006-04-25  Martin Baulig  <martin@ximian.com>
16887
16888         * driver.c: Disable copyprop, consprop and inline when running
16889         inside the debugger.
16890
16891 2006-04-25  Martin Baulig  <martin@ximian.com>
16892
16893         * debug-debugger.h (MonoDebuggerInfo): Replaced `get_thread_id'
16894         with `get_current_thread' and added `detach'.
16895         (MonoDebuggerMetadataInfo): Added `thread_size',
16896         `thread_tid_offset', `thread_stack_ptr_offset' and
16897         `thread_end_stack_offset'.
16898
16899 2006-04-25  Zoltan Varga  <vargaz@gmail.com>
16900
16901         * aot.c Makefile.am: Split aot.c into two new files aot-compiler.c and 
16902         aot-runtime.c.
16903
16904         * inssel.brg (mini_emit_load_intf_reg_vtable): Use a new kind of AOT constant
16905         ADJUSTED_IID to avoid the need for adjusting the IID at runtime.
16906
16907         * mini.h (MonoJumpInfoType): Add MONO_PATCH_INFO_ADJUSTED_IID.
16908
16909         * mini.c (mono_resolve_patch_target): Handle ADJUSTED_IID.
16910
16911         * aot.c: Add support for ADJUSTED_IID.  
16912
16913 2006-04-24  Zoltan Varga  <vargaz@gmail.com>
16914
16915         * aot.c (emit_method_order): Don't align method_order_end.
16916
16917         * inssel.brg (stmt): Fix interface calls in AOT code which got broken by
16918         the interface ID changes.
16919
16920 2006-04-21  Dick Porter  <dick@ximian.com>
16921
16922         * mini.c (mini_thread_cleanup): Clear the JIT TLS data when
16923         cleaning up a thread.  Fixes the new part of bug 77470.
16924
16925 2006-04-20  Geoff Norton  <gnorton@customerdna.com>
16926
16927         * mini-ppc.c: Call mono_jit_thread_attach when transitioning a native
16928         to managed wrapper.
16929                      
16930 2006-04-19  Zoltan Varga  <vargaz@gmail.com>
16931
16932         * mini.h mini.c: Remove mono_type_to_ldind/stind () which are now in marshal.c.
16933         
16934         * mini.c (mono_runtime_install_handlers): Handle SIGABRT similarly to
16935         SIGSEGV. Fixes #78072.
16936
16937         * mini-exceptions.c (mono_handle_native_sigsegv): Add a 'signal' argument,
16938         unregister our SIGABRT handler.
16939
16940 2006-04-19  Massimiliano Mantione  <massi@ximian.com>
16941
16942         * mini.c: Disabled inline where it can alter the call stack in a
16943         way visible from managed code.
16944         * driver.c: enabled inline,consprop,copyprop,treeprop,deadce by
16945         default.
16946
16947 2006-04-16  Zoltan Varga  <vargaz@gmail.com>
16948
16949         * mini-amd64.c (mono_arch_emit_prolog): Attach the thread to the runtime as it is done
16950         on other platforms. Fixes #78089.
16951
16952 2006-04-13  Martin Baulig  <martin@ximian.com>
16953
16954         * driver.c: Also check a `MONO_INSIDE_MDB' environment variable to
16955         determine whether we're inside the debugger.
16956
16957         * debug-debugger.h
16958         (MonoDebuggerMetadataInfo): Added all offsets from `MonoDefaults'.
16959
16960 2006-04-12  Zoltan Varga  <vargaz@gmail.com>
16961
16962         * mini.c (mono_method_to_ir): Handle multiple LEAVE statements inside a single
16963         handler clauses. Fixes #78024.
16964
16965         * mini-sparc.c (mono_arch_output_basic_block): Handle large offsets
16966         in the CALL_MEMBASE opcodes. Fixes #78088.
16967         (mono_arch_get_vcall_slot_addr): Ditto.
16968
16969 2006-04-10  Martin Baulig  <martin@ximian.com>
16970
16971         * debug-debugger.c: The thread handling code has now been moved
16972         into ../metadata/threads.c.
16973
16974 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16975
16976         * driver.c (mono_main): Fix --with-gc=none build.
16977
16978         * mini-codegen.c (mono_spillvar_offset): Improve alignment.
16979         (mono_spillvar_offset_float): Ditto.
16980         (mono_local_regalloc): Only do the OP_MOVE optimization if ins->dreg is a local
16981         hreg, not when its !global, since on ia64, there is a third category: stacked
16982         registers.      
16983
16984 Mon Apr 10 14:39:49 CEST 2006 Paolo Molaro <lupus@ximian.com>
16985
16986         * mini.c: set MonoInst->klass for load field address and a few other
16987         places.
16988
16989 2006-04-10  Zoltan Varga  <vargaz@gmail.com>
16990
16991         * helpers.c (mono_disassemble_code): Emit debug info on amd64 as well.
16992
16993 2006-04-07  Zoltan Varga  <vargaz@gmail.com>
16994
16995         * dominators.c (compute_dominators): Fix yet another bug which surfaced after
16996         the branch opt changes.
16997
16998 2006-04-06  Dick Porter  <dick@ximian.com>
16999
17000         * wapihandles.c (mini_wapi_semdel): Fix parameters in semctl () call.
17001         
17002         * wapihandles.c (mini_wapi_seminfo): 
17003         * driver.c (mono_main): Add semaphore info option
17004
17005 2006-04-05  Zoltan Varga  <vargaz@gmail.com>
17006
17007         * dominators.c (compute_dominators): Fix a bug which surfaced after the recent
17008         branch optimization changes. Fixes #78009.
17009
17010 Wed Apr 5 16:40:33 CEST 2006 Paolo Molaro <lupus@ximian.com>
17011
17012         * mini.c: ignore accessibility of methods in managed->native wrappers.
17013
17014 2006-04-04  Zoltan Varga  <vargaz@gmail.com>
17015
17016         * mini.c (mini_cleanup): Call print_jit_stats () earlier since it accesses metadata.
17017         
17018         * mini.c (mini_cleanup): Free 'emul_opcode_map' as well.
17019
17020 2006-04-03  Zoltan Varga  <vargaz@gmail.com>
17021
17022         * mini.c: Modify the branch optimizations to preserve the invariant that
17023         the entries inside the in_bb and out_bb arrays are unique.
17024         (mono_unlink_bblock): Avoid creation of new arrays.
17025
17026 2006-04-02  Zoltan Varga  <vargaz@gmail.com>
17027
17028         * mini.c (mono_unlink_bblock): Fix regression caused by previous
17029         change (#77992).
17030
17031 2006-04-01  Zoltan Varga  <vargaz@gmail.com>
17032
17033         * mini.c (optimize_branches): Remove the "optimizations" in
17034         the cbranch1/cbranch2 -> branch cases which were causing several
17035         problems in the past. Fixes #77986.
17036
17037 2006-03-31  Chris Toshok  <toshok@ximian.com>
17038
17039         * driver.c (DEFAULT_OPTIMIZATIONS): back out the new set of
17040         default optimizations :(
17041
17042 2006-03-31  Zoltan Varga  <vargaz@gmail.com>
17043
17044         * inssel-x86.brg mini-codegen.c mini.c: Merge some changes/fixes from linear-il
17045         branch.
17046
17047 2006-03-31  Massimiliano Mantione  <massi@ximian.com>
17048
17049         * local-propagation.c: Added comments to structs and removed
17050         "Mono" prefixes from local tree mover types.
17051
17052 2006-03-30  Zoltan Varga  <vargaz@gmail.com>
17053
17054         * Makefile.am (arch_sources): Define this for each architecture so 
17055         libmono_la_SOURCES is defined in one place.
17056
17057 Wed Mar 29 20:51:14 CEST 2006 Paolo Molaro <lupus@ximian.com>
17058
17059         * driver.c, wapihandles.c, Makefile.am: integrate the io-layer utils
17060         from handles/.
17061
17062 Wed Mar 29 17:16:57 CEST 2006 Paolo Molaro <lupus@ximian.com>
17063
17064         * driver.c: print the GC name supplied by configure.
17065
17066 2006-03-29  Massimiliano Mantione  <massi@ximian.com>
17067
17068         * local-propagation.c: Added tree mover, and moved here all the
17069         local propagation code from mini.c
17070         * mini.c: Added support for treeprop, and moved all the local
17071         propagation code to local-propagation.c
17072         * mini.h: Added support for treeprop
17073         * driver.c: Added support for treeprop, enabled consprop, copyprop,
17074         treeprop, inline and deadce by default
17075         * Makefile.am: Added local-propagation.c
17076
17077 2006-03-25  Zoltan Varga  <vargaz@gmail.com>
17078
17079         * exceptions-sparc.c: Applied patch from David S. Miller  <davem@sunset.davemloft.net>: Implement correct support for sparc/linux.
17080
17081 Fri Mar 24 20:07:19 CET 2006 Paolo Molaro <lupus@ximian.com>
17082
17083         * debug-debugger.c: make it compile without the Boehm GC.
17084
17085 Wed Mar 22 18:25:18 CET 2006 Paolo Molaro <lupus@ximian.com>
17086
17087         * mini.c: fixed issue with mismatch when an icall is registered
17088         with multiple names but same address.
17089
17090 Tue Mar 21 15:59:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17091
17092         * declsec.c, mini-exceptions.c: use write barrier to set reference
17093         fields of managed objects.
17094
17095 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17096
17097         * mini.c (mono_print_method_from_ip): Recognize JIT trampolines as well.
17098         (can_access_internals): Fix a warning.
17099
17100         * mini.c (print_method_from_ip): Rename this to 
17101         mono_print_method_from_ip so it gets exported.
17102
17103         * trace.c: Deal with strings inside StringBuilder's containing garbage
17104         and fix memory leaks. Fixes #77848.
17105
17106 2006-03-19  Zoltan Varga  <vargaz@gmail.com>
17107
17108         * mini.c (mini_init): Disable the setting of GC_stackbottom on ia64. Hopefully
17109         fixes #77787.
17110
17111 2006-03-16 Neale Ferguson <neale@sinenomine.net>
17112         
17113         * mini-s390.c: Remove OP_X86_TEST_NULL.
17114
17115 Thu Mar 16 17:19:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17116
17117         * mini.c: use the correct GetHashCode() for the moving collector.
17118
17119 2006-03-16  Massimiliano Mantione  <massi@ximian.com>
17120
17121         * liveness.c: Regalloc spill cost tuning.
17122
17123 2006-03-15 Neale Ferguson <neale@sinenomine.net>
17124         
17125         * mini-s390x.h: Correct S390_LONG macro.
17126
17127         * mini-s390x.c: Cleanup unused code.
17128
17129 2006-03-15  Zoltan Varga  <vargaz@gmail.com>
17130
17131         * jit-icalls.h: New file.
17132
17133         * Makefile.am mini.c jit-icalls.c: Use a proper include file for the jit
17134         icalls and include that instead of including jit-icalls.c.
17135
17136         * mini-ppc.c (mono_arch_output_basic_block): Remove references to
17137         OP_X86 opcodes.
17138
17139 Tue Mar 14 20:23:53 CET 2006 Paolo Molaro <lupus@ximian.com>
17140
17141         * mini.c: when checking for member accessibility, also check for
17142         friend assemblies and for explicit interface implementations.
17143
17144 2006-03-14  Zoltan Varga  <vargaz@gmail.com>
17145
17146         * mini-codegen.c (mono_local_regalloc): Remove incorrect g_free () calls.
17147
17148         * cpu-arm.md cpu-g4.md: Remove x86_ opcodes.
17149
17150         * mini-x86.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17151         common cases are done first.    
17152
17153         * mini-ops.h: Only define platform specific opcodes on the given platform.
17154
17155         * mini.h regalloc.h mini-codegen.c: Merge optimizations from the linear-il
17156         branch.
17157         
17158 2006-03-14  Martin Baulig  <martin@ximian.com>
17159
17160         Revert Paolo's change from r57348:
17161
17162         * mini.h: don't use gboolean for bitfields.
17163         * mini.c: verifier changes for fields and methods accessibility.
17164
17165 2006-03-13  Neale Ferguson <neale@sinenomine.net>
17166
17167         * mini-s390.h, mini-s390x.h: Fix calls to mono_call_inst_add_outarg_reg.
17168
17169         * mini-s390x.c: Fix conv_r_un.
17170
17171         * cpu-s390, cpu-s390x.md: Fix lengths.
17172
17173 Sun Mar 12 17:31:22 CET 2006 Paolo Molaro <lupus@ximian.com>
17174
17175         * mini.c: nested types have access to all the nesting
17176         levels, not just the enclosing types.
17177
17178 Sun Mar 12 16:23:11 CET 2006 Paolo Molaro <lupus@ximian.com>
17179
17180         * mini.c: added a few more verification checks.
17181
17182 2006-03-12  Zoltan Varga  <vargaz@gmail.com>
17183
17184         * liveness.c: Merge optimizations from the linear-il branch.
17185
17186 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17187
17188         * mini-ia64.c (emit_call): Add a comment.
17189
17190         * tramp-ia64.c (mono_arch_patch_callsite): Handle indirect calls as well.
17191
17192         * tramp-ia64.c: Fix some warnings.
17193
17194 Sat Mar 11 20:15:59 CET 2006 Paolo Molaro <lupus@ximian.com>
17195
17196         * mini.h: don't use gboolean for bitfields.
17197         * mini.c: verifier changes for fields and methods accessibility.
17198
17199 2006-03-11  Zoltan Varga  <vargaz@gmail.com>
17200
17201         * mini.c (mono_icall_get_wrapper): Fix an ia64 bug introduced by the
17202         lazy icall wrapper changes.
17203
17204         * dominators.c: Replace all the dominator algorithms with faster
17205         ones from the linear-il branch.
17206
17207         * inssel-*.brg: Allocate call->out_ireg_args and call->out_freg_args from
17208         the mempool.
17209
17210         * mini-amd64.h (MONO_ARCH_INST_FIXED_REG): Reorganize the comparisons so
17211         common cases are done first.
17212
17213         * mini-amd64.c: Fix some warnings.
17214
17215         * mini-codegen.c mini-*.c: Allocate call->out_ireg_args and call->out_freg_args
17216         from the mempool.
17217
17218         * mini.c (mono_jit_compile_method_with_opt): Fix a race in the newly
17219         added code.
17220
17221         * mini.h: Add a missing prototype.
17222
17223 2006-03-10  Zoltan Varga  <vargaz@gmail.com>
17224
17225         * mini.c: Compile icall wrappers lazily.
17226
17227         * mini-codegen.c: Use printf instead of g_print since its much faster.
17228
17229         * mini.h (mono_bitset_foreach_bit): Use the faster mono_bitset_find_start ()
17230         function.
17231
17232         * mini.c (optimize_branches): Cache the negative result from 
17233         remove_block_if_useless ().
17234
17235         * mini.c (optimize_branches): Avoid restarting the iteration after each change. 
17236         Also fix some bblock linking issues.
17237
17238         * helpers.c (mono_disassemble_code): Reduce the size of the temporary
17239         assembly files.
17240
17241         * mini.h: Define G_LIKELY/G_UNLIKELY macros for older glib versions.
17242
17243         * mini.h (MonoBasicBlock): Reorganize the fields, putting more frequently
17244         accessed fields first, for better cache behavior.
17245         
17246 Fri Mar 10 18:21:41 CET 2006 Paolo Molaro <lupus@ximian.com>
17247
17248         * mini.c: speedup IList<T> array accesses.
17249
17250 2006-03-09  Zoltan Varga  <vargaz@gmail.com>
17251
17252         * mini.c (mono_method_to_ir): Handle large methods overflowing the 
17253         inline_costs counter. Fixes #77190.
17254
17255 2006-03-06  Zoltan Varga  <vargaz@gmail.com>
17256
17257         * mini-exceptions.c: Call mono_trace_is_enabled () before printing
17258         trace messages. Fixes #77706.
17259
17260 2006-03-04  Martin Baulig  <martin@ximian.com>
17261
17262         * tramp-amd64.c, tramp-x86.c
17263         (mono_debugger_create_notification_function): Use
17264         mono_global_codeman_reserve() to allocate a buffer at runtime and
17265         return it.
17266
17267         * debug-debugger.h (MonoDebuggerInfo): Added `initialize'.
17268
17269         * debug-debugger.c (mono_debugger_init): Dynamically allocate the
17270         notification function at runtime and then call `initialize' in the
17271         `MONO_DEBUGGER__debugger_info' vtable.
17272
17273 2006-03-04  Zoltan Varga  <vargaz@gmail.com>
17274
17275         * iltests.il: Fix a visibility problem.
17276
17277 Wed Mar 1 15:55:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17278
17279         * driver.c, mini.c: add hooks for the counters API.
17280
17281 Wed Mar 1 12:28:04 CET 2006 Paolo Molaro <lupus@ximian.com>
17282
17283         * driver.c: show disabled options.
17284
17285 Wed Mar 1 12:18:51 CET 2006 Paolo Molaro <lupus@ximian.com>
17286
17287         * linear-scan.c: always use cost-driven selection.
17288
17289 2006-02-28  Raja R Harinath  <rharinath@novell.com>
17290
17291         * jit-icalls.c (helper_compile_generic_method): Revert change from
17292         2006-02-24.
17293
17294 Mon Feb 27 18:58:19 GMT 2006 Paolo Molaro <lupus@ximian.com>
17295
17296         * cpu-arm.md, mini-arm.c: implemented MemoryBarrier.
17297
17298 Sat Feb 25 17:39:21 CET 2006 Paolo Molaro <lupus@ximian.com>
17299
17300         * inssel.brg: style fixes, mostly to force the updated monoburg
17301         to run for people using svn.
17302
17303 Sat Feb 25 17:07:42 CET 2006 Paolo Molaro <lupus@ximian.com>
17304
17305         * mini.c: match monoburg changes.
17306
17307 Sat Feb 25 16:04:33 CET 2006 Paolo Molaro <lupus@ximian.com>
17308
17309         * mini.h, mini.c, abcremoval.c, aliasing.c, liveness.c,
17310         ssapre.c, graph.c, ssa.c: put the mono_burg_arity[]
17311         declaration in the header file.
17312
17313 Sat Feb 25 14:19:31 CET 2006 Paolo Molaro <lupus@ximian.com>
17314
17315         * helpers.c: reduce relocations and mem usage.
17316
17317 Sat Feb 25 11:58:16 CET 2006 Paolo Molaro <lupus@ximian.com>
17318
17319         * mini.h, mini-codegen.c: disable logging features if
17320         requested by configure.
17321
17322 Sat Feb 25 11:54:49 CET 2006 Paolo Molaro <lupus@ximian.com>
17323
17324         * mini.c: tiny verifier changes.
17325
17326 Fri Feb 24 18:17:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17327
17328         * mini-ops.h, inssel-x86.brg, tramp-x86.c, mini-x86.c,
17329         cpu-pentium.md: stack alignment changes for osx/x86,
17330         partially from Geoff Norton <gnorton@customerdna.com>.
17331
17332 2006-02-24  Raja R Harinath  <harinath@gmail.com>
17333
17334         * jit-icalls.c (helper_compile_generic_method): Update to changes
17335         in metadata/class.c.
17336
17337 2006-02-24  Zoltan Varga  <vargaz@gmail.com>
17338         
17339         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add a missing check.
17340         
17341         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Add support for
17342         interface calls with large offsets.
17343
17344 2006-02-23  Raja R Harinath  <rharinath@novell.com>
17345
17346         * jit-icalls.c (helper_compile_generic_method): Document the
17347         special-case we depend on so that we can inflate the method twice
17348         with the same context with no bad side-effects.
17349
17350 Thu Feb 23 13:45:46 CET 2006 Paolo Molaro <lupus@ximian.com>
17351
17352         * mini-x86.c, mini-amd64.c: fix for case when xen support
17353         is disabled.
17354
17355 Wed Feb 22 19:38:40 CET 2006 Paolo Molaro <lupus@ximian.com>
17356
17357         * mini-x86.c, mini-amd64.c: generate code to access tls items
17358         in a faster way for Xen systems.
17359
17360 Wed Feb 22 10:31:25 CET 2006 Paolo Molaro <lupus@ximian.com>
17361
17362         * exceptions-x86.c, mini-x86.h, driver.c, mini-codegen.c:
17363         updates and compilation fixes for the OSX/x86 port, mostly from
17364         Geoff Norton <gnorton@customerdna.com>.
17365
17366 Tue Feb 21 19:56:55 CET 2006 Paolo Molaro <lupus@ximian.com>
17367
17368         * inssel.brg: faster interface call implementation
17369         to sync with the interface_offsets MonoVTable changes.
17370
17371 Mon Feb 20 10:37:57 CET 2006 Paolo Molaro <lupus@ximian.com>
17372
17373         * mini.c: more verification checks.
17374
17375 Fri Feb 17 19:47:29 CET 2006 Paolo Molaro <lupus@ximian.com>
17376
17377         * mini.c: added a few more verification checks.
17378
17379 2006-02-17      Neale Ferguson <neale@sinenomine.net>
17380
17381         * mini-s390x.c, mini-s390x.h: Check for presence of long displacement
17382         facility on the processor and use it if available.
17383
17384 Fri Feb 17 16:12:52 CET 2006 Paolo Molaro <lupus@ximian.com>
17385
17386         * driver.c, aot.c, mini.c: throw exception if the IL code is
17387         invalid or unverifiable.
17388
17389 2006-02-17  Raja R Harinath  <rharinath@novell.com>
17390
17391         * generics.2.cs (test_0_ldfld_stfld_mro): Use m.struct_field, not
17392         m.StructField.
17393
17394 2006-02-16  Zoltan Varga  <vargaz@gmail.com>
17395
17396         * generics.2.cs: Add some tests for generics ldfld/stfld wrappers.
17397
17398 Wed Feb 15 16:23:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17399
17400         * mini-s390x.c, mini-s390.c, mini.c, mini-amd64.c, mini-arm.c,
17401         mini-ia64.c, mini-sparc.c, mini-x86.c, mini-ppc.c: fixed
17402         handling of instantiated generic valuetypes.
17403
17404 2006-02-11  Zoltan Varga  <vargaz@gmail.com>
17405
17406         * mini-exceptions.c mini-x86.h mini-x86.c: Get rid of 
17407         MONO_INIT_CONTEXT_FROM_CALLER, and use MONO_INIT_CONTEXT_FROM_FUNC
17408         instead.
17409
17410         * generics.2.cs: Revert the nullable reftypes tests.
17411
17412 2006-02-10  Zoltan Varga  <vargaz@gmail.com>
17413
17414         * mini-exceptions.c (MONO_INIT_CONTEXT_FROM_CALLER): Avoid
17415         using __builtin_frame_address (1) as it doesn't work in the presence
17416         of optimizations. Hopefully fixes #77273.
17417
17418         * Makefile.am generics.cs generics.2.cs: Revert the generics.2.cs
17419         -> generics.cs change as it doesn't work with some automake versions.
17420
17421 Thu Feb 9 16:24:44 CET 2006 Paolo Molaro <lupus@ximian.com>
17422
17423         * mini.c: handle systems that sue a different way to
17424         retrieve the stack address of the current thread.
17425
17426 2006-02-09  Zoltan Varga  <vargaz@gmail.com>
17427
17428         * Makefile.am generics.2.cs: Rename this to generics.cs and handle
17429         it specially in the makefile.
17430
17431         * generics.2.cs: Add tests for nullable reference types.
17432
17433 Wed Feb 8 19:33:17 CET 2006 Paolo Molaro <lupus@ximian.com>
17434
17435         * mini.c: always handle the case when mono_jit_init()
17436         is called in a thread different from the main thread,
17437         confusing libgc (bug #77309).
17438
17439 Mon Feb 6 09:01:24 EST 2006 Paolo Molaro <lupus@ximian.com>
17440
17441         * mini-ppc.c: fix handling of exceptions in large methods (bug #74932).
17442
17443 Fri Feb 3 18:51:35 CET 2006 Paolo Molaro <lupus@ximian.com>
17444
17445         * mini.c: change optimize_branches () to use a single loop
17446         and introduce a new optimization to simplify some range checks.
17447
17448 2006-02-03  Martin Baulig  <martin@ximian.com>
17449
17450         * debug-debugger.c (debugger_thread_manager_thread_created): Removed
17451         and merged with debugger_thread_manager_add_thread().
17452         (mono_debugger_main): Call debugger_thread_manager_add_thread() to
17453         inform the debugger about the main thread.
17454
17455 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17456
17457         * basic.cs: Add test for div.un/rem.un constant folding.
17458
17459 2006-02-03  Neale Ferguson <neale@sinenomine.net>
17460
17461         * cpu-s390x.md: correct int_xor_imm length
17462
17463 2006-02-03  Zoltan Varga  <vargaz@gmail.com>
17464
17465         * generics.2.cs: New test for #77442.
17466
17467         * jit-icalls.c (helper_compile_generic_method): Check for null. Fixes
17468         #77442.
17469
17470 2006-02-02  Martin Baulig  <martin@ximian.com>
17471
17472         * tramp-x86.c, tramp-amd64.c: It's now safe to #include
17473         <mono/metadata/mono-debug-debugger.h>   
17474
17475         * debug-mini.c: Don't #define _IN_THE_MONO_DEBUGGER.
17476
17477 2006-02-02  Martin Baulig  <martin@ximian.com>
17478
17479         * debug-debugger.h: New header file for debug-debugger.c.
17480
17481         * debug-debugger.c: Big API cleanup; don't run the managed Main()
17482         function is a separate thread anymore; add support for attaching.
17483
17484 2006-02-01  Zoltan Varga  <vargaz@gmail.com>
17485
17486         * tramp-x86.c: Fix a warning.
17487
17488 2006-01-31  Zoltan Varga  <vargaz@gmail.com>
17489
17490         * mini-amd64.c (mono_arch_compute_omit_fp): Avoid hitting an assertion
17491         on very large methods.
17492
17493         * aot.c (load_patch_info): Fix a warning.
17494
17495 Mon Jan 30 12:51:10 CET 2006 Paolo Molaro <lupus@ximian.com>
17496
17497         * cpu-pentium.md, mini-x86.c, inssel.brg, inssel-x86.brg,
17498         mini-ops.h: alu membase optimizations.
17499
17500 Fri Jan 27 21:11:08 CET 2006 Paolo Molaro <lupus@ximian.com>
17501
17502         * mini-ops.h, mini.c, inssel.brg, inssel-x86.brg: opcode
17503         to speedup StringBuilder.
17504
17505 2006-01-27  Zoltan Varga  <vargaz@gmail.com>
17506
17507         * dominators.c (mono_compute_natural_loops): Fix detection of
17508         loop body start blocks.
17509
17510         * mini-exceptions.c (mono_print_thread_dump): Fix non x86 builds.
17511
17512 2006-01-26  Zoltan Varga  <vargaz@gmail.com>
17513
17514         * mini.h mini.c mini-exceptions.c: Add thread dump support. Fixes
17515         #75145.
17516
17517 2006-01-25  Massimiliano Mantione  <massi@ximian.com>
17518
17519         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17520
17521 2006-01-25  Martin Baulig  <martin@ximian.com>
17522
17523         * debug-debugger.c: Moved the `MonoDebuggerManager' and
17524         `MonoDebuggerThread' typedefs here from mono-debug-debugger.h and
17525         started to cleanup this file a little bit.
17526
17527 Tue Jan 24 18:20:48 CET 2006 Paolo Molaro <lupus@ximian.com>
17528
17529         * mini.c: optimize a codepath frequently happening in generics code.
17530
17531 2006-01-23  Martin Baulig  <martin@ximian.com>
17532
17533         * Makefile.am: Only compile debug-debugger.c on supported platforms.
17534
17535         * debug-debugger.c: Kill the IO_LAYER() hack and use the io-layer
17536         functions directly.
17537
17538         * driver.c: debug-debugger.c is only available if
17539         `MONO_DEBUGGER_SUPPORTED' is defined.   
17540
17541 2006-01-23  Martin Baulig  <martin@ximian.com>
17542
17543         * debug-debugger.c: Only enable this on platforms where the Mono
17544         Debugger is working (x86 and x86_64).
17545
17546 2006-01-21  Martin Baulig  <martin@ximian.com>
17547
17548         The Mono Debugger is now using the normal `mono' instead of the
17549         `mono-debugger-mini-wrapper' when executing managed code.
17550
17551         * debug-debugger.c: New file; previously known as
17552         debugger/wrapper/wrapper.c.
17553
17554         * debug-mini.c (mono_init_debugger): Removed.
17555
17556         * driver.c (mono_main): Added new `--inside-mdb' command line
17557         argument which is used when running inside the debugger.
17558
17559 2006-01-20  Zoltan Varga  <vargaz@gmail.com>
17560
17561         * liveness.c (mono_analyze_liveness): Remove some unused data
17562         structures.
17563
17564 2006-01-17  Zoltan Varga  <vargaz@gmail.com>
17565
17566         * mini.h: Move mono_bitset_test_fast macro to monobitset.h where it belongs.
17567
17568 2006-01-16  Zoltan Varga  <vargaz@gmail.com>
17569
17570         * mini.h (mono_bitset_test_fast): Disable the 'fast' implementation which
17571         depends on implementation details of monobitset.
17572
17573         * mini.c (mini_get_ldelema_ins): Fix handling of 1 dimensional arrays.
17574         Fixes #77271.
17575
17576 2006-01-15  Zoltan Varga  <vargaz@gmail.com>
17577
17578         * liveness.c: Update after monobitset changes.
17579
17580 2006-01-14  Zoltan Varga  <vargaz@gmail.com>
17581
17582         * mini-amd64.c (mono_arch_compute_omit_fp): Fix a leak.
17583
17584 2006-01-11 Neale Ferguson <neale@sinenomine.net>
17585
17586         * inssel-s390x.brg: Fix reg: OP_LDADDR(OP_S390_LOADARG) register setting.
17587
17588         * mini-s390x.c: Remove warning messages.
17589
17590 2006-01-11  Ben Maurer  <bmaurer@andrew.cmu.edu>
17591
17592         * mini.c: pass the jitinfo to mono_profiler_method_end_jit.
17593
17594 2006-01-10  Zoltan Varga  <vargaz@gmail.com>
17595
17596         * generics.2.cs: Add ldelem/stelem_any test.
17597
17598 2006-01-10 Neale Ferguson <neale@sinenomine.net>
17599
17600         * mini-s390.c: Fix ATOMIC_ADD_I4 operation.
17601
17602 2006-01-07  Zoltan Varga  <vargaz@gmail.com>
17603
17604         * inssel-long.brg: Fix int->long ovf conversion rules. Fixes #77172.
17605         
17606 2006-01-06  Zoltan Varga  <vargaz@gmail.com>
17607
17608         * generics.2.cs: Reenable vtype tests.
17609
17610         * inssel-x86.brg: Remove an icorrect valuetype rule.
17611
17612 2006-01-06 Neale Ferguson <neale@sinenomine.net>
17613
17614         * mini-s390x.c, inssel-s390x.brg, cpu-s390x.md: Fix ATOMIC_I8 operations. Provide
17615         initial support for OP_ABS.
17616
17617 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17618
17619         * mini-s390x.c (emit_float_to_int): Correct r8 to unsigned int algorithm.
17620
17621 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17622
17623         * mini-s390.c, mini-s390.h, inssel-s390.brg, cpu-s390.md: Fix r8 to unsigned int 
17624         conversion and implement LADD/LSUB.
17625
17626         * exceptions-s390.c: Standardize mono_arch_find_jit_info to match other
17627         architectures.
17628
17629 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17630
17631         * mini-s390x.c, mini-s390x.h: Fix r8 to unsigned int conversion.
17632
17633         * exceptions-s390x.c: Standardize mono_arch_find_jit_info to match other
17634         architectures.
17635
17636 2006-01-05 Neale Ferguson <neale@sinenomine.net>
17637
17638         * mini-s390x.c, mini-s390x.h, mini-s390.c, mini-s390.h: Fix lmf handling when 
17639         localloc is encountered.  Fixes crash in test-183.cs when using gmcs 
17640         (stack walk problem).
17641
17642 2006-01-04  Zoltan Varga  <vargaz@gmail.com>
17643
17644         * aot.c (mono_aot_load_method): Fix a warning.
17645
17646 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17647
17648         * mini-s390x.h, exceptions-s390x.c, inssel-s390x.brg: Fix compiler warnings
17649
17650 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17651
17652         * iltests.il: Add test for #77148.
17653
17654         * mini.c (mini_get_ldelema_ins): Handle arrays with rank 1 too. Fixes
17655         #77148.
17656
17657 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17658
17659         * mini-s390x.c, inssel-s390x.brg: Remove debug statements
17660
17661 2006-01-03  Neale Ferguson <neale@sinenomine.net>
17662
17663         * mini-s390x.c, mini-s390x.h, exceptions-s390x.c, tramp-s390x.c, inssel-s390x.brg,
17664         cpu-s390x.md, mini-codegen.c, Makefile.am: add 64-bit s390 support to JIT.
17665
17666         * basic-long.cs: Add lconv-to-r4/r8 tests.
17667
17668 2006-01-03  Zoltan Varga  <vargaz@gmail.com>
17669
17670         * mini.c (mono_method_to_ir): Fix DynamicMethod support in some opcodes.
17671
17672         * mini-sparc.c (mono_arch_call_opcode): Use mono_class_value_size ()
17673         here as on other archs.
17674
17675 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17676
17677         * mini-s390.c (mono_arch_get_inst_for_method): Add memory_barrier support.
17678
17679 2005-12-29 Neale Ferguson <neale@sinenomine.net>
17680
17681         * inssel-s390.brg: Correct register assignment; Rework L[ADD|SUB]_OVF[_UN] for s390.
17682         
17683         * cpu-s390.md: Fix lengths of a couple of long instructions; Add memory_barrier.
17684
17685         * mini-s390.c: Fix long add/sub overflow instructions; Fix displacement handling in
17686         instrument_prolog; Add memory_barrier instruction.
17687
17688 2005-12-26  Zoltan Varga  <vargaz@gmail.com>
17689
17690         * exceptions-x86.c mini-x86.h: Fix solaris/x86 exception handling.
17691
17692 2005-12-23  Zoltan Varga  <vargaz@gmail.com>
17693
17694         * tramp-ia64.c (mono_arch_get_unbox_trampoline): Flush icache.
17695
17696         * aliasing.c inssel.brg: Fix warnings.
17697
17698         * inssel-ia64.brg (OP_MEMSET): Fix an optimization which previously
17699         could skip initialization of some parts of memory.
17700
17701         * mini.c mini-ia64.c: Fix warnings.
17702
17703         * inssel-sparc.brg: Add an implementation of lneg which actually works.
17704
17705 2005-12-22  Zoltan Varga  <vargaz@gmail.com>
17706
17707         * aliasing.c (mono_build_aliasing_information): Add a workaround for
17708         a crash seen on sparc.
17709
17710         * mini-sparc.c: Add implementation of Thread.MemoryBarrier.
17711         
17712         * cpu-sparc.md: Add memory_barrier opcode. Remove unused opcodes.
17713
17714 2005-12-21 Neale Ferguson <neale@sinenomine.net>
17715
17716         * mini-ops.h: Add s390_backchain instruction
17717
17718         * inssel-s390.brg: Use backchaining instruction for LOADARG/STKARG operations.
17719
17720         * cpu-s390.md: Add s390_backchain instruction
17721
17722         * mini-s390.c: Significant ABI changes
17723
17724         * mini-s390.h: Cater for zero length structures
17725
17726 2005-12-20 Neale Ferguson <neale@sinenomine.net>
17727
17728         * mini-s390.c: ABI fixes
17729
17730         * inssel-s390.brg: Remove debug statements
17731
17732         * cpu-s390.md: Fix length of ATOMIC_xx operations
17733
17734 2005-12-19  Zoltan Varga  <vargaz@gmail.com>
17735
17736         * basic-float.cs: Add float<->long conversion tests.
17737
17738 2005-12-16 Neale Ferguson <neale@sinenomine.net>
17739
17740         * mini-s390.c: Fix LOCALLOC processing.
17741
17742         * tramp-s390.c (s390_magic_trampoline): Fix base calculation.
17743
17744 2005-12-15  Zoltan Varga  <vargaz@gmail.com>
17745
17746         * iltests.il: Add tests for some opcodes not covered by the other
17747         tests.
17748
17749 2005-12-15 Neale Ferguson <neale@sinenomine.net>
17750
17751         * mini-s390.c: Fix ADDCC/SBB bug revealed by test_0_ulong_regress; Correct 
17752         register loading for Tail processing; Correct trace output.
17753
17754         * inssel-s390.brg: Reimplement LSUB_OVF due to s390 implementation of signed math.
17755
17756         * cpu-s390.md: Correct size of jmp instruction. 
17757
17758 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17759
17760         * mini-s390.c (mono_arch_emit_prolog): Remove some debugging bits.
17761
17762 2005-12-13 Neale Ferguson <neale@sinenomine.net>
17763
17764         * inssel-s390.brg tramp-s390.c cpu-s390.md mini-s390.c mini-s390.h:
17765           Bring s390 up to current level.
17766
17767 2005-12-12  Zltan Varga  <vargaz@gmail.com>
17768
17769         * generics.2.cs: Disable the newly added tests as they do not work yet.
17770         
17771         * generics.2.cs: Add valuetype tests.
17772
17773 2005-12-09  Zoltan Varga  <vargaz@gmail.com>
17774
17775         * basic-long.cs: Add i4->u8 test.
17776
17777         * objects.cs: Add tests for JIT intrinsic.
17778
17779         * mini.c (mini_get_inst_for_method): Resurrect the array Rank/Length
17780         optimizations lost by a mistake.
17781
17782 2005-12-07  Zoltan Varga  <vargaz@gmail.com>
17783
17784         * basic-long.cs: Remove a test moved to objects.cs.
17785
17786         * arrays.cs: Add more array tests.
17787
17788 2005-12-06  Zoltan Varga  <vargaz@gmail.com>
17789
17790         * arrays.cs: Add new tests for multi-dimensional arrays.
17791
17792 2005-12-06  Raja R Harinath  <rharinath@novell.com>
17793
17794         * Makefile.am (test_sources2): Add generics.2.cs.
17795         (EXTRA_DIST): Add test_sources2.
17796
17797 2005-12-05  Ben Maurer  <bmaurer@ximian.com>
17798
17799         Support for boxing and unboxing nullable types as well as the
17800         isinst operation on nullables, per the CLI ammendment.
17801
17802         * inssel.brg (CEE_ISINST): Special case for nullable
17803
17804         * mini.c (handle_unbox_nullable): new method
17805         (handle_box): Special case for nullable types
17806         (mono_method_to_ir): Call handle_unbox_nullable in correct
17807         places.
17808
17809         * generics.2.cs: New test suite
17810
17811         * Makefile.am: Support for regression tests with generics.
17812
17813 2005-12-03  Zoltan Varga  <vargaz@gmail.com>
17814
17815         * mini-amd64.c (emit_load_volatile_arguments): Add loading of arguments
17816         allocated to registers. Fixes #76800.
17817
17818 Thu Dec 1 12:59:40 EST 2005 Paolo Molaro <lupus@ximian.com>
17819
17820         * mini-ppc.c, inssel-ppc.brg: fix ABI issue (pinvoke3.cs).
17821
17822 2005-11-30  Zoltan Varga  <vargaz@gmail.com>
17823
17824         * exceptions.cs: Disable test_0_long_cast () test, since it fails on a lot 
17825         of platforms.
17826
17827 2005-11-29  Zoltan Varga  <vargaz@gmail.com>
17828
17829         * objects.cs basic-calls.cs: Move a test depending on valuetypes to
17830         objects.cs.
17831
17832         * inssel-long32.brg (CEE_CONV_I8): Remove unused labels.
17833         
17834         * inssel-long32.brg (CEE_CONV_I8): Convert this to a branchless version.
17835 Tue Nov 29 05:41:34 EST 2005 Paolo Molaro <lupus@ximian.com>
17836
17837         * mini-ppc.c, cpu-g4.md: ensure a fp register is converted to
17838         single precision before storing to a single precision location.
17839
17840 2005-11-28  Raja R Harinath  <rharinath@novell.com>
17841
17842         * Makefile.am (ILASM): Use profile-dependent location of ilasm.
17843
17844 2005-11-27  Zoltan Varga  <vargaz@gmail.com>
17845
17846         * basic-long.cs basic-calls.cs objects.cs: Move some tests to the
17847         correct files.
17848
17849         * basic.cs: Remove test_0_byte_compares test which was moved to
17850         objects.cs a long time ago.
17851
17852 2005-11-22  Massimiliano Mantione  <massi@ximian.com>
17853
17854         * aliasing.c: Fixed aliasing issue on 64 bit archs.
17855
17856 2005-11-20  Zoltan Varga  <vargaz@gmail.com>
17857
17858         * mini-ia64.c exceptions-ia64.c: Simplify the way filters/finally
17859         handlers are called.
17860
17861         * mini-ia64.c (mono_arch_emit_exceptions): Optimize size of exception
17862         throwing code.
17863
17864          * mini-ia64.c: Add support for the throw->branch exception 
17865         optimization.   
17866
17867         * driver.c (DEFAULT_OPTIMIZATIONS): Add MONO_OPT_EXCEPTION.
17868
17869 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17870
17871         * mini.c: Enabled "fastpath" deadce :-)
17872         
17873 2005-11-18  Massimiliano Mantione  <massi@ximian.com>
17874
17875         * mini.c: Added "fastpath" deadce (deadce without SSA), and a simple
17876         alias analysis pass to support it.
17877         * mini.h: Likewise.
17878         * ssa.c: Likewise.
17879         * liveness.c: Likewise (liveness computation can use aliasing
17880         information to be more accurate).
17881         * driver.c: Added an "ssa" option go tell the JIT to use SSA, and
17882         moreover made so that "--compile-all" uses the given optimization
17883         flags and not the default ones.
17884         * aliasing.c: Alias analysis (new file).
17885         * aliasing.h: Likewise.
17886         * Makefile.am: added "aliasing.c" and "aliasing.h".
17887         
17888 2005-11-17  Zoltan Varga  <vargaz@gmail.com>
17889
17890         * mini-ops.h: Add missing OP_I opcodes so it is in synch with the
17891         OP_L opcodes.
17892
17893 2005-11-13  Zoltan Varga  <vargaz@gmail.com>
17894
17895         * mini-exceptions.c (mono_handle_exception_internal): Remove the 
17896         fp >= end_of_stack exit condition, as it is not needed, and it might
17897         become true for fp eliminated frames.
17898
17899 2005-11-11  Zoltan Varga  <vargaz@gmail.com>
17900
17901         * mini-x86.c (mono_arch_emit_epilog): Use G_STRUCT_OFFSET instead of hard
17902         coded offsets.
17903
17904 Tue Nov 8 11:28:20 GMT 2005 Paolo Molaro <lupus@ximian.com>
17905
17906         * mini-arm.c: fixed alignment of doubles/longs to match
17907         the C ABI (bug #76635).
17908
17909 Mon Nov 7 16:13:21 CET 2005 Paolo Molaro <lupus@ximian.com>
17910
17911         * aot.c: fix compilation with --enable-minimal=aot.
17912
17913 Fri Nov 4 12:34:15 GMT 2005 Paolo Molaro <lupus@ximian.com>
17914
17915         * mini-arm.c: fixed compatibility with the new
17916         floating point emulator package for compares.
17917
17918 2005-11-03  Atsushi Enomoto  <atsushi@ximian.com?
17919
17920         * mini.c : reverted sig->pinvoke changes (r51396-51397).
17921
17922 2005-11-01  Zoltan Varga  <vargaz@freemail.hu>
17923
17924         * mini-exceptions.c (print_stack_frame): Output to stderr.
17925         (mono_handle_native_sigsegv): Ditto.
17926
17927 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17928
17929         * mini-amd64.c (mono_arch_output_basic_block): Remove unused
17930         OP_LCONV_TO_OVF_I implementation.
17931
17932         * mini-amd64.c: Add support for the throw->branch exception 
17933         optimization.
17934
17935         * branch-opts.c (mono_branch_optimize_exception_target): Allow the case
17936         when the catch clause catches a more general exception, i.e. Object.
17937
17938 2005-10-30  Zoltan Varga  <vargaz@gmail.com>
17939
17940         * cpu-ia64.md: Remove unused opcodes.
17941
17942         * mini.c (GET_CONTEXT): Simplify this somewhat by removing arch
17943         specific defines for architectures defining USE_SIGACTION.
17944
17945         * mini-ia64.c: Fix some warnings.
17946
17947         * exceptions-ia64.c (mono_arch_ip_from_context): Fix this, the previous
17948         version seemed to skip a frame.
17949
17950 2005-10-30  Zoltan Varga  <vargaz@freemail.hu>
17951
17952         * mini.c: Clean up the usage of sig->pinvoke flag. Now
17953         only calls which are made to native code use this flag.
17954
17955 2005-10-29  Zoltan Varga  <vargaz@freemail.hu>
17956
17957         * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for
17958         varargs methods as well.
17959         
17960         * mini-amd64.c exceptions-amd64.c: Allow fp elimination in methods
17961         which have save_lmf set. Reorganize methods prologs a bit.
17962
17963         * mini-amd64.c (mono_arch_compute_omit_fp): Move the check for the
17964         debugger to the proper place.
17965
17966 2005-10-29  Martin Baulig  <martin@ximian.com>
17967
17968         * mini-amd64.c (debug_omit_fp): Temporarily disable fp elimination
17969         when running inside the debugger until the debugger has support
17970         for it.
17971
17972 2005-10-26  Zoltan Varga  <vargaz@gmail.com>
17973
17974         * mini.h: Fix a warning.
17975
17976 2005-10-24  Miguel de Icaza  <miguel@novell.com>
17977
17978         * mini.c (mono_pmip): Just a wrapper for get_method_from_ip which
17979         we expose publicly, this returns the string.
17980
17981 2005-10-22  Zoltan Varga  <vargaz@freemail.hu>
17982
17983         * exceptions-amd64.c (mono_arch_find_jit_info): Fix some corner cases
17984         with fp elimination.
17985
17986 2005-10-21  Zoltan Varga  <vargaz@gmail.com>
17987
17988         * mini-exceptions.c (mono_handle_native_sigsegv): Try to print a
17989         native stacktrace using the glibc 'backtrace' function if available.
17990
17991 2005-10-20  Zoltan Varga  <vargaz@gmail.com>
17992
17993         * mini.h (MonoDebugOptions): Remove 'abort_on_sigsegv' option.
17994
17995         * mini-exceptions.c (mono_handle_native_sigsegv): New function to 
17996         handle SIGSEGVs received while in native code.
17997
17998         * mini.c (sigsegv_signal_handler): If the SIGSEGV happened in native
17999         code, call mono_handle_native_sigsegv which will abort the runtime
18000         after printing some diagnostics, instead of converting it into a
18001         confusing NullReferenceException.
18002
18003 2005-10-18  Zoltan Varga  <vargaz@gmail.com>
18004
18005         * cpu-pentium.md: Remove unused opcodes.
18006
18007 2005-10-18  Zoltan Varga  <vargaz@freemail.hu>
18008
18009         * mini-amd64.h (MonoLMF): Add rsp field.
18010
18011         * mini-amd64.c exceptions-amd64.c tramp-amd64.c: Save the sp reg into
18012         the lmf too.
18013
18014 2005-10-17  Zoltan Varga  <vargaz@gmail.com>
18015
18016         * mini-codegen.c (get_register_spilling): Fix some warnings.
18017
18018 2005-10-16  Zoltan Varga  <vargaz@freemail.hu>
18019
18020         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Add support for fp
18021         elimination during exception handling. Enable fp elimination by
18022         default.
18023
18024         * mini-amd64.h mini-amd64.c: Add preliminary support for frame pointer
18025         elimination.
18026
18027 2005-10-16  Martin Baulig  <martin@ximian.com>
18028
18029         * mini-exceptions.c
18030         (mono_debugger_run_finally): New public method for the debugger.
18031
18032 2005-10-10  Zoltan Varga  <vargaz@gmail.com>
18033
18034         * debug-mini.c (mono_debug_init_method): Fix warning.
18035
18036         * mini.h branch-opts.c (mono_branch_optimize_exception_target): Make
18037         the 'exname' parameter const to fix some warnings.
18038
18039 2005-10-09  Zoltan Varga  <vargaz@freemail.hu>
18040
18041         * mini-exceptions.c (mono_handle_exception_internal): Fix another bug
18042         introduced by the previous patch.
18043
18044 2005-10-08  Zoltan Varga  <vargaz@gmail.com>
18045
18046         * basic-float.cs: Add test for precision of float arithmetic.
18047
18048         * mini-ia64.c (mono_arch_output_basic_block): Convert to/from doubles
18049         when loading/storing single values from/to memory.
18050
18051         * mini.c (mono_jit_compile_method_with_opt): Create the function
18052         pointers in the correct domain.
18053
18054 2005-10-08  Zoltan Varga  <vargaz@freemail.hu>
18055
18056         * mini-exceptions.c (mono_handle_exception_internal): Fix bug 
18057         introduced by previous patch.
18058         
18059         * mini-exceptions.c (mono_handle_exception_internal): Handle the case
18060         when out_filter_idx is NULL.
18061
18062         * mini-exceptions.c: Don't run filter clauses twice during exception
18063         handling. Fixes #75755.
18064
18065 2005-10-07  Zoltan Varga  <vargaz@gmail.com>
18066
18067         * aot.c: Add support for ldflda wrappers.
18068
18069         * mini.c (mono_method_to_ir): Use ldflda wrappers for CEE_LDFLDA. Fixes
18070         #75902.
18071
18072 Tue Oct 4 20:23:25 CEST 2005 Paolo Molaro <lupus@ximian.com>
18073
18074         * mini.c, mini.h: do not consider exception handlers blocks when
18075         setting up interface variables.
18076
18077 2005-10-04  Zoltan Varga  <vargaz@freemail.hu>
18078
18079         * aot.c (emit_section_change): Fix emitting of sections on win32. Fixes #76322.
18080
18081 2005-10-03  Zoltan Varga  <vargaz@gmail.com>
18082
18083         * liveness.c (mono_analyze_liveness): Revert parts of r51051 since it
18084         causes a regression.
18085
18086         * mini.c (mini_thread_cleanup): Fix reading of freed memory.
18087
18088 2005-10-02  Zoltan Varga  <vargaz@freemail.hu>
18089
18090         * mini.h (OP_PCONST): Move the definition of OP_PCONST into the rest
18091         of the OP_P definitions.
18092
18093         * TODO: Add a proposal for dealing with the CEE/OP mess.
18094
18095         * mini-amd64.c (mono_arch_output_basic_block): Merge mul_imm 
18096         optimizations from the x86 port.
18097
18098         * cpu-amd64.md: Ditto.
18099
18100         * basic.cs basic-long.cs: Add tests.
18101
18102 Fri Sep 30 20:07:20 CEST 2005 Paolo Molaro <lupus@ximian.com>
18103
18104         * Makefile.am, driver.c, mini-x86.c, mini.c, mini.h, branch-opts.c:
18105         Patrik Torstensson's implementation of my exception-handling
18106         optimization idea, when the exception object is not used
18107         (bug #62150).
18108
18109 Fri Sep 30 19:10:29 CEST 2005 Paolo Molaro <lupus@ximian.com>
18110
18111         * mini-x86.c, cpu-pentium.md: Patrik Torstensson's port
18112         of the mul_imm optimizations from the old jit.
18113
18114 Fri Sep 30 11:37:51 EDT 2005 Paolo Molaro <lupus@ximian.com>
18115
18116         * mini.c, liveness.c: patch by Patrik Torstensson and
18117         Zoltan Varga to improve performance in methods with
18118         exception clauses.
18119
18120 2005-09-30  Zoltan Varga  <vargaz@gmail.com>
18121
18122         * driver.c: Remove 'Globalization' entry from --version.
18123
18124 2005-09-28  Zoltan Varga  <vargaz@gmail.com>
18125
18126         * mini.c (mono_jit_compile_method_inner): Do not load AOT code when
18127         there is a profiler interested in JIT events.
18128
18129         * aot.c: Load profile files produced by the AOT profiling module, and
18130         reorder methods based on the profiling info. Add a 'method_order' table
18131         to the AOT file to make mono_aot_find_jit_info work with the reordered
18132         methods.
18133
18134         * mini.h: Bump AOT file version info.
18135
18136 Wed Sep 28 17:12:48 CEST 2005 Paolo Molaro <lupus@ximian.com>
18137
18138         * mini-arm.h: work around what looks like a gcc bug when optimizations
18139         are enabled.
18140
18141 2005-09-28  Raja R Harinath  <rharinath@novell.com>
18142
18143         * Makefile.am (AM_CFLAGS): Don't use += to append inside
18144         conditionals.  Use ...
18145         (PLATFORM_CFLAGS, ARCH_CFLAGS): ... these.
18146
18147 2005-09-27  Zoltan Varga  <vargaz@freemail.hu>
18148
18149         * mini-amd64.c (mono_arch_call_opcode): Use mono_class_value_size ()
18150         to determine the amount of memory to copy when passing valuetypes.
18151
18152         * inssel-amd64.brg: Remove PUSH(LDIND4) rules since they convert an
18153         4 byte load into a 8 byte load. Fix aligning of size in OP_OUTARG_VT.
18154
18155 2005-09-27  Zoltan Varga  <vargaz@gmail.com>
18156
18157         * mini.h mini.c aot.c: Add infrastructure to collect pagefault 
18158         information about aot.
18159
18160 2005-09-27  Ben Maurer  <bmaurer@ximian.com>
18161
18162         * *.c: Replace the use of {Enter,Leave}CriticalSection with
18163         macros. This will allow a deadlock debugger to easily be plugged
18164         in.
18165
18166 Tue Sep 27 09:32:11 EDT 2005 Paolo Molaro <lupus@ximian.com>
18167
18168         * mini-ppc.c, cpu-g4.md: added memory barrier instruction.
18169
18170 2005-09-27  Raja R Harinath  <rharinath@novell.com>
18171
18172         * Makefile.am (AM_CFLAGS): Rename from INCLUDES.
18173         (AM_CFLAGS) [PLATFORM_WIN32): Append to it, don't set it.
18174         (AM_CFLAGS) [ARM]: Add arch/arm directory from the build tree.
18175         ($(arch_built)) [CROSS_COMPILING]: Error out.
18176
18177 2005-09-26  Zoltan Varga  <vargaz@gmail.com>
18178
18179         * aot.c: Add support for the no_special_static flag for classes.
18180
18181 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18182
18183         * Reapply reverted patches.
18184
18185         * *: Revert r50174 as well.
18186
18187         * mini-amd64.c cpu-amd64.md inssel-amd64.brg: Revert r50170 as well.
18188
18189 2005-09-24  Zoltan Varga  <vargaz@freemail.hu>
18190
18191         * mini-amd64.c: Revert r50342 to see if this fixed buildbot.
18192
18193 2005-09-23  Miguel de Icaza  <miguel@novell.com>
18194
18195         * mini.c (SIG_HANDLER_SIGNATURE): Only dereference info if it is
18196         part of the SIG_HANDLER_SIGNATURE.  
18197
18198 2005-09-23  Zoltan Varga  <vargaz@gmail.com>
18199
18200         * mini.h mini.c: Add a new MONO_DEBUG option to collect metadata pagefault
18201         statistics.
18202
18203         * mini-x86.c (mono_arch_call_opcode): Fix vararg calling convention 
18204         introduced by previous patch.
18205
18206 2005-09-21  Zoltan Varga  <vargaz@gmail.com>
18207
18208         * tramp-x86.c (mono_arch_create_trampoline_code): Restore caller
18209         saved registers too.
18210
18211         * mini-x86.c (mono_arch_allocate_vars): Rewrite this so it works based 
18212         upon the information returned by get_call_info ().
18213         
18214         * mini-x86.c (add_float): Fix stack size calculation.
18215         (mono_arch_call_opcode): Rewrite this so it works based up the
18216         information returned by get_call_info ().
18217         (mono_arch_get_this_vret_args): Ditto.
18218
18219 2005-09-21  Zoltan Varga  <vargaz@freemail.hu>
18220
18221         * mini-amd64.c (mono_arch_emit_this_vret_args): Use the information
18222         in cinfo to determine the registers which need to be used.
18223
18224 2005-09-20  Miguel de Icaza  <miguel@novell.com>
18225
18226         * driver.c (mono_main): Add --server and --desktop flags. 
18227
18228 2005-09-16  Zoltan Varga  <vargaz@gmail.com>
18229
18230         * mini-ia64.h: Make register masks 64 bit. Don't treat argument
18231         registers as global registers.
18232
18233         * inssel-ia64.brg (stmt): Remove OP_OUTARG_REG () rules which are no 
18234         longer needed with the new register allocator.
18235
18236         * mini-ia64.c: Use OP_MOVE instead of OP_SETREG for reg-reg moves.
18237
18238         * cpu-ia64.md: Remove unused opcodes.
18239         
18240         * regalloc.c mini-codegen.c: Make register masks 64 bit on ia64.
18241         
18242 2005-09-16  Zoltan Varga  <vargaz@freemail.hu>
18243
18244         * cpu-amd64.md: Remove unused opcodes.
18245
18246         * inssel-amd64.brg: Remove OP_OUTARG_REG () rules which are no longer
18247         needed with the new register allocator.
18248
18249         * inssel-amd64.brg mini-amd64.c: Use OP_MOVE instead of OP_SETREG for
18250         reg-reg moves.
18251
18252 2005-09-16  Raja R Harinath  <rharinath@novell.com>
18253
18254         * Makefile.am (check-local): Don't invoke semdel-wrapper.
18255
18256 2005-09-16  Martin Baulig  <martin@ximian.com>
18257
18258         * exceptions-amd64.c
18259         (throw_exception): Don't call mono_debugger_throw_exception() if
18260         we're a rethrow - see the FIXME in the code.
18261
18262 2005-09-15  Geoff Norton  <gnorton@customerdna.com>
18263
18264         * mini.c (mono_init_exceptions): This only works on some architectures.
18265         
18266 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18267
18268         * mini.c (mono_method_to_ir): Add OP_LMUL imm -> OP_LMUL_IMM conversion
18269         on ia64.
18270
18271         * inssel-long.brg mini-ia64.c: Add OP_LMUL_IMM rules.
18272
18273         * mini-ia64.h mini-ia64.c: Remove the altstack support code which is
18274         now in mini-exceptions.c.
18275
18276 2005-09-15  Zoltan Varga  <vargaz@freemail.hu>
18277
18278         * mini-amd64.h mini-am64.c: Remove the altstack support code which is
18279         now in mini-exceptions.c.
18280
18281 2005-09-15  Zoltan Varga  <vargaz@gmail.com>
18282
18283         * exceptions-x86.c: Applied patch from Patrik Torstensson 
18284         <patrik.torstensson@gmail.com>. Add stack overflow handling support for win32.
18285
18286         * mini-exceptions.c mini-x86.c mini.c: Move the altstack setup/teardown
18287         code into mini-exceptions.c. Add some assertions to it.
18288
18289 2005-09-12  Zoltan Varga  <vargaz@gmail.com>
18290
18291         * aot.c (emit_section_change): Applied patch from "The Software Team" 
18292         (<software@solmersa.com>). Fix as errors on windows.
18293
18294 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18295
18296         * tramp-amd64.c (mono_arch_create_trampoline_code): Fix saving of
18297         method info into the LMF.
18298
18299 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18300         
18301         * mini-ia64.c: Add proper unwind info for method epilogs.
18302
18303         * exceptions-ia64.c: Add some code to help debugging.
18304         
18305         * mini-ia64.c mini-ia64.h: Add sigaltstack support.
18306
18307         * mini-exceptions.c: Fix warning.
18308
18309 2005-09-11  Zoltan Varga  <vargaz@freemail.hu>
18310
18311         * mini.c: Really fix build.
18312
18313         * mini-x86.c mini-amd64.c: Fix build.
18314
18315 2005-09-11  Zoltan Varga  <vargaz@gmail.com>
18316
18317         * mini-ia64.c inssel-ia64.brg: Add InterlockedExchange instrinsics.
18318
18319         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Implement
18320         some Interlocked methods as intrinsics.
18321
18322         * mini.c (mini_get_inst_for_method): Call arch_get_inst_for_method
18323         for Thread methods as well.
18324
18325         * mini-ops.h: Add OP_MEMORY_BARRIER opcode.
18326
18327         * inssel.brg: Add rule for OP_MEMORY_BARRIER.
18328
18329         * mini-ia64.c mini-x86.c mini-amd64.c 
18330         cpu-ia64.md cpu-pentium.md cpu-amd64.md: Add implementation of 
18331         OP_MEMORY_BARRIER.
18332         
18333         * mini.c (mono_init_exceptions): Fix build breakage.
18334
18335 2005-09-10  Zoltan Varga  <vargaz@gmail.com>
18336
18337         * mini-ia64.c exceptions-ia64.c tramp-ia64.c: Remove 'manual' emitting
18338         of instructions. Use the new ia64_unw_op macros for emitting unwind
18339         info.
18340
18341         * mini.c (mono_init_exceptions): Initialize exception handling
18342         related trampolines at startup.
18343
18344 Fri Sep 9 19:30:37 BST 2005 Paolo Molaro <lupus@ximian.com>
18345
18346         * cpu-arm.md, mini-arm.c: fix for dynamic code (Gtk# apps).
18347
18348 2005-09-09  Zoltan Varga  <vargaz@gmail.com>
18349
18350         * mini.c: Handle type loading errors gracefully during compilation and
18351         throw the appropriate exception.
18352
18353 Fri Sep 9 09:49:14 CEST 2005 Paolo Molaro <lupus@ximian.com>
18354
18355         * ldscript.mono, Makefile.am: use anonymous versions in the ldscript
18356         for the mono binary.
18357
18358 2005-09-09  Martin Baulig  <martin@ximian.com>
18359
18360         * mini.c (mono_method_to_ir): Comment out the G_BREAKPOINT()'s for
18361         the release.
18362
18363 Thu Sep 8 14:53:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18364
18365         * mini-arm.h: use emulation for conv.r.un for the release.
18366
18367 Thu Sep 8 11:28:45 BST 2005 Paolo Molaro <lupus@ximian.com>
18368
18369         * mini-arm.c, objects.cs: more fixes and tests for them.
18370
18371 Wed Sep 7 17:14:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18372
18373         * mini-arm.c: align structures to at least 4 bytes to be able
18374         to keep our current optimized memcpy.
18375
18376 Tue Sep 6 22:51:08 BST 2005 Paolo Molaro <lupus@ximian.com>
18377
18378         * mini-arm.c, cpu-arm.md, inssel-arm.brg: bugfixes.
18379
18380 2005-09-05 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18381
18382         * mini.c: ignore SIGPIPE.
18383
18384 2005-09-04  Zoltan Varga  <vargaz@gmail.com>
18385
18386         * mini-ia64.c (mono_arch_lowering_pass): Convert 'and_imm 255' to zext1.
18387
18388         * mini-ia64.h mini-ia64.c: Add some minor optimizations.
18389
18390 2005-09-02  Zoltan Varga  <vargaz@gmail.com>
18391
18392         * mini.h: Add prototype for mono_allocate_stack_slots_full.
18393
18394 Thu Sep 1 21:05:26 BST 2005 Paolo Molaro <lupus@ximian.com>
18395
18396         * exceptions-arm.c, mini.c, mini-arm.c, mini-arm.h:
18397         exception handling support.
18398         * mini-arm.c, mini-arm.h: bigendian fixes (partially from a
18399         patch by Brian Koropoff <briank@marakicorp.com>).
18400
18401 Thu Sep 1 10:22:44 EDT 2005 Paolo Molaro <lupus@ximian.com>
18402
18403         * mini.c: revert another 'optimization' which breaks when
18404         items on the eval stack need to be saved at a basic block end
18405         (bug #75940).
18406
18407 Wed Aug 31 17:29:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
18408
18409         * jit-icalls.c: for arrays, ensure we always provide
18410         lower bounds.
18411
18412 2005-08-30  Zoltan Varga  <vargaz@gmail.com>
18413
18414         * mini.c (mono_allocate_stack_slots_full): Fix ia64 build.
18415         
18416         * mini.c (mini_get_inst_for_method): Special case Object:.ctor as well.
18417
18418 2005-08-29  Zoltan Varga  <vargaz@gmail.com>
18419
18420         * mini-ia64.h mini-ia64.c: Implement frame pointer elimination. Keep
18421         arguments in their original register.
18422
18423 2005-08-28  Zoltan Varga  <vargaz@gmail.com>
18424
18425         * mini-ops.h cpu-ia64.md inssel-ia64.brg mini-ia64.c: Optimize
18426         memset/memcpy.
18427
18428         * mini.c (mono_method_to_ir): Disable the MUL->MUL_IMM optimization
18429         when ssapre is enabled.
18430
18431         * inssel-long.brg: Fix bug in previous patch.
18432
18433         * mini-ia64.c mini-ia64.h mini.c inssel-long.brg: Optimize 
18434         multiplication by a constant.
18435
18436 2005-08-27  Zoltan Varga  <vargaz@gmail.com>
18437
18438         * mini-ia64.c (mono_arch_setup_jit_tls_data): Add support for intel
18439         icc.
18440
18441         * tramp-ia64.c (mono_arch_create_trampoline_code): Use st8.spill for
18442         saving registers.
18443
18444 Fri Aug 26 11:09:28 BST 2005 Paolo Molaro <lupus@ximian.com>
18445
18446         * inssel-arm.brg: apply changes tested by Brian Koropoff
18447         <briank@marakicorp.com>.
18448
18449 2005-08-25  Zoltan Varga  <vargaz@gmail.com>
18450
18451         * mini-x86.c (mono_arch_emit_prolog): Fix calling of mono_jit_thread_attach () under windows.
18452         
18453 2005-08-24  Zoltan Varga  <vargaz@gmail.com>
18454
18455         * mini-codegen.c (mono_local_regalloc): Avoid allocating dreg and sreg1/2
18456         to the same register if dreg is just a base register.
18457         (print_ins): Improve printing of membase opcodes.
18458
18459         * inssel-x86.brg: Add optimized ldind(reg) rules.
18460
18461         * mini-x86.c cpu-pentium.md: Changes required to support the new rules.
18462
18463 Wed Aug 24 19:39:36 CEST 2005 Paolo Molaro <lupus@ximian.com>
18464
18465         * mini.c: when running under valgrind, set the stack bottom for
18466         the GC at the actual approximate stack for the app (fixes running
18467         mono with valgrind).
18468
18469 Tue Aug 23 21:38:50 CEST 2005 Paolo Molaro <lupus@ximian.com>
18470
18471         * mini.c: do no break at the first valuetype to init found
18472         (fixes bug #75791).
18473
18474 Tue Aug 23 16:53:21 BST 2005 Paolo Molaro <lupus@ximian.com>
18475
18476         * cpu-arm.md, mini-arm.c: more fixes and LMF support.
18477
18478 Tue Aug 23 15:11:44 CEST 2005 Paolo Molaro <lupus@ximian.com>
18479
18480         * cpu-g4.md: fixed instruction length exposed by the nemerle compiler.
18481
18482 2005-08-23  Zoltan Varga  <vargaz@freemail.hu>
18483
18484         * inssel-amd64.brg inssel-x86.brg: Fix the fcall rules.
18485
18486 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18487
18488         * inssel-x86.brg: Fix assert in patch_delegate_trampoline.
18489
18490         * tramp-x86.c (mono_arch_patch_delegate_trampoline): Add some debug
18491         code.
18492
18493         * tramp-amd64.c (mono_arch_patch_delegate_trampoline): Add some debug
18494         code.
18495
18496         * mini.c (optimize_branches): Don't quit after 1000 iterations on large
18497         methods.
18498
18499 Mon Aug 22 19:16:29 BST 2005 Paolo Molaro <lupus@ximian.com>
18500
18501         * tramp-arm.c: allocate less memory for the trampoline and fix typo.
18502
18503 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18504
18505         * mini.c (mono_method_to_ir): Remove instructions inserted after a branch
18506         in the tail recursion optimization.
18507
18508         * mini.h helpers.c (mono_disassemble_code): Emit starts of basic blocks as 
18509         debug info into the assembly file.
18510
18511         * iltests.il: Add test for filter regions.
18512
18513         * mini.c (mono_method_to_ir): Fix handling of nested FILTER clauses. Fix
18514         initial stack of filter regions. Fixes #75755.
18515
18516 Mon Aug 22 17:49:16 BST 2005 Paolo Molaro <lupus@ximian.com>
18517
18518         * mini-arm.c, cpu-arm.c: fixes and support for methods with bigger
18519         stack requirements.
18520
18521 2005-08-22  Zoltan Varga  <vargaz@freemail.hu>
18522
18523         * mini.c (mono_create_delegate_trampoline): Fix memory leak. Put back
18524         the check for an already compiled method on non-ia64 platforms.
18525         (mono_create_jump_trampoline): Store the MonoJitInfo structure into the
18526         proper domain.
18527
18528         * mini-x86.h tramp-x86.c: Add support for delegate trampolines.
18529
18530         * inssel-x86.brg: Add some optimized call rules.
18531
18532 2005-08-21  Zoltan Varga  <vargaz@freemail.hu>
18533
18534         * mini.c (mono_create_delegate_trampoline): Do not return an already compiled
18535         method here.
18536
18537         * mini.h mini-trampolines.c: Pass the trampoline argument to 
18538         mono_arch_patch_delegate_trampoline.
18539
18540         * mini-ia64.h mini-ia64.c tramp-ia64.c: Add support for delegate trampolines.
18541
18542         * mini-trampolines.c: Fix build.
18543
18544         * mini-amd64.h: Add delegate trampolines.
18545
18546         * mini.h mini.c mini-trampolines.c tramp-amd64.c: Add delegate trampolines.
18547
18548         * inssel-amd64.brg: Add optimized call rules.
18549         
18550         * mini-ia64.c tramp-ia64.c: Improve instruction scheduling.
18551
18552         * inssel-ia64.brg: Add optimized ldind(reg) rules.
18553
18554 2005-08-20  Zoltan Varga  <vargaz@freemail.hu>
18555
18556         * mini.c (mono_create_class_init_trampoline): Fix bug caused by last
18557         change.
18558
18559         * mini-ia64.c: Remove LMF fixmes.
18560
18561         * mini-ia64.h: Remove most fields from LMF.
18562
18563         * inssel-ia64.brg (stmt): Fix unaligned access errors.
18564
18565         * mini-trampolines.c: Add support for IA64 function descriptors.
18566
18567         * mini.h mini.c jit-icalls.c exceptions-ia64.cdriver.c: Add support
18568         for IA64 function descriptors.
18569
18570 Sat Aug 20 16:51:44 BST 2005 Paolo Molaro <lupus@ximian.com>
18571
18572         * tramp-arm.c: patch the vtable for virtual calls. Added
18573         support code to register/unregister the LMF.
18574         * mini-arm.c, mini-arm.h: warning fixes, fixes, speedups,
18575         more LMF work.
18576
18577 2005-08-19  Dick Porter  <dick@ximian.com>
18578
18579         * mini.c: Use a gsize to store the thread ID, so it can hold a 64
18580         bit value if needed.
18581
18582 2005-08-19  Zoltan Varga  <vargaz@freemail.hu>
18583
18584         * mini.c (mini_get_method): Move handling of wrapper data here.
18585
18586         * mini.c (mono_method_to_ir): Add support for dynamic methods.
18587
18588         * mini.c (mono_method_to_ir): Convert nonvirtual calls to abstract methods into
18589         virtual.
18590
18591         * mini.c (mono_method_to_ir): Emit IR for CEE_NOP as well, so 
18592         bblock->code does not remain empty.
18593
18594 2005-08-17  Zoltan Varga  <vargaz@freemail.hu>
18595
18596         * arrays.cs: Add regression test for #75832.
18597
18598         * inssel-amd64.brg cpu-amd64.md mini-amd64.c: Fix LDELEMA optimization
18599         rules. Fixes #75832.
18600
18601         * mini-ia64.c tramp-ia64.c exceptions-ia64.c: Implement improved
18602         instruction scheduling.
18603
18604 2005-08-12  Zoltan Varga  <vargaz@freemail.hu>
18605
18606         * mini-exceptions.c (ves_icall_get_frame_info): Fix IA64 build.
18607
18608 2005-08-11  Zoltan Varga  <vargaz@freemail.hu>
18609
18610         * mini-exceptions.c mini-x86.h: Move VC stuff into macros in mini-x86.h.
18611
18612         * mini-codegen.c: Fix VC build.
18613
18614         * cpu-pentium.md: Increase length of atomic_exhange_i4.
18615
18616 2005-08-09 Gonzalo Paniagua Javier <gonzalo@ximian.com>
18617
18618         * mini.h: fix signature for mono_register_opcode_emulation.
18619
18620 2005-08-09  Zoltan Varga  <vargaz@freemail.hu>
18621
18622         * mini.c: Get rid of most of the helper_sig_... constants using
18623         mono_create_icall_signature ().
18624
18625 2005-08-08  Zoltan Varga  <vargaz@freemail.hu>
18626
18627         * jit-icalls.c (helper_ldstr): New helper function.
18628
18629         * mini.c (get_basic_blocks): Set out_of_line for bblocks containing a throw.
18630
18631         * mini.c (mono_method_to_ir): If an LDSTR instruction is in a bblock with a
18632         throw, load the string using a helper call instead of creating a string object.
18633
18634         * aot.c: Update after LDSTR changes.
18635
18636         * mini.h: Bump AOT file version.
18637         
18638         * aot.c: Save class size info into the AOT file. Print more statistics during
18639         compilation.
18640
18641         * mini.h: Bump AOT file version.
18642
18643         * tramp-amd64.c (mono_arch_nullify_class_init_trampoline): Fix
18644         ordering of disasm cases. Fixes #74957.
18645
18646 Thu Aug 4 19:47:24 BST 2005 Paolo Molaro <lupus@ximian.com>
18647
18648         * mini-ops.h, mini-arch.h, inssel.brg, mini.c, mini.h,
18649         jit-icalls.c, mini-codegen.c, Makefile.am: changes in
18650         the generic code needed for the ARM port.
18651
18652 Thu Aug 4 19:42:54 BST 2005 Paolo Molaro <lupus@ximian.com>
18653
18654         * exceptions-arm.c, tramp-arm.c, mini-arm.c, mini-arm.h, cpu-arm.md,
18655         inssel-arm.brg: more ARM features and fixes.
18656
18657 Mon Aug 1 18:37:38 BST 2005 Paolo Molaro <lupus@ximian.com>
18658
18659         * tramp-arm.c, mini-arm.c, cpu-arm.md, inssel-arm.brg: more
18660         ARM port work in progress.
18661
18662 2005-07-30  Zoltan Varga  <vargaz@freemail.hu>
18663
18664         * mini-ia64.c (mono_arch_call_opcode): Ongoing IA64 work.
18665
18666         * mini-exceptions.c mini-ia64.h: Ongoing IA64 work.
18667
18668         * mini-ia64.c (ia64_emit_bundle): Ongoing IA64 work.
18669
18670         * inssel.brg (mini_emit_memset): Add support for unaligned access.
18671
18672         * *-ia64.*: Ongoing IA64 work.
18673         
18674         * mini-ia64.c exceptions-ia64.c: Ongoing IA64 work.
18675
18676 2005-07-28  Zoltan Varga  <vargaz@freemail.hu>
18677
18678         * TODO: Remove out-of-data todo stuff.
18679
18680         * mini.h mini.c (mono_create_jit_trampoline_from_token): Remove some
18681         dead code.
18682
18683         * aot.c: Save/load MonoCachedClassInfo->has_nested_classes.
18684
18685         * mini.h: Bump corlib version.
18686
18687 2005-07-27  Martin Baulig  <martin@ximian.com>
18688
18689         * mini-codegen.c
18690         (create_copy_ins): Added `const unsigned char *ip' argument; set
18691         `copy->cil_code' from it.
18692
18693 2005-07-27  Martin Baulig  <martin@ximian.com>
18694
18695         * mini-exceptions.c (mono_handle_exception): Don't call
18696         mono_debugger_handle_exception() for filters.
18697
18698 2005-07-27  Zoltan Varga  <vargaz@freemail.hu>
18699
18700         * mini-trampolines.c (mono_aot_trampoline): Handle AppDomain:InvokeInDomain
18701         as well.
18702
18703 2005-07-26  Martin Baulig  <martin@ximian.com>
18704
18705         Committing a patch from Michal Moskal <michal.moskal@gmail.com>.
18706
18707         * mini.c (mono_method_to_ir): In `CEE_CALLI', only use
18708         helper_compile_generic_method() if the method is actually virtual
18709         and non-final.
18710
18711 2005-07-26  Martin Baulig  <martin@ximian.com>
18712
18713         * mini.c
18714         (trampoline_code): Renamed to `mono_trampoline_code' and made it
18715         public; this is now accessed directly by the debugger.
18716         (mono_generic_trampoline_code): Removed.
18717
18718         * debug-mini.c
18719         (mono_debug_init_method): Also add interncalls and wrappers.
18720
18721 2005-07-23  Zoltan Varga  <vargaz@freemail.hu>
18722
18723         * mini-ia64.c mini-ia64.h: Add support for tracing/profiling.
18724
18725 2005-07-22  Zoltan Varga  <vargaz@freemail.hu>
18726
18727         * aot.c (mono_aot_get_method_from_token): Fix a potential crash here.
18728
18729 2005-07-21  Zoltan Varga  <vargaz@freemail.hu>
18730
18731         * aot.c (load_patch_info): Fix handling of stfld_remote wrapper.
18732
18733 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18734
18735         * mini-amd64.c (mono_arch_setup_jit_tls_data): Use the nice way of
18736         getting TLS offsets on AMD64 too.
18737
18738 2005-07-20  Kornel Pal <kornelpal@hotmail.com>
18739
18740         * driver.c: Detach console when executing IMAGE_SUBSYSTEM_WINDOWS_GUI on win32
18741
18742 Wed Jul 20 18:05:19 BST 2005 Paolo Molaro <lupus@ximian.com>
18743
18744         * exceptions-arm.c, mini-arm.c, tramp-arm.c, cpu-arm.md,
18745         inssel-arm.brg, mini-arm.h: ARM port work in progress.
18746
18747 2005-07-20  Zoltan Varga  <vargaz@freemail.hu>
18748
18749         * tramp-amd64.c (mono_arch_create_specific_trampoline): Fix build.
18750
18751         * mini.h mini.c mini-*.h tramp-*.c: Move more cross platform trampoline code
18752         to mini.c.
18753
18754         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Call 
18755         mono_sparc_is_virtual_call ().
18756         
18757         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix warning.
18758
18759         * tramp-sparc.c (mono_arch_create_trampoline_code): Fix order of
18760         trampoline parameters.
18761
18762         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Fix signature.
18763         
18764         * mini-sparc.c (mono_arch_get_vcall_slot_addr): Rename this
18765         to mono_arch_get_vcall_slot_addr.
18766
18767         * Makefile.am tramp-sparc.c: Update the sparc port to use the generic
18768         trampoline code.
18769
18770         * *-sparc.*: Merge the mini-xp-regalloc branch for sparc.
18771
18772 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18773
18774         * mini-ia64.h mini-ia64.c: Finish pinvoke support.
18775
18776 2005-07-19  Martin Baulig  <martin@ximian.com>
18777
18778         * exceptions-amd64.c (throw_exception): Call
18779         mono_debugger_throw_exception() here like we're doing it on i386.
18780
18781 2005-07-19  Zoltan Varga  <vargaz@freemail.hu>
18782
18783         * mini-ia64.c: Add optimized TLS access support.
18784
18785 2005-07-18  Zoltan Varga  <vargaz@freemail.hu>
18786
18787         * mini-exceptions.c: Ongoing IA64 work.
18788
18789         * mini-ia64.c inssel-long.brg: Ongoing IA64 work.
18790
18791         * mini.c: Use the default optimization set when embedding. Fixes
18792         #75194.
18793
18794 2005-07-11  Zoltan Varga  <vargaz@freemail.hu>
18795
18796         * tramp-amd64.c tramp-ia64.c Makefile.am: Move arch independent parts 
18797         of trampolines to a separate file.
18798
18799         * mini-trampolines.c: New file.
18800
18801         * mini.h tramp-x86.c: Move arch independent parts of trampolines to a 
18802         separate file.
18803         
18804         * tramp-x86.c: Reorganize the trampoline code to be similar to the 
18805         amd64/ia64 code.
18806
18807         * mini-codegen.c: Fix cygwin build.
18808
18809 2005-07-10  Zoltan Varga  <vargaz@freemail.hu>
18810
18811         * mini.c: Add some minor changes needed by the IA64 port.
18812
18813         * *-ia64.*: Ongoing IA64 work.
18814
18815 2005-07-09  Zoltan Varga  <vargaz@freemail.hu>
18816
18817         * tramp-amd64.c mini-amd64.c: Update after latest AOT changes. Split 
18818         trampolines into arch-independent and arch-dependent parts.
18819
18820         * mini-amd64.c (mono_arch_lowering_pass): Fix store_membase_imm -> store_membase_reg rule.
18821
18822 2005-07-08  Zoltan Varga  <vargaz@freemail.hu>
18823
18824         * cpu-amd64.md: Merge the xp-regalloc-branch for amd64.
18825
18826         * mini-ops.h mini-amd64.h mini-amd64.c inssel-amd64.brg Makefile.am: Merge
18827         the xp-regalloc-branch for amd64.
18828
18829         * mini-x86.h mini-x86.c cpu-pentium.md Makefile.am: Merge the
18830         xp-regalloc-branch for x86.
18831
18832 2005-07-07  Zoltan Varga  <vargaz@freemail.hu>
18833
18834         * inssel.brg (OP_THROW_OR_NULL): Allways rethrow the abort exception.
18835
18836 2005-07-06  Martin Baulig  <martin@ximian.com>
18837
18838         * mini.c
18839         (mono_jit_compile_method_inner): Call mono_get_inflated_method().
18840         (mono_jit_runtime_invoke): Likewise.
18841
18842 2005-07-05  Zoltan Varga  <vargaz@freemail.hu>
18843
18844         * aot.c (mono_compile_assembly): Allocate the GOT in the .bss segment
18845         on x86 too.
18846         
18847         * aot.c: Add new mono_aot_get_method_from_token () function to load AOT methods
18848         without loading their metadata. Reorganize the file format so exception handling+
18849         debug info is kept separate from normal method info. Create MonoJitInfo 
18850         structures for methods lazily.
18851
18852         * tramp-x86.c (x86_aot_trampoline): Use the new from_token method to avoid
18853         loading metadata.
18854         (x86_class_init_trampoline): Patch AOT class init trampolines too.
18855
18856         * mini.c (mini_init): Install the new mono_aot_find_jit_info hook.
18857
18858         * mini.c (mono_method_to_ir): Reduce the number of class init trampoline calls
18859         in AOT code.
18860
18861         * mini.h: Bump AOT file version.
18862
18863 2005-07-04  Zoltan Varga  <vargaz@freemail.hu>
18864
18865         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18866
18867 2005-07-01  Raja R Harinath  <rharinath@novell.com>
18868
18869         * Makefile.am (check-local): Call semdel-wrapper.
18870
18871 2005-06-29  Zoltan Varga  <vargaz@freemail.hu>
18872
18873         * mini-x86.c: Revert the last change as it seems to break the build..
18874
18875 2005-06-28  Zoltan Varga  <vargaz@freemail.hu>
18876
18877         * mini-x86.c (peephole_pass): Fix the loadi1/loadi2 rules.
18878         
18879         * mini-x86.c (mono_arch_cpu_init): Fix setting of fp precision in the VC build.
18880
18881 2005-06-27  Ben Maurer  <bmaurer@ximian.com>
18882
18883         * mini.c (NEW_AOTCONST): make sure to call mono_get_got_var
18884         outside of the macro, so strange stuff doesn't happen with gcc4
18885         (NEW_AOTCONST_TOKEN): Likewise.
18886
18887 2005-06-28  Martin Baulig  <martin@ximian.com>
18888
18889         * mini.c (mini_class_is_system_array): New static method; use this
18890         instead of `klass->parent == mono_defaults.array_class' everywhere
18891         since this also works for the new generic array class.
18892
18893 2005-06-26  Ben Maurer  <bmaurer@ximian.com>
18894
18895         * inssel.brg: Remove warnings.
18896
18897 2005-06-24  Zoltan Varga  <vargaz@freemail.hu>
18898
18899         * mini-ia64.c: Ongoing IA64 work.
18900
18901         * basic-float.cs: Add float->i1 conversion test.
18902
18903         * iltests.il: Add conv.u4 test.
18904
18905 2005-06-23  Zoltan Varga  <vargaz@freemail.hu>
18906
18907         * inssel-long.brg: Fix bug caused by last change.
18908
18909 2005-06-23  Geoff Norton  <gnorton@customerdna.com>
18910
18911         * mini-x86.h: Add __APPLE__ to the SC_* redefines with the other 
18912         BSDs.  Allows the x86 JIT to work on OSX86
18913
18914 2005-06-22  Zoltan Varga  <vargaz@freemail.hu>
18915
18916         * inssel-long.brg: Use OP_LSHR_UN_IMM instead of OP_SHR_UN_IMM in
18917         u4->i8 conversion.
18918
18919         * mini-ia64.c: Ongoing IA64 work.
18920
18921 2005-06-19  Zoltan Varga  <vargaz@freemail.hu>
18922
18923         * mini-ia64.c: Ongoing IA64 work.
18924
18925         * driver.c: Clean up jit_code_hash as well when using --regression.
18926
18927         * inssel-long.brg: Fix long->i4/u4 conversion rules.
18928
18929         * basic-long.cs: Add tests for long->u4 conversion.
18930
18931 2005-06-18  Ben Maurer  <bmaurer@ximian.com>
18932
18933         * mini.c: Take mono_get_domainvar out of macros. This makes sure
18934         that we do not depend on undefined C behavior: the order stuff
18935         gets evaluated within an expression. Fixes mono when compiled on
18936         GCC 4.
18937
18938 2005-06-18  Zoltan Varga  <vargaz@freemail.hu>
18939
18940         * *-ia64.*: Ongoing IA64 work.
18941
18942         * aot.c: Lower memory usage while loading AOT methods.
18943
18944         * tramp-x86.c: Avoid allocating+freeing MonoJitInfo structures.
18945
18946         * mini.h: Bump AOT file format version.
18947
18948 2005-06-17  Zoltan Varga  <vargaz@freemail.hu>
18949
18950         * mini.c (mono_method_to_ir): Allow STACK_PTR as input to SWITCH.
18951
18952 2005-06-16  Sebastien Pouliot  <sebastien@ximian.com>
18953
18954         * declsec.c: Fixed APTC to check for FullTrust on caller assembly (and
18955         not on callee assembly). Fixed some comments.
18956
18957 2005-06-16  Zoltan Varga  <vargaz@freemail.hu>
18958
18959         * aot.c (mono_compile_assembly): Mark the "methods" symbol as a function so
18960         it gets proper disassembly.
18961         (emit_method_info): Remove some dead code.
18962
18963         * mini.c (mini_method_compile): Allways allocate the GOT var in
18964         mono_method_to_ir for emulating opcodes.
18965
18966 2005-06-13  Zoltan Varga  <vargaz@freemail.hu>
18967
18968         * mini.c (mono_jit_free_method): Remove the method from the JitInfo table
18969         before freeing the code memory. Fixes #74990.
18970
18971         * objects.cs: Add regression test for #74992.
18972
18973         * liveness.c: Extend live ranges of arguments to the beginning of the
18974         method. Fixes #74992.
18975
18976         * exceptions-ia64.c mini-ia64.h: Modify ip during exception handling
18977         so it points into the faulting instruction.
18978
18979 2005-06-12  Zoltan Varga  <vargaz@freemail.hu>
18980
18981         * jit-icalls.c (mono_imul_ovf): Add exception handling.
18982
18983         * *-ia64.*: Ongoing IA64 work.
18984
18985         * mini.c (mini_init): Fix signature of mono_delegate_ctor.
18986
18987 2005-06-11  Zoltan Varga  <vargaz@freemail.hu>
18988
18989         * mini-ia64.h exceptions-ia64.c: Ongoing IA64 work.
18990
18991         * *-ia64.*: Ongoing IA64 work.
18992
18993 2005-06-10  Zoltan Varga  <vargaz@freemail.hu>
18994
18995         * basic-long.cs: Add tests for add/sub.ovf.
18996
18997         * basic.cs: Add tests for sub.ovf.
18998
18999         * *-ia64.*: Ongoing IA64 work.
19000
19001 2005-06-09  Zoltan Varga  <vargaz@freemail.hu>
19002
19003         * *-ia64.*: Ongoing IA64 work.
19004
19005         * basic.cs: Add conv.ovf.i4.un test.
19006
19007 2005-06-09  Massimiliano Mantione  <massi@ximian.com>
19008
19009         * mini.c: (remove_block_if_useless) Fixed bug 75061.
19010         
19011 2005-06-08 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19012
19013         * mini.c: no SIGUSR2 on windows. Remove it for PLATFORM_WIN32.
19014
19015 2005-06-07  Zoltan Varga  <vargaz@freemail.hu>
19016
19017         * *-ia64.*: Ongoing IA64 work.
19018
19019 2005-06-07 Gonzalo Paniagua Javier <gonzalo@ximian.com>
19020
19021         * trace.[ch]:
19022         * mini.c: added the ability to toggle trace on/off using SIGUSR2.
19023
19024 2005-06-04  Zoltan Varga  <vargaz@freemail.hu>
19025
19026         * mini-ia64.c mini-ia64.h: Fix cleanup of memory stack.
19027
19028 2005-06-03  Zoltan Varga  <vargaz@freemail.hu>
19029
19030         * mini-amd64.c (emit_call): Fix yet another bug in the near call optimization.
19031
19032         * mini-amd64.c (amd64_patch): Add an assert to check that the destination
19033         of a call is callable by a near call.
19034
19035 2005-05-31  Zoltan Varga  <vargaz@freemail.hu>
19036
19037         * mini-ia64.c: Ongoing IA64 work.
19038
19039 2005-05-29  Zoltan Varga  <vargaz@freemail.hu>
19040
19041         * genmdesc.c: Make the generated array non-static.
19042
19043         * inssel-long.brg: Fix LSHR_IMM rule.
19044
19045         * *-ia64.*: Ongoing IA64 work.
19046
19047         * *-ia64.*: Ongoing IA64 work.
19048
19049 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19050
19051         * *-ia64.*: Ongoing IA64 work.
19052
19053         * *-ia64.*: Ongoing IA64 work.
19054         
19055         * mini-ia64.c: Ongoing IA64 work.
19056
19057         * *-ia64.* jit-icalls.c mini-codegen.c: Ongoing IA64 work.
19058
19059 2005-05-28  Zoltan Varga  <vargaz@freemail.hu>
19060
19061         * objects.cs basic-calls.cs: Move some tests to objects.cs.
19062         
19063         * objects.cs basic-long.cs: Move some tests to objects.cs.
19064
19065 2005-05-26  Zoltan Varga  <vargaz@freemail.hu>
19066
19067         * *-ia64.*: Ongoing IA64 work.
19068
19069         * iltests.il: Add a new test.
19070
19071         * mini.c (mono_method_to_ir): Initialize valuetypes when created using
19072         newobj. Fixes #75042.
19073
19074 2005-05-22  Zoltan Varga  <vargaz@freemail.hu>
19075
19076         * *-ia64.*: Ongoing IA64 work.
19077         
19078         * *-ia64.*: Ongoing IA64 work.
19079         
19080         * *-ia64.*: Ongoing IA64 work.
19081
19082         * basic.cs objects.cs: Move tests accessing static variables as well.
19083
19084         * basic.cs objects.cs: Move test_0_pin_string to objects.cs.
19085
19086 2005-05-21  Zoltan Varga  <vargaz@freemail.hu>
19087
19088         * mini.c (SIG_HANDLER_SIGNATURE): Fix warning.
19089
19090         * driver.c: Always print failed tests.
19091
19092         * mini-codegen.c: Use cfg->frame_reg instead of a macro for the
19093         frame pointer.
19094
19095         * *ia64*: Ongoing IA64 work.
19096
19097 2005-05-20  Zoltan Varga  <vargaz@freemail.hu>
19098
19099         * basic.cs: Add tests for add.ovf. Fix warnings.
19100
19101 2005-05-18  Miguel de Icaza  <miguel@novell.com>
19102
19103         * driver.c (mono_main): Avoid crash if no argument is passed to
19104         --break;  Do not use g_error, but f_printf.   And fix all other
19105         ocurrences of the same crash.
19106
19107 2005-05-17  Zoltan Varga  <vargaz@freemail.hu>
19108
19109         * mini.h mini.c: Generalize the existing uses of the MONO_DEBUG env variable
19110         and add a new one: aborting when a SIGSEGV is raised while in unmanaged code.
19111         Fixes #74742.
19112
19113 2005-05-14  Zoltan Varga  <vargaz@freemail.hu>
19114
19115         * *-ia64.*: Add beginnings of IA64 backend.
19116
19117         * Makefile.am mini-arch.h mini-codegen.c: Add IA64 support.     
19118
19119 2005-05-13  Zoltan Varga  <vargaz@freemail.hu>
19120
19121         * inssel-long.brg: Add missing ulong->{i1, i2} checked conversions.
19122         Fixes #74925.
19123
19124         * basic-long.cs exceptions.cs: Add new tests. Fix some warnings.
19125
19126         * mini-amd64.c: Fix a warning.
19127
19128 2005-05-10  Zoltan Varga  <vargaz@freemail.hu>
19129
19130         * mini-amd64.c (mono_arch_output_basic_block): Fix stack space leakage
19131         in float_neg. Fixes #74897.
19132
19133         * mini-amd64.c (emit_call): Fix another near call bug.
19134
19135 2005-05-06  Sebastien Pouliot  <sebastien@ximian.com>
19136
19137         * declsec.c: Keep the appdomain information in the structure. Added a 
19138         missing "return FALSE" for Unmanaged if FullTrust is set (or else the
19139         value gets overwritten).
19140         * declsec.h: Set the default MonoArray for the the stack to 6. Added
19141         an MonoAppDomain member to MonoSecurityFrame.
19142         * mini-exceptions.c: Do not use a glist to keep GC allocated objects
19143         used in the stack walk. Now use a MonoArray which grow (double) when
19144         it gets full.
19145
19146 2005-05-05  Lluis Sanchez Gual  <lluis@novell.com>
19147
19148         * mini.c: Re-enabled runtime cleanup, since running threads should
19149         now properly stop when exiting.
19150
19151 2005-05-05  Zoltan Varga  <vargaz@freemail.hu>
19152
19153         * mini-codegen.c: New file contaning the arch-independent local
19154         register allocator. Not used by any architectures yet.
19155
19156         * mini.h linear-scan.c: Merge some changes from the 
19157         mini-xp-local-regalloc branch.
19158
19159 2005-04-28  Zoltan Varga  <vargaz@freemail.hu>
19160
19161         * mini-amd64.c (emit_call): Fix calls to native functions when the
19162         runtime is compiled as a shared library. Fixes #74756.
19163
19164         * mini.c (mono_method_to_ir): Assert if ldsfld and friends are used
19165         on a literal field. Fixes #74751.
19166
19167 2005-04-25  Raja R Harinath  <rharinath@novell.com>
19168
19169         * Makefile.am (RUNTIME): Add MONO_CFG_DIR.
19170
19171 2005-04-23  Zoltan Varga  <vargaz@freemail.hu>
19172
19173         * objects.cs: Add missing null casting test.
19174
19175 2005-04-22  Zoltan Varga  <vargaz@freemail.hu>
19176
19177         * mini-exceptions.c (mono_find_jit_info): Fix native offset calculation
19178         in wrapper methods. Also rename 'address' variable to 'offset'.
19179
19180 2005-04-20  Zoltan Varga  <vargaz@freemail.hu>
19181
19182         * mini.c debug-mini.c aot.c tramp-x86.c driver.c: Fix some gcc 4.0
19183         warnings.
19184         
19185         * Makefile.am (MCS): Use -unsafe instead of --unsafe.
19186
19187         * aot.c: Applied patch from "The Software Team" <software@solmersa.com>. Make AOT compilation
19188         work on windows.
19189
19190 Mon Apr 18 16:20:32 CEST 2005 Paolo Molaro <lupus@ximian.com>
19191
19192         * exceptions-ppc.c: update code to handle stack traces (fixes bug #74452).
19193
19194 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19195
19196         * mini-x86.c (mono_emit_stack_alloc): Initialize the whole allocated area not
19197         just the last bytes.
19198
19199 2005-04-17  Zoltan Varga  <vargaz@freemail.hu>
19200
19201         * aot.c (mono_compile_assembly): Fix warning.
19202
19203         * mini-exceptions.c (ves_icall_get_frame_info): Fix bug introduced
19204         by the _MSC_VER stuff.
19205
19206 2005-04-16  Zoltan Varga  <vargaz@freemail.hu>
19207
19208         * inssel-long.brg: Fix #74588.
19209
19210         * cpu-amd64.md: Fix #74591.
19211
19212         * iltests.il: Add new regression tests.
19213
19214 2005-04-13  Zoltan Varga  <vargaz@freemail.hu>
19215
19216         * trace.c (mono_trace_enter_method): Print enums as an int, not as a
19217         valuetype.
19218
19219 2005-04-11  Zoltan Varga  <vargaz@freemail.hu>
19220
19221         * mini-x86.c (setup_stack): Unconditionally call pthread_attr_init ().
19222
19223         * exceptions-x86.c mini-x86.h mini-x86.c: Applied some freebsd patches 
19224         from Bill Middleton <flashdict@gmail.com>.
19225
19226 2005-04-10  Zoltan Varga  <vargaz@freemail.hu>
19227
19228         * arrays.cs: Add new regression test. Fix warnings.
19229
19230 2005-04-09  Zoltan Varga  <vargaz@freemail.hu>
19231
19232         * mini-amd64.c (mono_arch_output_basic_block): Fix stack alignment
19233         and leakage in CKFINITE.
19234
19235         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Change
19236         this to a null op since it is called on amd64 too.
19237
19238         * exceptions-amd64.c (get_throw_trampoline): Align stack.
19239
19240         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Remove
19241         body since this is not used on amd64.
19242         
19243         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Remove duplicate define.
19244
19245         * mini-amd64.c: Remove obsolete fixmes.
19246
19247         * mini.c (print_method_from_ip): Fix debugging support.
19248
19249 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19250
19251         * ssapre.c: Fix a subtle bug about availability, and limit SSAPRE
19252         so that expressions that don't give much gain are not reduced.
19253         * ssapre.h: Likewise.
19254
19255 2005-04-04  Zoltan Varga  <vargaz@freemail.hu>
19256
19257         * exceptions-x86.c (mono_arch_find_jit_info): Remove last SC_EBP reference.
19258
19259         * mini-x86.c (mono_emit_stack_alloc): Fix localloc under windows.
19260
19261         * mini-x86.h exceptions-x86.c: Hopefully fix compilation on *BSD.
19262
19263 2005-04-01  Zoltan Varga  <vargaz@freemail.hu>
19264
19265         * mini-sparc.c mini-sparc.h: Add asserts when running with sigaltstack.
19266
19267         * exceptions-x86.c (mono_arch_monoctx_to_sigctx): Fix cygwin build.
19268
19269 2005-03-31  Zoltan Varga  <vargaz@freemail.hu>
19270
19271         * mini-x86.c: If sigaltstack support is enabled, perform win32 style
19272         stack touching.
19273
19274         * mini.h (mono_arch_sigctx_to_monoctx): New arch-specific function.
19275
19276         * mini.h (mono_arch_monoctx_to_sigctx): New arch-specific function.
19277
19278         * mini.c: sigaltstack support requires MONO_ARCH_USE_SIGACTION.
19279
19280         * mini-x86.h mini-x86.c exceptions-x86.c: Add support for 
19281         MONO_ARCH_USE_SIGACTION. Fixes #74252.
19282
19283         * mini-x86.h: Enable MONO_ARCH_USE_SIGACTION on linux.
19284
19285         * mini-x86.c: Fix up stack overflow handling.   
19286
19287         * exceptions.cs: Add new regression test.
19288
19289 2005-03-30  Zoltan Varga  <vargaz@freemail.hu>
19290
19291         * mini-x86.c (mono_arch_emit_prolog): Adjust stack after calls to
19292         mono_jit_thread_attach.
19293
19294         * mini.c (mono_method_to_ir): Verify called method is not abstract.
19295
19296 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19297
19298         * mini.c (mono_method_to_ir): Applied Ben's patch from bug #61441 to
19299         avoid calling constructors using callvirt.
19300
19301         * inssel.brg: Fix #74073.
19302
19303 2005-03-29  Sebastien Pouliot  <sebastien@ximian.com>
19304
19305         * aot.c, mini.h: Added mono-compiler.h header to allow/ease 
19306         compilation with non-GCC compilers.
19307         * mini-exceptions.c, mini-x86.c|h: Patches to make compilation of mono
19308         possible using VS.NET. Adapted from the work of J Lothian (for VC6).
19309
19310 Tue Mar 29 11:43:01 CEST 2005 Paolo Molaro <lupus@ximian.com>
19311
19312         * inssel.brg, arrays.cs: fix long standing 64 bit issue in access to
19313         klass->interface_offsets (will likely fix bug#74073).
19314
19315 2005-03-29  Zoltan Varga  <vargaz@freemail.hu>
19316
19317         * mini-amd64.c (mono_arch_is_int_overflow): Fix rex handling.
19318
19319 2005-03-28  Zoltan Varga  <vargaz@freemail.hu>
19320
19321         * mini-amd64.c (mono_arch_output_basic_block): Fix order of parameters
19322         to amd64_div_reg_size ().
19323         
19324         * mini-amd64.c (mono_arch_emit_exceptions): Emit a near call here too.
19325
19326 2005-03-27  Zoltan Varga  <vargaz@freemail.hu>
19327
19328         * cpu-amd64.md (store_membase_reg): Fix length of storer8 opcodes.
19329
19330 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19331
19332         * driver.c: Turn off automatic command line globbing under windows. Fixes #73763.
19333
19334 2005-03-24  Zoltan Varga  <vargaz@freemail.hu>
19335
19336         * mini.c (mono_method_to_ir): Remove debugging stuff left in by mistake.
19337         
19338         * mini.c (mono_precompile_assembly): Load and precompile referenced
19339         assemblies as well. Fixes #74015.
19340
19341 2005-03-23  Zoltan Varga  <vargaz@freemail.hu>
19342
19343         * cpu-amd64.md (sin): Fix up maximum lengths of some opcodes.
19344
19345 2005-03-23  Sebastien Pouliot  <sebastien@ximian.com>
19346
19347         * declsec.c: Skip linkdemand checks for intra-corlib calls. This skips
19348         a lot of checks and (anyway) permissions cannot work until corlib is 
19349         loaded.
19350
19351 Wed Mar 23 14:29:49 CET 2005 Paolo Molaro <lupus@ximian.com>
19352
19353         * mini-ppc.c: fixed ABI issue on sysv/ppc.
19354
19355 Tue Mar 22 19:03:17 CET 2005 Paolo Molaro <lupus@ximian.com>
19356
19357         * tramp-ppc.c, exceptions-ppc.c: added missing icache flush
19358         calls (fixes bug#72824).
19359
19360 Tue Mar 22 16:28:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19361
19362         * mini.c: fix tail recursion elimination (see test in bug#73936).
19363
19364 2005-03-21  Zoltan Varga  <vargaz@freemail.hu>
19365
19366         * mini-amd64.c (mono_arch_output_basic_block): Add inline versions of
19367         some fp functions in sse2 mode.
19368
19369 2005-03-20  Zoltan Varga  <vargaz@freemail.hu>
19370
19371         * mini-x86.c (emit_tls_get): Move tls handling into a separate helper function.
19372
19373 2005-03-19  Zoltan Varga  <vargaz@freemail.hu>
19374
19375         * mini.h mini.c: Add mono_get_jit_tls_key ().
19376
19377         * mini-x86.c: Enable fast TLS support on windows.
19378
19379 2005-03-17  Sebastien Pouliot  <sebastien@ximian.com>
19380
19381         * declsec.c: Renamed aptc to allowpartiallytrustedcallers.
19382         * mini.c: Check for p/invoke method when generating code. If a
19383         p/invoke method, or it's class, isn't decorated with [Suppress
19384         UnmanagedCodeSecurity] then generate code to call System.Security.
19385         UnmanagedDemand (only if the security manager is active).
19386
19387 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19388
19389         * tramp-amd64.c (create_specific_trampoline): Revert parts of the 
19390         last change as it seems to cause strange crashes.
19391         
19392 Wed Mar 16 16:24:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19393
19394         * *.c: handle unsafe function pointers where needed.
19395
19396 2005-03-16  Zoltan Varga  <vargaz@freemail.hu>
19397
19398         * mini.c (mono_jit_free_method): Remove the fixme too.
19399
19400 2005-03-15  Miguel de Icaza  <miguel@novell.com>
19401
19402         * mini.c: As discussed, make the code actually free the delegate
19403         thunk now, to enable the debugging of delegate problems, use
19404         MONO_DEBUG=1 when running Mono. 
19405
19406         This takes also care of parts of the leaks as seen by Joe.
19407
19408 2005-03-15  Zoltan Varga  <vargaz@freemail.hu>
19409
19410         * mini-amd64.c (mono_arch_setup_jit_tls_data): Enable 
19411         thread_tls_offset calculation.
19412
19413 2005-03-14  Sebastien Pouliot  <sebastien@ximian.com>
19414
19415         * declsec.c: Reworked linkdemand checks for icall. The previous code
19416         was using the declaration code (untrusted) and didn't work as expected
19417         with the CLR 2.0. We're now more compatible with 2.0 than 1.x for this
19418         specific case.
19419
19420 2005-03-13  Zoltan Varga  <vargaz@freemail.hu>
19421
19422         * iltests.il: Add new localloc test.
19423
19424         * mini-amd64.c: Handle large stack allocations the same way as on
19425         windows if stack overflow handling is working.
19426         
19427         * mini-amd64.c: Allocate the signal stack using mmap.
19428
19429         * mini.c (sigsegv_signal_handler): Fix reading of context.
19430
19431         * mini-exceptions.c: Fix up stack overflow handling.
19432
19433         * mini-amd64.h mini-amd64.c: Fix up stack overflow handling.
19434
19435         * tramp-amd64.c (create_specific_trampoline): Optimize trampoline size.
19436
19437         * exceptions-amd64.c (mono_amd64_exceptions_init): Remove this.
19438
19439         * mini.h mini.c tramp-*.c: Move common trampoline code to mini.c.
19440
19441         * mini-x86.h mini-x86.c mini-amd64.h mini-amd64.c: Get rid of the
19442         tramp_init functions as they are no longer needed.
19443
19444 2005-03-12  Zoltan Varga  <vargaz@freemail.hu>
19445
19446         * tramp-amd64.c (mono_amd64_tramp_init): Fix typo.
19447         
19448         * tramp-amd64.c (mono_amd64_tramp_init): Init AOT trampoline as well.
19449
19450         * mini-amd64.h mini-amd64.c (mono_amd64_exceptions_init): Remove this.
19451         
19452         * mini.c mini-*.h: Remove OUT_OF_LINE_BBLOCK defines since all arches
19453         support that now.
19454
19455         * mini-ops.h: Add OP_LMUL_IMM.
19456
19457         * mini.c jit-icalls.cmini-amd64.h mini-amd64.c cpu-amd64.md: Implement
19458         long mul/div opcodes as intrinsic.
19459
19460         * mini-amd64.c (emit_call): Handle the case when the callee might be
19461         an AOT method.
19462
19463 2005-03-11  Zoltan Varga  <vargaz@freemail.hu>
19464
19465         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Reorder cases to be
19466         extra safe.
19467         
19468         * mini-amd64.c (mono_arch_get_vcall_slot_addr): Fix ordering of cases.
19469
19470         * aot.c (mono_aot_load_method): Get rid of bogus make_writable call.
19471
19472 2005-03-09  Ben Maurer  <bmaurer@ximian.com>
19473
19474         * mini.c (mono_codegen): Don't leak here, to help people running
19475         monogrind.
19476
19477 2005-03-08  Zoltan Varga  <vargaz@freemail.hu>
19478
19479         * mini-amd64.c (mono_arch_output_basic_block): Fix int->float 
19480         conversions in sse2 mode.
19481
19482         * basic-float.cs: Add regression test.
19483         
19484         * mini-amd64.c: Reenable sse2.
19485
19486 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19487
19488         * mini-amd64.c: Disable sse2 until some regressions are fixed.
19489
19490 2005-03-07      Joerg Rosenkranz <joergr@voelcker.com>
19491
19492         * driver.c: Copyright text should include 2005.
19493         
19494 2005-03-07  Zoltan Varga  <vargaz@freemail.hu>
19495
19496         * cpu-amd64.md (load_membase): Fix more max lengths.
19497
19498 2005-03-06  Zoltan Varga  <vargaz@freemail.hu>
19499
19500         * cpu-amd64.md (load_membase): Fix max length.
19501
19502         * mini-ops.h: Add OP_F<xx>_MEMBASE opcodes.
19503
19504         * inssel.brg: Add MONO_EMIT_BIALU_MEMBASE macro.
19505
19506         * cpu-amd64.md inssel-amd64.brg mini-amd64.h mini-amd64.brg: Finish SSE2
19507         support and enable it by default. Also add OP_F<xxx>_MEMBASE opcodes.
19508
19509         * basic-float.cs: Add rounding regression test.
19510
19511         * mini-amd64.c (INST_IGNORES_CFLAGS): Add more instructions.
19512
19513 2005-03-04  Neale Ferguson <NealeFerguson@earthlink.net>
19514
19515         * inssel-s390.brg, mini-s390.c: Add support for passing/returning small
19516         structures in registers for pinvoke wrappers.
19517
19518 2005-03-04  Zoltan Varga  <vargaz@freemail.hu>
19519
19520         * mini-exceptions.c (ves_icall_get_trace): Return wrapper info as well.
19521
19522 2005-03-03  Zoltan Varga  <vargaz@freemail.hu>
19523
19524         * mini.h mini.c mini-x86.c: Pass the domain of the native->managed
19525         wrapper to mono_jit_thread_attach.
19526
19527         * mini.c (mini_jit_thread_attach): New jit icall.
19528
19529         * mini-x86.c (mono_arch_emit_prolog): Attach to the VM in 
19530         native->managed wrappers.
19531
19532         * exceptions.cs: Add new regression test.
19533
19534         * mini.c (optimize_branches): Check regions in the cbranch to throw
19535         block case as well. Fixes #73242.
19536
19537 Tue Mar 1 18:35:27 CET 2005 Paolo Molaro <lupus@ximian.com>
19538
19539         * mini.c: thread safety fixes.
19540
19541 2005-02-27  Zoltan Varga  <vargaz@freemail.hu>
19542
19543         * tramp-amd64.c (amd64_magic_trampoline): Disable the method_ptr
19544         patching stuff, since delegates use jump trampolines so there is
19545         no caller.
19546
19547         * tramp-amd64.c (create_trampoline_code): Pass NULL as 'code' in 
19548         jump trampolines.
19549         
19550         * tramp-amd64.c: Fix build.
19551
19552         * mini-x86.c tramp-x86.c: Moved get_vtable_slot_addr into mini-x86.c and rename
19553         it to mono_arch_.... Add get_delegate_method_ptr implementation for x86.
19554
19555         * mini-amd64.h mini.h mini-amd64.c tramp-amd64.c (mono_amd64_get_vcall_slot_addr):
19556         Rename this to mono_arch....
19557         (mono_amd64_get_delegate_method_ptr_addr): Ditto.
19558
19559         * mini-amd64.c (mono_amd64_get_delegate_method_ptr_addr): New helper function.
19560
19561         * mini-amd64.c (emit_call): If both the caller and the callee is
19562         guaranteed to have 32 bit addresses, emit a normal call.
19563
19564         * tramp-amd64.c: Adapt to changes in mini-amd64.c.
19565
19566         * tramp-amd64.c (amd64_magic_trampoline): Remove patching of trampolines. 
19567         * tramp-amd64.c (amd64_magic_trampoline): Add support for patching the
19568         method_ptr inside delegates.
19569
19570 2005-02-26  Zoltan Varga  <vargaz@freemail.hu>
19571
19572         * mini.c (mono_jit_free_method): Free the method info even if the native code is
19573         invalidated. Fixes #73001.
19574
19575         * mini.c: Add a proper icall wrapper for mono_delegate_ctor.
19576
19577         * mini-x86.c: Only use stdcall for pinvokes on windows.
19578
19579 Thu Feb 24 15:22:30 CET 2005 Paolo Molaro <lupus@ximian.com>
19580
19581         * mini.c, mini.h: make mono_lmf_addr a fast-access thread var.
19582         * mini-x86.c: remove unreliable __thread var offset detection,
19583         use the correct accessors and enable by default.
19584
19585 2005-02-23  Zoltan Varga  <vargaz@freemail.hu>
19586
19587         * mini.c (mono_jit_free_method): Fix memory leak.
19588
19589 2005-02-22  Zoltan Varga  <vargaz@freemail.hu>
19590
19591         * mini.c (mono_method_to_ir): Allocate a GOT var for THROW and RETHROW. 
19592
19593 2005-02-21  Zoltan Varga  <vargaz@freemail.hu>
19594
19595         * cpu-amd64.md: Fix lengths of atomic opcodes.
19596
19597 Mon Feb 21 16:52:20 CET 2005 Paolo Molaro <lupus@ximian.com>
19598
19599         * driver.c: try to not imply using ICU is any good.
19600
19601 2005-02-20  Zoltan Varga  <vargaz@freemail.hu>
19602
19603         * mini-amd64.c (mono_arch_get_inst_for_method): Implement more 
19604         functions as inline ops.
19605
19606         * mini-ops.h inssel-amd64.brg cpu-amd64.md mini-amd64.c: Implement
19607         some Interlocked functions as inline ops.
19608
19609         * mini.c (move_basic_block_to_end): Fix bug in last patch.
19610
19611         * mini.h (MonoBasicBlock): Reorganize fields a bit.
19612
19613         * mini-ops.h inssel.brg: Add OP_NOT_REACHED.
19614
19615         * mini.c: Add support for OP_NOT_TAKEN.
19616
19617         * mini-amd64.h mini-amd64.c: Add support for passing/returning small 
19618         structures in registers for pinvoke wrappers.
19619
19620         * mini-amd64.c: Fix warnings.
19621
19622 2005-02-19  Zoltan Varga  <vargaz@freemail.hu>
19623
19624         * mini.h (MonoCompile): Add 'ret_var_is_local' field.
19625
19626         * mini.h mini.c (mono_arch_create_vars): Add new arch specific hook.
19627
19628         * mini.c (NEW_RETLOADA): If the ret variable is a local, use its 
19629         address instead of loading the address from it.
19630
19631         * mini-x86.c: Add support for returning small structs in registers
19632         on Win32. Fixes part of #70864.
19633         
19634 2005-02-18  Zoltan Varga  <vargaz@freemail.hu>
19635
19636         * trace.c (get_token): Improve error checking.
19637
19638 2005-02-17  Zoltan Varga  <vargaz@freemail.hu>
19639
19640         * jit-icalls.c (mono_ldvirtfn): Explicitly check for a NULL obj here.
19641
19642 2005-02-17  Sebastien Pouliot  <sebastien@ximian.com> 
19643  
19644         * mini.h: Moved MONO_EXCEPTION_* enum to metadata/class-internals.h so
19645         it can be reused for MonoClass.
19646         * mini.c: Renamed MONO_EXCEPTION_SECURITY to MONO_EXCEPTION_SECURITY
19647         _LINKDEMAND.
19648
19649 2005-02-15  Sebastien Pouliot  <sebastien@ximian.com>
19650
19651         * mini.c: Fixed 2 cases where I sent a MonoMethod to managed code 
19652         instead of a MonoReflectionMethod. The method information wasn't used
19653         when displaying SecurityException details (but will be now).
19654
19655 2005-02-15  Atsushi Enomoto  <atsushi@ximian.com>
19656
19657         * Makefile.am : windows build fix.
19658
19659 2005-02-14  Zoltan Varga  <vargaz@freemail.hu>
19660
19661         * iltests.il: Add new regression test.
19662
19663         * mini.c (mono_method_to_ir): Allocate a GOT var in CEE_NEWOBJ. Fixes
19664         #72522.
19665
19666 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com> 
19667  
19668         * mini.c: Moved linkdemand check into helper function check_linkdemand
19669         to allow reuse for all intructions (CALL, CALLVIRT, NEWOBJ, JMP, 
19670         LDFTN, LDVIRTFTN).
19671
19672 2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
19673
19674         * declsec.c: Added statistics counter for different kinds of 
19675         LinkDemands.
19676         * mini.h: Added CAS statistic counters to MonoJitStats. Removed unused
19677         (and commented) declaration.
19678         * mini.c: Added statistics counter for security Demand code 
19679         generation. Added display of security statistics.
19680
19681 2005-02-13  Zoltan Varga  <vargaz@freemail.hu>
19682
19683         * declsec.c (mono_declsec_linkdemand_aptc): Applied patch from Robert Jordan (robertj@gmx.net).
19684         Fix compilation errors under gcc-2.95.
19685
19686 2005-02-12  Ben Maurer  <bmaurer@ximian.com>
19687
19688         * mini.c, driver.c: Use the new jit trampoline hashtable
19689
19690 Fri Feb 11 18:47:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19691
19692         * mini.c, jit-icalls.c: use the managed implementation of memcpy, too.
19693
19694 2005-02-11  Martin Baulig  <martin@ximian.com>
19695
19696         * debug-mini.c (mono_debug_close_method): Free the line number array.
19697
19698 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19699
19700         * aot.c: Break up large methods into smaller ones. Share GOT slots for
19701         icalls.
19702
19703         * mini.h: Bump AOT file format version. 
19704
19705 2005-02-10  Sebastien Pouliot  <sebastien@ximian.com>
19706
19707         * declsec.c: Added LinkDemand support and it's special cases for ECMA,
19708         APTC and P/Invoke.
19709         * declsec.h: Added macros to get/set lazyly initialized security 
19710         informations about assemblies. Added new enum for different type of
19711         possible LinkDemand violation. Added function to check LinkDemands.
19712         * mini.h: Added a field to MonoCompile to hold any security violation
19713         detected when JITting a method (so it can be thrown later).
19714         * mini.c: Added LinkDemand checks in mono_method_to_ir for CEE_CALL 
19715         and CEE_CALLVIRT. Added code to throw exception at the end of
19716         mini_method_compile (note: the exception is unhandled right now).
19717
19718 Thu Feb 10 15:49:44 CET 2005 Paolo Molaro <lupus@ximian.com>
19719
19720         * mini.c, jit-icalls.c: use the managed implementation of
19721         memset for initobj and memset, to avoid managed <-> unmanaged
19722         transitions.
19723
19724 2005-02-10  Zoltan Varga  <vargaz@freemail.hu>
19725
19726         * inssel.brg (mini_emit_virtual_call): Disable the virtual->nonvirtual
19727         optimization if it would need a GOT var.
19728
19729         * basic.cs: Add tests for constant propagation and switch statements.
19730
19731         * ssa.c: Fix out-of-range constant propagation and switch statements.
19732
19733 2005-02-09    <vargaz@freemail.hu>
19734
19735         * inssel-x86.brg (reg): Align the allocation size in the localloc(imm) case too.
19736
19737 2005-02-08  Zoltan Varga  <vargaz@freemail.hu>
19738
19739         * cpu-amd64.md (load_membase): Fix max length of load_membase.
19740
19741 Tue Feb 8 18:21:11 CET 2005 Paolo Molaro <lupus@ximian.com>
19742
19743         * mini.c: update to new signature of mono_class_get_allocation_ftn().
19744
19745 2005-02-06  Neale Ferguson <NealeFerguson@earthlink.net>
19746
19747         * cpu-s390.md,  mini-s390.c: Correct bug with register usage on certain 
19748         arithmetic operations.
19749
19750 Sun Feb 6 07:10:12 EST 2005 Paolo Molaro <lupus@ximian.com>
19751
19752         * mini-ppc.c: add a workaround for broken user code that
19753         DllImports vararg functions with non-vararg signatures.
19754
19755 2005-02-05  Zoltan Varga  <vargaz@freemail.hu>
19756
19757         * mini.c (mono_jit_compile_method_inner): Add detection and a 
19758         meaningfull error message for assemblies written in Managed C++.
19759
19760         * tramp-amd64.c mini-amd64.h: Add support for 
19761         create_trampoline_from_token ().
19762
19763         * aot.c mini-x86.c abcremoval.c: Applied patch from
19764         Robert Jordan (robertj@gmx.net). Fix compilation errors under gcc-2.95.
19765
19766 2005-02-04  Zoltan Varga  <vargaz@freemail.hu>
19767
19768         * mini.h mini.c mini-x86.h tramp-x86.c: Add a new kind of trampoline 
19769         which takes a MonoImage/token as parameter instead of a MonoMethod.
19770
19771         * aot.c: Use the new trampoline for initializing vtables.
19772
19773         * aot.c: Add support for ldfld/stfld_remote wrappers.
19774
19775         * mini-ops.h cpu-pentium.md inssel-x86.brg mini-x86.c: Add optimized
19776         rules for compare <MEM>, IMM.
19777
19778         * mini.h (MONO_AOT_FILE_VERSION): Bump it.
19779
19780         * aot.c: Handle inherited finalizers correctly.
19781
19782 2005-02-03  Zoltan Varga  <vargaz@freemail.hu>
19783
19784         * inssel.brg (stmt): Add a missing _setup_... ().
19785
19786         * aot.c: Save some parts of the class state to the AOT file and use it
19787         to recompute that state when a class is initialized.
19788
19789         * mini.c: Install AOT hooks into the runtime.
19790
19791         * mini.h: Bump AOT file format version.
19792         
19793         * mini.c (mono_method_to_ir): Initialize pointer type locals correctly.
19794         Fixes #72148.
19795
19796         * iltests.il: Add new test.
19797
19798 Wed Feb 2 16:53:59 CET 2005 Paolo Molaro <lupus@ximian.com>
19799
19800         * mini.c: fix typo.
19801
19802 Wed Feb 2 16:37:13 CET 2005 Paolo Molaro <lupus@ximian.com>
19803
19804         * mini.c: setup the statistical profiler in the thread attach
19805         callback to cope with the new single thread code.
19806
19807 Wed Feb 2 15:43:58 CET 2005 Paolo Molaro <lupus@ximian.com>
19808
19809         * mini-ppc.c: ensure we have enough room for the profiler
19810         calls (fixed bug#72084).
19811
19812 2005-02-02  Zoltan Varga  <vargaz@freemail.hu>
19813
19814         * aot.c: Get rid of the MonoAotMethod structure and the hashtable holding 
19815         it.
19816
19817 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19818
19819         * driver.c: Re-enabled SSAPRE (two commits, I was just dumb).
19820
19821 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19822
19823         * ssapre.c: Fixed an issue with down safety (this allows IronPython
19824         to succesfully execute parrotbench).
19825         * ssapre.h: Likewise.
19826
19827 2005-2-1  Massimiliano Mantione  <massi@ximian.com>
19828
19829         * ssa.c: In mono_ssa_rename_vars, forced the creation of a new SSA
19830         variable for stores to method arguments (fixes a SSAPRE issue).
19831
19832 Tue Feb 1 15:52:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19833
19834         * mini.c: handle value types in dup, fixes gen-112.cs.
19835
19836 Tue Feb 1 11:45:19 CET 2005 Paolo Molaro <lupus@ximian.com>
19837
19838         * mini-ppc.c, cpu-g4.md, tramp-ppc.c: use a slower code
19839         sequence for calls in dynamic methods to avoid thunks.
19840
19841 Tue Feb 1 11:44:01 CET 2005 Paolo Molaro <lupus@ximian.com>
19842
19843         * mini.c: correctly remove dynamic methods from the hashtable.
19844
19845 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
19846
19847         * driver.c: Disabled SSAPRE until fix the bug that appears
19848         in IronPython's parrotbench.
19849
19850 2005-01-31  Zoltan Varga  <vargaz@freemail.hu>
19851
19852         * aot.c (mono_compile_assembly): Get rid of Skip (other) messages.
19853
19854         * mini.c (mono_method_to_ir): Revert the previous change.
19855         
19856         * mini.c (mono_method_to_ir): Do not inline ldfld and stfld wrappers
19857         when AOT compiling.
19858
19859         * tramp-x86.c (x86_magic_trampoline): Avoid calls to 
19860         mono_jit_info_table_find () etc. when running under valgrind.
19861
19862         * inssel.brg: Fix warnings.
19863
19864         * mini-exceptions.c: Fix warnings.
19865
19866 2005-01-31  Martin Baulig  <martin@ximian.com>
19867
19868         * driver.c (compile_all_methods_thread_main): Don't try to compile
19869         generic methods or anything which has type parameters.
19870
19871 2005-01-30  Zoltan Varga  <vargaz@freemail.hu>
19872
19873         * aot.c: Avoid costly calls to mono_method_full_name in tracing code and fix memory leaks.
19874
19875         * TestDriver.cs: Add --verbose flags.
19876
19877         * graph.c ssa.c: Fix 64 bit warnings.
19878         
19879         * abcremoval.h ssapre.h abcremoval.c ssapre.c mini.c tramp-amd64.c 
19880         trace.c mini-exceptions.c linear-scan.c inssel-amd64.brg inssel.brg:
19881         Fix 64 bit warnings.
19882
19883         * mini-amd64.c (mono_arch_output_basic_block): Fix uninitialized
19884         variable not spotted by gcc.
19885         
19886         * mini-amd64.c inssel-amd64.brg: Applied patch from  
19887         Willibald Krenn <Willibald.Krenn@gmx.at>. Clean up usage of 
19888         X86_COMPARE_MEMBASE opcodes.
19889
19890         * exceptions-amd64.c (mono_arch_find_jit_info): Fix AMD64 build.
19891
19892 2005-01-29  Ben Maurer  <bmaurer@ximian.com>
19893
19894         * *: MonoMethod->signature might be NULL now. You *MUST* use
19895         mono_method_signature.
19896
19897 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19898
19899         * driver.c (compile_all_methods_thread_main): Compile the methods
19900         without invoking cctors.
19901
19902 Fri Jan 28 18:28:26 CET 2005 Paolo Molaro <lupus@ximian.com>
19903
19904         * mini.c: remove ben's "optimizations" to dup+stloc (bug #71905).
19905         * basic-calls.cs: test for the above.
19906
19907 2005-01-28  Zoltan Varga  <vargaz@freemail.hu>
19908
19909         * mini.c mini-exceptions.c aot.c exceptions-*.c: Update after 
19910         MonoJitInfo changes.
19911
19912 2005-01-27  Zoltan Varga  <vargaz@freemail.hu>
19913
19914         * mini-exceptions.c (mono_handle_exception): Compute the stack trace
19915         eagerly if it contains dynamic methods.
19916         
19917         * mini-exceptions.c (ves_icall_System_Exception_get_trace): New icall.
19918
19919         * mini-exceptions.c (mono_handle_exception): Avoid computing the stack
19920         trace, it is now computed by an icall from trace_ips.
19921         
19922         * mini-exceptions.c: Fix a warning.
19923
19924 Thu Jan 27 13:38:34 CET 2005 Paolo Molaro <lupus@ximian.com>
19925
19926         * mini-exceptions.c: don't bother getting stack trace info if
19927         it's not going to be used.
19928
19929 2005-01-27  Raja R Harinath  <rharinath@novell.com>
19930
19931         * Makefile.am (common_sources): Add ssapre-cee-ops.h and
19932         ssapre-mini-ops.h.
19933
19934 2005-01-26  Zoltan Varga  <vargaz@freemail.hu>
19935
19936         * mini.c (remove_block_if_useless): Only print debug stuff with -v -v.
19937
19938         * aot.c: Avoid calling mono_method_get_header () if not needed.
19939
19940         * mini.h: Bump AOT file format version.
19941         
19942         * mini.c (mono_emit_native_call): Allocate a GOT var here.
19943
19944         * mini.c (mono_print_tree): Print more info for calls.
19945
19946 2005-01-26  Sebastien Pouliot  <sebastien@ximian.com>
19947
19948         * declsec.h: Remove warning by adding missing include for marshal.h
19949
19950 2005-01-26  Martin Baulig  <martin@ximian.com>
19951
19952         * mini.c (mono_method_to_ir): In CEE_UNBOX_ANY, don't increase
19953         `ip' twice.
19954
19955 2005-01-25  Zoltan Varga  <vargaz@freemail.hu>
19956
19957         * mini-amd64.c (mono_arch_call_opcode): Add missing MONO_SSA_LOAD/STORE
19958         flags.
19959
19960         * ssa.c (mono_ssa_compute): Fix crashes when using AOT.
19961
19962         * aot.c (mono_compile_assembly): Fix a warning.
19963
19964 2005-01-25  Sebastien Pouliot  <sebastien@ximian.com>
19965
19966         * declsec.c: Look for security attributes on the original MonoMethod 
19967         (and not the wrapped one). This fix permissions on icalls.
19968
19969 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19970
19971         * mini-amd64.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19972
19973         * mini.c (mono_allocate_stack_slots): Add a fixme.
19974
19975         * mini-x86.c (mono_arch_allocate_vars): Use mono_allocate_stack_slots ().
19976
19977 Sun Jan 23 16:16:48 CET 2005 Paolo Molaro <lupus@ximian.com>
19978
19979         * inssel.brg: optimize casts of sealed types (more
19980         optimizations waiting for fixes in remoting).
19981
19982 2005-01-23  Zoltan Varga  <vargaz@freemail.hu>
19983
19984         * inssel.brg (stmt): Add another dummy rule.
19985
19986         * driver.c: Fix warnings.
19987
19988         * driver.c (mono_main): If running under valgrind, instruct glib to use
19989         the system allocation functions so valgrind can track the memory
19990         allocated by the g_... functions.
19991
19992         * inssel.brg (stmt): Add DUMMY rule for OP_DUMMY_STORE.
19993
19994         * mini-ops.h: Add OP_DUMMY_STORE opcode.
19995
19996         * mini.h (MONO_BBLOCK_IS_IN_REGION): New helper macro.
19997
19998         * liveness.c: Handle OP_DUMMY_STORE. Enable register allocation for
19999         variables in try regions.
20000
20001         * mini.c (mini_method_compile): Don't disable optimizations on large
20002         methods when AOT compiling.
20003
20004         * mini.c (mono_allocate_stack_slots): New arch independent method to 
20005         allocate stack slots. Not yet used.
20006
20007 2005-01-22  Ben Maurer  <bmaurer@ximian.com>
20008
20009         * debug-mini.c (mono_debug_close_method): Plug some leaks.
20010
20011 Sat Jan 22 13:41:51 EST 2005 Paolo Molaro <lupus@ximian.com>
20012
20013         * mini-ppc.c: make the branch info relative as the code
20014         buffer can be reallocated.
20015
20016 2005-01-22  Sebastien Pouliot  <sebastien@ximian.com>
20017
20018         * aot.c: Allow decoding of the new  MONO_PATCH_INFO_DECLSEC.
20019         * driver.c: Removed the AOT/security restriction. Now initialize the
20020         security manager (in metadata) if --security is used.
20021         * mini.c|h: Add the MONO_PATCH_INFO_DECLSEC code to use the index,
20022         rather than the pointer to declarative security, when AOT is used.
20023
20024 Sat Jan 22 09:35:19 EST 2005 Paolo Molaro <lupus@ximian.com>
20025
20026         * mini.h, mini-ppc.h, mini-ppc.c: updated to use out of line
20027         basic blocks, reduced intrinsic exception throwing code size.
20028
20029 2005-01-22  Miguel de Icaza  <miguel@ximian.com>
20030
20031         * driver.c (mini_usage): Reorder the usage screen.
20032
20033 2005-01-21  Zoltan Varga  <vargaz@freemail.hu>
20034
20035         * mini.c (mono_resolve_patch_target): Fix warning.
20036
20037 2005-01-20  Zoltan Varga  <vargaz@freemail.hu>
20038
20039         * mini-x86.c (mono_arch_local_regalloc): Fix bug introduced by
20040         previous patch.
20041
20042         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20043
20044         * mini-amd64.c (mono_arch_local_regalloc): Revert last patch as it
20045         breaks the amd64 build.
20046
20047         * mini-x86.c (mono_arch_local_regalloc): Fix bug in div/rem 
20048         register allocation. Fixes #71454.
20049
20050         * mini-amd64.c (mono_arch_local_regalloc): Ditto.       
20051
20052         * arrays.cs: Add new regression test.   
20053
20054 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20055
20056         * ssapre.c: Turned usage of snprintf to GString.
20057         * ssapre.h: disabled MONO_APPLY_SSAPRE_TO_SINGLE_METHOD
20058         (I left it on by mistake in my previous commit).
20059
20060 Thu Jan 20 12:00:45 CET 2005 Paolo Molaro <lupus@ximian.com>
20061
20062         * mini.c, cfold.c, basic-calls.cs: preserve side effects
20063         on cond branch optimization (fixes bug# 71515).
20064
20065 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20066
20067         * abcremoval.c: Fixed bug 71062.
20068         * abcremoval.h: Likewise.
20069
20070 2005-1-20  Massimiliano Mantione  <massi@ximian.com>
20071
20072         * mini.c: Added a new functionality to optimize_branches, the removal
20073         of useless basic blocks, and fixed some problem in the removal of
20074         critical edges; some utility functions added for both purposes.
20075         * ssapre.c: Added complex expression support, and fixed bug 70637.
20076         * ssapre.h: Likewise.
20077         * ssapre-cee-ops.h: Added file with list of "CEE_*" opcodes
20078         enabled in SSAPRE.
20079         * ssapre-mini-ops.h: Likewise, but for "OP_*" opcodes.
20080         * driver.c: Re-enabled SSAPRE.
20081
20082 2005-01-19  Martin Baulig  <martin@ximian.com>
20083
20084         * mini.c (mono_method_to_ir): Call mono_get_inflated_method() on
20085         the result of mono_get_method_constrained().
20086
20087 2005-01-18  Neale Ferguson <NealeFerguson@earthlink.net>
20088
20089         * exceptions-s390.c tramp-s390.c: Allocate code using the global code
20090         manager.
20091
20092 2005-01-18  Geoff Norton  <gnorton@customerdna.com>
20093
20094         * jit-icalls.c (mono_llmult_ovf): Fix other overflow conditions to
20095         be detected.  Fixes #59296.
20096
20097 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20098
20099         * mini-amd64.c (mono_arch_output_basic_block): Remove some assertions
20100         which can happen. Fixes #71361.
20101
20102 2005-01-18  Zoltan Varga  <vargaz@freemail.hu>
20103
20104         * exceptions-sparc.c tramp-sparc.c: Allocate code using the global code
20105         manager.
20106
20107 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20108
20109         * mini.c (mono_create_jump_trampoline): Revert last change as it causes
20110         appdomain-unload.exe to fail.
20111         
20112         * mini.c: Fix some memory leaks.
20113
20114 Mon Jan 17 16:16:23 CET 2005 Paolo Molaro <lupus@ximian.com>
20115
20116         * inssel.brg: handle the new size of rank, idepth, max_interface_id.
20117         Fixed bug and sped up some codepaths.
20118
20119 2005-01-17  Zoltan Varga  <vargaz@freemail.hu>
20120
20121         * mini.c: Fix some memory leaks.
20122
20123         * exceptions.cs basic-long.cs: Add test for checked ulong->int 
20124         conversion.
20125
20126         * inssel-long.brg: Implement long_conv_to_ovf_i4_un. Fixes #71319.
20127
20128         * inssel-long.brg: Fix conv.ovf.i8 when run on an int32. Fixes
20129         #71320.
20130
20131         * iltests.il: Add regression test for #71320.
20132
20133 2005-01-16  Zoltan Varga  <vargaz@freemail.hu>
20134
20135         * mini.c (mono_codegen): Fix installation of profiler hooks.
20136
20137         * mini-sparc.c mini-amd64.c: Don't allocate stack space for dead vars.
20138
20139 Sun Jan 16 12:19:35 CET 2005 Paolo Molaro <lupus@ximian.com>
20140
20141         * mini.h, mini.c, cfold.c: optimize access to enum
20142         readonly fields, too. Eval conditional branches if possible
20143         to perform unreachable code removal in more cases.
20144
20145 2005-01-15  Zoltan Varga  <vargaz@freemail.hu>
20146
20147         * tramp-amd64.c exceptions-amd64.c: Use the new global code manager.
20148
20149         * mini.c (mono_global_codeman_reserve): New function to allocate code memory from a global
20150         code manager.
20151
20152         * tramp-x86.c mini-x86.c exceptions-x86.c: Allocate all code memory so mono works with
20153         WinXP DEP. Fixes #71244.
20154
20155 2005-01-14  Zoltan Varga  <vargaz@freemail.hu>
20156
20157         * inssel.brg: Allways convert CEE_CONV_OVF_I4 to a move on 64 bit platforms. Fixes #71236.
20158
20159 2005-01-13  Zoltan Varga  <vargaz@freemail.hu>
20160
20161         * mini-x86.c (mono_arch_output_basic_block): Fix OP_ATOMIC_ADD_NEW_I4.
20162
20163 2005-01-11  Zoltan Varga  <vargaz@freemail.hu>
20164
20165         * mini-exceptions.c exceptions-ppc.c aot.c: Cope with MonoJitInfo 
20166         changes.
20167
20168         * mini.h: Bump AOT version.
20169
20170         * mini.h (MonoCompile): Change exvar to a hash table.
20171
20172         * mini.c: Allocate a separate exvar for each handler block.
20173
20174         * mini.c: Get rid of the computation of filter_lengths, its not needed.
20175
20176         * mini.c inssel.brg: Change OP_THROW_OR_NULL to compare the current
20177         ex var with the pending exception and only throw if the two are equal.
20178         Fixes #68552.
20179         
20180         * exceptions.cs: Add tests for rethrow and nested catch clauses.
20181
20182         * mini-x86.c: Fix warnings.
20183
20184         * Makefile.am (common_sources): Move mini-exceptions.c here as it is
20185         used by all the ports now.
20186
20187         * aot.c: Add write-symbols and save-temps options.
20188
20189 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20190
20191         * mini-x86.c: Add support for returning structs in registers from pinvoke functions on WIN32.
20192
20193 Mon Jan 10 16:11:16 EST 2005 Neale Ferguson <nealeferguson@earthlink.net>
20194
20195         * mini-ops.h, inssel-s390.brg, cpu-s390.md: Support OP_ATOMIC__xxx 
20196         operations.
20197
20198         * tramp-s390.c: Check vtable slot belongs to the domain.
20199
20200         * mini-exceptions.c, exceptions-s390.c: Standardize exception handling
20201         as per other platforms.
20202
20203         * mini-s390.c, mini-s390.h: Enable out-of-line bblock support.
20204
20205 Mon Jan 10 18:53:05 CET 2005 Paolo Molaro <lupus@ximian.com>
20206
20207         * driver.c: we don't run the Main() code in a subthread anymore.
20208
20209 Mon Jan 10 17:54:16 CET 2005 Paolo Molaro <lupus@ximian.com>
20210
20211         * mini.c: added experimental rtc support in the statistical
20212         profiler: if the user has the permission, more accurate statistics
20213         are gathered. Run with: MONO_RTC=4096 mono --profiler=default:stat ....
20214         The MONO_RTC value must be restricted to what the linux rtc allows:
20215         power of two from 64 to 8192 Hz.
20216
20217 2005-01-10  Zoltan Varga  <vargaz@freemail.hu>
20218
20219         * mini-x86.c (mono_arch_emit_exceptions): Fix #71121.
20220
20221 Mon Jan 10 05:20:49 EST 2005 Paolo Molaro <lupus@ximian.com>
20222
20223         * mini-ppc.c: better icache flush for smp.
20224
20225 2005-01-09  Zoltan Varga  <vargaz@freemail.hu>
20226
20227         * mini-amd64.c (emit_move_return_value): Fix memory leak.
20228
20229         * mini-x86.c (get_call_info): Add the get_call_info () code from the
20230         amd64 port, not yet used.
20231
20232 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20233
20234         * mini.c (mono_method_to_ir): Disable inlining of ldfld wrappers with
20235         a struct type.
20236
20237 2005-01-07  Sebastien Pouliot  <sebastien@ximian.com>
20238
20239         * driver.c: Added --security option to activate the security manager.
20240         Right now this will allow code generation for declarative demands and
20241         is disabled when AOT is specified.
20242         * mini.c: Add code generation for declarative security demands.
20243         * mini.h: Add mono_use_security_manager as an extern gboolean.
20244
20245 2005-01-07  Zoltan Varga  <vargaz@freemail.hu>
20246
20247         * aot.c (mono_compile_assembly): Speed up compilation a bit by
20248         emitting more dense assembly code.
20249
20250         * mini-sparc.c mini-sparc.h exceptions-sparc.c: Enable optimized corlib
20251         exception throwing stuff.
20252
20253 2005-01-06  Zoltan Varga  <vargaz@freemail.hu>
20254
20255         * mini-sparc.c (mono_arch_emit_exceptions): Fix typo in previous patch. Remove
20256         dead code.
20257
20258         * mini-amd64.c (mono_arch_emit_exceptions): Remove duplicate epilog stuff
20259         left in by mistake.
20260
20261         * driver.c (EXCLUDED_FROM_ALL): Disable SSAPRE until bug #70637 is 
20262         fixed.
20263
20264         * mini-sparc.h mini-sparc.c: Enable out-of-line bblock support.
20265
20266         * tramp-*.c: Only patch vtable slots if the object is in the current
20267         domain. Fixes appdomain-unload.exe.
20268
20269         * mini-amd64.c mini-amd64.h: Enable out-of-line bblock support.
20270         
20271         * mini-amd64.c (mono_arch_local_regalloc): Port regalloc fix from
20272         x86 branch.
20273
20274 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20275
20276         * mini.c (reverse_branch_op): New helper function.
20277
20278         * mini.c (optimize_branches): Run the new optimization only on 
20279         platforms which support it. Also reverse all kinds of branches.
20280
20281         * mini.h (MonoBasicBlock): Add 'out_of_line' field.
20282
20283         * mini.c (mono_method_to_ir): Set 'out_of_line' for bblocks which have
20284         a throw statement.
20285
20286         * mini.c (optimize_branches): Reverse not-equals branches if the false
20287         bblock is a throw. This happens a lot of time with argument checking in
20288         corlib.
20289
20290         * mini.c (mono_codegen): Add support for placing basic blocks after
20291         the function epilogue.
20292
20293         * mini-x86.c mini-x86.h: Add support for placing basic blocks after the
20294         function epilogue.
20295         
20296 2005-01-05  Miguel de Icaza  <miguel@ximian.com>
20297
20298         * mini.c (setup_stat_profiler): Only set this up if the platform
20299         supports ITIMER_PROF.
20300
20301 2005-01-05  Zoltan Varga  <vargaz@freemail.hu>
20302
20303         * mini-x86.c (mono_arch_local_regalloc): Fix a bug introduced by the
20304         previous patch.
20305
20306         * inssel.brg: Fix a warning.
20307
20308 Wed Jan 5 16:40:18 CET 2005 Paolo Molaro <lupus@ximian.com>
20309
20310         * mini.c: added support for statistical profiler 
20311         (run with: --profile=default:stat).
20312
20313 2005-01-04  Zoltan Varga  <vargaz@freemail.hu>
20314
20315         * mini-x86.h (MONO_ARCH_ENABLE_EMIT_STATE_OPT): Enable this on x86.
20316
20317         * mini-x86.c cpu-pentium.md: More fixes for usage of global registers.
20318
20319         * mini-amd64.c (mono_arch_local_regalloc): Port some regalloc fixes 
20320         related to global registers from the amd64 port.
20321
20322 2005-01-03  Zoltan Varga  <vargaz@freemail.hu>
20323
20324         * mini.c (mono_method_to_ir): Handle MONO_CLASSCONST.
20325
20326         * mini-amd64.c (mono_arch_local_regalloc): Fix some regalloc problems
20327         with global registers.
20328         (mono_arch_output_basic_block): Fix SWITCH in the AOT case.
20329
20330         * aot.c (emit_method_code): Fix the 'method emitted as' messages.
20331
20332 2004-12-31  Zoltan Varga  <vargaz@freemail.hu>
20333
20334         * debug-mini.c (encode_value): Fix off-by-one.
20335
20336         * aot.c (encode_value): Likewise.
20337
20338         * mini.c (mono_method_to_ir): Disable AOT for methods containing LDPTR.
20339
20340 2004-12-30  Zoltan Varga  <vargaz@freemail.hu>
20341
20342         * mini.c linear-scan.c: Add a workaround for the mcs crash when using 
20343         AOT.
20344
20345         * aot.c (mono_aot_load_method): Free up patch info if no longer needed.
20346         
20347         * aot.c (emit_method_info): Increase size of temp buffer.
20348
20349         * mini-x86.c cpu-pentium.md mini.c: Load fp constants differently in 
20350         the AOT case.
20351
20352 2004-12-28  Zoltan Varga  <vargaz@freemail.hu>
20353
20354         * aot.c (emit_method_info): Fix build.
20355         
20356         * aot.c: Further rework of the AOT file format to reduce the size of
20357         the method info data.
20358
20359         * mini.h: Bump AOT file format version.
20360
20361 2004-12-27  Martin Baulig  <martin@ximian.com>
20362
20363         * mini.c (mini_get_method): New static method; call
20364         mono_get_method_full() and mono_get_inflated_method().
20365         (mono_method_to_ir): Use mini_get_method() instead of
20366         mono_get_method_full(). 
20367
20368 2004-12-26  Patrik Torstensson  <patrik.torstensson@gmail.com>
20369
20370         * mini-x86.c (atomic ops): fixed bug interlocked bug #70784. 
20371
20372 2004-12-25  Zoltan Varga  <vargaz@freemail.hu>
20373
20374         * inssel.brg (ldind_to_load_membase): Handle CEE_LDIND_I8.
20375
20376         * inssel-amd64.brg: Add some optimization rules.
20377
20378 2004-12-24  Ben Maurer  <bmaurer@ximian.com>
20379
20380         * aot.c: Remove the use of MonoGHashTable and other GC stuff. The
20381         standard not GC'd stuff is fine.
20382
20383 2004-12-24  Zoltan Varga  <vargaz@freemail.hu>
20384
20385         * aot.c: Rework the AOT file format to get rid of most of the global
20386         symbols. This reduces the size of the mscorlib.dll.so by 1MB.
20387
20388         * mini.h: Bump AOT file format version.
20389         
20390 2004-12-23  Zoltan Varga  <vargaz@freemail.hu>
20391
20392         * mini.h: Bump AOT file format version.
20393
20394         * aot.c (mono_aot_is_got_entry): New function to determine if an 
20395         address is inside a GOT.
20396
20397         * aot.c mini-x86.c tramp-x86.c: Make all patches use the GOT.
20398
20399         * cpu-pentium.md: Increase the maximum size of some instructions which
20400         might involve a got access.
20401         
20402         * mini.c (get_method_from_ip): Another debug helper function.
20403
20404         * mini.c: Call mono_get_got_var () in a couple places. Handle the case
20405         when got var accesses are created during the decompose phase.
20406
20407         * mini-sparc.c: Change mono_compile_aot to cfg->compile_aot.
20408
20409         * mini.h mini.c mini-x86.c aot.c mini-sparc.c: Add a 'compile_corlib'
20410         argument mini_compile_method and to MonoCompile, and use this to
20411         determine whenever a given method is compiled for AOT. This allows the
20412         other methods compiled during AOT compilation to be free of AOT stuff,
20413         so the backends does not need to add special support for them by
20414         creating a fake GOT etc.
20415
20416         * mini-x86.c (mono_arch_patch_code): Remove fake got stuff as it is no
20417         longer needed.
20418
20419 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20420
20421         * mini.c (mono_method_to_ir): It turns out that some of the
20422         x-appdomain wrappers are lax with types, so just ignore this for
20423         all wrappers.
20424
20425         * inssel.brg (OP_CHECK_ARRAY_TYPE): Optimize this by only looking
20426         at the vtable->klass. If it is non-shared code we can just use the
20427         vtable.
20428
20429 Tue Dec 21 17:43:06 CET 2004 Paolo Molaro <lupus@ximian.com>
20430
20431         * mini-ppc.c: access MonoDomain from tls, too.
20432
20433 2004-12-21  Sebastien Pouliot  <sebastien@ximian.com>
20434
20435         * declsec.c: Removed unused variable (and related warning ;-)
20436
20437 2004-12-21  Ben Maurer  <bmaurer@ximian.com>
20438
20439         * iltests.il: New test for LDELEMA on an array of ref types.
20440
20441         * mini.c (CEE_LDELEMA): We need to emit OP_CHECK_ARRAY_TYPE for
20442         all ldelema's on reftypes.
20443         (check_call_signature): Remove the OP_CHECK_ARRAY_TYPE from here,
20444         it was the wrong place to put it.
20445
20446         * mini-x86.c (mono_arch_output_basic_block): Just use ecx as the
20447         register to pop to make this cleaner, at the request of Paolo.
20448
20449 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20450
20451         * mini-ops.h (OP_GETHASHCODE): New op.
20452
20453         * inssel.brg (OP_GETHASHCODE): Emit code for the new opcode
20454
20455         * mini.c (mini_get_inst_for_method): Create the intrinsic hash
20456         operation.
20457
20458         For a microbenchmark, this reduces the cost of Hashtable.get_Item
20459         by 25%.
20460         
20461         * mini-x86.c (mono_arch_output_basic_block): Rather than
20462
20463         add ebp, 4
20464
20465         Emit
20466
20467         pop edx
20468
20469         The first is 3 bytes while the second is 1. This saves 36 kb on
20470         mscorlib, quite a big saving. When bootstraping mcs, I was able to
20471         see a small boost because of icache locality.
20472
20473         * cfold.c (FOLD_BINOPCOMM): Kill add foo, 0
20474
20475 Mon Dec 20 12:19:40 EST 2004 Paolo Molaro <lupus@ximian.com>
20476
20477         * Makefile.am, mini-ppc.h, mini-exceptions.c, exceptions-ppc.c:
20478         started code sharing with the generic code.
20479
20480 Mon Dec 20 11:08:06 EST 2004 Paolo Molaro <lupus@ximian.com>
20481
20482         * mini-ppc.c, cpu-g4.md: added code for direct access to
20483         tls data slots.
20484
20485 Mon Dec 20 10:58:28 EST 2004 Paolo Molaro <lupus@ximian.com>
20486
20487         * mini-ops.h, inssel-x86.brg, cpu-amd64.md, inssel.brg, inssel-amd64.brg,
20488          mini-amd64.c, mini-x86.c, cpu-pentium.md: renamed OP_X86_TLS_GET
20489         to OP_TLS_GET.
20490
20491 2004-12-20  Sebastien Pouliot  <sebastien@ximian.com>
20492
20493         * declsec.c|h: Added functions to cache the declarative stack modifiers
20494         in MonoJitInfo and to create a security frame from a MonoJitInfo 
20495         structure.
20496         * mini.c: Initialize jinfo->cas_inited to FALSE when MonoJitInfo is
20497         created. Register internal calls for System.Security.SecurityFrame::
20498         _GetSecurityFrame and _GetSecurityStack.
20499         * mini.h: Added definition for new icalls (in mini-exceptions.c) and
20500         the definitions for the new stack walk/callback mechanism.
20501         * mini-exceptions.c: Added internal call GetSecurityFrame (to get the 
20502         first security frame for LinkDemands and InheritanceDemands) and
20503         GetSecurityStack for Demands. Both use the new mono_walk_stack code
20504         from lupus.
20505         * mini-x86.h, mini-amd64.h, mini-sparc.h: Architecture specific stack
20506         walk initialization (lupus).
20507
20508 2004-12-20  Ben Maurer  <bmaurer@ximian.com>
20509
20510         * mini.c (mono_method_to_ir): In CEE_DUP, handle the dup / stloc
20511         idiom.
20512         (handle_loaded_temps): Do not create a temporary variable for
20513         things that we know are temps. They will never be modified.
20514         (mono_spill_call): Set MONO_INST_IS_TEMP
20515         (mono_emulate_opcode): ditto
20516         (emit_tree): ditto
20517         (mono_method_to_ir.CEE_DUP): ditto
20518
20519 2004-12-19  Ben Maurer  <bmaurer@ximian.com>
20520
20521         * mini.c (type_to_eval_stack_type): Make this handle the void type
20522         (mono_emit_call_args): set the call->type with type_to_eval_stack_type
20523         (emit_tree): use ip_in_bb to special case some common idioms
20524         Update all callers to pass in the IP.
20525         (mono_method_to_ir): Make CEE_CALL* do the above as well.
20526
20527         This gives us a nice 2% speedup in mcs bootstrap.
20528
20529         * mini-x86.c (peephole_pass): Peephole pass to make
20530         mov  [foo], eax
20531         push [foo]
20532
20533         into
20534
20535         mov [foo], eax
20536         push eax
20537
20538         * mini.c (ip_in_bb): new method.
20539         (mono_method_to_ir): use this method rather than doing the hash
20540         lookup ourselves.
20541
20542         * linear-scan.c (mono_linear_scan): When expiring actives, you
20543         don't need to keep around variables that expire on this
20544         instruction. This makes it so that:
20545              a = b + 1
20546         will turn into:
20547              store (ebx add (ebx, 1))
20548         which will become
20549              add ebx, 1
20550
20551 2004-12-19  Zoltan Varga  <vargaz@freemail.hu>
20552
20553         * mini.c (mono_method_to_ir): Optimize the common ldobj+stloc 
20554         combination to avoid doing two copies. Fix up problems with previous
20555         patch.
20556
20557         * mini.c: Fix 64 bit warnings.
20558
20559         * mini-x86.c (INST_IGNORES_CFLAGS): Add OP_STOREI4_MEMBASE_REG.
20560
20561 2004-12-17  Zoltan Varga  <vargaz@freemail.hu>
20562
20563         * mini-amd64.h mini-amd64.c exceptions-amd64.c: Port exception handling
20564         changes from the x86 code.
20565
20566         * mini.h: Add prototype for mono_arch_get_throw_corlib_exception ().
20567
20568 2004-12-16  Zoltan Varga  <vargaz@freemail.hu>
20569
20570         * mini-x86.c (mono_arch_emit_epilog): Optimize the corlib exception
20571         throwing code to reduce its size, unify the AOT and non-aot code and 
20572         get rid of relocations in the AOT case.
20573
20574         * mini-x86.h mini.c exceptions-x86.c 
20575         (mono_arch_get_throw_corlib_exception): New arch specific function to 
20576         raise corlib exceptions which doesn't require relocations in the 
20577         caller.
20578
20579         * aot.c (emit_method): Handle PATCH_INFO_NONE as well.
20580
20581 2004-12-15  Zoltan Varga  <vargaz@freemail.hu>
20582
20583         * mini.c (mono_emit_method_call): Only allocate the got var when it is
20584         needed.
20585
20586         * mini-x86.c (mono_arch_patch_code): Add missing PATCH_INFO_METHOD_REL
20587         in the AOT case.
20588
20589 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20590
20591         * mini-x86.c, cpu-pentium.md, inssel-x86.brg: Fixed bug
20592         with add function when used from Inc/dec atomic 
20593         functions. Re-enabled optimization on x86.
20594         * mini-ops.h: renamed atomic_add functions to
20595         allow _add to match the Interlocked::Add and
20596         _add_next to match Interlocked::Inc/Dec.
20597
20598 2004-12-15  Massimiliano Mantione  <massi@ximian.com>
20599
20600         * mini.c: Fixed a subtle bug in mono_method_to_ir, about the
20601         linking of BBs to the end BB, and enabled SSAPRE also with
20602         consprop and copyprop (which was prevented by that bug).
20603
20604 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20605
20606         * mini-x86.c: disabling the Interlocked optimizing code. 
20607
20608 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20609
20610         * aot.c (load_aot_module): Move reading of got_addr after the AOT
20611         file version check.
20612         
20613 2004-12-14  Patrik Torstensson  <patrik.torstensson@gmail.com>
20614
20615         * mini-x86.c, inssel-x86.brg, cpu-pentium.md: removed _imm 
20616         interlocked optimization due lack of support on x86, rewrote 
20617         exchange to take into account that base may be in eax.
20618         
20619         xsp works again; activated Interlocked optimizing code.
20620         
20621 2004-12-14  Zoltan Varga  <vargaz@freemail.hu>
20622
20623         * mini.h (MONO_AOT_FILE_VERSION): Bump AOT file version.
20624
20625 2004-12-13  Zoltan Varga  <vargaz@freemail.hu>
20626
20627         * mini-ops.h: Add new opcodes.
20628
20629         * mini.h: Add new patch types. Add got_var to MonoCompile.
20630
20631         * mini.h mini-x86.c mini-amd64.c aot.c: Rename 
20632         mono_arch_get_aot_patch_offset () to mono_arch_get_patch_offset () and
20633         make it work with all kinds of patchable code.
20634
20635         * inssel.brg inssel-x86.brg: Add new rules dealing with computing the
20636         address of the GOT, and referencing entries in the GOT.
20637
20638         * mini.c: Add code to load the GOT address if needed by an opcode.
20639
20640         * aot.c mini-x86.h mini-x86.c cpu-pentium.md: Add support for position 
20641         independent AOT code on the x86 using an elf-style Global Offset Table.
20642
20643 2004-12-14  Raja R Harinath  <rharinath@novell.com>
20644
20645         * Makefile.am (RUNTIME): Set MONO_SHARED_DIR.
20646
20647 2004-12-13 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20648
20649         * mini-x86.c: disabling the Interlocked optimizing code. It segfaults
20650         when running xsp.
20651
20652 2004-12-13  Patrik Torstensson  <patrik.torstensson@gmail.com>
20653
20654         * mini-x86.c,mini-ops.h,inssel-x86.brg,cpu-pentium.md: Implementation
20655         of Interlocked:Increment/Decrement/Add as inline ops.
20656         (mini-x86.c (mono_arch_get_inst_for_method and mono_arch_output_basic_block))
20657
20658 2004-12-12  Geoff Norton  <gnorton@customerdna.com>
20659
20660         * exceptions-ppc.c: Reorder code so gcc3.4 can compile it
20661         * mini-ppc.c: Unify mono_arch_patch_code with changes in r37636.
20662
20663 2004-12-12  Duncan Mak  <duncan@ximian.com>
20664
20665         * mini-ppc.c (mono_arch_patch_code): Hopefully made this build
20666         again. `patch_info->table_size' is no longer valid after Zoltan's
20667         commit #37636.
20668
20669 2004-12-12  Martin Baulig  <martin@ximian.com>
20670
20671         * mini.c (mono_method_to_ir): Only call mono_debug_init_method()
20672         if we are the "real" method, ie. not an inlined method inside it.
20673
20674 2004-12-11  Ben Maurer  <bmaurer@ximian.com>
20675
20676         * mini.c (CEE_LDSFLD): Make sure that the vtable has been init'd
20677         before we look in the special fields table. This fixes
20678         ../tests/thread-static-init.cs.
20679
20680 2004-12-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
20681
20682         * mini.c: return immediately after setting OP_ARRAY_RANK or CEE_LDLEN
20683         for Array get_Rank and get_Length. Fixes bug #70465.
20684
20685 2004-12-11  Zoltan Varga  <vargaz@freemail.hu>
20686
20687         * mini.h mini.c aot.c: Put the bblock table for a SWITCH patch into a
20688         separate structure to reduce the size of MonoJumpInfo.
20689
20690 Fri Dec 10 18:09:22 CET 2004 Paolo Molaro <lupus@ximian.com>
20691
20692         * mini.c, mini.h, aot.c, driver.c: allow disabling the aot code.
20693
20694 2004-12-10  Patrik Torstensson  <patrik.torstensson@gmail.com>
20695
20696         * mini.c (mini_get_inst_for_method): Changed to allow ports
20697         to return a MonoInst instead of opcode 
20698         (renamed mini_get_opcode_for_method to better reflect the new functionality)
20699         
20700         * mini-[x86|s390|s390x|ppc|sparc].c (mono_arch_get_inst_for_method): 
20701         Allow ports to return a created MonoInst instead of op-code, will enable
20702         new optimizations.
20703         (renamed mini_get_opcode_for_method to better reflected the functionality)
20704
20705 2004-12-09  Zoltan Varga  <vargaz@freemail.hu>
20706
20707         * mini.c (NEW_AOTCONST): Share some code between the different NEW_AOTCONST macros.
20708
20709 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20710
20711         * mini.c jit-icalls.c: Pass generic_context to mono_ldtoken_wrapper.
20712         Fixes #69985.
20713
20714 2004-12-08  Martin Baulig  <martin@ximian.com>
20715
20716         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use `fsig->signature'
20717         if we're a CEE_CONSTRAINED call.  Fixes gen-118.cs.
20718
20719 2004-12-08  Zoltan Varga  <vargaz@freemail.hu>
20720
20721         * mini-sparc.c (mono_arch_output_basic_block): Implement OP_FCONV_TO_<X>
20722         correctly.
20723
20724         * exceptions.cs: Disable some tests which depend on properties of x86 fp
20725         arithmetic.
20726
20727 2004-12-08  Raja R Harinath  <rharinath@novell.com>
20728
20729         * Makefile.am (CLEANFILES): Add *.exe, *.dll.
20730
20731 2004-12-07  Zoltan Varga  <vargaz@freemail.hu>
20732
20733         * mini-sparc.c (mono_arch_output_basic_block): Fix LOCALLOC_IMM
20734         bug introduced by the previous patch.
20735
20736 Tue Dec 7 11:44:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20737
20738         * mini-ppc.c, objectc.cs: handle large structs passed by value
20739         (fixes bug #69972).
20740
20741 Tue Dec 7 10:43:31 CET 2004 Paolo Molaro <lupus@ximian.com>
20742
20743         * mini-ppc.c: OP_ARGLIST implementation from
20744         Geoff Norton  <gnorton@customerdna.com>.
20745
20746 Tue Dec 7 10:14:25 CET 2004 Paolo Molaro <lupus@ximian.com>
20747
20748         * inssel-x86.brg, inssel-ppc.brg: fix reference to register
20749         in stmt: OP_OUTARG_VT (reg) (should fix bug #69785).
20750
20751 Tue Dec 7 10:06:39 CET 2004 Paolo Molaro <lupus@ximian.com>
20752
20753         * exceptions-ppc.c: avoid calling ppc_patch in exception trampolines.
20754
20755 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20756
20757         * inssel-s390.brgi, mini-ops.h, mini-s390.c : Add stubs for support of tls offset
20758         support.
20759
20760 2004-12-06  Zoltan Varga  <vargaz@freemail.hu>
20761
20762         * mini-sparc.c: Zero out localled-ed memory.
20763
20764         * iltests.il: Add tests for zeroing out localloc-ed memory.
20765
20766 2004-12-04  Martin Baulig  <martin@ximian.com>
20767
20768         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, use the new
20769         mono_method_get_signature_full().       
20770
20771 2004-12-03  Massimiliano Mantione  <massi@ximian.com>
20772
20773         * mini.c: Added removal of critical edges (prerequisite for SSAPRE),
20774         and some utility functions (always for SSAPRE), integrated SSAPRE.
20775         * mini.h: Likewise.
20776         * driver.c: Added ssapre option.
20777         * ssa.c: Small fix on OP_ARG handling.
20778         * ssapre.c, ssapre.h: Added files containing SSAPRE implementation.
20779         * Makefile.am: Likewise.
20780
20781 2004-12-02  Zoltan Varga  <vargaz@freemail.hu>
20782
20783         * tramp-x86.c (mono_arch_create_jit_trampoline): Remove code which is
20784         now in the xp code.
20785
20786         * mini.c (mini_init): Register mono_thread_force_interruption_checkpoint
20787         icall.
20788
20789 2004-12-01  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20790
20791         * inssel-s390.brg : Add OP_OUTARG_VT (OP_REFANYTYPE (reg)) rule.
20792         
20793         * cpu-s390.md : Increase instruction length of oparglist.
20794
20795         * mini-s390.c : Implement vararg and TYPEDEBYREF support.
20796
20797 2004-11-30  Martin Baulig  <martin@ximian.com>
20798
20799         * mini.c (mono_method_to_ir): In CEE_CALLVIRT, added support for
20800         virtual generic methods.  We call a special helper_compile_generic_method()
20801         icall to retrieve the method from the vtable, inflate and compile
20802         it and then do a CEE_CALLI.  Thanks a lot to Paolo for this idea.
20803
20804         * jit-icalls.c (helper_compile_generic_method): New JIT icall.
20805
20806 2004-11-30  Zoltan Varga  <vargaz@freemail.hu>
20807
20808         * mini-sparc.c: Fix up vararg corner cases. Fixes #70019.
20809
20810 2004-11-29  Zoltan Varga  <vargaz@freemail.hu>
20811
20812         * cpu-sparc.md mini-sparc.c (long_conv_to_ovf_i): Fill missing delay slot.
20813         Fixes #69929.
20814
20815 2004-11-27  Ben Maurer  <bmaurer@ximian.com>
20816
20817         * inssel.brg (CEE_SWITCH): The AOT stuff Zoltan added is only for
20818         platforms with PIC aot.
20819
20820 2004-11-28  Martin Baulig  <martin@ximian.com>
20821
20822         * mini.c (mono_method_to_ir): In CEE_DUP, added handle_stobj().
20823         Fixes gen-112.cs.
20824
20825 2004-11-28  Martin Baulig  <martin@ximian.com>
20826
20827         * mini-x86.c (mono_arch_call_opcode): Use the original type, not
20828         the result of mono_type_get_underlying_type() to check whether
20829         we're byref.
20830
20831 2004-11-26  Martin Baulig  <martin@ximian.com>
20832
20833         * mini.c
20834         (mono_method_to_ir): Use `!method->signature->has_type_parameters'
20835         in the g_assert().
20836
20837 2004-11-26  Zoltan Varga  <vargaz@freemail.hu>
20838
20839         * mini-amd64.c (mono_arch_emit_this_vret_args): Handle this and vret
20840         the same way as the other arguments so they won't get clobbered.
20841
20842         * mini-amd64.c (mono_arch_output_basic_block): Avoid doing virtual 
20843         calls through R11 since it is clobbered by the trampoline code.
20844
20845 2004-11-26  Raja R Harinath  <rharinath@novell.com>
20846
20847         * Makefile.am: Consistently use $(RUNTIME) rather than ./mono to
20848         pick up in-tree mscorlib.dll.
20849
20850 2004-11-25  Zoltan Varga  <vargaz@freemail.hu>
20851
20852         * aot.c: Rename MonoAOTModule->cleanup to out_of_date.
20853
20854         * mini-amd64.c aot.c: Switch to PIC relative AOT code. References to 
20855         runtime data/code are now stored in a table similar to the GOT in ELF. 
20856         This allows the code itself to be position independent.
20857
20858         * aot.c: Fix loading of referenced assemblies after the lazy assembly
20859         loading changes.
20860
20861         * aot.c: Attach ELF type (object/function) directives to all global
20862         symbols.
20863
20864         * tramp-amd64.c (amd64_magic_trampoline): Patch RIP relative calls too.
20865
20866         * inssel.brg (SWITCH): Emit an AOT_CONST in the aot case.
20867
20868         * mini-amd64.h: Turn on PIC AOT code.
20869
20870         * mini.h (mono_arch_get_aot_patch_offset): New arch specific function
20871         returning the offset within an OP_AOTCONST instruction where the GOT
20872         offset needs to be added.
20873
20874         * mini.h: Bump AOT file format version.
20875
20876 2004-11-25  Martin Baulig  <martin@ximian.com>
20877
20878         * mini.c (mono_method_to_ir): In CEE_CALL, don't allow calling any
20879         uninflated generic methods.
20880
20881 2004-11-25  Martin Baulig  <martin@ximian.com>
20882
20883         * mini.c (mono_method_to_ir): Don't allow any uninflated generic methods.
20884
20885 2004-11-24  Martin Baulig  <martin@ximian.com>
20886
20887         * minit.c (type_to_eval_stack_type): Set `inst->klass' to the
20888         original klass (this only applies for generic instances).
20889
20890 2004-11-24  Martin Baulig  <martin@ximian.com>
20891
20892         * mini.c (mono_method_to_ir): Use `STACK_OBJ' instead of
20893         `ldind_type [CEE_LDIND_REF]' (which would be beyond the end of
20894         that array).
20895
20896 2004-11-24  Zoltan Varga  <vargaz@freemail.hu>
20897
20898         * mini.c (mono_method_to_ir): Disable inlining for methods containing
20899         localloc. Fixes #69678.
20900
20901         * iltests.il (test_0_localloc_inline): Add regression test for #69678.
20902         
20903 2004-11-23  Zoltan Varga  <vargaz@freemail.hu>
20904
20905         * mini-amd64.c (mono_arch_output_basic_block): Set %al to the number of
20906         used SSE registers on pinvoke calls. Fixes #69774.
20907
20908 2004-11-23  Geoff Norton  <gnorton@customerdna.com>
20909
20910         * inssel-ppc.brg, mini-ppc.c: Use mono_class_from_mono_type instead of
20911         vt->inst_vtype->data.klass.  This fixes generic structs and bug #69766
20912
20913 2004-11-23  Raja R Harinath  <rharinath@novell.com>
20914
20915         * Makefile.am (MCS,ILASM): Don't refer to runtime/ directory.
20916         Refer directly to the mcs/ tree.
20917
20918 2004-11-19  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20919
20920         * mini-s390.c, tramp-s390.c, mini-s390.h: Add LMF processing for trampolines.
20921         Check if a trampoline for a synchronized method is required. 
20922
20923 Fri Nov 19 17:34:21 CET 2004 Paolo Molaro <lupus@ximian.com>
20924
20925         * mini-ppc.c, cpu-g4.md: set to zero the memory allocated
20926         with localloc if needed. Throe arithmetric exception in
20927         div an rem if needed. Implement ovf checks in OP_LCONV_TO_OVF_I.
20928         Adapted from a patch by Geoff Norton  <gnorton@customerdna.com>.
20929
20930 2004-11-19  Geoff Norton  <gnorton@customerdna.com>
20931
20932         * mini-ppc.c: Call mono_type_get_underlying_type to unwrap generic
20933         types before switching on type.  Fixes #69622.
20934
20935 2004-11-19  Raja R Harinath  <rharinath@novell.com>
20936
20937         * Makefile.am (check-local): New.  Integrate into 'make check'.
20938         (MCS,RUNTIME): Define using in-tree mono and mcs.
20939         (ILASM): New.
20940         (%.exe): Use $(ILASM).
20941
20942 Fri Nov 19 14:54:07 CET 2004 Paolo Molaro <lupus@ximian.com>
20943
20944         * mini-ppc.c: adjust initial prolog size (bug #69691).
20945
20946 2004-11-18  Zoltan Varga  <vargaz@freemail.hu>
20947
20948         * cpu-pentium.md (localloc): Increase max instruction len. Fixes
20949         #69664.
20950
20951 2004-11-17  Raja R Harinath  <rharinath@novell.com>
20952
20953         * Makefile.am (clean-local): Rename from 'clean'.
20954
20955 2004-11-15  Nelae Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
20956
20957         * mini.c, mini-x86.c, mini-amd64.c, exceptions-s390.c: Add siginfo_t parameter
20958         to mono_arch_is_int_overflow. 
20959         * exceptions-s390.c: Add mono_arch_is_int_overflow routine to discern between
20960         SIGFPE events.
20961
20962 2004-11-15  Sebastien Pouliot  <sebastien@ximian.com>
20963
20964         * declsec.c|h: New files to support declarative security attributes.
20965         Added function to check if a method has (applicable) security.
20966         * mini.c|h: Add check for declarative security attributes in
20967         mono_method_check_inlining.
20968         * Makefile.am: Added declsec.c and declsec.h to the build.
20969
20970 Mon Nov 15 11:53:46 CET 2004 Paolo Molaro <lupus@ximian.com>
20971
20972         * mini.c, mini.h: update to keep dynamic code info per-domain.
20973
20974 2004-11-12  Zoltan Varga  <vargaz@freemail.hu>
20975
20976         * mini.c mini-*.h: Get rid of MONO_ARCH_HAVE_RETHROW since all architectures support it now.
20977         (mini_init): Get rid of it from here too.
20978
20979 Thu Nov 11 20:17:17 CET 2004 Paolo Molaro <lupus@ximian.com>
20980
20981         * mini-ppc.c, mini-ppc,h, cpu-g5.md, exceptions-ppc.c:
20982         implemented OP_RETHROW (patch by Geoff Norton
20983         <gnorton@customerdna.com>).
20984
20985 2004-11-10  Geoff Norton  <gnorton@customerdna.com>
20986
20987         * tramp-ppc.c (ppc_magic_trampoline): Don't trampoline methods
20988         between appdomains.  Fixes appdomain-unload on PPC.
20989
20990 2004-10-26  Lluis Sanchez Gual  <lluis@novell.com>
20991
20992         * exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
20993         mini-exceptions.c: handle the new wrapper types.
20994         * mini.c: The CEE_ISINST and CEE_CASTCLASS opcodes now take the
20995         token value as a MonoClass* when compiling a wrapper.
20996         mono_jit_create_remoting_trampoline now takes an additional
20997         MonoRemotingTarget parameter.
20998         
20999 2004-11-10  Martin Baulig  <martin@localhost>
21000
21001         * mini.c (mono_method_to_ir): Use `generic_container->context'
21002         rather than creating a new one.
21003
21004 2004-11-09  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21005
21006         * exceptions-s390.c, mini-s390, cpu-s390.md: Add support for OP_RETHROW.
21007
21008         * inssel-390.md, mini-s390.c: Correct register allocation for globals.
21009
21010 2004-11-09  Zoltan Varga  <vargaz@freemail.hu>
21011
21012         * aot.c (mono_aot_init): Add MONO_AOT_CACHE env variable to turn on
21013         the experimental aot cache stuff.
21014
21015 Tue Nov 9 17:30:20 CET 2004 Paolo Molaro <lupus@ximian.com>
21016
21017         * aot.c, mini.c, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21018         mini-exceptions.c: update to exception clause structure changes.
21019
21020 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21021
21022         * exceptions-x86.c (throw_exception): Fix warnings.
21023
21024         * mini-x86.h mini-x86.c cpu-pentium.md exceptions-x86.c: Add support 
21025         for OP_RETHROW.
21026
21027 2004-11-08  Zoltan Varga  <vargaz@freemail.hu>
21028
21029         * exceptions-sparc.c (get_throw_exception): Really fix this.
21030
21031 2004-11-07  Ben Maurer  <bmaurer@ximian.com>
21032
21033         * tramp-*.c: we no longer support icalls without wrappers, so
21034         a bit of code can be removed here
21035
21036 2004-11-07  Zoltan Varga  <vargaz@freemail.hu>
21037
21038         * exceptions-sparc.c (get_throw_exception): Fix more bugs in previous
21039         patch.
21040
21041         * cpu-sparc.md: Add op_rethrow.
21042
21043         * exceptions-sparc.c (get_throw_exception): Fix bug in previous patch.
21044
21045         * mini-sparc.h mini-sparc.c exceptions-sparc.c: Add support for OP_RETHROW.
21046
21047         * mini.h: Add mono_arch_get_rethrow_exception () arch specific function.
21048         * mini-ops.h: Add OP_RETHROW.
21049
21050         * mini.c inssel.brg: Distinguish between THROW and RETHROW.
21051
21052         * cpu-amd64.c mini-amd64.c exceptions-amd64.c: Add support for OP_RETHROW.
21053
21054 2004-11-05  Geoff Norton  <gnorton@customerdna.com>
21055         
21056         * helpers.c: Change otool arguments from -V -v -t to -v -t on Darwin
21057         Makes the output much easier to read
21058
21059 2004-11-05  Ben Maurer  <bmaurer@ximian.com>
21060
21061         * ssa.c: allocate MonoMethodVar.uses from the mempool. First, this
21062         prevents another huge leak when compiling with ssa. Secondly, the
21063         performance of doing this rather than freeing the lists is much
21064         better. GList does a lock every time you allocate a list link,
21065         so that it can use a memory pool. So, it is better to just use
21066         a memory pool of our own.
21067         
21068         * ssa.c, linear-scan.c: replace g_list_remove_link with
21069         g_list_delete.  The remove one does not free the GList, so we were
21070         leaking memory. On -O=all --compile-all with corlib, this cut down
21071         3 MB of allocations.
21072
21073 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
21074
21075         * tramp-sparc.c (mono_arch_create_jit_trampoline): Fix sparc build.
21076
21077         * tramp-amd64.c (mono_arch_create_jit_trampoline): Fix amd64 build.
21078
21079         * mini.h mini.c tramp-*.c: Moved xp parts of JIT trampoline creation
21080         into a new function mono_create_jit_trampoline ().
21081
21082 2004-11-02  Zoltan Varga  <vargaz@freemail.hu>
21083
21084         * trace.c (get_spec): Allow tracing of classes without a namespace.
21085
21086 2004-11-02  Sebastien Pouliot  <sebastien@ximian.com>
21087
21088         * mini.c: Fix pointer overwrite in mini_method_compile.
21089
21090 2004-11-2  Geoff Norton  <gnorton@customerdna.com>
21091
21092         * inssel-ppc.brg (OP_OUTARG_VT (CEE_LDOBJ (base))):
21093         The darwin ABI needs some special handling for 1 and 2 byte structs
21094         Lets use lbz/lhz instead of lwz everywhere.
21095         * mini-ppc.c (calculate_sizes):  The Darwin ABI needs from special handling
21096         for 1 and 2 byte structs and struct which are size >= 3 || size % 4 != 0.
21097         Use stb/sth for the former, and put the latter always on stack instead of in
21098         argument registers.
21099
21100 2004-10-30  Zoltan Varga  <vargaz@freemail.hu>
21101
21102         * trace.c (is_filenamechar): Add '_'.
21103
21104 2004-10-29  Neale Ferguson  <Neale.Ferguson@SoftwareAG-usa.com>
21105
21106         * mini-s390.c: Fix prolog length to allow for large trace requirements.
21107
21108         * exceptions-s390.c: Remove dwarf unwinding stuff that was unused.
21109
21110 2004-10-29  Zoltan Varga  <vargaz@freemail.hu>
21111
21112         * Makefile.am (libgc_libs): Do some automake magic so libmono/mono
21113         depends on libmonogc. Fixes #68805.
21114
21115 2004-10-26  Miguel de Icaza  <miguel@ximian.com>
21116
21117         * mini.c (mono_jit_free_method): Provide extra information for
21118         this error.  Currently this leaks, but will be turned into a
21119         developer option in the future.
21120
21121 2004-10-26  Zoltan Varga  <vargaz@freemail.hu>
21122
21123         * driver.c (mono_main): Applied patch from Willibald Krenn <willibald.krenn@gmx.at>. Make --graph work for icalls and pinvoke methods.
21124
21125 2004-10-25  Zoltan Varga  <vargaz@freemail.hu>
21126
21127         * aot.c (mono_aot_load_method): Align PATCH_INFO_R8 on an 8 byte 
21128         boundary. Fixes reading of PATCH_INFO_R4 and R8.
21129         (mono_aot_load_method): Do not allocate MonoAotMethod in the GC heap.
21130
21131 2004-10-24  Zoltan Varga  <vargaz@freemail.hu>
21132
21133         * mini-amd64.c (mono_arch_patch_code): Fix patching of class init
21134         trampolines for AOT code.
21135
21136 2004-10-22    <vargaz@freemail.hu>
21137
21138         * aot.c (mono_compile_assembly): Disable AOT for methods containing calls to methods of
21139         constructed types. Fixes #68136.
21140
21141 2004-10-21  Martin Baulig  <martin@ximian.com>
21142
21143         * exceptions-x86.c (throw_exception): Call mono_debugger_throw_exception();
21144         if it returns true, unwind the stack to the call instruction.
21145
21146 2004-10-21    <vargaz@freemail.hu>
21147
21148         * aot.c: Reorganize the AOT file format to avoid relocations. Fix warnings.
21149
21150         * mini.h: Bump AOT version number.
21151
21152         * objects.cs: Add another test for unbox trampolines.
21153
21154         * tramp-amd64.c (amd64_magic_trampoline): Disable patching of trampolines for 
21155         valuetype methods.
21156
21157 2004-10-20    <vargaz@freemail.hu>
21158
21159         * driver.c: Add SHARED to the set of optimizations tested.
21160
21161         * tramp-amd64.c (amd64_magic_trampoline): Patch trampoline code as well.
21162
21163         * mini.c (mono_method_to_ir): Mark the domainvar as volatile when it is implicitly
21164         used by CEE_NEWARR.
21165
21166         * ssa.c (mono_ssa_deadce): Do not optimize away accesses to volatile variables.
21167
21168 2004-10-20  Martin Baulig  <martin@ximian.com>
21169
21170         * mini-exceptions.c (mono_handle_exception): Call
21171         mono_debugger_handle_exception() to tell the debugger about
21172         catch/finally clauses.
21173
21174 2004-10-18  Zoltan Varga  <vargaz@freemail.hu>
21175
21176         * exceptions-amd64.c (mono_arch_find_jit_info): Pop arguments of the stack.
21177
21178         * mini-amd64.c (mono_amd64_get_vcall_slot_addr): Handle extended registers. Fixes
21179         #68447.
21180
21181 2004-10-15  Geoff Norton  <gnorton@customerdna.com>
21182
21183         * mini-ppc.c (calculate_sizes): Marshal valuetypes for pinvoke
21184         methods as their native size, fixed bug #57543, #57545.
21185         * mini-ppc.c (mono_arch_output_basic_block): Use mulli for imm16 types
21186         This saves a temporary register and mullw call down into 1 (minor perf
21187         increase for cases like sum = sum * 5;  This use to translate into:
21188             li r11,5
21189             mullw r28,r28,r11
21190         It now translates to
21191             mulli r28,r28,5
21192
21193 2004-10-15  Zoltan Varga  <vargaz@freemail.hu>
21194
21195         * trace.c (mono_trace_eval): Use mono_method_desc_full_match. Fixes
21196         #68388.
21197
21198 2004-10-11  Martin Baulig  <martin@ximian.com>
21199
21200         * mini.c (mono_method_to_ir): If we're a generic method, get the
21201         MonoGenericContainer from our MonoMethodNormal and create a
21202         MonoGenericContext from it.
21203
21204 2004-10-08  Zoltan Varga  <vargaz@freemail.hu>
21205
21206         * inssel-long32.brg (OP_LCONV_TO_OVF_I2): Fix CONV_I1 -> CONV_I2.
21207
21208         * basic-long.cs: Add test for checked i8->i2 cast.
21209
21210 Wed Oct 6 12:40:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
21211
21212         * inssel-ppc.brg: added a couple of speedup rules.
21213
21214 2004-10-05  Zoltan Varga  <vargaz@freemail.hu>
21215
21216         * Makefile.am (genmdesc_LDADD): Don't link this against libmetadata
21217         to speed up rebuilds.
21218
21219 2004-10-04  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21220
21221         * mini-s390.c: Minor fix to OP_OR_IMM.
21222
21223 2004-10-03  Zoltan Varga  <vargaz@freemail.hu>
21224
21225         * tramp-sparc.c (sparc_magic_trampoline): Handle appdomain stuff
21226         better. Fixes appdomain-unload.exe on sparc.
21227
21228 2004-10-02  Massimiliano Mantione  <massi@ximian.com>
21229
21230         * ssa.c: Fixed casts to unsigned where the value was of 64 bits in
21231         simulate_long_compare, patch by will@exomi.com (Ville-Pertti Keinonen),
21232         see bug 67324.
21233
21234 2004-10-02  Zoltan Varga  <vargaz@freemail.hu>
21235
21236         * jit-icalls.c: Handle a nonexisting trunc function more correctly.
21237
21238 2004-09-30  Lluis Sanchez Gual  <lluis@novell.com>
21239
21240         * mini.c: Always generate a field read/write wrapper for members
21241         of the class MarshalByRefObject since the actual instance could
21242         be a CBO.
21243
21244 2004-09-28  Lluis Sanchez Gual  <lluis@novell.com>
21245
21246         * mini.c: Use mono_thread_exit() to stop threads, instead of ExitThread.
21247
21248 2004-09-28  Zoltan Varga  <vargaz@freemail.hu>
21249
21250         * driver.c mini.h trace.c: Move the setting of the main assembly into
21251         a separate function called mono_trace_set_assembly () and call it after
21252         actually loading the main assembly. Fixes #66872.
21253
21254 2004-09-25  Zoltan Varga  <vargaz@freemail.hu>
21255
21256         * mini-amd64.h mini-amd64.c tramp-amd64.c: Allocate trampoline memory
21257         using the code manager.
21258
21259 2004-09-24  Zoltan Varga  <vargaz@freemail.hu>
21260
21261         * tramp-amd64.c mini-amd64.h: Add support for MONO_ARCH_HAVE_INVALIDATE_METHOD.
21262
21263 2004-09-23  Zoltan Varga  <vargaz@freemail.hu>
21264
21265         * cpu-amd64.md: Fix bug in previous patch.
21266         
21267         * cpu-amd64.md: Fix instruction lengths of membase opcodes. Fixes
21268         #66650.
21269
21270 Wed Sep 22 19:03:20 CEST 2004 Paolo Molaro <lupus@ximian.com>
21271
21272         * mini.h, exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21273         mini-exceptions.c: updates for changed stack walk interface.
21274
21275 2004-09-21  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21276
21277         * mini-s390.c, cpu-s390.md: Minor changes to OP_ARGLIST handling
21278
21279 2004-09-17  Zoltan Varga  <vargaz@freemail.hu>
21280
21281         * mini.c (mono_method_to_ir): Fix LDSTR in dynamic methods. Fixes #66132.
21282
21283 2004-09-13  Zoltan Varga  <vargaz@freemail.hu>
21284
21285         * driver.c (mini_regression_list): Do not call mono_assembly_close 
21286         since assemblies can't be unloaded.
21287         
21288 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21289
21290         * cpu-amd64.md: Fix more instruction lengths.
21291
21292         * cpu-amd64.md: Fix lengths of some instructions.
21293
21294 2004-09-11 Ben Maurer  <bmaurer@users.sourceforge.net>
21295
21296         * inssel.brg: Make the array ldelema check aot friendly.
21297
21298 2004-09-11  Zoltan Varga  <vargaz@freemail.hu>
21299
21300         * mini-amd64.c (mono_arch_get_argument_info): Fix stack_unwind test.
21301
21302         * cpu-amd64.md inssel-long.brg inssel-amd64.brg: Small optimizations.
21303
21304 2004-09-10  Zoltan Varga  <vargaz@freemail.hu>
21305
21306         * mini-x86.c: Fix build.
21307
21308         * mini-sparc.c mini-x86.c mini-amd64.c: Use the new 
21309         mono_type_get_underlying_type () helper function to simplify code.
21310         
21311 2004-09-09  Martin Baulig  <martin@ximian.com>
21312
21313         * mini-amd64.c: Don't access `type->data.klass' directly, call
21314         mono_class_from_mono_type() instead since the type may be a
21315         generic instance.
21316
21317 2004-09-09  Martin Baulig  <martin@ximian.com>
21318
21319         * mini-amd64.c (get_call_info): Fix support for generic instances.
21320         (add_valuetype): Use mono_class_from_mono_type() to get the class
21321         since we can be a generic instance.
21322
21323 Thu Sep 9 01:43:53 PDT 2004 Paolo Molaro <lupus@ximian.com>
21324
21325         * mini-ppc.c, mini.h, regalloc.c, regalloc.h: powerpc speedups.
21326
21327 2004-09-07 Ben Maurer  <bmaurer@users.sourceforge.net>
21328
21329         * liveness.c: reset spill costs on each scan: bug 62107
21330
21331 2004-09-07  Bernie Solomon  <bernard@ugsolutions.com>
21332
21333         * exceptions-sparc.c (mono_arch_find_jit_info): remove
21334         unnecessary line that doesn't compile
21335
21336 2004-09-07  Zoltan Varga  <vargaz@freemail.hu>
21337
21338         * mini.c mini.h mini-x86.h tramp-x86.c: Instead of freeing delegate
21339         trampolines, make them call an error function so people can fix their
21340         code.
21341
21342 2004-09-06  Martin Baulig  <martin@ximian.com>
21343
21344         * mini.c (mono_method_to_ir): When initializing locals, handle a
21345         generic instances like a valuetype if it's a valuetype and like a
21346         class if it's a class.
21347
21348 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21349
21350         * exceptions-x86.c (mono_arch_find_jit_info): Pop arguments off the
21351         stack. Fixes #64674.
21352
21353         * exceptions.cs: Add test for unwinding of call arguments.
21354
21355 Mon Sep 6 05:50:02 PDT 2004 Paolo Molaro <lupus@ximian.com>
21356
21357         * mini-*.c, mini-ops.h, inssel-long32.brg: introduced
21358         OP_ADDCC_IMM and OP_SUBCC_IMM (add/sub immediate that will
21359         set the carry/borrow flag). The sparc and s390 implementations
21360         can now use optimized versions (and simplify the code). ppc bugfixes.
21361
21362 2004-09-06  Zoltan Varga  <vargaz@freemail.hu>
21363
21364         * exceptions-ppc.c (mono_arch_find_jit_info): Fix memory leak.
21365
21366 2004-09-05  Zoltan Varga  <vargaz@freemail.hu>
21367
21368         * inssel-amd64.brg: Remove leftover 32 bit rule.
21369
21370         * mini-amd64.c (mono_arch_instrument_prolog): Fix tracing support.
21371
21372 2004-09-04  Zoltan Varga  <vargaz@freemail.hu>
21373
21374         * mini-exceptions.c (mono_find_jit_info): Refactor common code from
21375         mono_arch_find_jit_info functions into a new function. Fix a memory
21376         leak.
21377
21378         * exceptions-x86.c exceptions-amd64.c exceptions-sparc.c: Remove
21379         refactored code.
21380         
21381 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21382
21383         * exceptions.cs inssel-long32.brg: Handle the OP_LCONV_TO_OVF_I2 case
21384         as well.
21385         
21386         * exceptions.cs: Add array size tests.
21387
21388         * mini.c: Allocate a separate icall wrapper for each arity of 
21389         mono_array_new_va. Fixes #59509.
21390
21391         * exceptions.cs: Add testcase for 64578.
21392
21393         * inssel-long32.brg: Fix OP_LCONV_TO_OVF_I1 rule. Fixes #64578.
21394
21395         * trace.c (is_filenamechar): Allow 0..9 in strings. Fixes #65094.
21396         
21397 2004-09-02  Martin Baulig  <martin@ximian.com>
21398
21399         * mini.c (mono_method_to_ir): When initializing the locals, call
21400         handle_initobj() on the generic instance itself, not its
21401         underlying type.
21402
21403 2004-09-02  Zoltan Varga  <vargaz@freemail.hu>
21404
21405         * mini.h (MonoJitDynamicMethodInfo): New structure, extension of 
21406         MonoJitInfo for dynamic methods.
21407
21408         * mini.c: Rename trampoline_hash_mutex to jit_mutex.
21409
21410         * mini.c: Add support for freeing JIT data for dynamic methods.
21411         
21412 2004-09-01  Martin Baulig  <martin@ximian.com>
21413
21414         * mini-x86.c (is_regsize_var): Added support for generic
21415         instances.
21416         (mono_arch_emit_prolog): Make this compile again, use
21417         `x86_push_imm_template (code)'.
21418
21419 2004-08-30 Ben Maurer  <bmaurer@users.sourceforge.net>
21420
21421         * mini-x86.c: make all push_imm instructions that get
21422         patched always emit the long form
21423
21424 2004-08-30  Zoltan Varga  <vargaz@freemail.hu>
21425
21426         * mini.c (mono_create_jump_trampoline): Store the jump trampolines 
21427         in a per-domain hash.
21428
21429         * mini-amd64.c (merge_argument_class_from_type): Handle generic
21430         types.
21431
21432 2004-08-29  Zoltan Varga  <vargaz@freemail.hu>
21433
21434         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: Ongoing SSE
21435         work.
21436         
21437         * mini-amd64.c cpu-amd64.md inssel-amd64.brg mini-amd64.h: More SSE
21438         work.
21439
21440         * mini-amd64.c cpu-amd64.md: Implement checked int<->uint casts.
21441         Beginnings of SSE2 support.
21442
21443         * exceptions.cs: Add more tests for checked int<->uint casts.
21444
21445 2004-08-28  Martin Baulig  <martin@ximian.com>
21446
21447         * mini-x86.c (mono_arch_instrument_epilog): Added support for
21448         generic instances.
21449
21450         * mini.c
21451         (mono_type_to_ldind, mono_type_to_stind, type_to_eval_stack_type):
21452         Handle generic instances recursively.
21453
21454 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21455
21456         * iltests.il: test for conv.u8 on a constant
21457
21458 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21459
21460         * inssel-long32.brg: c&p rules for LCONV_x4 (membase) and
21461         LCONV_x4 (shrun_32 (membase)).
21462
21463 2004-08-27 Ben Maurer  <bmaurer@users.sourceforge.net>
21464
21465         * inssel-x86.brg: c&p rules for push/setret of long
21466
21467 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21468
21469         * inssel-x86.brg: c&p rules for compare (base, regvar) and
21470         compare (regvar, base)
21471
21472         * inssel-x86.brg: more burg love
21473
21474         * inssel.brg: more cleanup
21475
21476         * inssel-x86.brg, inssel-long32.brg: burg cleanup.
21477
21478 2004-08-26 Ben Maurer  <bmaurer@users.sourceforge.net>
21479
21480         * basic-long.cs, basic-calls.cs: new tests for optimization.
21481
21482 2004-08-26  Zoltan Varga  <vargaz@freemail.hu>
21483
21484         * mini-amd64.c (read_tls_offset_from_method): Fix typo in previous
21485         patch.
21486
21487 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21488
21489         * mini-amd64.c (read_tls_offset_from_method): Add another case.
21490         
21491 2004-08-25  Bernie Solomon  <bernard@ugsolutions.com>
21492
21493         * inssel.brg (mini_emit_memcpy): use 
21494         NO_UNALIGNED_ACCESS to disable memcpy optimization
21495
21496 2004-08-25  Zoltan Varga  <vargaz@freemail.hu>
21497
21498         * mini-amd64.c: Handle generic types in various places.
21499
21500         * mini.c (mono_method_to_ir): Handle generic types in init locals.
21501
21502 2004-08-24  Zoltan Varga  <vargaz@freemail.hu>
21503
21504         * mini.c (handle_box): Fix warning.
21505
21506         * mini-amd64.c (mono_arch_local_regalloc): Fix regalloc problem.
21507
21508         * mini-amd64.h: Enable the emit_state optimization.
21509
21510         * mini-ops.h cpu-amd64.md: Add new amd64_test_null opcode.
21511
21512         * mini-amd64.c: Add some new 64 bit peephole opts.
21513
21514         * inssel.brg (mini_emit_memcpy): Optimize for 64 bit architectures.
21515
21516         * cpu-amd64.md: sreg1 of div instructions must be %rax.
21517
21518         * mini-amd64.c: Register allocator fixes.
21519
21520         * mini.c: Add an optimization to emit_state to avoid allocation of new
21521         registers on some platforms.
21522
21523 2004-08-23  Zoltan Varga  <vargaz@freemail.hu>
21524
21525         * inssel-x86.brg inssel-amd64: Add yet another missing tree->dreg assignment.
21526
21527         * mini-x86.c (mono_arch_local_regalloc): Fix bug in long register
21528         allocation. Fixes #63085.
21529
21530         * basic-long.cs: Add new regression test.
21531
21532         * mini-amd64.c: Register allocator improvements.
21533
21534 2004-08-21  Zoltan Varga  <vargaz@freemail.hu>
21535
21536         * mini-amd64.c (read_tls_offset_from_method): Add another code
21537         sequence.
21538
21539         * tramp-amd64.c (amd64_class_init_trampoline): Use a more efficient
21540         instruction sequence for nullifying class init trampolines.
21541
21542         * objects.cs: Add new regalloc test.
21543
21544         * mini-amd64.c inssel-amd64.brg: Optimize parameter passing.
21545
21546 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21547
21548         * mini-amd64.c (mono_arch_call_opcode): Refactor this a little.
21549         
21550         * mini-amd64.c (mono_arch_regalloc_cost): Adjust regalloc costs for
21551         arguments.
21552
21553         * driver.c: Fix profiling after TLS changes.
21554         
21555         * driver.c (mono_main): Set mono_stats.enabled if needed.
21556
21557         * mini.c (handle_alloc): New helper function used by CEE_NEWOBJ and
21558         CEE_BOX.
21559
21560 2004-08-20 Ben Maurer  <bmaurer@users.sourceforge.net>
21561
21562         * mini-x86.c: use a 1 op rather than a 2 op tls access
21563         instruction -> faster.
21564
21565 2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
21566
21567         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from
21568         x86 backend.
21569
21570 2004-08-19 Bernie Solomon <bernard@ugsolutions.com>
21571
21572         * exceptions-sparc.c (throw_exception): fix typo
21573
21574 2004-08-19 Ben Maurer  <bmaurer@users.sourceforge.net>
21575
21576         * mini-x86.c, cpu-pentium.md, inssel-x86.brg:
21577         set tree->dreg correctly with tls. Allow any
21578         register to be used.
21579
21580         * mini-x86.c (read_tls_offset_from_method): add new code
21581         generation pattern seen with GCC.
21582
21583
21584 Thu Aug 19 17:26:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
21585
21586         * mini-exceptions.c, exceptions-x86.c, exceptions-amd64.c,
21587         exceptions-ppc.c, exceptions-s390.c, exceptions-s390x.c,
21588         exceptions-sparc.c: fix some performance issues in exception
21589         handling and setting of the stack trace for exceptions that were
21590         already thrown.
21591
21592 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21593
21594         * mini-amd64.c inssel-amd64.brg cpu-amd64.md: Merge changes from 
21595         x86 backend.
21596         
21597         * mini-amd64.c (mono_arch_is_int_overflow): Handle all possible 
21598         registers.
21599
21600 2004-08-18 Ben Maurer  <bmaurer@users.sourceforge.net>
21601
21602         This patch inlines tls access, when possible.
21603         
21604         * mini.h: new arch functions for TLS intrinsics.
21605         All platforms updated with a stub.
21606
21607         * mini.c: use the new intrinsics
21608
21609         * mini-x86.c, cpu-pentium.md, inssel-x86.brg, mini-ops.h:
21610         arch specific intrinsic for tls variables
21611
21612 2004-08-18  Zoltan Varga  <vargaz@freemail.hu>
21613
21614         * Makefile.am (libmono_la_LDFLAGS): Enable creating of libmono dll
21615         under windows.
21616
21617 2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
21618
21619         * mini.c: thread local allocation
21620
21621 2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
21622
21623         * mini-amd64.h (MONO_ARCH_NO_EMULATE_LONG_SHIFT_OPS): Enable.
21624
21625         * Makefile.am: Link against the static version of libmonogc.
21626         
21627         * Makefile.am: Link the static versions of the convenience libraries
21628         into the mono executable.
21629
21630         * mini-x86.h mini-x86.c: Throw the correct exception on integer overflow.
21631
21632 2004-08-15  Zoltan Varga  <vargaz@freemail.hu>
21633
21634         * mini.h mini.c mini-amd64.h mini-amd64.c: Throw the correct exception
21635         on integer overflow.
21636
21637         * mini-amd64.c: Reorganize function call code.
21638
21639         * mini-amd64.c (peephole_pass): Merge changes from mini-x86.c.
21640
21641 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21642
21643         * inssel-x86.brg: use xor eax,eax.
21644         
21645         * basic.cs: new tests
21646
21647 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21648
21649         * mini-amd64.c (mono_arch_emit_epilog): Use RIP relative addressing
21650         in exception throwing code.
21651         
21652 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21653
21654         * inssel-x86.brg: use xor esi,esi.
21655
21656 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21657
21658         * driver.c (mono_main): Call mono_trace_parse_options earlier so it
21659         can trace methods compiled during mini_init () too.
21660
21661         * cpu-amd64.md mini-amd64.c (mono_arch_output_basic_block): Handle 
21662         CEE_CONV_U4.
21663
21664 2004-08-14 Ben Maurer  <bmaurer@ximian.com>
21665
21666         * Makefile.am: static link on x86 (r=zoltan)
21667
21668 2004-08-14  Zoltan Varga  <vargaz@freemail.hu>
21669
21670         * tramp-amd64.c (amd64_magic_trampoline): Avoid patching the trampoline
21671         code since it causes some programs to fail.
21672
21673 2004-08-12  Zoltan Varga  <vargaz@freemail.hu>
21674
21675         * mini-amd64.c (bb_is_loop_start): Merge changes from mini-x86.c.
21676
21677 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21678
21679         * mini.c: ovfops_op_map - add STACK_OBJ case for
21680         CONV_I 
21681         * basic.cs: add test_0_pin_string as test
21682         case for above.
21683
21684 2004-08-11  Bernie Solomon <bernard@ugsolutions.com>
21685
21686         * Makefile.am: build C# if srcdir != builddir
21687
21688 Tue Aug 10 19:23:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
21689
21690         * dominators.c, mini.h, mini-x86.c: fix loop alignment with
21691         fall-through blocks.
21692
21693 Tue Aug 10 16:18:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
21694
21695         * driver.c: enable loop by default again and include abcrem in -O=all.
21696
21697 2004-08-08  Zoltan Varga  <vargaz@freemail.hu>
21698
21699         * iltests.il: Add some localloc tests.
21700
21701         * mini.c (mono_method_to_ir): Set stack type of LOCALLOC correctly.
21702
21703         * inssel-amd64.brg inssel-x86.brg: Set dreg of LOCALLOC correctly. 
21704         Fixes #62574.
21705
21706         * inssel-amd64.brg: Add some optimizations.
21707
21708         * mini-amd64.c (mono_arch_setup_jit_tls_data): Add tls offset detection
21709         for gcc-3.4.
21710
21711         * Makefile.am: Statically link mono against libmono on AMD64.
21712         
21713         * mini-amd64.c inssel-amd64.brg: Optimizations.
21714
21715 2004-08-07  Zoltan Varga  <vargaz@freemail.hu>
21716
21717         * mini-amd64.c (mono_arch_emit_prolog): Optimize lmf saving a bit.
21718
21719         * tramp-amd64.c: Patch calling code in trampolines.
21720
21721 2004-08-06  Zoltan Varga  <vargaz@freemail.hu>
21722
21723         * mini-amd64.c: pinvoke struct passing fixes.
21724
21725 2004-08-05  Bernie Solomon  <bernard@ugsolutions.com>
21726
21727         * mini-sparc.c: redo change, make mono_arch_cpu_init call
21728         mono_arch_cpu_optimizazions so sparcv9 is initialized when embedded
21729
21730 2004-08-05  Duncan Mak  <duncan@ximian.com>
21731
21732         * mini.c: Renamed CEE_STELEM to CEE_STELEM_ANY and CEE_LDELEM to
21733         CEE_LDELEM_ANY.
21734
21735 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21736
21737         * mini-amd64.c (emit_move_return_value): Move return value for normal
21738         calls too.
21739
21740 2004-08-05  Martin Baulig  <martin@ximian.com>
21741
21742         * mini.c (ret_type_to_call_opcode): Don't use a `t' variable for
21743         `type->type'; just modify `type' itself when dealing with enums
21744         and generic instances.
21745         (check_call_signature): Make `simple_type' a `MonoType *'.
21746
21747 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21748
21749         * mini.c: Use OP_PADD to add offsets to addresses.
21750
21751         * mini-amd64.h: Disable SIGSEGV_ON_ALTSTACK.
21752
21753 2004-08-04  Bernie Solomon  <bernard@ugsolutions.com>
21754
21755         * mini-sparc.c (mono_arch_emit_epilog): fix check
21756         for folding last op into restore instruction
21757
21758 2004-08-05  Zoltan Varga  <vargaz@freemail.hu>
21759
21760         * exceptions-amd64.c (mono_arch_get_throw_exception_by_name): Allocate
21761         helper methods using the code manager.
21762         
21763         * exceptions-amd64.c (mono_arch_get_throw_exception): Fix maximum length.
21764
21765         * mini-amd64.c (mono_arch_allocate_vars): Fix tls offset detection.
21766
21767 Tue Aug 3 23:50:00 EST 2004 Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21768         
21769         * mini-s390x.c mini-s390x.h tramp-s390x.c inssel-s390x.brg
21770           cpu-s390x.md exceptions-s390x.c Makefile.am: S/390 64-bit JIT
21771
21772         * mini-s390.c: fix tail processing
21773
21774 Tue Aug 3 01:35:44 PDT 2004 Paolo Molaro <lupus@ximian.com>
21775
21776         * mini-ppc.c: mul.ovf.un exception name fix.
21777
21778 2004-08-03  Martin Baulig  <martin@ximian.com>
21779
21780         * mini-x86.c (mono_arch_call_opcode): Correctly handle generic
21781         instances; before jumping to `handle_enum', also modify `ptype'.
21782
21783 2004-08-02  Bernie Solomon  <bernard@ugsolutions.com>
21784
21785         * cpu-sparc.md: fcall maximal length too small.
21786
21787 2004-08-02  Zoltan Varga  <vargaz@freemail.hu>
21788
21789         * mini-amd64.c mini.h: Add initial support for passing/returning 
21790         structures to/from pinvoked methods.
21791
21792 Mon Aug 2 11:59:35 PDT 2004 Paolo Molaro <lupus@ximian.com>
21793
21794         * mini-ppc.c: reg allocator fix.
21795
21796 2004-07-31  Zoltan Varga  <vargaz@freemail.hu>
21797
21798         * mini-amd64.c (mono_arch_output_basic_block): Fix OP_X86_PUSH_OBJ.
21799
21800         * inssel.brg: Optimize memset on 64 bit machines.
21801
21802         * mini-amd64.c: Fix some vararg cases.
21803
21804 2004-07-30  Neale Ferguson <Neale.Ferguson@SoftwareAG-usa.com>
21805
21806         * mini-s390.c: Corrected macro in emit_float_to_int
21807
21808         * s390-abi.cs: Tests to exercise the s390 ABI
21809
21810 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21811
21812         * exceptions-amd64.c (mono_arch_find_jit_info): Fix restoring of
21813         caller saved regs.
21814
21815         * basic.cs: Add a test for add.ovf.un.
21816
21817 2004-07-30  Bernie Solomon  <bernard@ugsolutions.com>
21818
21819         * mini-sparc.c: add case for OP_IDIV_UN
21820
21821 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21822
21823         * mini-amd64.c mini-amd64.h mini.c: Add support for vararg pinvoke calls.
21824         
21825         * mini-amd64.c cpu-amd64.md: Ongoing JIT work.
21826
21827 2004-07-30  Ben Maurer  <bmaurer@ximian.com>
21828
21829         * basic.cs: regression tests.
21830
21831         * inssel-x86.brg: Disable cmp BYTE PTR [eax], imm, it causes various
21832         regressions.
21833
21834 2004-07-30  Zoltan Varga  <vargaz@freemail.hu>
21835
21836         * basic.cs: Add a new test.
21837
21838         * mini-amd64.c aot.c cpu-amd64.md: Add support for tracing, profiling 
21839         and AOT. Various fixes and optimizations.
21840
21841         * inssel.brg (CALL_REG): Add 64 bit versions of call_reg rules.
21842
21843 Fri Jul 30 15:49:26 CEST 2004 Paolo Molaro <lupus@ximian.com>
21844
21845         * mini-ppc.c: make sure temp regs are not used for global reg
21846         allocation.
21847
21848 2004-07-29  Bernie Solomon  <bernard@ugsolutions.com>
21849
21850         * cpu-sparc.md: conv_i8 fix for 64bits
21851
21852         * mini-sparc.c: add cases for OP_IXXX codes for 64bits
21853
21854 2004-07-29  Ben Maurer  <bmaurer@ximian.com>
21855         
21856         * cpu-pentium.md, mini-x86.c, inssel-x86.brg, mini-ops.h:
21857         add opcode for cmp BYTE PTR [eax], imm.
21858
21859         * inssel.brg: Make memcpy and memset takes bases.
21860
21861 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21862
21863         * *-amd64.*: More AMD64 work.
21864         
21865 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21866
21867         * cpu-pentium.md, inssel-x86.brg, mini-ops.h, mini-x86.c:
21868         add a compare-not-equal opcode.
21869         
21870 2004-07-28  Lluis Sanchez Gual  <lluis@novell.com>
21871
21872         * mini.c: Use mono_init_from_assembly instead of mono_init.
21873         
21874 2004-07-28  Zoltan Varga  <vargaz@freemail.hu>
21875
21876         * mini.c: Fix opcode mapping for STACK_MP on 64 bit platforms.
21877
21878         * mini.c (CEE_NEWOBJ): Call mono_array_new_va using the correct signature.
21879
21880         * mini.c: Use MONO_ARCH_SIGACTION on AMD64 as well.
21881
21882         * inssel.brg: 64 bit fixes.
21883
21884         * mini.h (MonoCallInst): Add some AMD64 specific data.
21885
21886         * mini.h: Add some OP_P opcodes.
21887
21888 2004-07-28  Ben Maurer  <bmaurer@ximian.com>
21889
21890         * basic.cs: tests for 61797 and 61740
21891
21892 Tue Jul 27 16:05:19 CEST 2004 Paolo Molaro <lupus@ximian.com>
21893
21894         * mini-ppc.c, mini-sparc.c, mini-s390.c: keep track of line
21895         numbers in the debug info (spotted by Geoff Norton, <gnorton@customerdna.com>).
21896
21897 2004-07-24  Zoltan Varga  <vargaz@freemail.hu>
21898
21899         * mini-sparc.c (mono_arch_output_basic_block): Add CEE_CONV_U8/I8.
21900
21901         * *-amd64*.*: Ongoing AMD64 work.
21902
21903 2004-07-23 Zoltan Varga <vargaz@freemail.hu>
21904
21905         * inssel-long.brg: Implement CONV_I8/CONV_U8 in the backends.
21906
21907         * *-amd64*: Ongoing AMD64 work.
21908
21909         * mini-arch.h: Add AMD64 support.
21910
21911         * mini-sparc.c (mono_arch_is_inst_imm): New arch dependent function.
21912
21913         * mini.h: Add new arch dependent function mono_arch_is_inst_imm.
21914
21915         * mini-ops.h: Add new opcodes.
21916
21917         * Makefile.am: Add AMD64 support.
21918
21919         * inssel.brg inssel-long32.brg inssel-long.brg: Move mul/div and shift
21920         rules into the inssel-long*.brg files.
21921
21922         * *-amd64.*: Add beginnings of AMD64 backend.
21923
21924 2004-07-22  Ben Maurer  <bmaurer@ximian.com>
21925
21926         * mini.c (print_dfn): commenting out the code that prints
21927         the cil. With -O=deadce, this makes -v -v crash.
21928         
21929         * cpu-pentium.md: make checkthis have a length of 2
21930
21931 2004-04-21  Bernie Solomon  <bernard@ugsolutions.com>
21932
21933         * mini-sparc.h: fix implementations of __builtin
21934         functions for Sun compiler for V9.
21935
21936 2004-07-16  Ben Maurer  <bmaurer@ximain.com>
21937
21938         * mini.c: use the new stelem.ref wrapper
21939         * exceptions.cs, arrays.cs: new stelem.ref tests
21940
21941 Wed Jul 14 19:08:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
21942
21943         * mini-ppc.c, exceptions-ppc.c: cleanups and fixes (the
21944         new XSP should work with these changes).
21945
21946 2004-07-14  Ben Maurer  <bmaurer@ximain.com>
21947         
21948         * inssel-{long32,x86,}.brg: trivial optimizations.
21949         
21950 Mon Jul 12 20:25:57 CEST 2004 Paolo Molaro <lupus@ximian.com>
21951
21952         * mini.c: load value when emitting box operation in
21953         constrained calls.
21954
21955 2004-07-12  Ben Maurer  <bmaurer@ximian.com>
21956
21957         * mini-x86.c (OP_CHECK_THIS): cmp DWORD PTR [eax], eax
21958         is one byte shorter than cmp DWORD PTR [eax], 0.
21959
21960 Mon Jul 12 17:47:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
21961
21962         * inssel-ppc.brg: arguments on the stack are always
21963         relative to the stack pointer (spotted by Neale Ferguson).
21964
21965 2004-07-11 Gonzalo Paniagua Javier <gonzalo@ximian.com>
21966
21967         * exceptions-x86.c: delay appending the method name to the trace until
21968         after mono_jit_info_table_find is called, as this gets the real
21969         MonoMethod.
21970
21971 2004-07-09  Ben Maurer  <bmaurer@ximian.com>
21972
21973         * aot.c: register roots
21974
21975 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21976
21977         * aot.c : I could just use PLATFORM_WIN32 flag.
21978
21979 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21980
21981         * aot.c : Reverting the previous fix. This time it broke linux build.
21982
21983 2004-07-09  Atsushi Enomoto  <atsushi@ximian.com>
21984
21985         * aot.c : quick cygwin build fix. mkdir() with two args does not exist.
21986
21987 2004-07-08  Zoltan Varga  <vargaz@freemail.hu>
21988
21989         * mini.c (handle_stack_args): Remove some more debugging code.
21990         
21991         * mini.c (handle_stack_args): Remove debug output left in by mistake.
21992
21993         * driver.c mini.h aot.c: Allow additional options to be specified with
21994         --aot and pass them to mono_compile_assembly.
21995
21996         * aot.c: Add experimental code to AOT compile all loaded assemblies
21997         on demand and save the code into a cache in the filesystem.
21998
21999         * aot.c: Add support for more wrapper methods.
22000         
22001         * mini.c (handle_stack_args): Handle some corner cases. Fixes 
22002         58863.
22003
22004         * cpu-*.md: Remove removed opcodes.
22005
22006         * mini.h mini.c: Move JIT icall handling to icall.c. Replace usage of
22007         CEE_MONO_PROC<x> with CEE_MONO_ICALL. Move registration of marshalling
22008         related icalls to marshal.c.
22009
22010 2004-07-06  Zoltan Varga  <vargaz@freemail.hu>
22011
22012         * mini-ops.h: Add OP_SAVE_LMF and OP_RESTORE_LMF.
22013
22014         * Makefile.am (EXTRA_DIST): Add inssel-long[32].brg.
22015
22016         * inssel.brg: Fix warning. Add rules for SAVE_LMF and RESTORE_LMF.
22017
22018 2004-07-06  Ben Maurer  <bmaurer@ximian.com>
22019         * liveness.c: If liveness is recomputated we need to reset the information
22020         for each variable. This way, if the liveness range has been narrowed
22021         by optimizations that happened after the last computation, we can return
22022         a smaller range.
22023         
22024         For example, if you have
22025         
22026         {
22027                 int i = 0;
22028                 
22029                 // Tons of code that does not affect i
22030                 
22031                 i = foo ();
22032                 ...
22033         }
22034         
22035         i = 0 is dead code and will be removed by SSA. However, when
22036         linear scan gets to the code, i will still appear to be live
22037         throughout the entire block. This prevents good register allocation.
22038
22039 2004-07-06  Martin Baulig  <martin@ximian.com>
22040
22041         * debug-mini.c (mono_debug_init_method): Allow
22042         MONO_WRAPPER_MANAGED_TO_NATIVE wrappers.
22043         (mono_debug_add_icall_wrapper): New method.
22044
22045         * mini.c (mono_icall_get_wrapper): Call mono_debug_add_icall_wrapper().
22046
22047 2004-07-05  Zoltan Varga  <vargaz@freemail.hu>
22048
22049         * mini.c (optimize_branches): Fix linking of bblocks in branch->branch
22050         optimization.
22051
22052 2004-07-03  Zoltan Varga  <vargaz@freemail.hu>
22053
22054         * aot.c (mono_aot_load_method): Fix loading of debug info.
22055
22056 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22057
22058         * aot.c: Add logging support.
22059
22060 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22061
22062         * mini.h: Add prototype for mono_print_method_from_ip.
22063
22064         * mini.c: 64 bit fixes. Use LCOMPARE for comparing longs.
22065
22066         * inssel.brg: 64 bit fixes.
22067
22068         * inssel.brg inssel-long32.brg: Move 32 bit arithmetic rules to 
22069         inssel-long32.brg.
22070
22071         * Makefile.am: Add SPARC64 support.
22072
22073 2004-07-02  Zoltan Varga  <vargaz@freemail.hu>
22074
22075         * aot.c: Fix alignment problems on 32 bit platforms.
22076
22077 2004-07-01  Zoltan Varga  <vargaz@freemail.hu>
22078
22079         * helpers.c (mono_disassemble_code): Pass -xarch=v9 to assembler on
22080         SPARC64.
22081
22082         * aot.c: Add SPARC64 support. Reorganize patch table to fix alignment
22083         problems.
22084
22085         * mini.h: Bump AOT file version. Some 64 bit fixes.
22086
22087 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22088
22089         * inssel-sparc.brg: Add new rule to avoid register moves.
22090
22091         * inssel.brg: Add ldind_to_load_membase helper function.
22092
22093 2004-06-30  Ben Maurer  <bmaurer@ximian.com>
22094
22095         * mini.c: OffsetToStringData intrinsic.
22096         
22097 2004-06-30  Zoltan Varga  <vargaz@freemail.hu>
22098
22099         * ssa.c: Handle OP_LCOMPARE the same as OP_COMPARE.
22100
22101         * objects.cs exceptions.cs basic.cs basic-long.cs basic-calls.cs: New
22102         regression tests.
22103
22104         * mini-ops.h cpu-sparc.md mini-sparc.h mini-sparc.c exceptions-sparc.c tramp-sparc.c inssel-long.brg: Add SPARC64 support.
22105 Mon Jun 28 18:05:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22106
22107         * mini.c: reinstated mono_compile_get_interface_var()
22108         on x86, too, since the change breaks the Gtk# build there as well.
22109
22110 Fri Jun 25 17:36:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22111
22112         * driver.c: remove loop from the default optimizations: it seems to
22113         interact badly with some of the other options (see bug #60613).
22114
22115 2004-06-25  Zoltan Varga  <vargaz@freemail.hu>
22116
22117         * mini.c mini-x86.h mini-x86.c: Applied patch from Guenter Feldmann 
22118         (fld@informatik.uni-bremen.de): Add Solaris x86 support.
22119
22120 Tue Jun 22 21:29:11 CEST 2004 Paolo Molaro <lupus@ximian.com>
22121
22122         * mini-ppc.c, cpu-g4.md: small updates to be able to compile
22123         vararg-using methods.
22124
22125 2004-06-21  Martin Baulig  <martin@ximian.com>
22126
22127         * mini/mini-exceptions.c
22128         (mono_handle_exception): Added `gpointer original_ip' argument.
22129         After calling mono_unhandled_exception(), call
22130         mono_debugger_unhandled_exception() and if that returns true,
22131         restore the context and return.
22132
22133 Mon Jun 21 19:26:40 CEST 2004 Paolo Molaro <lupus@ximian.com>
22134
22135         * mini-ppc.c: prefer the use of relative branches so
22136         they won't need to be patched in aot code (patch from Patrick Beard).
22137
22138 Mon Jun 21 19:03:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22139
22140         * aot.c: patch from Patrick Beard to make the output assembly
22141         more correct for the MacOSX assembler. Small tweak to
22142         generate sane images on Linux/PPC, too.
22143
22144 Fri Jun 18 18:24:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22145
22146         * mini.c, mini.h, mini-ppc.c: handle varargs methods with a special
22147         case until bug #59509 is fixed (shows up in #60332).
22148
22149 Tue Jun 15 16:36:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22150
22151         * mini.c: make sure the needed wrappers are compiled, too, with
22152         precomp.
22153
22154 Mon Jun 14 18:36:08 CEST 2004 Paolo Molaro <lupus@ximian.com>
22155
22156         * driver.c: remove NPTL reference in --version output.
22157
22158 Sun Jun 13 17:25:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22159
22160         * aot.c: patch from Patrick Beard (pcbeard@mac.com) to
22161         generate valid assembly for the Mach-O assembler.
22162
22163 Sun Jun 13 15:59:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22164
22165         * driver.c: don't include abcrem in the all optimization specifier
22166         since it slows down jit compilation too much for now.
22167
22168 2004-06-12 Ben Maurer  <bmaurer@users.sourceforge.net>
22169
22170         * mini.c: use BIGMUL only if both operands have the same signage.
22171         * iltests.il: Test for bug 60056. (errors related to signage in
22172         BIGMUL).
22173
22174         r=lupus.
22175
22176 Thu Jun 10 16:06:42 CEST 2004 Paolo Molaro <lupus@ximian.com>
22177
22178         * mini.c, aot.c: memory leak fixes.
22179
22180 Tue Jun 8 16:37:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22181
22182         * inssel-long32.brg: implemented a few missing ulong cast opcodes.
22183
22184 Tue Jun 8 15:36:30 CEST 2004 Paolo Molaro <lupus@ximian.com>
22185
22186         * Makefile.am: remove the -static hack completely, it links in
22187         statically glib as well.
22188
22189 Sat Jun 5 16:32:33 CEST 2004 Paolo Molaro <lupus@ximian.com>
22190
22191         * iltests.il, mini.c: fixed bug#59580 in branch optimization.
22192         * exceptions.cs: make it compile with new mcs/csc.
22193
22194 2004-06-03 Massimiliano Mantione <massi@ximian.com>
22195         * cpu-pentium.md basic-float.cs Fixed bug on fpu spills (see bug 54467),
22196         and added relevant test case.
22197
22198 Mon May 31 19:41:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22199
22200         * mini.c revert Zoltan's fix to bug#58863 on ppc, since it causes
22201         regressions in gtk-sharp.
22202
22203 2004-05-29  Zoltan Varga  <vargaz@freemail.hu>
22204
22205         * exceptions.cs: New regression tests.
22206
22207         * jit-icalls.c (mono_llmult_ovf): Fix some boundary conditions.
22208
22209 Sat May 29 10:45:58 CEST 2004 Paolo Molaro <lupus@ximian.com>
22210
22211         * mini.c: emit castclass/isinst in their own trees (bug #54209/59057).
22212
22213 2004-05-28  Zoltan Varga  <vargaz@freemail.hu>
22214
22215         * mini-sparc.h (MONO_ARCH_NEED_DIV_CHECK): Define this.
22216
22217         * cpu-sparc.md mini-sparc.c: Add overflow detection to div opcodes.
22218
22219 2004-05-28      Patrik Torstensson <totte@hiddenpeaks.com>
22220
22221         * mini.c (mono_jit_runtime_invoke): Init class in this
22222         method instead of trusting mono_jit_compile_method to
22223         do the work (because wrappers can be in object class)
22224
22225 2004-05-27  Zoltan Varga  <vargaz@freemail.hu>
22226
22227         * mini-sparc.c (mono_arch_output_basic_block): Fix sub.imm.
22228
22229         * basic-long.cs: New regression test.
22230
22231 Thu May 27 15:50:52 CEST 2004 Paolo Molaro <lupus@ximian.com>
22232
22233         * cpu-g4.md, mini-ppc.c: fixes to long add/sub ovf opcodes
22234         and div/rem checks.
22235
22236 Thu May 27 12:36:53 CEST 2004 Paolo Molaro <lupus@ximian.com>
22237
22238         * Makefile.am: fix miguel's change to build mono statically against
22239         libmono (track build dependencies).
22240
22241 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22242
22243         * cfold.c: Some glib versions do not have G_MININT32.
22244
22245 2004-05-26  Massimiliano Mantione  <massi@ximian.com>
22246
22247         * mini-x86.c cpu-pentium.md Makefile.am basic-math.cs: Fixed problem
22248         with precision of tan, atan, sin and cos, and implemented related
22249         regressions tests (fixes bug 54467, but one new problem appeared and
22250         is not fixed yet).
22251
22252 2004-05-26  Zoltan Varga  <vargaz@freemail.hu>
22253
22254         * cfold.c (FOLD_BINOPZ): Avoid division by zero.
22255
22256         * exceptions.cs: Add test for constant folding && division by zero.
22257
22258         * driver.c mini.h mini.c mini-x86.c: Revert most of the previous patch
22259         since driver.c is in libmono too, so the optimization was useless.
22260
22261         * driver.c mini.h mini.c mini-x86.c: Moved the mono_lmf_addr TLS 
22262         variable to driver.c so the compiler can emit more efficient code to
22263         access them.
22264
22265 2004-05-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22266
22267         * Makefile.am: don't distribute generated inssel.[ch] files.
22268
22269 2004-05-25  Zoltan Varga  <vargaz@freemail.hu>
22270
22271         * mini.c (mono_jit_compile_method_with_opt): Really emit icall wrappers
22272         into the default appdomain. Fixes #58707.
22273
22274         * jit-icalls.c: Remove the broken approximation for truncl, doing
22275         no conversion is better.
22276
22277         * mini.c (handle_stack_args): Avoid reusing variables for stack slots.
22278         Fixes #58863.
22279
22280 Tue May 25 14:33:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22281
22282         * mini-ops.h, mini-ppc.c, cpu-g4.md, inssel-ppc.brg: eliminate the use
22283         of the mcrxr instruction which is not available on some processors
22284         even if it's documented to be. Implement add and sub overflow correctly
22285         (still not complete for long unsigned). Speed up icalls a bit.
22286
22287 2004-05-25 13:01 CET Patrik Torstenson <totte@hiddenpeaks.com>
22288
22289         * mini.c (mono_jit_compile_method_with_opt): Make sure that
22290         we run .cctor in the current domain instead of target_domain.
22291         
22292         Fixes bug #58558, .cctor not being called in -O=shared.
22293
22294 Tue May 25 12:46:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22295
22296         * mini-ppc.h, jit-icalls.c: added explicit checks for divide by zero.
22297
22298 2004-05-24 Ben Maurer  <bmaurer@users.sourceforge.net>
22299
22300         * mini-x86.c (EMIT_COND_BRANCH): If an OP_LABEL has an offset
22301         which can be done with an imm8, do it that way.
22302         (mono_arch_output_basic_block): ditto for a jmp
22303         (mono_arch_emit_prolog): Computate maximum offset of a label.
22304
22305 2004-05-24 18:18 CET Patrik Torstenson <totte@hiddenpeaks.com>
22306
22307         * mini-x86.c (mono_arch_local_regalloc): the reg allocator
22308         now tries to allocate prefered physical reg's for virtual
22309         regs. This reduces the number of emited spills/loads with
22310         20-30% on our core assemblies.
22311
22312 Mon May 24 18:21:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22313
22314         * jit-icalls.c: truncl() is not needed and trunc() is
22315         the correct thing to do anyway (bug #58287).
22316
22317 2004-05-24  Zoltan Varga  <vargaz@freemail.hu>
22318
22319         * mini-sparc.c (mono_arch_flush_icache): Call sync_instruction_memory
22320         if available.
22321
22322 Mon May 24 12:49:45 CEST 2004 Paolo Molaro <lupus@ximian.com>
22323
22324         * driver.c: enable loop optimizations by default.
22325
22326 Mon May 24 11:13:46 CEST 2004 Paolo Molaro <lupus@ximian.com>
22327
22328         * mini-x86.c: fix calc of max loop size when aligning loops start.
22329
22330 2004-05-23  Zoltan Varga  <vargaz@freemail.hu>
22331
22332         * ssa.c (mono_ssa_cprop): Allocate carray dynamically instead of on
22333         the stack.
22334
22335 2004-05-22  Zoltan Varga  <vargaz@freemail.hu>
22336
22337         * mini-sparc.c (mono_arch_output_basic_block): ADD_IMM and SUB_IMM
22338         should set carry.
22339
22340         * basic-long.cs: Add tests for add/subtract of immediates with carry.
22341
22342         * mini.c exceptions-x86.c: Remove MONO_USE_EXC_TABLES stuff.
22343         
22344         * mini.c (inline_method): Allways inline some wrappers even if the cost
22345         is too large. Fixes #58785.
22346
22347         * mini.c: Add support for MARSHAL_CONV_FTN_DEL.
22348         
22349 2004-05-21  Zoltan Varga  <vargaz@freemail.hu>
22350
22351         * mini-sparc.c exceptions-sparc.c: Applied patch from Mark Crichton
22352         (crichton@gimp.org). Beginning of support for sparc/linux.
22353
22354         * mini-sparc.c: Optimize retrieval of LMF address.
22355
22356 Fri May 21 08:00:12 EDT 2004 Paolo Molaro <lupus@ximian.com>
22357
22358         * exceptions-ppc.c:  handle alloca in methods with clauses.
22359
22360 Fri May 21 07:35:30 EDT 2004 Paolo Molaro <lupus@ximian.com>
22361
22362         * mini-ppc.c: cleanups, off-by-one fixes, avoid recursive thunks.
22363
22364 2004-05-20  Lluis Sanchez Gual  <lluis@ximian.com>
22365
22366         * mini.c: Delegate most of the abort signal work to 
22367           mono_thread_request_interruption, which also handles Stop and Suspend
22368           states.
22369
22370 2004-05-20  Zoltan Varga  <vargaz@freemail.hu>
22371
22372         * mini.c mini.h: Allow inlining of icall wrappers if the backend 
22373         supports the save/restore lmf opcodes.
22374
22375 2004-05-19  Zoltan Varga  <vargaz@freemail.hu>
22376
22377         * mini-x86.c (mono_arch_setup_jit_tls_data): Handle code generated
22378         by gcc-3.4 as well.
22379
22380         * mini-x86.h mini-x86.c tramp-x86.c: Optimize lmf restoring code.
22381
22382 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22383
22384         * mini.h mini.c (mini_method_compile): Only run abc removal pass on 
22385         methods which contain array accesses.
22386
22387         * mini.c (CEE_LDTOKEN): Handle this instruction correctly on bb
22388         boundaries. Fixes #58537.
22389
22390         * iltests.il: Add regression test for #58537.
22391
22392 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22393
22394         * mini-x86.c (mono_arch_local_regalloc): Last part of
22395         fix for bug #58633 (releasing register to early).
22396
22397 2004-05-18  Miguel de Icaza  <miguel@ximian.com>
22398
22399         * basic-long.cs: Add new regression test.
22400
22401 2004-05-18  Patrik Torstensson <totte@hiddenpeaks.com>
22402
22403         * mini-x86.c (mono_arch_local_regalloc): Avoid releasing a
22404         register too early on the chain.
22405
22406 2004-05-18  Zoltan Varga  <vargaz@freemail.hu>
22407
22408         * mini.c (create_helper_signature): Use a helper function to reduce
22409         the code which needs to be written. Also set the calling convention of
22410         icalls on windows. Fixes #57840.
22411
22412 Tue May 18 11:05:18 CEST 2004 Paolo Molaro <lupus@ximian.com>
22413
22414         * mini.h, exceptions-x86.c, exceptions-sparc.c, exceptions-s390.c,
22415         exceptions-ppc.c: added helper function to get the instruction address
22416         from a signal handler context.
22417
22418 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22419
22420         * helpers.c: use g_get_tmp_dir. Invokes happyness 
22421         from gonzalo.
22422
22423 2004-05-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22424
22425         * helpers.c: Add new env variable to pass args to objdump.
22426         Specifically for those of us who love -Mintel. r=miguel, gonzalo.
22427
22428 2004-05-17  Radek Doulik  <rodo@ximian.com>
22429
22430         * Makefile.am (common_sources): added abcremoval.h so it get
22431         disted and daily mono packages on go-mono.com will build again
22432
22433 2004-05-17  Massimiliano Mantione  <massi@ximian.com>
22434
22435         * abcremoval.c: Fixed coding style, added copyright header.
22436
22437         * abcremoval.h: Fixed style and moved prototype to mini.h, added copyright header.
22438
22439         * mini.h: Added prototype for abc removal main function.
22440
22441         * build_relations_propagation_table.pl: Added copyright header.
22442
22443 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22444
22445         * basic-long.cs: reg test for complex ceq_long bug.
22446
22447 2004-05-16      Patrik Torstensson <totte@hiddenpeaks.com>
22448
22449         * mini-x86.c (mono_arch_local_regalloc): Correctly free 
22450         reg in long and clob case (bug #58343). Fixed/added comments.
22451
22452 2004-05-14 Ben Maurer  <bmaurer@users.sourceforge.net>
22453
22454         * mini.c (mono_jit_runtime_invoke): Follow new convention
22455         of calling the invoke method with an function pointer.
22456
22457 2004-05-14  Zoltan Varga  <vargaz@freemail.hu>
22458
22459         * ChangeLog: Fix author of memory leak patch.
22460
22461 Fri May 14 15:13:06 CEST 2004 Paolo Molaro <lupus@ximian.com>
22462
22463         * Makefile.am: fix make dist as well...
22464
22465
22466 2004-05-14  Massimiliano Mantione  <massi@ximian.com>
22467
22468         * cfold.c: Made so that conversions from pointer to int4 are no-ops
22469         on archs where pointers are 4 bytes long.
22470
22471         * Makefile.am: Added abcremoval.c source file.
22472
22473         * abcremoval.c: Added abcremoval.c.
22474
22475         * abcremoval.h: Added abcremoval.h.
22476
22477         * build_relations_propagation_table.pl: Added build_relations_propagation_table.pl.
22478
22479         * inssel.brg: Enabled bounds check removal.
22480
22481         * mini.c: Added support for abcrem optimization.
22482
22483         * mini.h: Added abcrem optimization label.
22484
22485         * driver.c: Added support for abcrem optimization.
22486
22487         * propagated_relations_table.def: Added propagated_relations_table.def.
22488
22489 Fri May 14 14:30:13 CEST 2004 Paolo Molaro <lupus@ximian.com>
22490
22491         * mini.c, cfold.c: fix style.
22492
22493 Fri May 14 14:28:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22494
22495         * mini.c: handle issue with the low-level implementation of
22496         some long opcodes (bug #54209).
22497
22498 2004-05-13 Ben Maurer  <bmaurer@users.sourceforge.net>
22499
22500         * basic.cs: test for my new cmov stuff.
22501
22502 2004-05-13      Patrik Torstensson
22503
22504         * mini-x86.c: added OP_X86_COMPARE_MEMBASE_IMM peephole
22505         opt and added peephole documentation.
22506
22507 Thu May 13 11:41:49 CEST 2004 Paolo Molaro <lupus@ximian.com>
22508
22509         * tramp-ppc.c: rewrote the generic trampoline code.
22510
22511 2004-05-11      Patrik Torstensson
22512
22513         * mini-x86.c: optimize long shl/shr asm code (one less branch)
22514
22515 2004-05-11  Zoltan Varga  <vargaz@freemail.hu>
22516
22517         * basic.cs basic-long.cs objects.cs: Make these compile under MS csc.
22518
22519         * mini.h mini.c dominators.c: Applied patch from Derek Woo
22520         (derek@eecg.toronto.edu): Fix memory leaks in loop optimizations.
22521
22522         * mini.c: Add new icalls for AsAny marshalling.
22523
22524 Tue May 11 16:00:38 CEST 2004 Paolo Molaro <lupus@ximian.com>
22525
22526         * tramp-ppc.c, mini-ppc.c: more cleanups.
22527
22528 2004-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22529
22530         * mini.c: no warnings.
22531
22532 Tue May 11 13:59:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22533
22534         * mini-ppc.c, mini.c: use mono_resolve_patch_target ().
22535
22536 2004-05-11  Lluis Sanchez Gual  <lluis@ximian.com>
22537
22538         * mini.c: In the thread abort signal handler, if the thread is in the
22539         process of being stoped, don't throw the Abort exception, just stop the
22540         thread.
22541
22542 Tue May 11 12:15:24 CEST 2004 Paolo Molaro <lupus@ximian.com>
22543
22544         * tramp-ppc.c: removed old code.
22545
22546 Tue May 11 12:02:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22547
22548         * mini.h, mini-ppc.c, cfold.c: export mono_is_power_of_two().
22549         do some simple speed optimizations on ppc.
22550
22551 Mon May 10 17:21:00 CEST 2004 Paolo Molaro <lupus@ximian.com>
22552
22553         * mini-ppc.c, cpu-g4.md: fixes to handle large stack frames
22554         and large offsets in load/store.
22555
22556 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22557
22558         * mini-x86.c (mono_arch_local_regalloc): Remove the previous fix, since
22559         it causes regressions.
22560
22561 2004-05-07  Zoltan Varga  <vargaz@freemail.hu>
22562
22563         * mini-sparc.c: Fix vararg support + add beginnings of sigaltstack
22564         support.
22565
22566 Fri May 7 13:25:50 CEST 2004 Paolo Molaro <lupus@ximian.com>
22567
22568         * jit-icalls.c: remove warnings.
22569         * inssel-x86.brg, inssel.brg, mini-x86.c, cfold.c: some simple
22570         speedups for unsafe code.
22571
22572 2004-05-07 Ben Maurer  <bmaurer@users.sourceforge.net>
22573
22574         * inssel.brg: Optimize Stind.[ui][12]. r=zoltan.
22575
22576 2004-05-06  Zoltan Varga  <vargaz@freemail.hu>
22577
22578         * basic-calls.cs: Add new regression test.
22579
22580         * mini.c (mono_runtime_install_handlers): Use SA_ONSTACK since it is
22581         more portable.
22582
22583         * mini.c (mono_method_to_ir): Handle opcode emulation for *_OVF opcodes.
22584
22585         * mini-x86.c (mono_arch_local_regalloc): Free new_dest register when it
22586         is no longer used.
22587
22588 2004-05-06      Patrik Torstensson
22589
22590         * mini-x86.[c|h], inssel-x86.brg, cpu-pentium.md, mini.c: enabled
22591         long reg allocation in any reg (not only eax:edx) and implemented 
22592         long shl/shr ops in asm instead of helpers.
22593
22594 2004-05-05  Zoltan Varga  <vargaz@freemail.hu>
22595
22596         * mini-sparc.h: Fix warnings.
22597
22598         * exceptions-sparc.c (mono_arch_find_jit_info): Pop unused lfm off the
22599         stack.
22600
22601         * mini-exceptions.c (mono_handle_exception): Call the filter in a
22602         separate statement for clarity.
22603
22604         * mini-sparc.c: Update status.
22605
22606 2004-05-04  Zoltan Varga  <vargaz@freemail.hu>
22607
22608         * mini-exceptions.c (ves_icall_get_frame_info): Flush register windows
22609         here.
22610
22611 Mon May 3 22:58:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22612
22613         * inssel-ppc.brg: another small pre-release workaround:
22614         we don't do overflow detection for long_sub_un.
22615
22616 Sun May 2 20:12:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22617
22618         * mini.c, mini-ops, inssel-long32.brg: speedup ulong >> 32
22619         (also works around a weird ppc bug: 57957).
22620
22621 Sat May 1 16:56:10 EDT 2004 Paolo Molaro <lupus@ximian.com>
22622
22623         * tramp-ppc.c: trampoline fixes.
22624
22625 Fri Apr 30 15:54:26 EDT 2004    Paolo Molaro <lupus@ximian.com>
22626
22627         * mini-ppc.c: fixed typos.
22628
22629 Thu Apr 29 20:15:41 CEST 2004 Paolo Molaro <lupus@ximian.com>
22630
22631         * mini-ppc.c, exceptions-ppc.c: more code saves registers
22632         at the top of the stack. Fixed typos. Use a frame registers
22633         for all the methods with exception clauses.
22634
22635 Thu Apr 29 18:52:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22636
22637         * exceptions-ppc.c: restore fp registers.
22638
22639 Thu Apr 29 18:26:56 CEST 2004 Paolo Molaro <lupus@ximian.com>
22640
22641         * mini-ppc.c, exceptions-ppc.c: save the registers in reverse
22642         order from the stack top (moved the stack room to save the
22643         return value for trace after the param area). Fixed corruption
22644         in restoring registers on unwind.
22645
22646 Thu Apr 29 16:47:15 CEST 2004 Paolo Molaro <lupus@ximian.com>
22647
22648         * mini-ppc.c, cpu-g4.md: fixed unisgned -> double conversion.
22649
22650 Thu Apr 29 13:50:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22651
22652         * exceptions-ppc.c, mini-ppc.h, mini-ppc.c: fixed localloc
22653         and prolog/epilog for methods that use it. Allow
22654         enough param area room for varargs methods. Fix miguel's
22655         breakage in exception handling.
22656
22657 Thu Apr 29 12:06:51 CEST 2004 Paolo Molaro <lupus@ximian.com>
22658
22659         * Makefile.am: run genmdesc only on current arch.
22660
22661 2004-04-29  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22662
22663         * exceptions-x86.c:
22664         * mini-x86.h: fix the build on windows.
22665
22666 2004-04-28  Zoltan Varga  <vargaz@freemail.hu>
22667
22668         * 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.
22669
22670         * exceptions-sparc.c exceptions-ppc.c exceptions-s390.c mini-ppc.h mini-s390.h mini-sparc.h: Fix up ports after changes.
22671
22672         * mini-exceptions.c: New file.
22673         
22674         * mini.c mini-exceptions.c mini-x86.h exceptions-x86.c Makefile.am:
22675         Move some parts of the x86 exception handling code to an 
22676         arch-independent file so it can be shared with other ports.
22677
22678 Tue Apr 27 12:15:59 CEST 2004 Paolo Molaro <lupus@ximian.com>
22679
22680         * trace.c, cpu-g4.md, inssel-ppc.brg, mini-ppc.c: some fixes for FP code.
22681
22682 2004-04-26  David Waite  <mass@akuma.org>
22683
22684         * driver.c: remove comma from end of enumeration declaration
22685
22686 2004-04-26  Jackson Harper  <jackson@ximian.com>
22687
22688         * driver.c: parse config file before loading first assembly. This
22689         allows the user gac to be enabled/disabled. 
22690         
22691 2004-04-23  Miguel de Icaza  <miguel@ximian.com>
22692
22693         * mini-ppc.c (ppc_patch): Replaced the branch code patching with a
22694         simpler mechanism: we do not care what is encoded initially
22695         (branch absolute or relative), we care about the code and its
22696         target.  I kept the old code for reference for now.
22697
22698         The new code tries first to determine if the jump is anywhere in
22699         the -/+32 absolute meg range, if it succeeds, it encodes using the
22700         absolute branch;  If not, it tried to find something in the
22701         relative range, if not, it uses the handle_thunk code. 
22702
22703 Fri Apr 23 14:20:40 EDT 2004 Paolo Molaro <lupus@ximian.com>
22704
22705         * exceptions-ppc.c: use the correct ip register on macosx.
22706
22707 Thu Apr 22 13:23:16 EDT 2004 Paolo Molaro <lupus@ximian.com>
22708
22709         * exceptions.c, mini.c, mini-ppc.h: adapt code to macosx.
22710
22711 Thu Apr 22 18:08:37 CEST 2004 Paolo Molaro <lupus@ximian.com>
22712
22713         * mini-ppc.c, cpu-g4.md: made the branch macros more flexible.
22714         Raise exception on integer divide by zero by hand since the hw
22715         doesn't support it. Handle NaNs in FP compares.
22716
22717 Thu Apr 22 16:10:31 CEST 2004 Paolo Molaro <lupus@ximian.com>
22718
22719         * exceptions-ppc.c, mini-ppc.h, mini.c: simplified some
22720         code reducing duplication between the platforms and enabled
22721         signal exception handling (on linux for now).
22722
22723 Wed Apr 21 12:27:48 EDT 2004 Paolo Molaro <lupus@ximian.com>
22724
22725         * exceptions-ppc.c: more macosx support.
22726
22727 Wed Apr 21 16:38:28 CEST 2004 Paolo Molaro <lupus@ximian.com>
22728
22729         * mini-ppc.h, mini-ppc.c, cpu-g4.md: enable bigmul optimization.
22730
22731 Wed Apr 21 16:20:32 CEST 2004 Paolo Molaro <lupus@ximian.com>
22732
22733         * mini.h, mini-ppc.c, cpu-g4.md: support for implicit exceptions.
22734
22735 2004-04-19 Ben Maurer  <bmaurer@users.sourceforge.net>
22736
22737         * iltests.il: more tests.
22738
22739 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22740
22741         * mini-*.c (mono_arch_get_allocatable_int_vars): Skip written-only
22742         vars as well.
22743
22744 Mon Apr 19 19:39:47 CEST 2004 Paolo Molaro <lupus@ximian.com>
22745
22746         * mini-ppc.c: some fixes to bootstrap mcs/corlib/etc.
22747
22748 2004-04-19  Zoltan Varga  <vargaz@freemail.hu>
22749
22750         * liveness.c: Mark variables as volatile in all basic blocks reachable
22751         from exception clauses.
22752
22753 2004-04-18  Zoltan Varga  <vargaz@freemail.hu>
22754
22755         * exceptions.cs (test_0_rethow_stacktrace): Make this work with
22756         inlining.
22757
22758 2004-04-18 Ben Maurer  <bmaurer@users.sourceforge.net>
22759
22760         * iltests.il, basic.cs: more tests for regalloc.
22761
22762 2004-04-17 Ben Maurer  <bmaurer@users.sourceforge.net>
22763
22764         * iltests.il: Some tests for register allocation modifications
22765         I have locally.
22766
22767 2004-04-16  Zoltan Varga  <vargaz@freemail.hu>
22768
22769         * exceptions.cs: Add regression test for bug #56782.
22770
22771         * exceptions-*.c (mono_arch_handle_exception): Do not overwrite the
22772         original stack trace if an exception is rethrown. Fixes #56782. Oh,
22773         the beauty of fixing the same thing in 5 different files...
22774
22775 2004-04-15  Zoltan Varga  <vargaz@freemail.hu>
22776
22777         * mini.c (mono_method_to_ir): Do not compute coverage for inlined
22778         methods.
22779
22780 2004-04-14  Zoltan Varga  <vargaz@freemail.hu>
22781
22782         * mini.c: Add support for STRWLPARRAY marshalling convention.
22783
22784 Wed Apr 14 18:15:55 CEST 2004 Paolo Molaro <lupus@ximian.com>
22785
22786         * exceptions-ppc.c: missing fixes in mono_jit_walk_stack (need
22787         to init the context to setup the regs pointer).
22788
22789 Wed Apr 14 17:59:09 CEST 2004 Paolo Molaro <lupus@ximian.com>
22790
22791         * exceptions-ppc.c: more exceptions work.
22792
22793 Wed Apr 14 17:46:22 CEST 2004 Paolo Molaro <lupus@ximian.com>
22794
22795         * mini.c: avoid reusing the same MonoInst on multiple trees: this is
22796         not allowed.
22797
22798 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22799
22800         * inssel-x86.brg (reg): Add new rules for add, sub and mul that
22801         can use the memory directly.
22802
22803         * cpu-pentium.md: Update documentation from a post from Zoltan. 
22804
22805         add x86_add_membase, x86_sub_membase, x86_mul_membase
22806
22807 2004-04-13  Miguel de Icaza  <miguel@ximian.com>
22808
22809         * mini-ppc.c: Remove unused definitions FLOAT_REGS and
22810         GENERAL_REGS they were also hardcoded for all PPC ports.
22811
22812         (add_general): Use PPC_NUM_REG_ARGS instead of GENERAL_REGS.
22813
22814         Remove hard-coded limit for floating point registers, use
22815         PPC_LAST_FPARG_REG instead in MONO_TYPE_R4 and MONO_TYPE_R8.
22816
22817         Notice that in MacOS X calling conventions you can fit a lot more
22818         floating point values in registers, so I should update the PInvoke
22819         test to excercise the passing of floating point values on the
22820         stack (currently broken).
22821         
22822 2004-04-06  Miguel de Icaza  <miguel@ximian.com>
22823
22824         * tramp-ppc.c (create_trampoline_code): Added
22825         JUMP_TRAMPOLINE_SIZE. 
22826         (ppc_magic_trampoline): Follow the pattern from
22827         x86_magic_trampoline: if code is set to zero, return. 
22828         (create_trampoline_code): Always pass MonoMethod to the jump
22829         trampoline, before it was passing a null.
22830         (mono_arch_create_jump_trampoline): Implement the jump stub, could
22831         share the code with mono_arch_create_jit_trampoline. 
22832
22833         * mini-ppc.c (mono_arch_output_basic_block): CEE_JMP opcode
22834         implemented.
22835         (mono_arch_patch_code): MONO_PATCH_INFO_METHOD_JUMP patch type
22836         implemented.  
22837
22838         * cpu-g4.md: Added length for jmp instruction, the worst case
22839         scenario is 92 bytes (4 mandatory bytes, potential 19 registers
22840         for save_lmf).
22841
22842 2004-04-08  Zoltan Varga  <vargaz@freemail.hu>
22843
22844         * aot.c (mono_compile_assembly): Add back unlink removed by mistake.
22845
22846 2004-04-07  Zoltan Varga  <vargaz@freemail.hu>
22847
22848         * mini.c: Only set bblock->real_offset when adding a new bblock, and
22849         before each IL instruction.
22850
22851         * mini.c (CEE_BOX): Fix warnings.
22852
22853 2004-04-07  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22854
22855         * mini.c: removed a few unused vars and extra whitespace.
22856
22857 2004-04-05 Ben Maurer  <bmaurer@users.sourceforge.net>
22858
22859         * inssel.brg (MONO_EMIT_BOUNDS_CHECK): a new macro to emit bounds
22860         checks.
22861         (MONO_EMIT_BOUNDS_CHECK_IMM): the above, but when you know the
22862         index.
22863         (OP_GETCHR): use the above
22864         (CEE_LDELEMA): use the above.
22865
22866         * inseel-x86.brg (MONO_EMIT_BOUNDS_CHECK): a faster and smaller
22867         version of the generic impl.
22868         (MONO_EMIT_BOUNDS_CHECK_IMM): the same
22869         (CEE_LDELEMA): use the above.
22870
22871 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22872
22873         * inssel-long32.brg (CEE_CONV_OVF_I8): Sign extend the i4 value to i8.
22874         Fixes #56317.
22875
22876         * iltests.il: Added new regression test for #56317.
22877
22878 2004-04-05  Zoltan Varga  <vargaz@freemail.hu>
22879
22880         * mini-x86.c (mono_arch_setup_jit_tls_data): Use pthread_attr_get_np
22881         under NetBSD. Fixes #56450.
22882
22883         * liveness.c (update_gen_kill_set): Fix previous patch.
22884
22885 2004-04-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22886
22887         * mini-x86.h: SA_STACK defined as SA_ONSTACK. Fixed build under NetBSD.
22888
22889 2004-04-02  Zoltan Varga  <vargaz@freemail.hu>
22890
22891         * mini.c (mono_method_to_ir): Avoid handle_loaded_temps in
22892         ldsfld and ldsflda.
22893
22894         * inssel-sparc.brg: Add more optimizations.
22895
22896         * mini-sparc.c: Replace multiply/divide with shifts if possible.
22897
22898 2004-04-01  Martin Baulig  <martin@ximian.com>
22899
22900         * mini.c (handle_box): New static function; moved the
22901         implementation of CEE_BOX here.
22902         (mono_method_to_ir): Added `constrained_call' variable.
22903         (mono_method_to_ir:CEE_CONSTRAINED_): Set it.
22904         (mono_method_to_ir:CEE_CALL): If `constrained_call' is set, use
22905         mono_method_get_constrained() to get the method.
22906
22907 2004-04-01  Martin Baulig  <martin@ximian.com>
22908
22909         * mini.c (TYPE_PARAM_TO_TYPE, TYPE_PARAM_TO_CLASS): Removed.
22910         (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): Removed.
22911         (mono_method_to_ir): We don't need these macros anymore since
22912         mono_class_get_full() already takes care of it. 
22913
22914 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22915
22916         * aot.c: set aot_verbose to 0, fixed format string that caused sigsegv,
22917         use @function (as doesn't accept #function here) and check the return
22918         value of system and stop if fails.
22919
22920 2004-03-31  Gonzalo Paniagua Javier <gonzalo@ximian.com>
22921
22922         * mini.c: set the timeout to 2s when calling mono_domain_finalize.
22923
22924 2004-03-31  Zoltan Varga  <vargaz@freemail.hu>
22925
22926         * mini-ppc.c (mono_arch_patch_code): Fix ppc build.
22927
22928         * inssel-sparc.brg mini-sparc.c aot.c: Implement AOT support.
22929
22930         * inssel-long32.brg (OP_LNEG): Use ADC instead of ADD here. Fixes
22931         #56223.
22932
22933         * basic-long.cs: Add test for negation of Int64.MinValue.
22934
22935 2004-03-30  Zoltan Varga  <vargaz@freemail.hu>
22936
22937         * mini-sparc.c: Update status.
22938
22939         * mini-sparc.c tramp-sparc.c: Save lmf in trampolines.
22940
22941         * exceptions-sparc.c: Fix return value in filters.
22942
22943         * inssel-sparc.brg: Fix register allocation in some rules.
22944
22945 2004-03-28  Martin Baulig  <martin@ximian.com>
22946
22947         * mini.c (mmono_method_to_ir): In CEE_STELEM, do a handle_stobj()
22948         if neccessary.  
22949
22950 2004-03-28  Zoltan Varga  <vargaz@freemail.hu>
22951
22952         * mini-x86.c (mono_arch_patch_code): Fix warnings.
22953         
22954         * mini-x86.c (mono_arch_output_basic_block): Fix CEE_MUL_OVF_UN if 
22955         dreg is not EAX. Thanks to Willibard Krenn for spotting this. Also
22956         remove unused conv_u4 opcode.
22957
22958         * mini-x86.c: Remove valgrind workaround since it slows down things
22959         even when mono is not run under valgrind.
22960
22961 2004-03-26  Zoltan Varga  <vargaz@freemail.hu>
22962
22963         * mini-sparc.c: Update status.
22964
22965         * inssel-sparc.brg: Add some optimizations.
22966
22967         * inssel-sparc.brg mini-sparc.c: Rework branch instructions to allow
22968         future delay slot filling. Add support for varargs, tail calls and JMP.
22969
22970         * inssel.brg mini-ops.h mini.c: Use OP_REFANYTYPE instead of 
22971         CEE_REFANYTYPE, since CEE_REFANYTYPE needs a prefix to be unique.
22972
22973         * inssel.brg: Fix register allocation in OP_ARGLIST.
22974
22975         * inssel.brg: Fix warnings.
22976
22977 2004-03-25  Martin Baulig  <martin@ximian.com>
22978
22979         * mini.c (inflate_generic_field): Removed.
22980         (mini_get_method): Removed, use mono_get_method_full(),
22981         (mini_get_class): Removed, use mono_class_get_full().
22982         (mono_method_to_ir): Pass our generic context to
22983         mono_field_from_token().        
22984
22985 2004-03-25  Martin Baulig  <martin@ximian.com>
22986
22987         * mini.c (mini_get_class): Take a `MonoGenericContext *' instead
22988         of a `MonoMethod *'.
22989         (mini_get_method): Take a `MonoGenericContext *' instead
22990         of a `MonoMethod *'.
22991         (TYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_TYPE): mono_method_to_ir() has
22992         a new local variable called `generic_context' which holds the
22993         current `MonoGenericContext *'; use it to lookup things.
22994
22995 2004-03-24  Martin Baulig  <martin@ximian.com>
22996
22997         * mini.c (mini_get_class): New static method; if we're inside a
22998         generic instance, inflate the class if neccessary.
22999         (mono_method_to_ir): Use mini_get_class() instead of mono_class_get().
23000
23001 2004-03-24  Zoltan Varga  <vargaz@freemail.hu>
23002
23003         * iltests.il: New regression test for #55976.
23004
23005         * mini.c (mono_method_to_ir): Empty the stack in endfinally. Fixes
23006         #55976.
23007
23008 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23009
23010         * exceptions-sparc.c (mono_sparc_handle_exception): Remove debugging
23011         output.
23012
23013 2004-03-23  Zoltan Varga  <vargaz@freemail.hu>
23014
23015         * liveness.c: Consider SSA stores as well as loads when making vars
23016         volatile.
23017
23018         * exceptions.cs: New regression tests for register allocation.
23019         
23020 2004-03-22  Lluis Sanchez Gual  <lluis@ximian.com>
23021
23022         * mini-ppc.c, tramp-ppc.c: Added lock for accessing the domain code manager.
23023         * mini.c: Removed domain lock from mono_jit_compile_method_with_opt. Use
23024           domain lock only to protect puntual access to data structures.
23025           Added access lock for sighash, jit_icall_hash_name, 
23026           jit_icall_hash_addr and domain->code_mp.
23027
23028 2004-03-20  Zoltan Varga  <vargaz@freemail.hu>
23029
23030         * driver.c: Print SIGSEGV handling method.
23031
23032         * mini-x86.c (mono_arch_free_jit_tls_data): Add missing ifdef.
23033
23034         * mini.c (setup_jit_tls_data): Handle case when this is called
23035         multiple times for a thread.
23036
23037         * mini-x86.c cpu-pentium.md: Fix floating point branch opcodes so fbxx 
23038         is different from fbxx_un. Fixes #54303. Also use constants instead of
23039         magic numbers in a lot of places.
23040
23041 2004-03-19  Zoltan Varga  <vargaz@freemail.hu>
23042
23043         * exceptions.cs: Fix cctor test when --regression is used.
23044
23045 Thu Mar 18 19:57:56 CET 2004 Paolo Molaro <lupus@ximian.com>
23046
23047         * mini-ppc.c, exceptions-ppc.c: basic exceptions support 
23048         for Linux/ppc.
23049
23050 Thu Mar 18 19:56:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23051
23052         * inssel-ppc.brg: fixed register assignments for some rules.
23053
23054 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23055
23056         * exceptions.cs: Add test for exceptions in static constructors.
23057
23058         * mini.c (mono_jit_compile_method_with_out): Move the calling of
23059         static constructors outside the domain lock. Fixes #55720.
23060
23061 2004-03-17  Martin Baulig  <martin@ximian.com>
23062
23063         * mini.c (get_generic_field_inst): Removed, this'll never happen.
23064         (inflate_generic_field): Take the `MonoMethod *' instead of the
23065         `MonoClass *' and added support for generic method.
23066         (mono_method_to_ir): In CEE_LDSFLD and CEE_STSFLD, assert we never
23067         have a `field->parent->gen_params', only inflate the field if it's
23068         an open constructed type.
23069
23070 2004-03-17  Zoltan Varga  <vargaz@freemail.hu>
23071
23072         * exceptions-x86.c (mono_arch_handle_exception): Allocate a new
23073         exception object instead of the preconstructed ones.
23074
23075 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23076
23077         * mini.c: reverted changed to sigsegv_signal_handler commited
23078         accidentally in the previous patch.
23079
23080 2004-03-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23081
23082         * mini.c:
23083         (mono_method_to_ir): CEE_CALLVIRT, abort if no method. It hanged when
23084         running --aot with an old assembly.
23085
23086 2004-03-16  Zoltan Varga  <vargaz@freemail.hu>
23087
23088         * mini-sparc.c (mono_arch_instrument_epilog): Fix handling of floating
23089         point values.
23090
23091         * mini-sparc.c: Add support for v9 branches with prediction.
23092
23093 2004-03-15  Bernie Solomon  <bernard@ugsolutions.com>
23094
23095         * mini.c (mini_init): #warning is GNUC only
23096
23097         * mini-sparc.h: implement __builtin_frame_address
23098         and __builtin_return_address for Sun C compiler
23099
23100 2004-03-15  Zoltan Varga  <vargaz@freemail.hu>
23101
23102         * exceptions-sparc.c (mono_arch_has_unwind_info): Add missing function.
23103
23104 2004-03-14  Zoltan Varga  <vargaz@freemail.hu>
23105
23106         * basic-calls.cs: Add test for unaligned byref long argument passing.
23107
23108         * mini-ops.h: Add sparcv9 compare and branch instructions.
23109
23110         * inssel-sparc.brg mini-sparc.h mini-sparc.c cpu-sparc.md: Use some
23111         v9 instructions if we have a v9 cpu.
23112
23113         * mini-sparc.c (mono_arch_get_global_int_regs): Use unused input
23114         registers for global allocation.
23115
23116         * exceptions-sparc.c: Fixes.
23117         
23118 2004-03-11  Zoltan Varga  <vargaz@freemail.hu>
23119
23120         * liveness.c (mono_analyze_liveness): Optimized version.
23121
23122         * inssel-sparc.brg cpu-sparc.md: Ongoing sparc work.
23123
23124         * mini-sparc.h mini-sparc.c tramp-sparc.c exceptions-sparc.c: Ongoing
23125         sparc work.
23126
23127         * basic-float.cs basic-calls.cs: New regression tests.
23128
23129 2004-03-10  Zoltan Varga  <vargaz@freemail.hu>
23130
23131         * mini-x86.h: Define SIGSEGV_ON_ALTSTACK only if we have a working
23132         sigaltstack implementation.
23133
23134         * mini-x86.c (mono_arch_setup_jit_tls_data): Fix previous patch.
23135         
23136         * mini-x86.c (mono_arch_setup_jit_tls_data): Turn off the sigaltstack
23137         stuff if SIGSEGV_ON_ALTSTACK is not defined.
23138
23139 2004-03-09  Zoltan Varga  <vargaz@freemail.hu>
23140
23141         * mini.c: Fix warnings.
23142         
23143         * mini.c (mono_resolve_patch_target): New function which contains the
23144         arch independent part of the patching process.
23145
23146         * mini-x86.c (mono_arch_patch_code): Move arch independent parts of the
23147         patching code to a separate function.
23148
23149 2004-03-09  Bernie Solomon  <bernard@ugsolutions.com>
23150
23151         * mini.c (add_signal_handler): ifdef out on Windows
23152
23153 2004-03-08  Zoltan Varga  <vargaz@freemail.hu>
23154
23155         * mini-sparc.h mini-sparc.c inssel-sparc.brg exceptions-sparc.c 
23156         cpu-sparc.md: Add exception handling support + other fixes.
23157
23158         * driver.c: Print --help output to stdout. Fixes #55261. Also fix
23159         typed GC detection in --version.
23160
23161         * basic.cs exceptions.cs: New regression tests.
23162
23163         * mini.h mini-x86.h mini-ppc.h: Add MonoCompileArch structure where
23164         the arch specific code can store data during a compilation.
23165
23166         * mini-ops.h: Add OP_SETFRET.
23167
23168         * mini.c (mini_get_ldelema_ins): Instead of allways calling the same
23169         function, register a separate icall for each arity, so the icalls can
23170         get a wrapper.
23171         
23172         * mini.c (mono_print_tree): Print negative offsets in a more readable
23173         form.
23174         
23175         * mini.c: Make signal handling work on sparc.
23176         
23177         * mini.c (mini_init): Add emulation for lconv_to_r8_un.
23178
23179         * inssel-long32.brg: Fix OP_LSUB_OVF_UN rule.
23180
23181         * jit-icalls.c: Emulate truncl by aintl on solaris.
23182
23183         * jit-icalls.c (mono_lconv_to_r8_un): New icall emulation function.
23184
23185 2004-03-05  Zoltan Varga  <vargaz@freemail.hu>
23186
23187         * mini.c (mini_init): fconv_to_ovf can raise exceptions.
23188
23189 2004-03-04  Lluis Sanchez Gual  <lluis@ximian.com>
23190
23191         * mini.c: In CEE_ISINST and CEE_CASTCLASS, if the type is an interface or
23192         a MarshalByRef type, inline a method that performs the check, taking into
23193         account that the object can be a proxy. Also implemented tow new opcodes:
23194         CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23195         * inssel.brg: Implemented two new opcodes, mini-ops.h: OP_CISINST and 
23196         OP_CCASTCLASS, which implement CEE_MONO_CISINST and CEE_MONO_CCASTCLASS.
23197
23198 Tue Mar 2 17:23:48 CET 2004 Paolo Molaro <lupus@ximian.com>
23199
23200         * mini-ppc.c: if a relative branch displacement is too big
23201         but it points to and area reachable with an absolute branch, 
23202         avoid the thunks.
23203
23204 Tue Mar 2 16:59:40 CET 2004 Paolo Molaro <lupus@ximian.com>
23205
23206         * mini.c: optimize small copies in cpblk.
23207
23208 2004-03-01  Zoltan Varga  <vargaz@freemail.hu>
23209
23210         * basic-calls.cs basic-float.cs: New regression tests.
23211
23212         * mini-sparc.c inssel-sparc.brg mini-ops.h: Access local variables at 
23213         negative offsets from %fp. Implement localloc. Fix local register 
23214         allocation. Fix the case when the this argument needs to be saved to
23215         the stack. Implement some missing opcodes.
23216
23217 2004-02-26  Zoltan Varga  <vargaz@freemail.hu>
23218
23219         * mini.c (mini_method_compile): Reenable global regalloc in methods
23220         with exception handlers.
23221
23222         * linear-scan.c (mono_varlist_sort): Fix warning.
23223
23224         * linear-scan.c (mono_linear_scan): Fix computation of used_regs.
23225
23226         * mini-x86.c (mono_arch_regalloc_cost): Reenable precise computation of
23227         regalloc costs.
23228
23229         * liveness.c: Make all variables uses in exception clauses volatile, to
23230         prevent them from being allocated to registers. Fixes #42136.
23231
23232 2004-02-25  Zoltan Varga  <vargaz@freemail.hu>
23233
23234         * mini-x86.c (mono_arch_regalloc_cost): Revert this change since it
23235         causes regressions.
23236
23237         * mini.h linear-scan.c mini-x86.c mini-sparc.c mini-ppc.c: Add 'cfg'
23238         argument to mono_arch_regalloc_cost.
23239
23240         * mini-x86.c (mono_arch_regalloc_cost): Compute regalloc costs 
23241         precisely.
23242
23243 2004-02-24  Zoltan Varga  <vargaz@freemail.hu>
23244
23245         * mini.h mini-x86.c mini-ppc.c mini-sparc.c linear-scan.c: 
23246         Make the cost of allocating a variable to a register arch dependent.
23247
23248         * basic-calls.cs: Fix compilation of tests.
23249         
23250         * mini.h mini.c tramp-x86.c mini-x86.c: Add mono_running_on_valgrind ()
23251         helper function to cut back on the number of #ifdefs needed.
23252
23253         * mini-ppc.c: Fix compilation.
23254
23255         * basic-calls.cs: New regression tests.
23256
23257         * mini-sparc.c (mono_sparc_is_virtual_call): New helper function.
23258
23259         * tramp-sparc.c (create_specific_trampoline): Use g5 register instead
23260         of l0 since that is callee saved.
23261
23262         * tramp-sparc.c (sparc_magic_trampoline): Apply unbox trampoline only
23263         to virtual calls.
23264
23265         * mini-sparc.c: Ongoing work + flag virtual calls with a special kind 
23266         of delay instruction.
23267
23268         * inssel.brg (OP_CHECK_THIS): Set tree->sreg1 and dreg correctly.
23269
23270         * mini.h (MonoCallInst): Add 'virtual' flag.
23271
23272         * inssel.brg (mini_emit_virtual_call): Set 'virtual' flag.
23273
23274 2004-02-23  Zoltan Varga  <vargaz@freemail.hu>
23275
23276         * *.cs: New regression tests.
23277
23278         * mini-sparc.c inssel-sparc.brg: Update after latest changes. Ongoing sparc 
23279         work.
23280
23281         * mini.c (mono_runtime_install_handlers): Fix build.
23282
23283         * mini.h (MonoJitTlsData): Add 'stack_size', 'signal_stack' and
23284         'signal_stack_size' members.
23285
23286         * mini.h mini.c mini-x86.h mini-x86.c: Run sigsegv handlers on an 
23287         alternate signal stack.
23288
23289         * exceptions-x86.c: Add stack overflow handling.
23290
23291         * mini.h mini.c mini-x86.c mini-ppc.c trace.h trace.c: Move tracing 
23292         functions to arch independent code.
23293
23294         * mini.c (mono_print_tree): Print more detailed info for load_membase
23295         opcodes.
23296         
23297 2004-02-23  Martin Baulig  <martin@ximian.com>
23298
23299         * mini.c (mini_get_method): Set `gmethod->generic_inst'.
23300
23301 Sun Feb 22 22:25:19 CET 2004 Paolo Molaro <lupus@ximian.com>
23302
23303         * mini-x86.c: fixed reg allocation for div/rem.
23304
23305 2004-02-22  Miguel de Icaza  <miguel@ximian.com>
23306
23307         * driver.c (mono_main): Report some configuratio options on --version.
23308
23309 Fri Feb 20 11:01:44 PST 2004 Paolo Molaro <lupus@ximian.com>
23310
23311         * mini-ppc.c: fixed clt.un, cgt.un. Optimized calls to functions
23312         low in the address space. Correctly flush memory in thunks where we
23313         output native code.
23314
23315 2004-02-20  Martin Baulig  <martin@ximian.com>
23316
23317         * mini.c (mini_get_method): New static method; inflate all generic
23318         methods and methods in open generic instances.
23319         (mono_method_to_ir): Use mini_get_method() instead of mono_get_method().
23320         (ret_type_to_call_opcode): Added support for MONO_TYPE_GENERICINST.
23321
23322 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23323
23324         * mini-sparc.c (mono_arch_patch_code): Update after domain->code_mp changes.
23325
23326         * tramp-sparc.c (mono_arch_create_jump_trampoline): Set ji->method.
23327
23328 2004-02-19  Bernie Solomon  <bernard@ugsolutions.com>
23329
23330         * helpers.c (mono_disassemble_code): use Sun's dis if not using gcc
23331
23332         * mini-sparc.c (flushi mono_arch_output_basic_block): make
23333         it compile using Sun's compiler.
23334
23335 2004-02-19  Zoltan Varga  <vargaz@freemail.hu>
23336
23337         * 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.
23338
23339         * basic-calls.cs basic-float.cs basic-long.cs objects.cs: New regression tests.
23340
23341 Tue Feb 17 21:41:20 CET 2004 Paolo Molaro <lupus@ximian.com>
23342
23343         * aot.c, mini-x86.c, mini.c: use the code manager instead of a mempool to hold native
23344         code.
23345         * mini-ppc.c: handle calls outside of the allowed range with thunks
23346         allocated using the code manager.
23347         * tramp-ppc.c: use the code manager to hold generated native code.
23348         Fixed the magic trampoline to just patch vtable entries.
23349
23350 2004-02-17  Zoltan Varga  <vargaz@freemail.hu>
23351
23352         * inssel.brg inssel-x86.brg: Move call(immediate) rules to the platform
23353         independent file.
23354
23355 2004-02-16  Zoltan Varga  <vargaz@freemail.hu>
23356
23357         * tramp-ppc.c (mono_arch_create_jump_trampoline): Fix compilation on
23358         PPC.
23359
23360         * mini-x86.c: Call mono_arch_get_lmf_addr instead of mono_get_lmf_addr
23361         if we have a working __thread implementation.
23362
23363         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Remove 
23364         OP_CALL_IMM opcodes, since the CALL opcodes handles immediates as well.
23365
23366 2004-02-15  Zoltan Varga  <vargaz@freemail.hu>
23367
23368         * mini-x86.c: Fix compilation under gcc 2.
23369         
23370 2004-02-14  Zoltan Varga  <vargaz@freemail.hu>
23371
23372         * mini.c (mono_codegen): Avoid infinite loop when an icall wrapper
23373         contains a call to the wrapped function.
23374
23375         * mini-ops.h cpu-pentium.md mini-x86.c inssel-x86.brg: Add 
23376         OP_<CALL>_IMM opcodes, and use them under X86.
23377         
23378         * mini.c (mono_jit_find_compiled_method): Fix warning.
23379
23380         * cpu-pentium.md: Fix length of opcodes which use x86_alu_membase_imm.
23381
23382         * jit-icalls.c (mono_ldftn_nosync): New JIT icall.
23383
23384         * tramp-x86.c (mono_arch_create_jump_trampoline): Move arch independent
23385         functionality to mini.c.
23386
23387         * mini.c (mono_create_jump_trampoline): New function to create a jump
23388         trampoline. Return a compiled method instead of a trampoline if it
23389         exists. Add a cache for jump trampolines.
23390
23391         * mini.c (mono_jit_find_compiled_method): New function to return a
23392         compiled method if it exists.
23393
23394         * mini-x86.c: Call mono_create_jump_trampoline instead of 
23395         mono_arch_create_jit_trampoline.
23396
23397         * jit-icalls.c (mono_ldftn): Do not compile the method. Instead, return
23398         a jump trampoline. Fixes #52092.
23399         
23400 2004-02-11  Zoltan Varga  <vargaz@freemail.hu>
23401
23402         * debug-mini.c (mono_init_debugger): Remove call to mono_verify_corlib,
23403         which is not up-to-date. Add check_corlib_version () instead.
23404
23405         * mini.c (mini_init): Call mono_thread_attach () so embedders do not 
23406         have to call it.
23407         
23408         * mini.c (mono_runtime_install_handlers): Remove check for valgrind
23409         since newer valgrind versions do not need it.
23410
23411         * mini.c (mono_jit_compile_method_with_opt): New helper function to
23412         compile a method with a given set of optimizations.
23413
23414         * mini.c: Compile icall wrappers on-demand instead of at startup.
23415
23416         * mini-sparc.c mini-ppc.c: Call mono_icall_get_wrapper to obtain the
23417         wrapper for an icall.
23418
23419 2004-02-10  Zoltan Varga  <vargaz@freemail.hu>
23420
23421         * mini.c (mono_method_to_ir): Handle switch with non-empty stack. Fixes
23422         #54063.
23423
23424         * iltests.il: Add test for non-empty stack before switch instruction.
23425
23426 2004-02-02  Zoltan Varga  <vargaz@freemail.hu>
23427
23428         * mini.c: Add support for new stringbuilder marshalling conventions.
23429
23430         * mini.c (mono_method_to_ir): Fix stack management of generic CEE_BOX.
23431
23432 2004-02-01  Martin Baulig  <martin@ximian.com>
23433
23434         * mini.c (MTYPE_PARAM_TO_TYPE): Method type arguments are stored
23435         in `ginst->mtype_argv'.
23436
23437 2004-01-31  Miguel de Icaza  <miguel@ximian.com>
23438
23439         * mini.c: Add comments, replace CEE_XXX+128 with OP_XXX to
23440         facilitate grepping.
23441
23442 Wed Jan 28 14:04:58 CET 2004 Paolo Molaro <lupus@ximian.com>
23443
23444         * mini.c: fixed buglet in initobj generic implementation for references.
23445
23446 Fri Jan 23 16:10:44 EST 2004 Paolo Molaro <lupus@ximian.com>
23447
23448         * Makefile.am: make the version script conditional.
23449         * jit-icalls.c: handle missing truncl().
23450
23451 2004-01-23  Zoltan Varga  <vargaz@freemail.hu>
23452
23453         * exceptions.cs: Add more tests for double->int conversion.
23454
23455         * jit-icalls.c (mono_fconv_ovf_i8): Call truncl before comparison, so
23456         we don't throw exceptions when converting 1.1 to a long. Fixes #53250.
23457
23458 Fri Jan 23 17:12:08 CET 2004 Paolo Molaro <lupus@ximian.com>
23459
23460         * driver.c: make --verbose --version emit an error
23461         if the loaded corlib doesn't match the runtime version.
23462
23463 Mon Jan 19 17:44:50 CET 2004 Paolo Molaro <lupus@ximian.com>
23464
23465         * mini-ppc.h: export ppc_patch().
23466         * mini-ppc.c: call convention fixes. Added assert in ppc_patch().
23467         * tramp-ppc.c: call convention fixes: Linux/PPC support should be
23468         on par or better than on MacOSX.
23469
23470 2004-01-19  Zoltan Varga  <vargaz@freemail.hu>
23471
23472         * mini.c tramp-x86.c tramp-sparc.c: Updated after changes to
23473         mono_lookup_pinvoke_call.
23474
23475         * mini-x86.c: Under windows, the default pinvoke calling convention is
23476         stdcall. Fixes #52834.
23477
23478         * mini.c (optimize_branches): Add an upper bound to the number of
23479         iterations to prevent infinite loops on strange loops. Fixes #53003.
23480
23481 2004-01-16  Zoltan Varga  <vargaz@freemail.hu>
23482
23483         * inssel.brg: Add vectors<->one dimensional array checking to CASTCLASS
23484         and ISINST. Fixes #52093.
23485
23486         * objects.cs (test_0_vector_array_cast): New tests.
23487         
23488 2004-01-15  Zoltan Varga  <vargaz@freemail.hu>
23489
23490         * jit-icalls.c (helper_stelem_ref_check): New jit icall for array type
23491         checking in Array.Set ().
23492
23493         * mini.c (method_to_ir): Add array type checking in Array.Set (). Fixes
23494         #52590.
23495
23496         * object.cs (test_0_multi_array_cast): New regression test.
23497
23498 Thu Jan 15 16:30:24 CET 2004 Paolo Molaro <lupus@ximian.com>
23499
23500         * exceptions-ppc.c: fix build on Linux/PPC.
23501
23502 2004-01-14  Zoltan Varga  <vargaz@freemail.hu>
23503
23504         * tramp-x86.c (x86_magic_trampoline): Disable code patching when
23505         running under valgrind.
23506         (x86_magic_trampoline): Fix build bustage.
23507
23508         * debug-mini.c: Modify the debug info serialize/deserialize code so it handles
23509         negative values as well. This is needed for the encoding of the line number
23510         info, since sometimes the line numbers are not in increasing order.
23511
23512 2004-01-13  Zoltan Varga  <vargaz@freemail.hu>
23513
23514         * cpu-pentium.md (localloc): Increase the size of the localloc 
23515         instruction since it is a loop under Win32.
23516
23517         * debug-mini.c (record_line_number): Get rid of unneccesary memory
23518         allocation.
23519
23520 2004-01-09  Zoltan Varga  <vargaz@freemail.hu>
23521
23522         * exceptions-ppc.c exceptions-x86.c exceptions-sparc.c 
23523         tramp-x86.c tramp-ppc.c tramp-sparc.c: Applied patch from 
23524         Max Horn (max@quendi.de). Fix file names in comments.
23525
23526 2004-01-03  Zoltan Varga  <vargaz@freemail.hu>
23527
23528         * ssa.c (mono_ssa_rename_vars): Allocate new_stack on the heap to
23529         avoid stack overflow.
23530         (replace_usage): Avoid uninitialized variable warnings.
23531
23532         * mini.c (mono_method_to_ir): Avoid disabling SSA for array operations
23533         and taking the address of valuetype variables.
23534
23535 2004-01-03  Patrik Torstensson
23536
23537         * mini-x86.c: renamed fpflags to flags in RegTrack, going to be used
23538         for other purposes than FP later on.
23539
23540 2004-01-02  Zoltan Varga  <vargaz@freemail.hu>
23541
23542         * mini.c (mono_method_to_ir): Prevent register allocation for arguments
23543         of tail calls.
23544
23545 Fri Jan 2 13:37:25 CET 2004 Paolo Molaro <lupus@ximian.com>
23546
23547         * mini-ops.h, mini.c, inssel.brg: Object.GetType () speedup.
23548
23549 2003-12-30  Patrik Torstensson <p@rxc.se>
23550
23551         * mini-x86.h: Decreased number of availiable fp regs.
23552         Solves corner cases with FP spilling.
23553
23554 2003-12-23  Patrik Torstensson <p@rxc.se>
23555
23556         * mini-x86.c, mini-ops.h, cpu-pentium.md: Added support
23557         for floating point stack tracking / spilling on x86. 
23558         Fixes bug #49012.
23559         
23560         * basic-float.cs: added float mul overflow test.
23561
23562 2003-12-23  Zoltan Varga  <vargaz@freemail.hu>
23563
23564         * mini.c (mono_method_to_ir): Add workaround for bug #51126.
23565
23566 Sun Dec 21 19:53:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23567
23568         * mini.h, mini-ppc.c, mini-ppc.h: small cleanups and
23569         supports for cond branches that overflow the immediate
23570         overflow offset. mcs can compile simple programs.
23571
23572 Fri Dec 19 21:17:16 CET 2003 Paolo Molaro <lupus@ximian.com>
23573
23574         * exceptions-ppc.c: exception handling support wip:
23575         finally handlers get run on exception.
23576
23577 2003-12-19  Zoltan Varga  <vargaz@freemail.hu>
23578
23579         * aot.c (mono_aot_get_method_inner): Avoid loading AOT code while 
23580         profiling.
23581
23582 Fri Dec 19 17:58:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23583
23584         * cpu-g4.md, mini-ppc.c, exceptions-ppc.c, mini-ppc.h:
23585         initial support for stack walking and unwinding.
23586
23587 2003-12-18  Zoltan Varga  <vargaz@freemail.hu>
23588
23589         * driver.c (mono_main): Make corlib-out-of-sync message more 
23590         descriptive. Also remove verify_corlib call.
23591
23592 Wed Dec 17 15:31:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23593
23594         * mini.c: make CEE_NEWARR calls and other emulated opcodes 
23595         not overlap with other call's arguments, too.
23596
23597 Wed Dec 17 12:49:23 CET 2003 Paolo Molaro <lupus@ximian.com>
23598
23599         * mini.h, mini.c, mini-ppc.c, mini-sparc.c, mini-x86.c: 
23600         move to arch-specific code the choice of arch-specific
23601         intrinsics (from Laurent Morichetti (l_m@pacbell.net)).
23602         * mini.c: ensure emulation calls will not interleave
23603         with other calls.
23604
23605 Wed Dec 17 12:27:26 CET 2003 Paolo Molaro <lupus@ximian.com>
23606
23607         * tramp-ppc.c, basic-calls.cs: rework trampolines so that
23608         the magic trampoline stack frame is dropped before executing
23609         the new method.
23610
23611 Mon Dec 15 18:13:57 CET 2003 Paolo Molaro <lupus@ximian.com>
23612
23613         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed some opcode lengths
23614         and integer to fp conversions. Added support for overflowing
23615         arguments on the stack. Reserve a couple more registers as temps.
23616         Added support for aot compilation (as output still needs to be
23617         tweaked, though).
23618
23619 Sat Dec 13 17:49:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23620
23621         * mini-ppc.c, basic-long.cs: fix jumps to known labels.
23622         Don't overwrite return register in some corner cases.
23623
23624 2003-12-13  Zoltan Varga  <vargaz@freemail.hu>
23625
23626         * mini.h mini.c driver.c mini-x86.c mini-ppc.c aot.c: Do not run
23627         static constructors when AOT compiling.
23628
23629         * driver.c (mono_main): Call mono_check_corlib_version.
23630
23631 Sat Dec 13 10:31:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23632
23633         * cpu-g4.md, basic.cs: fixed div target register.
23634
23635 Sat Dec 13 09:45:56 CET 2003 Paolo Molaro <lupus@ximian.com>
23636
23637         * mini-ppc.c, basic.cs: shl_imm fix with test.
23638
23639 Fri Dec 12 21:25:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23640
23641         * inssel-ppc.brg, mini-ppc.h, mini-ppc.c: support for passing 
23642         structures by value. Misc fixes.
23643         * objects.cs: more tests.
23644
23645 Fri Dec 12 10:11:49 CET 2003 Paolo Molaro <lupus@ximian.com>
23646
23647         * mini-ppc.c: lconv.ovf.i implemented.
23648
23649 2003-12-10  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23650
23651         * mini.c:
23652         (mini_init): don't error out if someone already called g_thread_init.
23653
23654 Tue Dec 9 17:27:14 CET 2003 Paolo Molaro <lupus@ximian.com>
23655
23656         * exceptions-x86.c, exceptions-ppc.c: allow the exception object
23657         to be any type per the spec. Fix abnormal memory usage when
23658         the same object is repeatedly thrown.
23659
23660 Tue Dec 9 15:39:54 CET 2003 Paolo Molaro <lupus@ximian.com>
23661
23662         * mini.c: check for overruns in IL code.
23663
23664 2003-12-09  Zoltan Varga  <vargaz@freemail.hu>
23665
23666         * TODO: Add/remove some todo entries.
23667
23668 2003-12-08  Zoltan Varga  <vargaz@freemail.hu>
23669
23670         * driver.c (mono_main): Call mono_verify_corlib.
23671
23672 2003-12-07  Lluis Sanchez Gual  <lluis@ximian.com>
23673
23674         * inssel.brg: In CEE_ISINST and CEE_CASTCLASS, removed check for proxy. 
23675         This has been moved to mini.c
23676         * mini.c: in mono_method_to_ir, CEE_ISINST and CEE_CASTCLASS cases, if the
23677         type being casted is marshalbyref it could be a proxy, so instead of
23678         emitting the type check code, emit a call to a runtime method that will
23679         perform the check by calling CanCastTo if needed.
23680
23681 2003-12-06  Zoltan Varga  <vargaz@freemail.hu>
23682
23683         * mini-x86.c (mono_arch_emit_prolog): Fix stack space allocation for
23684         methods with large stack frames under Win32.
23685
23686 2003-12-04  Zoltan Varga  <vargaz@freemail.hu>
23687
23688         * Makefile.am: Distribute regression tests.
23689
23690         * mini-x86.c (mono_arch_get_allocatable_int_vars): Sort the var list
23691         at the end instead of inserting each variable into the sorted list.
23692
23693         * linear-scan.c (mono_varlist_sort): New helper function.
23694         
23695 Wed Dec 3 20:46:28 CET 2003 Paolo Molaro <lupus@ximian.com>
23696
23697         * mini.c: ensure arguments and locals are within bounds.
23698
23699 Wed Dec 3 17:59:10 CET 2003 Paolo Molaro <lupus@ximian.com>
23700
23701         * mini-ppc.c, cpu-g4.md, basic.cs, basic-long.cs: more tests and 
23702         related fixes.
23703
23704 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23705
23706         * mini.c (mono_cprop_copy_values): Fix crash.
23707
23708         * aot.c: Set verbosity back to 0.
23709         
23710 Wed Dec 3 15:42:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23711
23712         * regalloc.c: complete memory leak fix by Laurent Morichetti
23713         (l_m@pacbell.net).
23714
23715 2003-12-03  Zoltan Varga  <vargaz@freemail.hu>
23716
23717         * driver.c (main_thread_handler): Revert the previous patch.
23718
23719         * tramp-x86.c (x86_class_init_trampoline): Avoid patching when running
23720         under valgrind.
23721
23722         * mini-x86.c (mono_arch_local_regalloc): Do not allocate transient
23723         memory from the memory pool.
23724
23725         * driver.c (main_thread_handler): Turn on all optimizations when
23726         --aot is used.
23727
23728         * mini.c (mono_find_jit_opcode_emulation): Turn emul_opcode_hash into
23729         an array for better performance.
23730
23731         * regalloc.c (mono_regstate_assign): Fix memory leak.
23732
23733         * debug-mini.c (mono_debug_serialize_debug_info): New function to
23734         serialize the debug info.
23735
23736         * debug-mini.c (mono_debug_add_aot_method): New function to load the
23737         debug info from the serialized representation.
23738
23739         * aot.c: Save debug info into the generated file and load it when 
23740         loading a method.
23741
23742         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
23743
23744 Mon Dec 1 16:54:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23745
23746         * mini-ppc.c, tramp-ppc.c: save FP arguments in the trampoline.
23747         More FP-related fixes.
23748
23749 Sun Nov 30 19:13:52 CET 2003 Paolo Molaro <lupus@ximian.com>
23750
23751         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: fixed finally handlers
23752         and register allocation buglet. Hello world now runs.
23753
23754 Fri Nov 28 23:03:05 CET 2003 Paolo Molaro <lupus@ximian.com>
23755
23756         * cpu-g4.md, inssel-ppc.brg, mini-ppc.c: better long return support.
23757         * tramp-ppc.c: fixed class init trampoline.
23758         * inssel-ppc.brg, mini.c, jit-icalls.c, mini-ppc.h: more emulation.
23759
23760 Fri Nov 28 16:36:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23761
23762         * cpu-g4.md, inssel-ppc.brg, jit-icalls.c, mini-ppc.c, mini-ppc.h,
23763         mini.c: more ppc changes/fixes.
23764
23765 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23766
23767         * mini.c (mono_method_to_ir): Fix tail calls with valuetype arguments.
23768         Also optimize the case when the arguments are the same in the caller 
23769         and in the callee.
23770
23771         * iltests.il: Add tests for tail calls with valuetype arguments.
23772
23773 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23774
23775         * mini-ppc.c: fixes for struct return type.
23776
23777 Thu Nov 27 19:02:07 CET 2003 Paolo Molaro <lupus@ximian.com>
23778
23779         * mini.h, mini.c, mini-x86.c, mini-ppc.c, mini-sparc.c: move 
23780         mono_spillvar_offset() to arch-specific code.
23781
23782 Thu Nov 27 18:30:42 CET 2003 Paolo Molaro <lupus@ximian.com>
23783
23784         * mini-ppc.h, mini-ppc.c: handle some different ABI call convention issues.
23785
23786 2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
23787
23788         * exceptions-x86.c: Fix stack space leaks.
23789         
23790         * exceptions-x86.c (mono_arch_find_jit_info): Restore callee saved
23791         registers from the lmf if the method has save_lmf set.
23792
23793 2003-11-26  Zoltan Varga  <vargaz@freemail.hu>
23794
23795         * tramp-x86.c (x86_magic_trampoline): Avoid patching in the addresses
23796         of icall wrappers into InvokeInDomain, since these are now per-domain.
23797
23798 Wed Nov 26 20:15:04 CET 2003 Paolo Molaro <lupus@ximian.com>
23799
23800         * mini-ppc.h, mini-x86.h, mini.c, inssel-ppc.brg, jit-icalls.c:
23801         make some opcode emulation and intrinsic ops enabled/disabled 
23802         according to the architecture. More fixes.
23803
23804 Wed Nov 26 19:59:09 CET 2003 Paolo Molaro <lupus@ximian.com>
23805
23806         * mini-ppc.c, mini-sparc.c, cpu-g4.md: more bug fixes.
23807
23808 Wed Nov 26 19:18:29 CET 2003 Paolo Molaro <lupus@ximian.com>
23809
23810         * mini.h, inssel.brg, mini-x86.c, mini-ppc.c, mini-sparc.c: move
23811         arch-specific handling for 'this' and struct return type to
23812         arch-specific code.
23813
23814 2003-11-26  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23815
23816         * aot.c: prevent divide by zero error when reporting (it happened with
23817         Accessibility.dll).
23818
23819 2003-11-25  Zoltan Varga  <vargaz@freemail.hu>
23820
23821         * mini.h (inst_switch): Remove unused macro.
23822
23823 2003-11-25  Gonzalo Paniagua Javier <gonzalo@ximian.com>
23824
23825         * aot.c:
23826         (load_aot_module): free 'info->methods' and 'info' properly. No more
23827         "free(): invalid pointer blah" messages when you have an old aot
23828         compiled assembly.
23829
23830 2003-11-21  Lluis Sanchez Gual <lluis@ximian.com>
23831
23832         * jit-icalls.c, mini.c: Added support for context static fields.
23833
23834 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23835
23836         * mini.c (mono_method_blittable): Methods which set LastError are not 
23837         blittable either. Fixes #51108.
23838         
23839 Tue Nov 18 16:41:37 CET 2003 Paolo Molaro <lupus@ximian.com>
23840
23841         * mini.c: flush icache.
23842         * cpu-g4.md, mini-ppc.c, inssel.brg: more fixes. Trace support.
23843
23844 2003-11-18  Zoltan Varga  <vargaz@freemail.hu>
23845
23846         * mini.c (mono_type_blittable): OBJECT is not blittable. Fixes #47842.
23847
23848 2003-11-17  Zoltan Varga  <vargaz@freemail.hu>
23849
23850         * tramp-x86.c (x86_class_init_trampoline): Make code patching thread
23851         safe on IA32.
23852
23853         * mini-x86.c (mono_arch_call_opcode): Disable AOT for methods with 
23854         vararg calls.
23855
23856         * inssel.brg (CEE_MKREFANY): Fix AOT case.
23857
23858 2003-11-16  Zoltan Varga  <vargaz@freemail.hu>
23859
23860         * mini-x86.c (mono_arch_local_regalloc): Fix regalloc for div 
23861         instruction when the result is discarded.
23862
23863         * iltests.il (test_0_div_regalloc): New regression test.
23864
23865         * arrays.cs: Fix compilation error.
23866
23867 Fri Nov 14 21:34:06 CET 2003 Paolo Molaro <lupus@ximian.com>
23868
23869         * inssel-x86.brg, inssel-float.brg, mini-ops.h: move x86-specific
23870         float rules to inssel-x86.brg: sane architectures with FP registers
23871         don't need to implement these rules.
23872
23873 Fri Nov 14 20:52:12 CET 2003 Paolo Molaro <lupus@ximian.com>
23874
23875         * mini-ppc.c, cpu-g4.md, inssel-ppc.brg: updates and fixes to the ppc port.
23876
23877 Fri Nov 14 17:58:27 CET 2003 Paolo Molaro <lupus@ximian.com>
23878
23879         * mini.h, inssel-long32.brg: fixed endianess issues in int64
23880         implementation of 32 bit systems.
23881
23882 Thu Nov 13 16:14:41 CET 2003 Paolo Molaro <lupus@ximian.com>
23883
23884         * exceptions-ppc.c: fix build on Linux/ppc from Jeroen@xs4all.nl
23885         (Jeroen Zwartepoorte).
23886
23887 2003-11-12  Zoltan Varga  <vargaz@freemail.hu>
23888
23889         * mini.c (mono_method_to_ir): Use CEE_JMP only if the signature of
23890         the caller and the callee matches.
23891         
23892         * mini.c (mono_method_to_ir): Add comment.
23893
23894         * mini-x86.c (mono_arch_output_basic_block): Use mono_signbit, since
23895         signbit is missing on some platforms.
23896
23897 2003-11-06  Zoltan Varga  <vargaz@freemail.hu>
23898
23899         * mini.h (mono_arch_setup_jit_tls_data): New arch specific function.
23900
23901         * mini.c (setup_jit_tls_data): Call the new function.
23902         
23903         * mini-x86.c mini-ppc.c mini-sparc.c: Define the new function.
23904
23905         * mini-x86.c: Add experimental support for fast access to the lmf
23906         structure under NPTL/Linux 2.6.x.
23907
23908 2003-11-06  Martin Baulig  <martin@ximian.com>
23909
23910         * ldscript: Make `GC_push_all_stack', `GC_start_blocking',
23911         `GC_end_blocking' and 'gc_thread_vtable' public; they're used by
23912         the debugger.
23913
23914 2003-11-02  Martin Baulig  <martin@ximian.com>
23915
23916         * mini.c (inflate_generic_field): New static method.
23917         (mono_method_to_ir): In CEE_LDFLD and CEE_LDSFLD: if we're a
23918         generic instance and the field is declared in a generic type, call
23919         inflate_generic_field() to inflate it.  Fixes gen-28.cs.
23920
23921 2003-10-31  Zoltan Varga  <vargaz@freemail.hu>
23922
23923         * mini.h mini.c (mono_method_same_domain): New function to return
23924         whenever the caller and the callee are in the same domain.
23925
23926         * tramp-x86.c (x86_magic_trampoline): Use the new function.     
23927
23928 2003-10-30  Martin Baulig  <martin@ximian.com>
23929
23930         * mini.c (MTYPE_PARAM_TO_TYPE, MTYPE_PARAM_TO_CLASS): New macros;
23931         similar to TYPE_PARAM_TO_TYPE and TYPE_PARAM_TO_CLASS, but for
23932         method parameters.
23933         (mono_method_to_ir): Added support for MONO_TYPE_MVAR; similar to
23934         MONO_TYPE_VAR, we the actual types from MTYPE_PARAM_TO_CLASS(). 
23935
23936 2003-10-29  Zoltan Varga  <vargaz@freemail.hu>
23937
23938         * mini.c mini-ops.h inssel.brg: Implement undeniable exception 
23939         propagation.
23940
23941         * mini.c (sigusr1_signal_handler): Move creation of the thread abort
23942         object here, so it is in the correct appdomain etc.
23943
23944 2003-10-27  Zoltan Varga  <vargaz@freemail.hu>
23945
23946         * mini.c (mono_jit_compile_method_inner): Lookup icalls here if not
23947         already done.
23948         (mono_method_to_ir): Avoid freeing the type created returned from
23949         mono_type_create_from_typespec, since it is put into an internal cache
23950         by the function. Fixes pointer.exe.
23951
23952         * mini.c tramp-x86.c tramp-sparc.c tramp-ppc.c: Use the normal 
23953         trampolines for icalls and pinvokes as well. Fixes #33569.
23954
23955 2003-10-24  Zoltan Varga  <vargaz@freemail.hu>
23956
23957         * mini.c: Update after appdomain changes.
23958
23959         * mini.c (mono_jit_compile_method_inner): Allways compile native
23960         method wrappers in the root domain, since there can only be one
23961         instance of them, whose address is stored in method->info.
23962
23963 2003-10-16  Zoltan Varga  <vargaz@freemail.hu>
23964
23965         * mini.c (mono_runtime_install_handlers): Get rid of the MONO_VALGRIND
23966         environment variable. Instead detect automatically whenever running
23967         under valgrind using the magic macro RUNNING_ON_VALGRIND from
23968         valgrind.h.
23969
23970 2003-10-16  Miguel de Icaza  <miguel@ximian.com>
23971
23972         * trace.c, trace.h: New files that implement the new trace option
23973         parsing. 
23974
23975         * driver.c: Document new --trace options.
23976
23977         * exceptions-ppc.c, exceptions-x86.c, mini-ppc.c, mini-sparc.c,
23978         mini-x86.c: Apply:
23979
23980         -       if (mono_jit_trace_calls)
23981         +       if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
23982
23983         * mini.h: prototypes.
23984         
23985 2003-10-15  Zoltan Varga  <vargaz@freemail.hu>
23986
23987         * mini.c (mono_method_to_ir): Fix initialization of typedbyref locals.
23988
23989         * mini.c inssel.brg: Implement typedefbyref opcodes.
23990
23991         * mini.c (mono_jit_compile_method): Remove unused local variable.
23992
23993         * mini.c (mono_jit_compile_method_inner): Ditto.
23994         
23995 2003-10-12  Zoltan Varga  <vargaz@freemail.hu>
23996
23997         * tramp-x86.c (x86_class_init_trampoline): Fix build.
23998         
23999         * tramp-x86.c (x86_class_init_trampoline): Thread safety fixes.
24000
24001 2003-10-10  Zoltan Varga  <vargaz@freemail.hu>
24002
24003         * mini.c (mono_no_aot): Remove unused global variable.
24004
24005         * mini.c: Thread safety fixes.
24006
24007 2003-10-09  Zoltan Varga  <vargaz@freemail.hu>
24008
24009         * mini.c (mono_create_class_init_trampoline): Add a lock around
24010         class_init_hash_addr.
24011
24012         * arrays.cs (test_0_newarr_emulation): Add new regression test for
24013         #30073.
24014
24015         * mini.c: Decompose the NEWARR instruction before decomposing its
24016         arguments. Fixes #30073.
24017
24018 2003-10-08  Zoltan Varga  <vargaz@freemail.hu>
24019
24020         * mini-x86.c (mono_arch_emit_epilog): Add support for stdcall calling
24021         convention.
24022
24023 2003-10-06  Zoltan Varga  <vargaz@freemail.hu>
24024
24025         * mini.c (mono_method_to_ir): Allow wrapper data for CEE_LDELEMA.
24026
24027         * inssel-x86.brg (OP_LOCALLOC): Fix register assignment for localloc.
24028
24029         * driver.c: Add support for compiling icall wrappers to --compile.
24030
24031 2003-10-05  Zoltan Varga  <vargaz@freemail.hu>
24032
24033         * inssel.brg: The empty value in class->interface_offsets is -1, not
24034         0. Fixes #49287.
24035
24036 2003-10-03  Zoltan Varga  <vargaz@freemail.hu>
24037
24038         * objects.cs: New test for 'is' operator on an array of interfaces.
24039
24040 Wed Oct 1 19:40:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24041
24042         * tramp-ppc.c: update trampoline code to support jumps
24043         and class initialization.
24044
24045 2003-09-30  Zoltan Varga  <vargaz@freemail.hu>
24046
24047         * mini.c (mono_jit_compile_method): Fix reading of freed memory.
24048
24049         * inssel.brg (OP_UNBOXCAST): Fix #46027.
24050
24051         * inssel.brg (OP_UNBOX): Remove unused rule.
24052
24053         * mini.h mini.c inssel-x86.brg: Allocate one SP variable for each
24054         region instead of one for each method. Fixes #47813.
24055
24056 2003-09-29  Zoltan Varga  <vargaz@freemail.hu>
24057
24058         * exceptions.cs (test_0_nested_finally): New regression test for
24059         nested exception handlers.
24060
24061         * mini.c (mono_jit_runtime_invoke): Fix for the previous fix.
24062
24063         * mini.c (mono_method_to_ir): Avoid inlining tail calls.
24064
24065         * mini.c (mono_method_to_ir): Fix tail recursion in the presence of 
24066         inlining.
24067
24068         * mini.c (mono_method_check_inlining): Make the inlining limit 
24069         configurable by an environment variable.
24070         
24071         * mini.c (mono_jit_runtime_invoke): Add Gonzalo's fix for #36545.
24072
24073         * mini.h: Bump AOT file version.
24074
24075         * mini.h mini.c aot.c mini-x86.c: For relocations which refer to a 
24076         token, store the image along with the token, since the token might not 
24077         refer to the same image as the method containing the relocation, 
24078         because of inlining.
24079
24080 2003-09-27  Zoltan Varga  <vargaz@freemail.hu>
24081
24082         * mini.c (mono_precompile_assemblies): New function to compile
24083         all methods in all loaded assemblies.
24084
24085         * mini.h driver.c: Added new optimization flag MONO_OPT_PRECOMP.
24086
24087         * regalloc.h regalloc.c (MonoRegState): Change the type of 
24088         iassign and fassign to int*, since they can contain large negative
24089         values if the register is spilled. Also added some comments. Fixes
24090         #45817.
24091
24092         * exceptions-x86.c (seh_handler): Fix handling of system exceptions
24093         under Win32. Fixes #42964.
24094
24095 2003-09-26  Zoltan Varga  <vargaz@freemail.hu>
24096
24097         * mini.h (MONO_PATCH_INFO_WRAPPER): New patch type.
24098
24099         * aot.c: Added support for AOT compiling methods which contain calls
24100         to wrappers. Currently, only remoting-invoke-with-check wrappers are
24101         handled.
24102         
24103         * driver.c (compile_all_methods): Run the compilation in a thread
24104         managed by mono. Fixes #44023.
24105
24106         * mini.c (mono_codegen): Print full method name in verbose output.
24107
24108         * mini-x86.c (mono_arch_patch_code): Fix warning.
24109         
24110         * mini-x86.c (mono_arch_patch_code): Allways create a trampoline for
24111         jumps, since the method we are jumping to might be domain-specific.
24112
24113         * aot.c: Added support for MONO_PATCH_INFO_METHOD_JUMP.
24114
24115 Tue Sep 23 10:50:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24116
24117         * inssel.brg: string chars are unsigned.
24118
24119 2003-09-15  Zoltan Varga  <vargaz@freemail.hu>
24120
24121         * TODO: New todo item.
24122
24123         * tramp-x86.c (x86_class_init_trampoline): New trampoline function
24124         which calls mono_runtime_class_init and patches the call site to
24125         avoid further calls.
24126         (mono_arch_create_class_init_trampoline): New arch specific function 
24127         to create a class init trampoline.
24128         (create_trampoline_code): Generalized so it can create
24129         class init trampolines as well.
24130
24131         * mini.c (helper_sig_class_init_trampoline): New helper variable.
24132         (mono_create_class_init_trampoline): New function to create and cache
24133         class init trampolines.
24134         (mono_find_class_init_trampoline_by_addr): New function to lookup the
24135         vtable given the address of a class init trampoline. Used by the
24136         patching process.
24137         (mono_codegen): Generate a call to a trampoline instead of
24138         mono_runtime_class_init in LDSFLD[A].
24139         (mono_codegen): Add relocations for the new trampoline.
24140         
24141         * mini.h mini-x86.c aot.c: Added a new relocation type: 
24142         MONO_PATCH_INFO_CLASS_INIT.
24143
24144         * mini.h: Bump AOT version number.
24145
24146         * aot.c: Create a copy of the loaded code instead of using the original
24147         so methods which call each other will be close in memory, improving
24148         cache behaviour.
24149         
24150         * exceptions-x86.c (mono_arch_has_unwind_info): Back out the previous
24151         patch since it breaks the regression tests.
24152         
24153         * exceptions-x86.c (mono_arch_has_unwind_info): Added explicit check
24154         for the register saving instruction sequence since the 
24155         frame_state_for function in glibc 2.3.2 don't seem to detect it.
24156
24157 2003-09-14  Zoltan Varga  <vargaz@freemail.hu>
24158
24159         * TODO: Fix todo item && remove another.
24160
24161 2003-09-12  Zoltan Varga  <vargaz@freemail.hu>
24162
24163         * mini-x86.c (mono_arch_patch_code): Fix tail calls broken by a
24164         previous checkin.
24165
24166         * aot.c: Moved the check for MONO_LASTAOT into the initialization
24167         function of the module.
24168
24169         * mini.h mini.c aot.c: Added a new optimization flag OPT_AOT for
24170         turning on/off the usage of AOT code. Got rid of mono_no_aot and the
24171         --no-aot command line option.
24172
24173 2003-09-11  Zoltan Varga  <vargaz@freemail.hu>
24174
24175         * helpers.c (mono_disassemble_code): Make this work under cygwin. Patch
24176         by Bernie Solomon (bernard@ugsolutions.com).
24177
24178         * inssel.brg: Refactor the interface offset table related code into
24179         its separate functions and add support for the AOT case.
24180
24181 2003-09-10  Zoltan Varga  <vargaz@freemail.hu>
24182
24183         * aot.c (mono_aot_get_method_inner): Fix memory leak.
24184         
24185         * aot.c: Added mono_aot_verbose variable and made all debugging
24186         output depend on the value of this variable.
24187
24188         * aot.c (mono_aot_get_method_inner): Avoid dynamic allocation of
24189         method_label and info_label.
24190
24191         * mini.h mini-x86.c aot.c: Added a new relocation type 
24192         MONO_PATCH_INFO_IID for klass->interface_id.
24193
24194         * mini.h mini.c driver.c aot.c: Changed mono_aot_get_method to return
24195         the MonoJitInfo structure.
24196
24197         * mini.c (mono_jit_compile_method): Avoid using non-shared AOT in
24198         a non-root appdomain in shared mode.
24199
24200 Tue Sep 9 16:33:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
24201
24202         * aot.c: make aot loader less verbose. Remove free of unused variable.
24203
24204 2003-09-08  Zoltan Varga  <vargaz@freemail.hu>
24205
24206         * aot.c (mono_aot_get_method_inner): Fix MONO_PATCH_INFO_IMAGE.
24207
24208         * .cvsignore: Added *.dll.
24209
24210         * mini.c (mono_print_tree_nl): New function callable while debugging.
24211
24212         * mini.c (mono_print_code): Export this.
24213
24214         * tramp-x86.c (x86_magic_trampoline): Tell valgrind to recompile the
24215         patched code.
24216
24217 2003-09-05  Zoltan Varga  <vargaz@freemail.hu>
24218
24219         * mini.h (MonoCompile): Added 'jit_info' field.
24220
24221         * mini.c (mini_method_compile): Save the generated MonoJitInfo into
24222         the cfg structure, since it is needed by the AOT compiler.
24223
24224         * mini.h (MONO_AOT_FILE_VERSION): Bump version number.
24225
24226         * aot.c: A major rewrite. Changes include:
24227         - save exception tables for methods which have them.
24228         - cache failed lookups in aot_get_method () to avoid the (slow) calls 
24229         to g_module_symbol.
24230         - reworked the file format so it is now much smaller and needs
24231         fewer relocation entries.
24232         
24233 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24234
24235         * aot.c (load_aot_module): Fix build bustage on platforms without
24236         Boehm GC.
24237
24238 2003-09-04  Martin Baulig  <martin@ximian.com>
24239
24240         * Makefile.am (INCLUDES): Added $(LIBGC_CFLAGS).
24241
24242 2003-09-04  Zoltan Varga  <vargaz@freemail.hu>
24243
24244         * TODO: Some new optimization ideas.
24245
24246         * aot.c: Move AOT module loading logic here from mono_assembly_open.
24247
24248         * aot.c: Save the optimization flags used to compile the code into
24249         the AOT module.
24250
24251         * mini.h mini-x86.c mini.c aot.c: Added new types of relocations to
24252         support emitting domain specific code.
24253         
24254         * mini.h mini.c aot.c: Modified the JIT so the generated AOT code is 
24255         no longer domain neutral. It can be made domain neutral by compiling 
24256         with --optimize=shared.
24257
24258         * aot.c (mono_aot_get_method_inner): Allow sharing of AOT methods
24259         between appdomains.
24260
24261         * driver.c mini.h mini.c: New --no-aot debugging option which disables
24262         loading of AOT code.
24263
24264         * inssel-x86.brg: Added missing AOTCONST -> OUTARG_VT rule.
24265         
24266         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling method
24267         if there is no domain neutrality information.
24268
24269 2003-09-01  Zoltan Varga  <vargaz@freemail.hu>
24270
24271         * aot.c (mono_compile_assembly): Emit a symbol containing the file 
24272         format version into the generated library.
24273
24274         * mini-x86.c (mono_arch_patch_code): Do not emit the address of the
24275         callee method into the caller since one of them could be shared.
24276
24277         * mini.h mini-x86.c aot.c: Added two new relocations so throwing
24278         system exceptions from AOT code now works.
24279
24280         * tramp-x86.c (x86_magic_trampoline): Avoid patching the calling 
24281         method if it is domain neutral and the callee is not.
24282
24283         * graph.c (cfg_emit_one_loop_level): Fix warning.
24284
24285 2003-08-30  Zoltan Varga  <vargaz@freemail.hu>
24286
24287         * aot.c (mono_compile_assembly): Oops. Remove debugging cruft from
24288         last checkin.
24289
24290 2003-08-29  Zoltan Varga  <vargaz@freemail.hu>
24291
24292         * mini.c (mini_init): Call mono_marshal_init () explicitly since it
24293         is needed  by code which is executed before mono_runtime_init ().
24294         Thanks to Bernie Solomon (bernard@ugsolutions.com) for noticing this.
24295         
24296         * mini.c (mono_thread_abort): Fix warning.
24297         (mono_jit_compile_method): Call static constructor in the AOT case too.
24298
24299         * aot.c (mono_compile_assembly): Fix warning.
24300
24301 2003-08-28  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24302
24303         * mini.c: register a SIGINT handler if MONO_DEBUG is defined.
24304
24305 2003-08-28  Zoltan Varga  <vargaz@freemail.hu>
24306
24307         * inssel.brg (OP_UNBOXCAST): Add support for the AOT case.
24308
24309         * cpu-pentium.md: Fix the length of call opcodes so they include the
24310         ESP restoring instruction. Fixes #47968.
24311
24312 2003-08-28  Martin Baulig  <martin@ximian.com>
24313
24314         * mini-x86.c (mono_arch_call_opcode): Added support for
24315         MONO_TYPE_GENERICINST.
24316
24317         * mini.c (check_call_signature): Added support for MONO_TYPE_GENERICINST.       
24318
24319 2003-08-27  Zoltan Varga  <vargaz@freemail.hu>
24320
24321         * Makefile.am (BUILT_SOURCES): Fix compilation on platforms without
24322         a JIT. Patch by Bernie Solomon (bernard@ugsolutions.com).
24323
24324         * mini.c jit-icalls.c tramp-x86.c tramp-ppc.c tramp-sparc.c: Get rid of
24325         metadata_section.
24326
24327 2003-08-26  Martin Baulig  <martin@ximian.com>
24328
24329         * mini.c (get_basic_blocks): Added `unsigned char **pos' argument;
24330         when reporting an error, set this to the actual error location.
24331         (mono_method_to_ir): Report the correct error location if
24332         get_basic_blocks() returned an error.
24333
24334 2003-08-25  Zoltan Varga  <vargaz@freemail.hu>
24335
24336         * mini.c (mono_type_blittable): OBJECT is not blittable.
24337         (mono_method_blittable): Methods which have marshalling descriptors
24338         are not blittable either. Fixes #47842.
24339
24340 2003-08-22  Zoltan Varga  <vargaz@freemail.hu>
24341
24342         * driver.c mini.c: Use an environment variable instead of a global 
24343         variable. Also fix the build.
24344
24345         * mini.c (mini_init): Call g_thread_init () to make glib thread-safe. 
24346         Fixes #47682. Thanks to Laurent Morichetti (l_m@pacbell.net) for 
24347         reporting this. 
24348
24349         * driver.c mini.c: Added --with-valgrind option to turn off some
24350         code which prevents mono from running under valgrind.
24351
24352         * mini.c (mono_emit_call_args): Fixed warning.
24353
24354         * mini.c (mono_emulate_opcode): Fixed warning.
24355
24356 Thu Aug 21 19:10:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24357
24358         * inssel.brg: 64bit fixes from Laurent Morichetti <l_m@pacbell.net>.
24359         * linear-scan.c, mini-ppc.h, mini-sparc.h, mini-x86.h, mini.h,
24360         regalloc.c, regalloc.h: specify available registers in arch-specific
24361         code and support floats in the regallocator (patch by Laurent Morichetti 
24362         <l_m@pacbell.net>)
24363
24364 Wed Aug 20 19:02:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24365
24366         * mini.c: mono_thread_current() can be called only after
24367         mono_runtime_init(): rearrange code to not call it early on.
24368
24369 Wed Aug 20 13:14:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24370
24371         * mini.c: allocate jump tables in the code mempools.
24372
24373 Wed Aug 20 13:04:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24374
24375         * mini.c, mini.h: make sure per-thread data allocated by the jit is
24376         freed.
24377
24378 2003-08-10  Miguel de Icaza  <miguel@ximian.com>
24379
24380         * cpu-pentium.md (ldtoken): Change the length for mul.ovf.un from
24381         12 to 16.  This fixes bug #47453.
24382
24383
24384 Thu Aug 7 15:59:35 CEST 2003 Paolo Molaro <lupus@ximian.com>
24385
24386         * mini-ppc.c: fixed indexed load and unsigned compares.
24387
24388 2003-08-06  Lluis Sanchez Gual  <lluis@ximian.com>
24389
24390         * mini.c: reenabled installation of handler for
24391           thread abort signal.
24392
24393 Tue Aug 5 12:21:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24394
24395         * cprop.c, mini-x86.c, cpu-pentium.md: fix buglets spotted
24396         by Laurent Morichetti <l_m@pacbell.net>. Disabled local cprop
24397         until it's fixed and actually useful.
24398
24399 Mon Aug 4 12:12:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24400
24401         * inssel-long32.brg: couple more opcodes implemented.
24402
24403 Thu Jul 31 22:43:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24404         
24405         * mini-sparc.c: Even more opcodes implemeted.
24406
24407 Thu Jul 31 19:36:03 EDT 2003 Mark Crichton <crichton@gimp.org>
24408
24409         * mini-sparc.c: More opcodes implemented.
24410
24411 Thu Jul 31 15:16:26 EDT 2003 Mark Crichton <crichton@gimp.org>
24412
24413         * mini-sparc.c: More opcodes implemented.
24414
24415 Wed Jul 30 22:31:02 EDT 2003 Mark Crichton <crichton@gimp.org>
24416
24417         * inssel-sparc.brg: Add some needed rules.  Direct
24418         copy from PPC.
24419         * Makefile.am: Use inssel-sparc.brg
24420         * exceptions-sparc.c: 0xdeadbeef/0xdecafbad to keep
24421         an assert happy for now.
24422
24423 Wed Jul 30 20:44:07 EDT 2003 Mark Crichton <crichton@gimp.org>
24424
24425         * mini-sparc.c: Fixed compile errors.
24426         * exceptions-sparc.c: Same.  We now produce a mono binary 
24427         on sparc-linux.  Yea.
24428
24429 Wed Jul 30 14:10:12 EDT 2003 Mark Crichton <crichton@gimp.org>
24430
24431         * mini-sparc.c: Renamed registers.  Also some macro cleanups.
24432         * exceptions-sparc.c, tramp-sparc.c: Various compile fixes.
24433         They compile, but do not work.
24434
24435 Wed Jul 30 17:52:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24436
24437         * Makefile.am, cpu-sparc.md, exceptions-sparc.c, mini-sparc.c,
24438         mini-sparc.h, tramp-sparc.c: Beginning of sparc support
24439         from Mark Crichton <crichton@gimp.org> and Christopher Taylor
24440         (ct@gentoo.org).
24441
24442 Tue Jul 29 12:43:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24443
24444         * mini.c: more opcodes implemented and better support for generics.
24445
24446 Fri Jul 25 18:51:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24447
24448         * cpu-g4.md, cpu-pentium.md: updates for new instructions.
24449         * mini.c, mini.h: first cut at generics support: some new instructions 
24450         added and changed the behaviour of some of the existing ones.
24451
24452 2003-07-21  Miguel de Icaza  <miguel@ximian.com>
24453
24454         * mini.c: Removed definition of metadata_shared mutex here.
24455
24456 Tue Jul 22 15:21:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24457
24458         * mini-x86.c: make vararg calls work for instance methods.
24459
24460 Fri Jul 18 19:26:20 CEST 2003 Paolo Molaro <lupus@ximian.com>
24461
24462         * mini.c, mini.h, mini-x86.c, mini-ppc.c: mono_arch_call_opcode()
24463         returns the arguments in a separte list, now.
24464
24465 Fri Jul 18 13:16:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24466
24467         * aot.c, mini.c: updates for array type representation changes.
24468
24469 Fri Jul 18 11:28:28 CEST 2003 Paolo Molaro <lupus@ximian.com>
24470
24471         * mini.c: register function to perform jit shutdown.
24472
24473 Thu Jul 17 16:02:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24474
24475         * mini.c: use a faster allocator if possible.
24476
24477 Thu Jul 17 16:00:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
24478
24479         * aot.c: some cleanups and portability changes.
24480
24481 Wed Jul 2 11:08:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24482
24483         * mini.c: use faster allocation for CEE_BOX if possible.
24484
24485 Mon Jun 30 19:16:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24486
24487         * mini.c, mini-ops.h, inssel.brg, mini-x86.c: optimized access to fields.
24488         Moved inlined mempcy code to its own function so that is can be
24489         reused. Added an inline memset function as well (optimized initobj).
24490         * cpu-pentium.md, inssel-x86.brg: add and use lea_membase.
24491
24492 Fri Jun 27 11:19:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
24493
24494         * mini.c, mini-ops.h, inssel.brg: optimized a couple of Array methods.
24495
24496 Wed Jun 25 13:19:25 CEST 2003 Paolo Molaro <lupus@ximian.com>
24497
24498         * mini.c, mini.h, mini.x86.c, mini-ppc.c: added facility so that
24499         arch code can setup the cpu for CLR execution, if needed.
24500         We use it on x86 to set the precision of FP operations.
24501
24502 Tue Jun 17 19:02:55 CEST 2003 Paolo Molaro <lupus@ximian.com>
24503
24504         * mini.c: disable some optimizations if we can guess they'll cost too
24505         much for a given method.
24506
24507 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24508
24509         * mini.h mini.c: Rework last patch based on suggestions by Paolo.
24510         
24511 2003-06-17  Zoltan Varga  <vargaz@freemail.hu>
24512         * mini.h mini.c mini-x86.c: Added instruction level coverage 
24513         info collection support.
24514
24515 Mon Jun 16 18:13:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24516
24517         * driver.c, mini-ppc.c, mini-x86.c, mini.c, mini.h: the coverage stuff
24518         is now implemented in the profiling API. Get rid of a couple of
24519         unnecessary global variables.
24520
24521 2003-06-15  Nick Drochak <ndrochak@gol.com>
24522
24523         * basic-long.cs: tests for negative values for bigmul, and unsigned.
24524         * cpu-g4.md: add op_bigmul and op_bigmul_un
24525         * cpu_pentium.md: add op_bigmul_un
24526         * inssel-long32.brg: add rule for unsigned bigmul
24527         * mini-ops.h: define OP_BIGMUL_UN
24528         * mini-x86.c: THE BUG: handle (un)signed properly
24529         * mini.c: choose unsigned opcode if needed.
24530         This set of patches fixes bug #44291
24531
24532 2003-06-13  Dietmar Maurer  <dietmar@ximian.com>
24533
24534         * mini.c (optimize_branches): improved to handle all kinds of
24535         conditional branches.
24536
24537 Wed Jun 11 18:01:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24538
24539         * mini.c, mini.h, jit-icalls.c: speedup emulation of opcodes that
24540         don't raise exceptions.
24541
24542 Tue Jun 10 19:00:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24543
24544         * tramp-x86.c, tramp-ppc.c, debug-mini.c: move arch-specific code
24545         to arch-specific files.
24546
24547 2003-06-09  Martin Baulig  <martin@ximian.com>
24548
24549         * Makefile.am (libs): Added $(LIBGC_LIBS).
24550
24551 Mon Jun 9 20:21:47 CEST 2003 Paolo Molaro <lupus@ximian.com>
24552
24553         * cpu-pentium.md, mini-x86.c: fix (well, actually implement) OP_TAN
24554         and OP_ATAN (fixes bug#44293).
24555
24556 Mon Jun 9 19:00:56 CEST 2003 Paolo Molaro <lupus@ximian.com>
24557
24558         * Makefile.am, mini-x86.c: rename cpu description array to
24559         pentium_desc, since some compilers define the 'pentium' preprocessor
24560         symbol.
24561
24562 2003-05-28  Dietmar Maurer  <dietmar@ximian.com>
24563
24564         * mini.c (mini_select_instructions): add explicit branch if the
24565         following block is not the false target of a conditional branch -
24566         we need this with any optimization that reorder or remove bblocks
24567
24568         * mini.c (optimize_branches): bug fixes
24569
24570 2003-06-06  Dietmar Maurer  <dietmar@ximian.com>
24571
24572         * mini.c (mono_method_to_ir): inline static readonly fields
24573
24574         * ssa.c (fold_tree): start cfold support for long (very simple
24575         cases only)
24576
24577         * cfold.c (mono_constant_fold_inst): opt. CEE_CONV_I8 (OP_ICONST)
24578
24579 Fri Jun 6 11:41:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
24580
24581         * inssel.brg: fixed memcpy (bug #44219).
24582
24583 2003-06-05  Dick Porter  <dick@ximian.com>
24584
24585         * driver.c: Set the glib log levels to not abort if g_message
24586         recurses.
24587
24588         g_set_prgname() has to happen before mini_init() so that the
24589         process handle gets the info.
24590         
24591 Thu Jun 5 20:11:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24592
24593         * driver.c: add intrins to the default optimizations to get wider
24594         exposure.
24595
24596 Wed Jun 4 19:47:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
24597
24598         * mini.h: some large basic blocks will overflow a 16-bit
24599         integers for symbolic registers.
24600
24601 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24602
24603         * mini-x86.c (mono_arch_output_basic_block): revert previous fprem changes.
24604         (mono_arch_output_basic_block): fix bug 43499 
24605
24606 Wed Jun 4 13:13:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24607
24608         * mini.c: kill duplicated definition of mono_debug_format.
24609
24610 Wed Jun 4 13:09:51 CEST 2003 Paolo Molaro <lupus@ximian.com>
24611
24612         * mini-x86.c, arrays.cs: fixed register allocation bug.
24613
24614 2003-06-04  Dietmar Maurer  <dietmar@ximian.com>
24615
24616         * mini-x86.c (mono_arch_output_basic_block): use IEEE compatible fprem1
24617
24618         * mini.c (mini_get_opcode_for_method): inline IEEERemainder
24619
24620 2003-06-04  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24621
24622         * mini.c:
24623         (print_method_from_ip): also print source location information if
24624         available.
24625
24626 2003-06-02  Dietmar Maurer  <dietmar@ximian.com>
24627
24628         * mini.c (mono_find_block_region): bug fix in region code
24629         (mini_method_compile): enable removing unreachable code again, but
24630         only in methods without exception clauses.
24631
24632 Fri May 30 18:40:24 CEST 2003 Paolo Molaro <lupus@ximian.com>
24633
24634         * mini.c, mini-ops.h, cpu-pentium.md, inssel.brg, mini-x86.c, mini.h:
24635         Implemented arglist opcode and handling of TypedReference type.
24636         Fixed x86 call convention when a structure is returned.
24637         Minimal support for calling static vararg methods.
24638
24639 2003-05-30  Dietmar Maurer  <dietmar@ximian.com>
24640
24641         * mini.c (mini_method_compile):  always remove unreachable code,
24642         because the code in them may be inconsistent  (access to dead
24643         variables for example).
24644
24645 Thu May 29 11:44:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
24646
24647         * driver.c, debug-mini.c: warning fixes.
24648
24649 Wed May 28 11:19:15 CEST 2003 Paolo Molaro <lupus@ximian.com>
24650
24651         * Makefile.am, jit.h, mini.h: install header for embedding mono.
24652
24653 Tue May 27 17:56:12 CEST 2003 Paolo Molaro <lupus@ximian.com>
24654
24655         * mini.c: thread-static fields are registered in mono_class_vtable(),
24656         so ensure the function is called before checking for them.
24657
24658 2003-05-27  Dietmar Maurer  <dietmar@ximian.com>
24659
24660         * mini.c (optimize_branches): fix for bug 43586
24661
24662         * jit-icalls.c (mono_llmult_ovf): added an additional check for
24663         overflow (fixes Bug #43639)
24664
24665 Tue May 27 11:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24666
24667         * mini.c, objects.cs: allow the use of stobj for primitive types.
24668
24669 Tue May 27 10:33:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24670
24671         * mini.c: be less strict about argument checking until we support
24672         running the verifier.
24673
24674 2003-05-27  Nick Drochak <ndrochak@gol.com>
24675
24676         * basic-long.cs: tests for (ulong)int * (ulong)int also
24677         * mini.c: use the same trick for (ulong)int * (ulong)int
24678
24679 2003-05-27  Nick Drochak <ndrochak@gol.com>
24680
24681         * basic-long.cs: add regression test for (long)int * (long)int
24682         * cpu-pentium.md: add op_bigmul specification
24683         * inssel-long32.brg: add OP_BIGMUL rule
24684         * mini-ops.h: add OP_BIGMUL
24685         * mini-x86.c: register allocator: handle case where src1 needs to be
24686         in EAX.
24687         * mini.c: substitute special BIGMUL opcode in the tree for 
24688         (long)int * (long)int
24689
24690 Mon May 26 20:20:13 CEST 2003 Paolo Molaro <lupus@ximian.com>
24691
24692         * jit-icalls.c: call the type ctor on field access if needed.
24693
24694 Mon May 26 15:21:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24695
24696         * mini-ops.h, mini.c, inssel.brg, exceptions.cs: validate arguments passed
24697         to a method (including results of ldelema, bug#43207).
24698
24699 2003-05-26  Dietmar Maurer  <dietmar@ximian.com>
24700
24701         * graph.c (cfg_emit_one_loop_level): loop over all blocks. use
24702         colors to show exception handler blocks.
24703
24704         * inssel-x86.brg (OP_OUTARG_VT): dont push zero sized structures
24705         (fix for pinvoke7.cs).
24706
24707 Mon May 26 12:11:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24708
24709         * mini.h, mini.c: ensure correct initialization order for types that
24710         require it. Prepare for lazy compilation of jit icall wrappers.
24711         Provide a name for opcode emulation to reduce unneeded mallocing.
24712
24713 Fri May 23 16:08:54 CEST 2003 Paolo Molaro <lupus@ximian.com>
24714
24715         * mini-x86.c: better register restoring code and profiling
24716         support for tail calls.
24717
24718 Fri May 23 15:30:53 CEST 2003 Paolo Molaro <lupus@ximian.com>
24719
24720         * mini.h, driver.c: prepare for leaf methods optimization.
24721
24722 Fri May 23 15:28:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24723
24724         * mini.c: get targets of branches before converting a method.
24725
24726 2003-05-23  Dietmar Maurer  <dietmar@ximian.com>
24727
24728         * mini.c (optimize_branches): added some experimental code (disbaled) 
24729
24730 2003-05-22  Dietmar Maurer  <dietmar@ximian.com>
24731
24732         * mini.c (optimize_branches): fix branch to branch optimization 
24733
24734         * exceptions-x86.c (mono_arch_handle_exception): bug fix.
24735
24736         * mini-x86.c (mono_arch_output_basic_block): cleanup up exception code
24737
24738         * inssel-x86.brg: added OP_START_HANDLER, CEE_ENDFINALLY, OP_ENDFILTER
24739
24740         * mini-x86.c (mono_arch_allocate_vars): only reserve space for lmf
24741         if needed.
24742
24743 2003-05-21  Dietmar Maurer  <dietmar@ximian.com>
24744
24745         * mini.c (mono_method_to_ir): call handle_loaded_temps before inlining.
24746         enable use of interface variables again.
24747
24748         * mini-x86.c (mono_arch_get_allocatable_int_vars): dont allocate
24749         I1 to registers because there is no simply way to sign extend 8bit
24750         quantities in caller saved registers on x86.
24751
24752         * inssel-float.brg: set costs of some rules to 2 so
24753         that monobure always select the arch. specific ones if supplied,
24754         regardless of the order we pass the files to monoburg.
24755
24756 Tue May 20 17:19:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24757
24758         * mini.c, mini-x86.c: since the magic trampoline for jumps
24759         can't patch the code directly, we do it as soon as the
24760         method gets compiled.
24761
24762 Tue May 20 16:02:52 CEST 2003 Paolo Molaro <lupus@ximian.com>
24763
24764         * mini-x86.c, mini.h: introduce a new patching method
24765         to support CEE_JMP and tail calls.
24766         * mini.c: obey tail.call. Don't precompile methods target
24767         of CEE_JMP.
24768         * tramp-x86.c: new trampoline code to handle methods
24769         reached through a jump.
24770
24771 2003-05-20  Dietmar Maurer  <dietmar@ximian.com>
24772
24773         * mini-x86.c (mono_arch_get_allocatable_int_vars): allocate 8/16
24774         bit values to registers
24775
24776 2003-05-19  Dietmar Maurer  <dietmar@ximian.com>
24777
24778         * mini.c (mono_compile_get_interface_var): share interface
24779         variables if possible.
24780
24781 2003-05-16  Martin Baulig  <martin@ximian.com>
24782
24783         * debug-mini.c (mono_init_debugger): New function to initialize
24784         the debugger.  This is not in the debugger since it needs to
24785         access some of mini's internals.
24786
24787 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24788
24789         * mini.c (mono_method_to_ir): inlining fixes/cleanups
24790
24791 Fri May 16 13:27:23 CEST 2003 Paolo Molaro <lupus@ximian.com>
24792
24793         * mini.c, mini-opts.h, inssel.brg: inline small memcpy
24794         for value type handling.
24795
24796 2003-05-16  Dietmar Maurer  <dietmar@ximian.com>
24797
24798         * mini.c (mono_method_to_ir): inline LDFLD/STFLD wrappers
24799         (mono_method_check_inlining): enable inlining of all kinds of wrappers
24800
24801 2003-05-15  Lluis Sanchez Gual  <lluis@ideary.com>
24802
24803         * mini.c: fixed little bug in CEE_NEWOBJ case when calling
24804           the constructor through a proxy.
24805
24806 Thu May 15 17:17:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24807
24808         * jit-icalls.c, inssel.brg: fixes to array element address
24809         calculations.
24810
24811 2003-05-15  Dietmar Maurer  <dietmar@ximian.com>
24812
24813         * mini-x86.c (is_regsize_var): allocate pointer to registers
24814
24815 Thu May 15 13:04:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24816
24817         * driver.c: fixed typo, added intrins to the set of optimizations
24818         tested with regressions.
24819
24820 Thu May 15 11:57:42 CEST 2003 Paolo Molaro <lupus@ximian.com>
24821
24822         * mini-ops.h, mini.c, inssel.brg: optimize access to 2D arrays.
24823         * jit-icalls.c, exceptions.cs: fixed index out of range checks, added
24824         test case.
24825
24826 2003-05-14  Dietmar Maurer  <dietmar@ximian.com>
24827
24828         * inssel.brg: remove some common pop instructions without side effects
24829
24830 Wed May 14 12:40:31 CEST 2003 Paolo Molaro <lupus@ximian.com>
24831
24832         * inssel-x86.brg: fixed thinko in int to double conversions.
24833
24834 Wed May 14 12:01:58 CEST 2003 Paolo Molaro <lupus@ximian.com>
24835
24836         * mini.c, jit-icalls.c: added runtime thread-static variable support.
24837
24838 Tue May 13 22:02:06 CEST 2003 Paolo Molaro <lupus@ximian.com>
24839
24840         * inssel-long32.brg: two more missing instructions.
24841
24842 2003-05-13  Dietmar Maurer  <dietmar@ximian.com>
24843
24844         * mini.c (mono_emit_call_args): set the cil_code for all arguments
24845         if not already set.
24846
24847 2003-05-12  Zoltan Varga  <vargaz@freemail.hu>
24848
24849         * mini-x86.c (mono_arch_output_basic_block): Handle negative zero
24850         correctly.
24851
24852         * basic-float.cs: Added tests for negative zero.
24853
24854 Sun May 11 14:56:27 CEST 2003 Paolo Molaro <lupus@ximian.com>
24855
24856         * inssel-long32.brg, basic-long.cs, exceptions.cs: handle
24857         a couple of missing operations for long casts, with test cases.
24858
24859 2003-05-11  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24860
24861         * exceptions-x86.c: fixed small leaks in mono_arch_handle_exception.
24862
24863 2003-05-09  Dietmar Maurer  <dietmar@ximian.com>
24864
24865         * mini-x86.c (mono_arch_emit_prolog): avoid reallocs with better
24866         code size estimation.
24867
24868 2003-05-08  Dietmar Maurer  <dietmar@ximian.com>
24869
24870         * mini.c (mono_jit_create_remoting_trampoline): make it work with
24871         abstract methods (fix bug 42542)
24872
24873         * aot.c: add ability to handle array types
24874         
24875 2003-05-08  Zoltan Varga  <vargaz@freemail.hu>
24876
24877         * mini.c: Call the _specific versions of the object allocation
24878         functions if possible.
24879
24880 Tue May 6 17:18:33 CEST 2003 Paolo Molaro <lupus@ximian.com>
24881
24882         * driver.c: call setlocale ().
24883
24884 Tue May 6 14:38:22 CEST 2003 Paolo Molaro <lupus@ximian.com>
24885
24886         * mini.h, mini.c, aot.c, debug-mini.c, exceptions.c: build fixes for
24887         windows build.
24888
24889 2003-05-05  Dietmar Maurer  <dietmar@ximian.com>
24890
24891         * mini.c (optimize_branches): dont touch code inside exception clauses (fix bug 38136)
24892
24893         * exceptions-x86.c (ves_icall_get_frame_info): also skip remoting
24894         wrappers (fix bug 42122)
24895
24896 2003-05-04  Martin Baulig  <martin@ximian.com>
24897
24898         * mini.h (mono_jit_init, mono_jit_cleanup): Added prototypes.
24899
24900         * driver.c: s/MONO_OPT_SAHRED/MONO_OPT_SHARED/g.
24901         s/mini_set_defaults/mono_set_defaults/g.
24902
24903 2003-05-04  Martin Baulig  <martin@ximian.com>
24904
24905         * driver.c: s/mini_parse_default_optimizations/mono_parse_default_optimizations/g.
24906
24907 Sun May 4 11:48:08 CEST 2003 Paolo Molaro <lupus@ximian.com>
24908
24909         * inssel-long32.brg: add missing lreg: OP_LCONV_TO_U8 (lreg) rule
24910         (reported by Don Roberts).
24911
24912 Fri May 2 18:36:45 CEST 2003 Paolo Molaro <lupus@ximian.com>
24913
24914         * mini.c: temporarily work around two bugs for this release.
24915
24916 Fri May 2 17:37:29 CEST 2003 Paolo Molaro <lupus@ximian.com>
24917
24918         * Makefile.am: avoid linking libmono with GMODULE_LIBS, because
24919         that contains -export-dynamic and it makes using the ld script
24920         useless.
24921         * mini.h, main.c, driver.c: s/mini_main/mono_main/g.
24922
24923 Fri May 2 12:52:32 CEST 2003 Paolo Molaro <lupus@ximian.com>
24924
24925         * mini.h, mini-x86.c, driver.c: disable optimizations not available on a
24926         specific cpu.
24927
24928 Thu May 1 15:28:21 CEST 2003 Paolo Molaro <lupus@ximian.com>
24929
24930         * mini.c: make sure leave calls all the needed finally blocks,
24931         even when the target jumps out of multiple exception clauses.
24932
24933 Thu May 1 15:18:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
24934
24935         * ldscript, Makefile.am: add linker script to reduce the number of
24936         exported symbols (should also fix the issues with libwine defining
24937         some of the same symbols in io-layer).
24938
24939 2003-05-01  Zoltan Varga  <vargaz@freemail.hu>
24940
24941         * driver.c (mini_main): Avoid assertion when no file name is given on 
24942         the command line.
24943
24944 Wed Apr 30 15:33:11 CEST 2003 Paolo Molaro <lupus@ximian.com>
24945
24946         * driver.c: added --version/-V command line option.
24947         Added the inline optimization in the regression tests.
24948
24949 Wed Apr 30 15:16:02 CEST 2003 Paolo Molaro <lupus@ximian.com>
24950
24951         * mini.c, basic-calls.cs: when inlining, save arguments to locals according 
24952         to the type in the method signature (fixes bug#42134).
24953
24954 Wed Apr 30 12:38:44 CEST 2003 Paolo Molaro <lupus@ximian.com>
24955
24956         * mini.c: when inlining, check this is not null only when needed (bug #42135).
24957
24958 Wed Apr 30 11:44:36 CEST 2003 Paolo Molaro <lupus@ximian.com>
24959
24960         * mini-ppc.h, tramp-pcc.c: type fixes from Max Horn <max@quendi.de>.
24961
24962 2003-04-30  Gonzalo Paniagua Javier <gonzalo@ximian.com>
24963
24964         * driver.c: fixed bug #42100.
24965
24966 2003-04-29  Dietmar Maurer  <dietmar@ximian.com>
24967
24968         * mini.c (mono_method_to_ir): UNBOX need to CAST objects first
24969
24970 Mon Apr 28 17:03:14 CEST 2003 Paolo Molaro <lupus@ximian.com>
24971
24972         * mini.c: moved most of the code required to do inlining to its own
24973         function so it can be reused. Inline also ctors if appropriate.
24974
24975 2003-04-28  Zoltan Varga  <vargaz@freemail.hu>
24976
24977         * Makefile.am: Link with -export-dynamic so shared libs loaded by
24978         the runtime can call mono API functions.
24979
24980 2003-04-27  Martin Baulig  <martin@ximian.com>
24981
24982         * debug-mini.c (mono_debug_init_method): Added
24983         `guint32 breakpoint_id' argument; if the method has a breakpoint,
24984         send a notification to the debugger.
24985
24986         * mini.c (mono_method_to_ir): Don't insert a breakpoint if we're
24987         running in the Mono Debugger, just pass the breakpoint number to
24988         mono_debug_init_method().
24989
24990         * tramp-x86.c, tramp-ppc.c: Removed the breakpoint trampolines.
24991
24992 Sun Apr 27 13:18:04 CEST 2003 Paolo Molaro <lupus@ximian.com>
24993
24994         * mini.c: allow some more unsafe compares.
24995
24996 Sat Apr 26 11:55:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
24997
24998         * mini-x86.c, Makefile.am: make distcheck works (partially from
24999         a patch by Richard Lee <r.h.lee@attbi.com>).
25000         * regset.c, regset.h: removed, they are unused.
25001
25002 2003-04-25  Dick Porter  <dick@ximian.com>
25003
25004         * driver.c: Usage reports the name as 'mono' not 'mini'
25005         * exceptions-x86.c: Build and run on freebsd
25006
25007 Thu Apr 24 17:09:03 CEST 2003 Paolo Molaro <lupus@ximian.com>
25008
25009         * Makefile.am: install the program with the 'mono' name and
25010         the library as libmono instead of mini and libmini.
25011
25012 Thu Apr 24 17:08:07 CEST 2003 Paolo Molaro <lupus@ximian.com>
25013
25014         * driver.c: provide the APIs for the embedding interface of the old jit.
25015
25016 2003-04-23  Dietmar Maurer  <dietmar@ximian.com>
25017
25018         * jit-icalls.c (helper_stelem_ref): impl. (fix bug 41775)
25019
25020 2003-04-23  Martin Baulig  <martin@ximian.com>
25021
25022         * tramp-x86.c, tramp-ppc.c: Reenable the debugger breakpoint interface.
25023
25024         * driver.c: Added `--debug' command line argument to enable
25025         debugging support.
25026
25027 2003-04-23  Martin Baulig  <martin@ximian.com>
25028
25029         * debug.[ch]: Removed.  The code is now in
25030         ../metadata/mono-debug.[ch] and mono-debug-debugger.[ch].
25031
25032         * debug-stabs.c, debug-dwarf2.c: Removed; nobody used this for the
25033         last six months.
25034
25035 2003-04-22  Dietmar Maurer  <dietmar@ximian.com>
25036
25037         * mini.c (mono_method_to_ir): set the cil_code address (fix bug 41525)
25038
25039 2003-04-17  Gonzalo Paniagua Javier <gonzalo@ximian.com>
25040
25041         * mini.c:
25042         (mini_cleanup): moved mono_runtime_cleanup call after the call to
25043         mono_domain_finalize.
25044         (mini_method_compile): use mono_method_profile* if the the option is
25045         enabled.
25046
25047 2003-04-17  Zoltan Varga  <vargaz@freemail.hu>
25048
25049         * tramp-x86.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25050         methods with their wrapper.
25051
25052         * tramp-ppc.c (mono_arch_create_jit_trampoline): Subsitute synchronized
25053         methods with their wrapper.
25054
25055         * jit-icalls.c (mono_ldvirtfn): Subsitute synchronized methods with
25056         their wrapper.
25057
25058         * mini.c (mono_method_to_ir): Subsitute synchronized methods with their
25059         wrapper.
25060
25061         * mini.c (mono_method_check_inlining): Avoid inlining synchronized
25062         methods.
25063
25064 2003-04-17  Dietmar Maurer  <dietmar@ximian.com>
25065
25066         * exceptions-x86.c (mono_arch_handle_exception): fix for bug 36252
25067
25068 2003-04-16  Dietmar Maurer  <dietmar@ximian.com>
25069
25070         * mini.c (mono_compile_create_var): use g_malloc/g_realloc instead
25071         of the mempool. This is slightly faster and uses less memory
25072
25073 Wed Apr 16 12:53:10 CEST 2003 Paolo Molaro <lupus@ximian.com>
25074
25075         * mini.c: avoid O(n) allocation for variables.
25076
25077 Tue Apr 15 19:13:41 CEST 2003 Paolo Molaro <lupus@ximian.com>
25078
25079         * mini.c: handle items on the stack after inlining methods.
25080
25081 Tue Apr 15 14:17:57 CEST 2003 Paolo Molaro <lupus@ximian.com>
25082
25083         * mini.c: make the method->opcode optimization dependent
25084         on MONO_OPT_INSTRINS and do it lazily.
25085
25086 Tue Apr 15 14:15:39 CEST 2003 Paolo Molaro <lupus@ximian.com>
25087
25088         * driver.c: print overall results at the end of regression run.
25089
25090 Tue Apr 15 11:18:46 CEST 2003 Paolo Molaro <lupus@ximian.com>
25091
25092         * inssel.brg: don't overwrite symbolic registers.
25093
25094 Mon Apr 14 17:41:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25095
25096         * inssel-x86.brg: fix conversion from long to float.
25097
25098 2003-04-11  Dietmar Maurer  <dietmar@ximian.com>
25099
25100         * mini.c (mini_init): use an opcode for get_Chars (OP_GETCHR)
25101
25102 2003-04-10  Zoltan Varga  <vargaz@freemail.hu>
25103
25104         * mini.c (mono_type_blittable): MONO_TYPE_OBJECT is blittable.
25105
25106         * driver.c: Added --print-vtable option as in the old JIT.
25107
25108 Thu Apr 10 17:43:49 CEST 2003 Paolo Molaro <lupus@ximian.com>
25109
25110         * inssel-long32.brg, exceptions.cs: fix conversions from long, too.
25111
25112 Thu Apr 10 16:27:43 CEST 2003 Paolo Molaro <lupus@ximian.com>
25113
25114         * inssel.brg, basic.cs: fixed checked conversions to byte and short.
25115
25116 2003-04-09  Zoltan Varga  <vargaz@freemail.hu>
25117
25118         * mini.c regalloc.c regalloc.h: Fix memory leak.
25119
25120 2003-04-09  Dietmar Maurer  <dietmar@ximian.com>
25121
25122         * aot.c (mono_aot_get_method): register all used strings
25123
25124 Wed Apr 9 15:22:18 CEST 2003 Paolo Molaro <lupus@ximian.com>
25125
25126         * mini.c: always intern strings references with ldstr at compile time.
25127
25128 Tue Apr 8 11:41:26 CEST 2003 Paolo Molaro <lupus@ximian.com>
25129
25130         * Makefile.am: add BUILT_SOURCES.
25131
25132 Mon Apr 7 16:31:34 CEST 2003 Paolo Molaro <lupus@ximian.com>
25133
25134         * driver.c: give a better error message when the assembly to execute
25135         doesn't have an entry point.
25136
25137 2003-04-07  Dietmar Maurer  <dietmar@ximian.com>
25138
25139         * Makefile.am: added hack for automake
25140
25141         * mono/mini/mini.c (mono_save_args): always copy arguments to keep
25142         correct sematics.
25143
25144         * mono/mini/ssa.c (mono_ssa_avoid_copies): don't optimize calls
25145
25146 22003-04-07  Martin Baulig  <martin@ximian.com>
25147
25148         * Makefile.am: Added Makefile.am.
25149
25150         * debugger-main.c: Removed, this is now in the debugger where it
25151         belongs.
25152
25153         * mini.pc.in: Call this package `mini' for the moment.
25154
25155
25156
25157
25158
25159
25160
25161
25162
25163
25164
25165
25166
25167
25168